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
|
@@ -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
|
-
|
|
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 =
|
|
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
|
-
|
|
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 (
|
|
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;
|
|
@@ -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
|
|
139
|
+
[self setNeedsInitialDetentUpdate];
|
|
146
140
|
[self updateConfigurationIfNeeded];
|
|
147
141
|
}
|
|
148
142
|
|
|
@@ -160,15 +154,10 @@
|
|
|
160
154
|
return;
|
|
161
155
|
}
|
|
162
156
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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)
|
|
180
|
+
- (void)setNeedsInitialDetentUpdate
|
|
192
181
|
{
|
|
193
|
-
|
|
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
|
-
//
|
|
250
|
-
//
|
|
251
|
-
[_controller
|
|
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
|
};
|
|
@@ -3,19 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
#import "RNSSafeAreaViewComponentView.h"
|
|
5
5
|
#import <React/RCTConversions.h>
|
|
6
|
-
#import <React/RCTUtils.h>
|
|
7
6
|
#import "RNSSafeAreaProviding.h"
|
|
8
7
|
#import "RNSSafeAreaViewNotifications.h"
|
|
9
8
|
|
|
10
9
|
#import <react/renderer/components/rnscreens/ComponentDescriptors.h>
|
|
11
10
|
#import <react/renderer/components/rnscreens/Props.h>
|
|
12
|
-
#import <rnscreens/RNSSafeAreaViewComponentDescriptor.h>
|
|
13
|
-
#import <rnscreens/RNSSafeAreaViewState.h>
|
|
11
|
+
#import <react/renderer/components/rnscreens/RNSSafeAreaViewComponentDescriptor.h>
|
|
12
|
+
#import <react/renderer/components/rnscreens/RNSSafeAreaViewState.h>
|
|
14
13
|
|
|
15
14
|
namespace react = facebook::react;
|
|
16
15
|
|
|
17
|
-
static BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIEdgeInsets insets2, CGFloat threshold);
|
|
18
|
-
|
|
19
16
|
#pragma mark - View implementation
|
|
20
17
|
|
|
21
18
|
@implementation RNSSafeAreaViewComponentView {
|
|
@@ -87,7 +84,7 @@ static BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIE
|
|
|
87
84
|
|
|
88
85
|
UIEdgeInsets safeAreaInsets = _providerView.providerSafeAreaInsets;
|
|
89
86
|
|
|
90
|
-
if (
|
|
87
|
+
if (UIEdgeInsetsEqualToEdgeInsets(safeAreaInsets, _currentSafeAreaInsets)) {
|
|
91
88
|
return;
|
|
92
89
|
}
|
|
93
90
|
|
|
@@ -152,14 +149,6 @@ static BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIE
|
|
|
152
149
|
|
|
153
150
|
@end
|
|
154
151
|
|
|
155
|
-
#pragma mark - Utility functions
|
|
156
|
-
|
|
157
|
-
static BOOL UIEdgeInsetsEqualToEdgeInsetsWithThreshold(UIEdgeInsets insets1, UIEdgeInsets insets2, CGFloat threshold)
|
|
158
|
-
{
|
|
159
|
-
return ABS(insets1.left - insets2.left) <= threshold && ABS(insets1.right - insets2.right) <= threshold &&
|
|
160
|
-
ABS(insets1.top - insets2.top) <= threshold && ABS(insets1.bottom - insets2.bottom) <= threshold;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
152
|
#pragma mark - View class exposure
|
|
164
153
|
|
|
165
154
|
Class<RCTComponentViewProtocol> RNSSafeAreaView(void)
|
|
@@ -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
|
|
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
|
|
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:(
|
|
30
|
+
- (void)updateAppearanceIfNeeded:(id<RNSSplitHostAppearanceProvider>)provider
|
|
31
31
|
splitHostController:(RNSSplitHostController *)splitHostController
|
|
32
32
|
appearanceCoordinator:(RNSSplitAppearanceCoordinator *)appearanceCoordinator;
|
|
33
33
|
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
#import <React/RCTAssert.h>
|
|
4
4
|
#import "RNSDefines.h"
|
|
5
5
|
#import "RNSScreenWindowTraits.h"
|
|
6
|
-
#import "RNSSplitHostComponentView.h"
|
|
7
6
|
#import "RNSSplitHostController.h"
|
|
8
7
|
|
|
9
8
|
@implementation RNSSplitAppearanceApplicator
|
|
10
9
|
|
|
11
|
-
- (void)updateAppearanceIfNeeded:(
|
|
10
|
+
- (void)updateAppearanceIfNeeded:(id<RNSSplitHostAppearanceProvider>)provider
|
|
12
11
|
splitHostController:(RNSSplitHostController *)splitHostController
|
|
13
12
|
appearanceCoordinator:(RNSSplitAppearanceCoordinator *)appearanceCoordinator
|
|
14
13
|
{
|
|
@@ -21,7 +20,7 @@
|
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
23
22
|
|
|
24
|
-
[strongSelf updateSplitViewConfigurationFor:
|
|
23
|
+
[strongSelf updateSplitViewConfigurationFor:provider withController:splitHostController];
|
|
25
24
|
}];
|
|
26
25
|
|
|
27
26
|
[appearanceCoordinator updateIfNeeded:RNSSplitAppearanceUpdateFlagsSecondaryScreenNavBarUpdate
|
|
@@ -41,7 +40,7 @@
|
|
|
41
40
|
return;
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
[strongSelf updateSplitViewDisplayModeFor:
|
|
43
|
+
[strongSelf updateSplitViewDisplayModeFor:provider withController:splitHostController];
|
|
45
44
|
}];
|
|
46
45
|
|
|
47
46
|
[appearanceCoordinator updateIfNeeded:RNSSplitAppearanceUpdateFlagsOrientationUpdate
|
|
@@ -55,101 +54,99 @@
|
|
|
55
54
|
*
|
|
56
55
|
* It calls all setters on RNSSplitHostController that doesn't require any custom logic and conditions to be met.
|
|
57
56
|
*
|
|
58
|
-
* @param
|
|
57
|
+
* @param provider The provider of the appearance configuration.
|
|
59
58
|
* @param splitHostController The controller associated with the SplitView component which receives updates and
|
|
60
59
|
* manages the native layer.
|
|
61
60
|
*/
|
|
62
|
-
- (void)updateSplitViewConfigurationFor:(
|
|
61
|
+
- (void)updateSplitViewConfigurationFor:(id<RNSSplitHostAppearanceProvider>)provider
|
|
63
62
|
withController:(RNSSplitHostController *)splitHostController
|
|
64
63
|
{
|
|
65
64
|
// Step 1 - general settings
|
|
66
|
-
splitHostController.displayModeButtonVisibility =
|
|
67
|
-
splitHostController.preferredSplitBehavior =
|
|
68
|
-
splitHostController.overrideUserInterfaceStyle =
|
|
65
|
+
splitHostController.displayModeButtonVisibility = provider.displayModeButtonVisibility;
|
|
66
|
+
splitHostController.preferredSplitBehavior = provider.preferredSplitBehavior;
|
|
67
|
+
splitHostController.overrideUserInterfaceStyle = provider.colorScheme;
|
|
69
68
|
#if !TARGET_OS_TV
|
|
70
|
-
splitHostController.primaryBackgroundStyle =
|
|
69
|
+
splitHostController.primaryBackgroundStyle = provider.primaryBackgroundStyle;
|
|
71
70
|
#endif
|
|
72
|
-
splitHostController.presentsWithGesture =
|
|
73
|
-
splitHostController.primaryEdge =
|
|
74
|
-
splitHostController.showsSecondaryOnlyButton =
|
|
71
|
+
splitHostController.presentsWithGesture = provider.presentsWithGesture;
|
|
72
|
+
splitHostController.primaryEdge = provider.primaryEdge;
|
|
73
|
+
splitHostController.showsSecondaryOnlyButton = provider.showSecondaryToggleButton;
|
|
75
74
|
|
|
76
75
|
// Step 2.1 - validating column constraints
|
|
77
|
-
[self validateColumnConstraintsWithMinWidth:
|
|
78
|
-
maxWidth:
|
|
76
|
+
[self validateColumnConstraintsWithMinWidth:provider.minimumPrimaryColumnWidth
|
|
77
|
+
maxWidth:provider.maximumPrimaryColumnWidth];
|
|
79
78
|
|
|
80
|
-
[self validateColumnConstraintsWithMinWidth:
|
|
81
|
-
maxWidth:
|
|
79
|
+
[self validateColumnConstraintsWithMinWidth:provider.minimumSupplementaryColumnWidth
|
|
80
|
+
maxWidth:provider.maximumSupplementaryColumnWidth];
|
|
82
81
|
|
|
83
82
|
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) && !TARGET_OS_TV
|
|
84
83
|
if (@available(iOS 26.0, *)) {
|
|
85
|
-
[self validateColumnConstraintsWithMinWidth:
|
|
86
|
-
maxWidth:
|
|
84
|
+
[self validateColumnConstraintsWithMinWidth:provider.minimumInspectorColumnWidth
|
|
85
|
+
maxWidth:provider.maximumInspectorColumnWidth];
|
|
87
86
|
}
|
|
88
87
|
#endif
|
|
89
88
|
|
|
90
89
|
// Step 2.2 - applying updates to columns
|
|
91
|
-
if (
|
|
92
|
-
splitHostController.minimumPrimaryColumnWidth =
|
|
90
|
+
if (provider.minimumPrimaryColumnWidth >= 0) {
|
|
91
|
+
splitHostController.minimumPrimaryColumnWidth = provider.minimumPrimaryColumnWidth;
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
if (
|
|
96
|
-
splitHostController.maximumPrimaryColumnWidth =
|
|
94
|
+
if (provider.maximumPrimaryColumnWidth >= 0) {
|
|
95
|
+
splitHostController.maximumPrimaryColumnWidth = provider.maximumPrimaryColumnWidth;
|
|
97
96
|
}
|
|
98
97
|
|
|
99
|
-
if (
|
|
100
|
-
splitHostController.preferredPrimaryColumnWidthFraction =
|
|
101
|
-
} else if (
|
|
102
|
-
splitHostController.preferredPrimaryColumnWidth =
|
|
98
|
+
if (provider.preferredPrimaryColumnWidthOrFraction >= 0 && provider.preferredPrimaryColumnWidthOrFraction < 1) {
|
|
99
|
+
splitHostController.preferredPrimaryColumnWidthFraction = provider.preferredPrimaryColumnWidthOrFraction;
|
|
100
|
+
} else if (provider.preferredPrimaryColumnWidthOrFraction >= 1) {
|
|
101
|
+
splitHostController.preferredPrimaryColumnWidth = provider.preferredPrimaryColumnWidthOrFraction;
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
if (
|
|
106
|
-
splitHostController.minimumSupplementaryColumnWidth =
|
|
104
|
+
if (provider.minimumSupplementaryColumnWidth >= 0) {
|
|
105
|
+
splitHostController.minimumSupplementaryColumnWidth = provider.minimumSupplementaryColumnWidth;
|
|
107
106
|
}
|
|
108
107
|
|
|
109
|
-
if (
|
|
110
|
-
splitHostController.maximumSupplementaryColumnWidth =
|
|
108
|
+
if (provider.maximumSupplementaryColumnWidth >= 0) {
|
|
109
|
+
splitHostController.maximumSupplementaryColumnWidth = provider.maximumSupplementaryColumnWidth;
|
|
111
110
|
}
|
|
112
111
|
|
|
113
|
-
if (
|
|
114
|
-
|
|
112
|
+
if (provider.preferredSupplementaryColumnWidthOrFraction >= 0 &&
|
|
113
|
+
provider.preferredSupplementaryColumnWidthOrFraction < 1) {
|
|
115
114
|
splitHostController.preferredSupplementaryColumnWidthFraction =
|
|
116
|
-
|
|
117
|
-
} else if (
|
|
118
|
-
splitHostController.preferredSupplementaryColumnWidth =
|
|
115
|
+
provider.preferredSupplementaryColumnWidthOrFraction;
|
|
116
|
+
} else if (provider.preferredSupplementaryColumnWidthOrFraction >= 1) {
|
|
117
|
+
splitHostController.preferredSupplementaryColumnWidth = provider.preferredSupplementaryColumnWidthOrFraction;
|
|
119
118
|
}
|
|
120
119
|
|
|
121
120
|
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) && !TARGET_OS_TV
|
|
122
121
|
if (@available(iOS 26.0, *)) {
|
|
123
|
-
if (
|
|
124
|
-
splitHostController.minimumSecondaryColumnWidth =
|
|
122
|
+
if (provider.minimumSecondaryColumnWidth >= 0) {
|
|
123
|
+
splitHostController.minimumSecondaryColumnWidth = provider.minimumSecondaryColumnWidth;
|
|
125
124
|
}
|
|
126
125
|
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
splitHostController.preferredSecondaryColumnWidth = splitHost.preferredSecondaryColumnWidthOrFraction;
|
|
126
|
+
if (provider.preferredSecondaryColumnWidthOrFraction >= 0 && provider.preferredSecondaryColumnWidthOrFraction < 1) {
|
|
127
|
+
splitHostController.preferredSecondaryColumnWidthFraction = provider.preferredSecondaryColumnWidthOrFraction;
|
|
128
|
+
} else if (provider.preferredSecondaryColumnWidthOrFraction >= 1) {
|
|
129
|
+
splitHostController.preferredSecondaryColumnWidth = provider.preferredSecondaryColumnWidthOrFraction;
|
|
132
130
|
}
|
|
133
131
|
|
|
134
|
-
if (
|
|
135
|
-
splitHostController.minimumInspectorColumnWidth =
|
|
132
|
+
if (provider.minimumInspectorColumnWidth >= 0) {
|
|
133
|
+
splitHostController.minimumInspectorColumnWidth = provider.minimumInspectorColumnWidth;
|
|
136
134
|
}
|
|
137
135
|
|
|
138
|
-
if (
|
|
139
|
-
splitHostController.maximumInspectorColumnWidth =
|
|
136
|
+
if (provider.maximumInspectorColumnWidth >= 0) {
|
|
137
|
+
splitHostController.maximumInspectorColumnWidth = provider.maximumInspectorColumnWidth;
|
|
140
138
|
}
|
|
141
139
|
|
|
142
|
-
if (
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
splitHostController.preferredInspectorColumnWidth = splitHost.preferredInspectorColumnWidthOrFraction;
|
|
140
|
+
if (provider.preferredInspectorColumnWidthOrFraction >= 0 && provider.preferredInspectorColumnWidthOrFraction < 1) {
|
|
141
|
+
splitHostController.preferredInspectorColumnWidthFraction = provider.preferredInspectorColumnWidthOrFraction;
|
|
142
|
+
} else if (provider.preferredInspectorColumnWidthOrFraction >= 1) {
|
|
143
|
+
splitHostController.preferredInspectorColumnWidth = provider.preferredInspectorColumnWidthOrFraction;
|
|
147
144
|
}
|
|
148
145
|
}
|
|
149
146
|
#endif
|
|
150
147
|
|
|
151
148
|
// Step 2.3 - manipulating with inspector column
|
|
152
|
-
[splitHostController toggleSplitViewInspector:
|
|
149
|
+
[splitHostController toggleSplitViewInspector:provider.showInspector];
|
|
153
150
|
}
|
|
154
151
|
|
|
155
152
|
/**
|
|
@@ -160,14 +157,14 @@
|
|
|
160
157
|
* executed natively, e. g. after showing/hiding a column by a swipe. In that case, any prop update incoming, would
|
|
161
158
|
* reset `preferredDisplayMode` to the state from JS, what doesn't look good.
|
|
162
159
|
*
|
|
163
|
-
* @param
|
|
160
|
+
* @param provider The provider of the appearance configuration.
|
|
164
161
|
* @param splitHostController The controller associated with the SplitView component which receives updates and
|
|
165
162
|
* manages the native layer.
|
|
166
163
|
*/
|
|
167
|
-
- (void)updateSplitViewDisplayModeFor:(
|
|
164
|
+
- (void)updateSplitViewDisplayModeFor:(id<RNSSplitHostAppearanceProvider>)provider
|
|
168
165
|
withController:(RNSSplitHostController *)splitHostController
|
|
169
166
|
{
|
|
170
|
-
splitHostController.preferredDisplayMode =
|
|
167
|
+
splitHostController.preferredDisplayMode = provider.preferredDisplayMode;
|
|
171
168
|
}
|
|
172
169
|
|
|
173
170
|
- (void)validateColumnConstraintsWithMinWidth:(CGFloat)minWidth maxWidth:(CGFloat)maxWidth
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#import "RNSSplitHostComponentEventEmitter.h"
|
|
2
2
|
#import <React/RCTConversions.h>
|
|
3
3
|
#import <React/RCTLog.h>
|
|
4
|
-
#import "RNSConversions.h"
|
|
4
|
+
#import "RNSConversions-SplitView.h"
|
|
5
5
|
|
|
6
6
|
@implementation RNSSplitHostComponentEventEmitter {
|
|
7
7
|
std::shared_ptr<const react::RNSSplitHostEventEmitter> _reactEventEmitter;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#import "RNSDefines.h"
|
|
4
4
|
#import "RNSEnums.h"
|
|
5
5
|
#import "RNSReactBaseView.h"
|
|
6
|
-
#import "
|
|
6
|
+
#import "RNSSplitHostProviders.h"
|
|
7
7
|
|
|
8
8
|
NS_ASSUME_NONNULL_BEGIN
|
|
9
9
|
|
|
@@ -17,7 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
17
17
|
* Responsible for managing multi-column layouts via associated native UISplitViewController.
|
|
18
18
|
* Manages updates to the layout properties, column configuration, and event emission.
|
|
19
19
|
*/
|
|
20
|
-
@interface RNSSplitHostComponentView
|
|
20
|
+
@interface RNSSplitHostComponentView
|
|
21
|
+
: RNSReactBaseView <RNSSplitHostAppearanceProvider, RNSSplitHostBehaviorProvider, RNSSplitHostColumnsProvider>
|
|
21
22
|
|
|
22
23
|
- (nonnull NSMutableArray<RNSSplitScreenComponentView *> *)reactSubviews;
|
|
23
24
|
|
|
@@ -29,7 +30,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* @category Props
|
|
32
|
-
* @brief Definitions for React Native props.
|
|
33
|
+
* @brief Definitions for React Native props. They back the appearance and behavior providers of the Split host
|
|
34
|
+
* controller.
|
|
33
35
|
*/
|
|
34
36
|
@interface RNSSplitHostComponentView ()
|
|
35
37
|
|
|
@@ -66,16 +68,4 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
66
68
|
|
|
67
69
|
@end
|
|
68
70
|
|
|
69
|
-
#pragma mark - Events
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* @category Events
|
|
73
|
-
* @brief APIs related to event emission to React Native.
|
|
74
|
-
*/
|
|
75
|
-
@interface RNSSplitHostComponentView ()
|
|
76
|
-
|
|
77
|
-
- (nonnull RNSSplitHostComponentEventEmitter *)reactEventEmitter;
|
|
78
|
-
|
|
79
|
-
@end
|
|
80
|
-
|
|
81
71
|
NS_ASSUME_NONNULL_END
|
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
#import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
|
|
7
7
|
|
|
8
8
|
#import "RNSContainerHelpers.h"
|
|
9
|
-
#import "RNSConversions.h"
|
|
9
|
+
#import "RNSConversions-SplitView.h"
|
|
10
10
|
#import "RNSDefines.h"
|
|
11
|
+
#import "RNSSplitHostComponentEventEmitter.h"
|
|
11
12
|
#import "RNSSplitHostController.h"
|
|
12
13
|
#import "RNSSplitScreenComponentView.h"
|
|
14
|
+
#import "RNSSplitScreenController.h"
|
|
13
15
|
|
|
14
16
|
namespace react = facebook::react;
|
|
15
17
|
|
|
@@ -18,7 +20,9 @@ static const CGFloat epsilon = 1e-6;
|
|
|
18
20
|
#define COLUMN_METRIC_CHANGED(OLD, NEW, PROPERTY_NAME, EPSILON) \
|
|
19
21
|
(fabs((OLD).columnMetrics.PROPERTY_NAME - (NEW).columnMetrics.PROPERTY_NAME) > (EPSILON))
|
|
20
22
|
|
|
21
|
-
@interface RNSSplitHostComponentView () <RCTMountingTransactionObserving,
|
|
23
|
+
@interface RNSSplitHostComponentView () <RCTMountingTransactionObserving,
|
|
24
|
+
RCTRNSSplitHostViewProtocol,
|
|
25
|
+
RNSSplitHostControllerEventsDelegate>
|
|
22
26
|
@end
|
|
23
27
|
|
|
24
28
|
@implementation RNSSplitHostComponentView {
|
|
@@ -116,7 +120,11 @@ static const CGFloat epsilon = 1e-6;
|
|
|
116
120
|
if (_controller == nil) {
|
|
117
121
|
int numberOfColumns = [self getNumberOfColumns];
|
|
118
122
|
|
|
119
|
-
_controller = [[RNSSplitHostController alloc]
|
|
123
|
+
_controller = [[RNSSplitHostController alloc] initWithNumberOfColumns:numberOfColumns];
|
|
124
|
+
_controller.eventsDelegate = self;
|
|
125
|
+
_controller.appearanceProvider = self;
|
|
126
|
+
_controller.behaviorProvider = self;
|
|
127
|
+
_controller.columnsProvider = self;
|
|
120
128
|
}
|
|
121
129
|
}
|
|
122
130
|
|
|
@@ -399,10 +407,51 @@ RNS_IGNORE_SUPER_CALL_END
|
|
|
399
407
|
|
|
400
408
|
#pragma mark - Events
|
|
401
409
|
|
|
402
|
-
|
|
410
|
+
#pragma mark - RNSSplitHostColumnsProvider
|
|
411
|
+
|
|
412
|
+
- (NSArray<RNSSplitScreenController *> *)columnControllers
|
|
413
|
+
{
|
|
414
|
+
return [self controllersOfColumnsWithType:RNSSplitScreenColumnTypeColumn];
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
- (NSArray<RNSSplitScreenController *> *)inspectorControllers
|
|
418
|
+
{
|
|
419
|
+
return [self controllersOfColumnsWithType:RNSSplitScreenColumnTypeInspector];
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
- (NSArray<RNSSplitScreenController *> *)controllersOfColumnsWithType:(RNSSplitScreenColumnType)columnType
|
|
423
|
+
{
|
|
424
|
+
NSMutableArray<RNSSplitScreenController *> *controllers = [NSMutableArray array];
|
|
425
|
+
for (RNSSplitScreenComponentView *column in _reactSubviews) {
|
|
426
|
+
if (column.columnType == columnType) {
|
|
427
|
+
[controllers addObject:column.controller];
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return controllers;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
#pragma mark - RNSSplitHostControllerEventsDelegate
|
|
434
|
+
|
|
435
|
+
- (void)splitHostControllerDidCollapse:(RNSSplitHostController *)controller
|
|
436
|
+
{
|
|
437
|
+
[_reactEventEmitter emitOnCollapse];
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
- (void)splitHostControllerDidExpand:(RNSSplitHostController *)controller
|
|
441
|
+
{
|
|
442
|
+
[_reactEventEmitter emitOnExpand];
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
- (void)splitHostController:(RNSSplitHostController *)controller
|
|
446
|
+
willChangeDisplayModeFrom:(UISplitViewControllerDisplayMode)fromDisplayMode
|
|
447
|
+
to:(UISplitViewControllerDisplayMode)toDisplayMode
|
|
448
|
+
{
|
|
449
|
+
[_reactEventEmitter emitOnDisplayModeWillChangeFrom:fromDisplayMode to:toDisplayMode];
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
- (void)splitHostControllerDidHideInspector:(RNSSplitHostController *)controller
|
|
403
453
|
{
|
|
404
|
-
|
|
405
|
-
return _reactEventEmitter;
|
|
454
|
+
[_reactEventEmitter emitOnHideInspector];
|
|
406
455
|
}
|
|
407
456
|
|
|
408
457
|
#pragma mark - Dynamic frameworks support
|