react-native-screens 5.0.0-alpha.1 → 5.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Package.swift +87 -0
- package/README.md +0 -8
- package/RNScreens.podspec +2 -6
- package/android/build.gradle +26 -1
- package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +5 -0
- 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/common/container/Container.kt +8 -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/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +25 -7
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackFragment.kt +39 -10
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenViewManager.kt +5 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAppearanceCoordinator.kt → native/coordinator/FormSheetAppearanceCoordinator.kt} +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetBehaviorController.kt → native/coordinator/FormSheetBehaviorController.kt} +74 -19
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetNativeDismissCoordinator.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContainer.kt → native/core/FormSheetContainer.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialog.kt +115 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +89 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeDelegate.kt → native/interfaces/FormSheetContentSizeChangeDelegate.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeProvider.kt → native/interfaces/FormSheetContentSizeChangeProvider.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialogEventEmitter.kt → native/interfaces/FormSheetDialogEventEmitter.kt} +5 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetConfig.kt → native/model/FormSheetConfig.kt} +5 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +152 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAnimatorFactory.kt → native/presentation/FormSheetAnimatorFactory.kt} +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDimmingManager.kt +115 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +290 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetPresentationState.kt → native/presentation/FormSheetPresentationState.kt} +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapper.kt → react/contentwrapper/FormSheetContentWrapper.kt} +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapperViewManager.kt → react/contentwrapper/FormSheetContentWrapperViewManager.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDetentChangedEvent.kt → react/event/FormSheetDetentChangedEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidAppearEvent.kt → react/event/FormSheetDidAppearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidDisappearEvent.kt → react/event/FormSheetDidDisappearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetNativeDismissEvent.kt → react/event/FormSheetNativeDismissEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetNativeDismissPreventedEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetSyncFlushEvent.kt → react/event/FormSheetSyncFlushEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillAppearEvent.kt → react/event/FormSheetWillAppearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillDisappearEvent.kt → react/event/FormSheetWillDisappearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentView.kt → react/host/FormSheetContentView.kt} +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHost.kt → react/host/FormSheetHost.kt} +6 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostEventEmitter.kt → react/host/FormSheetHostEventEmitter.kt} +23 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostViewManager.kt → react/host/FormSheetHostViewManager.kt} +13 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +380 -457
- 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 +150 -182
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderFrameSynchronizer.kt +63 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +240 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderAppBarLayoutBehavior.kt → appbar/StackHeaderAppBarLayoutBehavior.kt} +1 -1
- 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/{StackHeaderScrollingViewBehavior.kt → appbar/StackHeaderScrollingViewBehavior.kt} +1 -1
- 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 +192 -167
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +393 -13
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +0 -4
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +33 -3
- 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 +9 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +195 -0
- 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 +43 -21
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +8 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuElementConfig.kt → model/StackHeaderToolbarMenuElementConfig.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuGroupConfig.kt → model/StackHeaderToolbarMenuGroupConfig.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemConfig.kt → model/StackHeaderToolbarMenuItemConfig.kt} +2 -4
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemDefaults.kt → model/StackHeaderToolbarMenuItemDefaults.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemIconSource.kt → model/StackHeaderToolbarMenuItemIconSource.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemShowAsAction.kt → model/StackHeaderToolbarMenuItemShowAsAction.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemType.kt → model/StackHeaderToolbarMenuItemType.kt} +1 -1
- 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/{StackHeaderToolbarFieldUpdate.kt → update/StackHeaderToolbarFieldUpdate.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +84 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +18 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuUpdateQueue.kt → update/StackHeaderToolbarMenuUpdateQueue.kt} +24 -52
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueueDelegate.kt +9 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +103 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +13 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +5 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +20 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +2 -4
- 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 +46 -25
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +10 -0
- 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 +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +7 -0
- 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/common/cpp/react/renderer/components/rnscreens/legacy/RNSScreenShadowNode.cpp +10 -5
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +2 -2
- package/ios/RNSOrientationProviding.h +0 -2
- package/ios/RNSReactMountingTransactionObserving.h +15 -0
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/legacy/RNSBarButtonItem.mm +12 -5
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSScreen.h +8 -1
- package/ios/legacy/RNSScreen.mm +47 -36
- package/ios/legacy/RNSScreenContentWrapper.mm +9 -0
- package/ios/legacy/RNSScreenFooter.mm +2 -0
- package/ios/legacy/RNSScreenStack.mm +9 -4
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +3 -1
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +1 -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/RNSFormSheetContentWrapperComponentView.mm +9 -0
- 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 +2 -2
- package/ios/scroll-to-top-guard/RNSScrollToTopGuard.h +17 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuard.mm +57 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.h +28 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.mm +64 -0
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +36 -0
- package/ios/split/RNSSplitAppearanceApplicator.mm +182 -0
- package/ios/split/RNSSplitAppearanceCoordinator.h +26 -0
- package/ios/split/RNSSplitAppearanceCoordinator.mm +27 -0
- package/ios/split/RNSSplitAppearanceUpdateFlags.h +14 -0
- 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 +56 -7
- package/ios/split/RNSSplitHostController.h +105 -0
- package/ios/split/RNSSplitHostController.mm +492 -0
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitNavigationController.h +31 -0
- package/ios/split/RNSSplitNavigationController.mm +44 -0
- package/ios/split/RNSSplitNavigationControllerFrameObserver.h +32 -0
- package/ios/split/RNSSplitNavigationControllerFrameObserver.mm +80 -0
- package/ios/split/RNSSplitNavigationControllerFrameOriginChangeDelegate.h +15 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +35 -19
- package/ios/split/RNSSplitScreenController.h +68 -0
- package/ios/split/RNSSplitScreenController.mm +113 -0
- 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 +32 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +55 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +11 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +108 -38
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +9 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +3 -1
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +15 -2
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +2 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +9 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +15 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +18 -3
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +21 -3
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackHostComponentView.mm +3 -1
- 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 +14 -6
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.mm +9 -4
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +14 -1
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +159 -28
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +40 -9
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +4 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +5 -2
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/conversion/RNSConversions-Tabs.h +78 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +8 -71
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabBarController.h +5 -12
- package/ios/tabs/host/RNSTabBarController.mm +1 -1
- package/ios/tabs/host/RNSTabsHostComponentView.h +2 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +10 -3
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +20 -5
- package/ios/utils/RNSDefines.h +3 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +25 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js +24 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
- package/lib/commonjs/components/scroll-to-top-guard/index.js +13 -0
- package/lib/commonjs/components/scroll-to-top-guard/index.js.map +1 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +34 -19
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +44 -13
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js +33 -2
- package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/utils.js +6 -9
- package/lib/commonjs/components/stack/header/utils.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +9 -6
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +1 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/experimental/index.js +11 -0
- package/lib/commonjs/experimental/index.js.map +1 -1
- package/lib/commonjs/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderConfigNativeComponent.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/legacy/SearchBarNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +12 -0
- package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/split/SplitHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/split/SplitScreenNativeComponent.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/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostAndroidNativeComponent.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.map +1 -1
- package/lib/commonjs/flags.js +22 -1
- package/lib/commonjs/flags.js.map +1 -1
- package/lib/commonjs/legacy/components/Screen.js +6 -1
- package/lib/commonjs/legacy/components/Screen.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js +5 -0
- package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/commonjs/legacy/components/SearchBar.js +16 -16
- package/lib/commonjs/legacy/components/SearchBar.js.map +1 -1
- package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js +3 -0
- package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
- package/lib/commonjs/legacy/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/commonjs/legacy/useTransitionProgress.js.map +1 -1
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +20 -0
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js +18 -0
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
- package/lib/module/components/scroll-to-top-guard/index.js +2 -0
- package/lib/module/components/scroll-to-top-guard/index.js.map +1 -0
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +35 -20
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +48 -17
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/header/ios/iconUtils.ios.js +31 -2
- package/lib/module/components/stack/header/ios/iconUtils.ios.js.map +1 -1
- package/lib/module/components/stack/header/utils.js +5 -8
- package/lib/module/components/stack/header/utils.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +9 -6
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +1 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/module/experimental/index.js +1 -0
- package/lib/module/experimental/index.js.map +1 -1
- package/lib/module/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderConfigNativeComponent.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/legacy/SearchBarNativeComponent.js.map +1 -1
- package/lib/module/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
- package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +7 -0
- package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
- package/lib/module/fabric/split/SplitHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/split/SplitScreenNativeComponent.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/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostAndroidNativeComponent.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.map +1 -1
- package/lib/module/flags.js +22 -1
- package/lib/module/flags.js.map +1 -1
- package/lib/module/legacy/components/Screen.js +6 -1
- package/lib/module/legacy/components/Screen.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackHeaderConfig.js +5 -0
- package/lib/module/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/legacy/components/SearchBar.js +17 -17
- package/lib/module/legacy/components/SearchBar.js.map +1 -1
- package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js +4 -0
- package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
- package/lib/module/legacy/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/module/legacy/useTransitionProgress.js.map +1 -1
- package/lib/module/private/hooks/useRenderDebugInfo.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +3 -3
- package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts +5 -2
- package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts.map +1 -1
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts +15 -0
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts.map +1 -0
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts +12 -0
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts.map +1 -0
- package/lib/typescript/components/scroll-to-top-guard/index.d.ts +2 -0
- package/lib/typescript/components/scroll-to-top-guard/index.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +639 -20
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +239 -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 +2 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +5 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.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 +2 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts +3 -0
- package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/utils.d.ts +1 -2
- package/lib/typescript/components/stack/header/utils.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 +26 -2
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +6 -2
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +2 -2
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/stack/screen/StackScreen.web.d.ts +5 -2
- package/lib/typescript/components/stack/screen/StackScreen.web.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +16 -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/host/TabsHost.web.d.ts +5 -2
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts +7 -3
- package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +5 -2
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +1 -1
- package/lib/typescript/experimental/index.d.ts +1 -0
- package/lib/typescript/experimental/index.d.ts.map +1 -1
- package/lib/typescript/fabric/NativeScreensModule.d.ts +1 -1
- package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts +3 -2
- package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts +3 -2
- package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts +3 -3
- package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts +6 -6
- package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +53 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +27 -2
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +4 -2
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +4 -2
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +3 -2
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/flags.d.ts +13 -0
- package/lib/typescript/flags.d.ts.map +1 -1
- package/lib/typescript/legacy/TransitionProgressContext.d.ts +1 -1
- package/lib/typescript/legacy/TransitionProgressContext.d.ts.map +1 -1
- package/lib/typescript/legacy/components/Screen.d.ts +5 -3
- package/lib/typescript/legacy/components/Screen.d.ts.map +1 -1
- package/lib/typescript/legacy/components/Screen.web.d.ts +10 -2
- package/lib/typescript/legacy/components/Screen.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenContainer.web.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenContainer.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenFooter.web.d.ts +10 -3
- package/lib/typescript/legacy/components/ScreenFooter.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts +10 -3
- package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStack.web.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenStack.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts +3 -1
- package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +3 -2
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/SearchBar.d.ts +3 -3
- package/lib/typescript/legacy/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/legacy/components/SearchBar.web.d.ts +5 -2
- package/lib/typescript/legacy/components/SearchBar.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +15 -12
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts +3 -2
- package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +25 -5
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/lib/typescript/legacy/useTransitionProgress.d.ts +2 -5
- package/lib/typescript/legacy/useTransitionProgress.d.ts.map +1 -1
- package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts +2 -2
- package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts.map +1 -1
- package/package.json +18 -17
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +3 -3
- package/src/components/scroll-to-top-guard/ScrollToTopGuard.ios.tsx +17 -0
- package/src/components/scroll-to-top-guard/ScrollToTopGuard.tsx +18 -0
- package/src/components/scroll-to-top-guard/index.ts +1 -0
- package/src/components/stack/header/StackHeaderConfig.android.tsx +48 -23
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +660 -20
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +77 -23
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +251 -2
- package/src/components/stack/header/StackHeaderConfig.types.ts +2 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +1 -23
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +2 -0
- package/src/components/stack/header/ios/iconUtils.ios.ts +38 -2
- package/src/components/stack/header/utils.ts +6 -11
- package/src/components/stack/host/StackHost.tsx +4 -2
- package/src/components/stack/host/StackHost.types.ts +28 -4
- package/src/components/stack/index.ts +6 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +1 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +16 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/components/tabs/screen/TabsScreen.types.ts +7 -3
- package/src/experimental/index.ts +1 -0
- package/src/fabric/ScrollViewMarkerNativeComponent.ts +8 -2
- package/src/fabric/legacy/FullWindowOverlayNativeComponent.ts +6 -2
- package/src/fabric/legacy/ModalScreenNativeComponent.ts +8 -2
- package/src/fabric/legacy/ScreenContainerNativeComponent.ts +5 -2
- package/src/fabric/legacy/ScreenContentWrapperNativeComponent.ts +2 -2
- package/src/fabric/legacy/ScreenFooterNativeComponent.ts +5 -2
- package/src/fabric/legacy/ScreenNativeComponent.ts +8 -2
- package/src/fabric/legacy/ScreenNavigationContainerNativeComponent.ts +2 -2
- package/src/fabric/legacy/ScreenStackHeaderConfigNativeComponent.ts +8 -3
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -2
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +10 -2
- package/src/fabric/legacy/SearchBarNativeComponent.ts +10 -7
- package/src/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.ts +2 -2
- package/src/fabric/modals/form-sheet/FormSheetHostNativeComponent.ts +7 -2
- package/src/fabric/safe-area/SafeAreaViewNativeComponent.ts +6 -2
- package/src/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.ts +10 -0
- package/src/fabric/split/SplitHostNativeComponent.ts +5 -2
- package/src/fabric/split/SplitScreenNativeComponent.ts +6 -2
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +81 -1
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +39 -2
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +4 -1
- package/src/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.ts +6 -2
- package/src/fabric/stack/StackHeaderSubviewAndroidNativeComponent.ts +6 -2
- package/src/fabric/stack/StackHostNativeComponent.ts +15 -3
- package/src/fabric/stack/StackScreenNativeComponent.ts +6 -2
- package/src/fabric/tabs/TabsBottomAccessoryContentNativeComponent.ts +6 -2
- package/src/fabric/tabs/TabsBottomAccessoryNativeComponent.ts +6 -2
- package/src/fabric/tabs/TabsHostAndroidNativeComponent.ts +7 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -2
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +2 -1
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +2 -1
- package/src/flags.ts +26 -0
- package/src/legacy/TransitionProgressContext.tsx +1 -1
- package/src/legacy/components/Screen.tsx +14 -6
- package/src/legacy/components/ScreenStackHeaderConfig.tsx +7 -1
- package/src/legacy/components/ScreenStackItem.tsx +3 -4
- package/src/legacy/components/SearchBar.tsx +34 -44
- package/src/legacy/components/helpers/prepareHeaderBarButtonItems.ts +7 -1
- package/src/legacy/gesture-handler/fabricUtils.ts +5 -2
- package/src/legacy/types.ts +28 -5
- package/src/legacy/useTransitionProgress.tsx +4 -2
- package/src/private/hooks/useRenderDebugInfo.tsx +2 -2
- 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/FormSheetDetents.kt +0 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDialog.kt +0 -60
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDialogManager.kt +0 -138
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDimensionsCoordinator.kt +0 -131
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetNativeDismissCoordinator.kt +0 -25
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetPresentationManager.kt +0 -207
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderAppBarLayout.kt +0 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuConfig.kt +0 -60
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuElementOptions.kt +0 -32
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuGroupMetadata.kt +0 -16
- package/ios/ReactMountingTransactionObserving.swift +0 -7
- package/ios/bridging/Swift-Bridging.h +0 -7
- 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/ios/orientation/RNSOrientationProviding.swift +0 -6
- package/ios/orientation/RNSOrientationSwift.swift +0 -14
- package/ios/split/RNSSplitAppearanceApplicator.swift +0 -199
- package/ios/split/RNSSplitAppearanceCoordinator.swift +0 -26
- package/ios/split/RNSSplitAppearanceUpdateFlags.swift +0 -11
- package/ios/split/RNSSplitHostController.swift +0 -570
- package/ios/split/RNSSplitNavigationController.swift +0 -46
- package/ios/split/RNSSplitScreenController.swift +0 -133
- package/ios/utils/RNSLog.swift +0 -6
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#import "RNSScrollToTopGuardGestureRecognizer.h"
|
|
2
|
+
#import "RNSDefines.h"
|
|
3
|
+
|
|
4
|
+
@implementation RNSScrollToTopGuardGestureRecognizer
|
|
5
|
+
|
|
6
|
+
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
|
|
7
|
+
|
|
8
|
+
- (instancetype)init
|
|
9
|
+
{
|
|
10
|
+
if (self = [super initWithTarget:self action:nil]) {
|
|
11
|
+
self.cancelsTouchesInView = NO;
|
|
12
|
+
self.delegate = self;
|
|
13
|
+
}
|
|
14
|
+
return self;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
#pragma mark - UIGestureRecognizerDelegate
|
|
18
|
+
|
|
19
|
+
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
|
|
20
|
+
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
|
|
21
|
+
{
|
|
22
|
+
return YES;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
|
|
26
|
+
shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
|
|
27
|
+
{
|
|
28
|
+
// We want to target tap gesture recognizers only (one responsible for scroll to top must be one).
|
|
29
|
+
if (![otherGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {
|
|
30
|
+
return NO;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// We don't know the exact recognizer responsible for scroll to top so we block all
|
|
34
|
+
// gesture recognizers above us.
|
|
35
|
+
return ![otherGestureRecognizer.view isDescendantOfView:gestureRecognizer.view];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#pragma mark - Class methods
|
|
39
|
+
|
|
40
|
+
+ (BOOL)shouldGuardScrollToTop
|
|
41
|
+
{
|
|
42
|
+
// The system scroll-to-top-on-header interaction has been present on iPadOS since iOS 26...
|
|
43
|
+
if (@available(iOS 26.0, *)) {
|
|
44
|
+
if (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
|
|
45
|
+
return YES;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// ...and was extended to iPhone in iOS 27.
|
|
49
|
+
if (@available(iOS 27.0, *)) {
|
|
50
|
+
if (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPhone) {
|
|
51
|
+
return YES;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return NO;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
+ (void)applyToView:(nonnull UIView *)view
|
|
58
|
+
{
|
|
59
|
+
[view addGestureRecognizer:[RNSScrollToTopGuardGestureRecognizer new]];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#endif // RNS_IPHONE_OS_VERSION_AVAILABLE(26_0)
|
|
63
|
+
|
|
64
|
+
@end
|
|
@@ -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);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
#import "RNSSplitAppearanceCoordinator.h"
|
|
5
|
+
#import "RNSSplitHostProviders.h"
|
|
6
|
+
|
|
7
|
+
@class RNSSplitHostController;
|
|
8
|
+
|
|
9
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @brief - Class responsible for applying all upcoming updates to SplitView.
|
|
13
|
+
*
|
|
14
|
+
* This class is synchronizing UISplitViewController configuration props which are affecting the SplitView appearance
|
|
15
|
+
* with the configuration exposed by the appearance provider.
|
|
16
|
+
*/
|
|
17
|
+
@interface RNSSplitAppearanceApplicator : NSObject
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @brief Function responsible for applying all updates to SplitView in correct order
|
|
21
|
+
*
|
|
22
|
+
* It requests calling proper callbacks with batched SplitView updates on the AppearanceCoordinator object
|
|
23
|
+
*
|
|
24
|
+
* @param provider The provider of the appearance configuration.
|
|
25
|
+
* @param splitHostController The controller associated with the SplitView component which receives updates and
|
|
26
|
+
* manages the native layer.
|
|
27
|
+
* @param appearanceCoordinator The coordinator which is checking whether the update needs to be applied and if so, it
|
|
28
|
+
* executes the callback passed by this class.
|
|
29
|
+
*/
|
|
30
|
+
- (void)updateAppearanceIfNeeded:(id<RNSSplitHostAppearanceProvider>)provider
|
|
31
|
+
splitHostController:(RNSSplitHostController *)splitHostController
|
|
32
|
+
appearanceCoordinator:(RNSSplitAppearanceCoordinator *)appearanceCoordinator;
|
|
33
|
+
|
|
34
|
+
@end
|
|
35
|
+
|
|
36
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
#import "RNSSplitAppearanceApplicator.h"
|
|
2
|
+
|
|
3
|
+
#import <React/RCTAssert.h>
|
|
4
|
+
#import "RNSDefines.h"
|
|
5
|
+
#import "RNSScreenWindowTraits.h"
|
|
6
|
+
#import "RNSSplitHostController.h"
|
|
7
|
+
|
|
8
|
+
@implementation RNSSplitAppearanceApplicator
|
|
9
|
+
|
|
10
|
+
- (void)updateAppearanceIfNeeded:(id<RNSSplitHostAppearanceProvider>)provider
|
|
11
|
+
splitHostController:(RNSSplitHostController *)splitHostController
|
|
12
|
+
appearanceCoordinator:(RNSSplitAppearanceCoordinator *)appearanceCoordinator
|
|
13
|
+
{
|
|
14
|
+
__weak auto weakSelf = self;
|
|
15
|
+
|
|
16
|
+
[appearanceCoordinator updateIfNeeded:RNSSplitAppearanceUpdateFlagsGeneralUpdate
|
|
17
|
+
updateCallback:^{
|
|
18
|
+
auto strongSelf = weakSelf;
|
|
19
|
+
if (strongSelf == nil) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[strongSelf updateSplitViewConfigurationFor:provider withController:splitHostController];
|
|
24
|
+
}];
|
|
25
|
+
|
|
26
|
+
[appearanceCoordinator updateIfNeeded:RNSSplitAppearanceUpdateFlagsSecondaryScreenNavBarUpdate
|
|
27
|
+
updateCallback:^{
|
|
28
|
+
auto strongSelf = weakSelf;
|
|
29
|
+
if (strongSelf == nil) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[splitHostController refreshSecondaryNavBar];
|
|
34
|
+
}];
|
|
35
|
+
|
|
36
|
+
[appearanceCoordinator updateIfNeeded:RNSSplitAppearanceUpdateFlagsDisplayModeUpdate
|
|
37
|
+
updateCallback:^{
|
|
38
|
+
auto strongSelf = weakSelf;
|
|
39
|
+
if (strongSelf == nil) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
[strongSelf updateSplitViewDisplayModeFor:provider withController:splitHostController];
|
|
44
|
+
}];
|
|
45
|
+
|
|
46
|
+
[appearanceCoordinator updateIfNeeded:RNSSplitAppearanceUpdateFlagsOrientationUpdate
|
|
47
|
+
updateCallback:^{
|
|
48
|
+
[RNSScreenWindowTraits enforceDesiredDeviceOrientation];
|
|
49
|
+
}];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @brief Function that applies all basic updates.
|
|
54
|
+
*
|
|
55
|
+
* It calls all setters on RNSSplitHostController that doesn't require any custom logic and conditions to be met.
|
|
56
|
+
*
|
|
57
|
+
* @param provider The provider of the appearance configuration.
|
|
58
|
+
* @param splitHostController The controller associated with the SplitView component which receives updates and
|
|
59
|
+
* manages the native layer.
|
|
60
|
+
*/
|
|
61
|
+
- (void)updateSplitViewConfigurationFor:(id<RNSSplitHostAppearanceProvider>)provider
|
|
62
|
+
withController:(RNSSplitHostController *)splitHostController
|
|
63
|
+
{
|
|
64
|
+
// Step 1 - general settings
|
|
65
|
+
splitHostController.displayModeButtonVisibility = provider.displayModeButtonVisibility;
|
|
66
|
+
splitHostController.preferredSplitBehavior = provider.preferredSplitBehavior;
|
|
67
|
+
splitHostController.overrideUserInterfaceStyle = provider.colorScheme;
|
|
68
|
+
#if !TARGET_OS_TV
|
|
69
|
+
splitHostController.primaryBackgroundStyle = provider.primaryBackgroundStyle;
|
|
70
|
+
#endif
|
|
71
|
+
splitHostController.presentsWithGesture = provider.presentsWithGesture;
|
|
72
|
+
splitHostController.primaryEdge = provider.primaryEdge;
|
|
73
|
+
splitHostController.showsSecondaryOnlyButton = provider.showSecondaryToggleButton;
|
|
74
|
+
|
|
75
|
+
// Step 2.1 - validating column constraints
|
|
76
|
+
[self validateColumnConstraintsWithMinWidth:provider.minimumPrimaryColumnWidth
|
|
77
|
+
maxWidth:provider.maximumPrimaryColumnWidth];
|
|
78
|
+
|
|
79
|
+
[self validateColumnConstraintsWithMinWidth:provider.minimumSupplementaryColumnWidth
|
|
80
|
+
maxWidth:provider.maximumSupplementaryColumnWidth];
|
|
81
|
+
|
|
82
|
+
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) && !TARGET_OS_TV
|
|
83
|
+
if (@available(iOS 26.0, *)) {
|
|
84
|
+
[self validateColumnConstraintsWithMinWidth:provider.minimumInspectorColumnWidth
|
|
85
|
+
maxWidth:provider.maximumInspectorColumnWidth];
|
|
86
|
+
}
|
|
87
|
+
#endif
|
|
88
|
+
|
|
89
|
+
// Step 2.2 - applying updates to columns
|
|
90
|
+
if (provider.minimumPrimaryColumnWidth >= 0) {
|
|
91
|
+
splitHostController.minimumPrimaryColumnWidth = provider.minimumPrimaryColumnWidth;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (provider.maximumPrimaryColumnWidth >= 0) {
|
|
95
|
+
splitHostController.maximumPrimaryColumnWidth = provider.maximumPrimaryColumnWidth;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (provider.preferredPrimaryColumnWidthOrFraction >= 0 && provider.preferredPrimaryColumnWidthOrFraction < 1) {
|
|
99
|
+
splitHostController.preferredPrimaryColumnWidthFraction = provider.preferredPrimaryColumnWidthOrFraction;
|
|
100
|
+
} else if (provider.preferredPrimaryColumnWidthOrFraction >= 1) {
|
|
101
|
+
splitHostController.preferredPrimaryColumnWidth = provider.preferredPrimaryColumnWidthOrFraction;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (provider.minimumSupplementaryColumnWidth >= 0) {
|
|
105
|
+
splitHostController.minimumSupplementaryColumnWidth = provider.minimumSupplementaryColumnWidth;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (provider.maximumSupplementaryColumnWidth >= 0) {
|
|
109
|
+
splitHostController.maximumSupplementaryColumnWidth = provider.maximumSupplementaryColumnWidth;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (provider.preferredSupplementaryColumnWidthOrFraction >= 0 &&
|
|
113
|
+
provider.preferredSupplementaryColumnWidthOrFraction < 1) {
|
|
114
|
+
splitHostController.preferredSupplementaryColumnWidthFraction =
|
|
115
|
+
provider.preferredSupplementaryColumnWidthOrFraction;
|
|
116
|
+
} else if (provider.preferredSupplementaryColumnWidthOrFraction >= 1) {
|
|
117
|
+
splitHostController.preferredSupplementaryColumnWidth = provider.preferredSupplementaryColumnWidthOrFraction;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) && !TARGET_OS_TV
|
|
121
|
+
if (@available(iOS 26.0, *)) {
|
|
122
|
+
if (provider.minimumSecondaryColumnWidth >= 0) {
|
|
123
|
+
splitHostController.minimumSecondaryColumnWidth = provider.minimumSecondaryColumnWidth;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (provider.preferredSecondaryColumnWidthOrFraction >= 0 && provider.preferredSecondaryColumnWidthOrFraction < 1) {
|
|
127
|
+
splitHostController.preferredSecondaryColumnWidthFraction = provider.preferredSecondaryColumnWidthOrFraction;
|
|
128
|
+
} else if (provider.preferredSecondaryColumnWidthOrFraction >= 1) {
|
|
129
|
+
splitHostController.preferredSecondaryColumnWidth = provider.preferredSecondaryColumnWidthOrFraction;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (provider.minimumInspectorColumnWidth >= 0) {
|
|
133
|
+
splitHostController.minimumInspectorColumnWidth = provider.minimumInspectorColumnWidth;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (provider.maximumInspectorColumnWidth >= 0) {
|
|
137
|
+
splitHostController.maximumInspectorColumnWidth = provider.maximumInspectorColumnWidth;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (provider.preferredInspectorColumnWidthOrFraction >= 0 && provider.preferredInspectorColumnWidthOrFraction < 1) {
|
|
141
|
+
splitHostController.preferredInspectorColumnWidthFraction = provider.preferredInspectorColumnWidthOrFraction;
|
|
142
|
+
} else if (provider.preferredInspectorColumnWidthOrFraction >= 1) {
|
|
143
|
+
splitHostController.preferredInspectorColumnWidth = provider.preferredInspectorColumnWidthOrFraction;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
#endif
|
|
147
|
+
|
|
148
|
+
// Step 2.3 - manipulating with inspector column
|
|
149
|
+
[splitHostController toggleSplitViewInspector:provider.showInspector];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @brief Function that updates `preferredDisplayMode` property on SplitView.
|
|
154
|
+
*
|
|
155
|
+
* `preferredDisplayMode` needs to have a dedicated flag to prevent updates from the JS, when other props updates the
|
|
156
|
+
* appearance. It is crucial in the case, when `preferredDisplayMode` has changed due to some transition that was
|
|
157
|
+
* executed natively, e. g. after showing/hiding a column by a swipe. In that case, any prop update incoming, would
|
|
158
|
+
* reset `preferredDisplayMode` to the state from JS, what doesn't look good.
|
|
159
|
+
*
|
|
160
|
+
* @param provider The provider of the appearance configuration.
|
|
161
|
+
* @param splitHostController The controller associated with the SplitView component which receives updates and
|
|
162
|
+
* manages the native layer.
|
|
163
|
+
*/
|
|
164
|
+
- (void)updateSplitViewDisplayModeFor:(id<RNSSplitHostAppearanceProvider>)provider
|
|
165
|
+
withController:(RNSSplitHostController *)splitHostController
|
|
166
|
+
{
|
|
167
|
+
splitHostController.preferredDisplayMode = provider.preferredDisplayMode;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
- (void)validateColumnConstraintsWithMinWidth:(CGFloat)minWidth maxWidth:(CGFloat)maxWidth
|
|
171
|
+
{
|
|
172
|
+
// Compare values only if both are non-negative.
|
|
173
|
+
// The default value, which is -1, indicates that the constraint was not provided.
|
|
174
|
+
if (minWidth >= 0 && maxWidth >= 0) {
|
|
175
|
+
RCTAssert(minWidth <= maxWidth,
|
|
176
|
+
@"[RNScreens] Split column constraints are invalid: minWidth %f cannot be greater than maxWidth %f",
|
|
177
|
+
minWidth,
|
|
178
|
+
maxWidth);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
#import "RNSSplitAppearanceUpdateFlags.h"
|
|
5
|
+
|
|
6
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @brief - A class that is responsible for coordinating SplitHost appearance updates.
|
|
10
|
+
*
|
|
11
|
+
* It collects flags for Split appearance update actions and invalidates them.
|
|
12
|
+
* It's also responsible for executing callbacks when the action is requested.
|
|
13
|
+
*/
|
|
14
|
+
@interface RNSSplitAppearanceCoordinator : NSObject
|
|
15
|
+
|
|
16
|
+
@property (nonatomic) RNSSplitAppearanceUpdateFlags updateFlags;
|
|
17
|
+
|
|
18
|
+
- (void)needs:(RNSSplitAppearanceUpdateFlags)updateFlag;
|
|
19
|
+
|
|
20
|
+
- (void)updateIfNeeded:(RNSSplitAppearanceUpdateFlags)updateFlag updateCallback:(void (^)(void))updateCallback;
|
|
21
|
+
|
|
22
|
+
- (BOOL)isNeeded:(RNSSplitAppearanceUpdateFlags)updateFlag;
|
|
23
|
+
|
|
24
|
+
@end
|
|
25
|
+
|
|
26
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#import "RNSSplitAppearanceCoordinator.h"
|
|
2
|
+
|
|
3
|
+
@implementation RNSSplitAppearanceCoordinator
|
|
4
|
+
|
|
5
|
+
- (void)needs:(RNSSplitAppearanceUpdateFlags)updateFlag
|
|
6
|
+
{
|
|
7
|
+
_updateFlags |= updateFlag;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Executes the update callback if the specified flag is set.
|
|
12
|
+
* The flag is cleared prior to execution to ensure the update only happens once per cycle.
|
|
13
|
+
*/
|
|
14
|
+
- (void)updateIfNeeded:(RNSSplitAppearanceUpdateFlags)updateFlag updateCallback:(void (^)(void))updateCallback
|
|
15
|
+
{
|
|
16
|
+
if ([self isNeeded:updateFlag]) {
|
|
17
|
+
_updateFlags &= ~updateFlag;
|
|
18
|
+
updateCallback();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
- (BOOL)isNeeded:(RNSSplitAppearanceUpdateFlags)updateFlag
|
|
23
|
+
{
|
|
24
|
+
return (_updateFlags & updateFlag) == updateFlag;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @brief - A collection of flags, which can be invalidated on RNSSplitHostController to apply proper updates to
|
|
7
|
+
* SplitView
|
|
8
|
+
*/
|
|
9
|
+
typedef NS_OPTIONS(uint8_t, RNSSplitAppearanceUpdateFlags) {
|
|
10
|
+
RNSSplitAppearanceUpdateFlagsGeneralUpdate = 1 << 0,
|
|
11
|
+
RNSSplitAppearanceUpdateFlagsSecondaryScreenNavBarUpdate = 1 << 1,
|
|
12
|
+
RNSSplitAppearanceUpdateFlagsDisplayModeUpdate = 1 << 2,
|
|
13
|
+
RNSSplitAppearanceUpdateFlagsOrientationUpdate = 1 << 3,
|
|
14
|
+
};
|
|
@@ -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"
|
|
12
|
+
#import "RNSSplitHostController.h"
|
|
11
13
|
#import "RNSSplitScreenComponentView.h"
|
|
12
|
-
#import "
|
|
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
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <UIKit/UIKit.h>
|
|
4
|
+
#import "RNSOrientationProviding.h"
|
|
5
|
+
#import "RNSReactMountingTransactionObserving.h"
|
|
6
|
+
#import "RNSSplitHostProviders.h"
|
|
7
|
+
|
|
8
|
+
@class RNSSplitHostController;
|
|
9
|
+
|
|
10
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
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
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @class RNSSplitHostController
|
|
29
|
+
* @brief A controller associated with the RN native component representing Split host.
|
|
30
|
+
*
|
|
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.
|
|
33
|
+
*/
|
|
34
|
+
@interface RNSSplitHostController
|
|
35
|
+
: UISplitViewController <RNSReactMountingTransactionObserving, RNSOrientationProviding>
|
|
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
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @brief Initializes the Split host controller with provided style.
|
|
44
|
+
*
|
|
45
|
+
* The style for the Split component can be passed only in the initialization method and cannot be changed dynamically.
|
|
46
|
+
*
|
|
47
|
+
* @param numberOfColumns Expected number of visible columns.
|
|
48
|
+
*/
|
|
49
|
+
- (instancetype)initWithNumberOfColumns:(NSInteger)numberOfColumns;
|
|
50
|
+
|
|
51
|
+
#pragma mark - Signals
|
|
52
|
+
|
|
53
|
+
- (void)setNeedsUpdateOfChildViewControllers;
|
|
54
|
+
|
|
55
|
+
- (void)setNeedsAppearanceUpdate;
|
|
56
|
+
|
|
57
|
+
- (void)setNeedsSecondaryScreenNavBarUpdate;
|
|
58
|
+
|
|
59
|
+
- (void)setNeedsDisplayModeUpdate;
|
|
60
|
+
|
|
61
|
+
- (void)setNeedsOrientationUpdate;
|
|
62
|
+
|
|
63
|
+
#pragma mark - Updating
|
|
64
|
+
|
|
65
|
+
- (void)updateChildViewControllersIfNeeded;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @brief Creates and attaches the Split child controllers based on the current React subviews.
|
|
69
|
+
*
|
|
70
|
+
* It validates constraints for Split hierarchy and it will crash after recognizing an invalid state,
|
|
71
|
+
* e. g. dynamically changed number of columns or number of columns that isn't between defined bounds.
|
|
72
|
+
* If Split constraints are met, it attaches SplitScreen representatives to SplitHost component.
|
|
73
|
+
*/
|
|
74
|
+
- (void)updateChildViewControllers;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @brief Triggering appearance updates on secondary column's UINavigationBar component
|
|
78
|
+
*
|
|
79
|
+
* It validates that the secondary VC is valid UINavigationController and it updates the navbar
|
|
80
|
+
* state by toggling it's visibility, what should be performed in a single batch of updates.
|
|
81
|
+
*/
|
|
82
|
+
- (void)refreshSecondaryNavBar;
|
|
83
|
+
|
|
84
|
+
#pragma mark - Public setters
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @brief Shows or hides the inspector screen.
|
|
88
|
+
* @remarks Inspector column is only available for iOS 26 or higher.
|
|
89
|
+
*
|
|
90
|
+
* @param showInspector Determines whether the inspector column should be visible.
|
|
91
|
+
*/
|
|
92
|
+
- (void)toggleSplitViewInspector:(BOOL)showInspector;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @brief Programmatically shows a specific column identified by its string name.
|
|
96
|
+
*
|
|
97
|
+
* Maps the string column name to the corresponding `UISplitViewController.Column` and calls `show(_:)`.
|
|
98
|
+
*
|
|
99
|
+
* @param columnName A string representing the column to show: `"primary"`, `"supplementary"`, or `"secondary"`.
|
|
100
|
+
*/
|
|
101
|
+
- (void)showColumnNamed:(NSString *)columnName;
|
|
102
|
+
|
|
103
|
+
@end
|
|
104
|
+
|
|
105
|
+
NS_ASSUME_NONNULL_END
|