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
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import android.annotation.SuppressLint
|
|
4
|
-
import android.content.Context
|
|
5
|
-
import android.graphics.Color
|
|
6
|
-
import android.view.MotionEvent
|
|
7
|
-
import android.view.ViewGroup
|
|
8
|
-
import com.facebook.react.uimanager.ReactCompoundViewGroup
|
|
9
|
-
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
10
|
-
import com.swmansion.rnscreens.ext.equalWithRespectToEps
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Serves as dimming view that can be used as background for some view that does not fully fill
|
|
14
|
-
* the viewport.
|
|
15
|
-
*
|
|
16
|
-
* This dimming view has one more additional feature: it blocks gestures if its alpha > 0.
|
|
17
|
-
*/
|
|
18
|
-
@SuppressLint("ViewConstructor") // Only we instantiate this view
|
|
19
|
-
internal class DimmingView(
|
|
20
|
-
context: Context,
|
|
21
|
-
initialAlpha: Float,
|
|
22
|
-
private val pointerEventsProxy: DimmingViewPointerEventsProxy,
|
|
23
|
-
) : ViewGroup(context),
|
|
24
|
-
ReactCompoundViewGroup,
|
|
25
|
-
ReactPointerEventsView by pointerEventsProxy {
|
|
26
|
-
constructor(context: Context, initialAlpha: Float) : this(
|
|
27
|
-
context,
|
|
28
|
-
initialAlpha,
|
|
29
|
-
DimmingViewPointerEventsProxy(null),
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
init {
|
|
33
|
-
pointerEventsProxy.pointerEventsImpl = DimmingViewPointerEventsImpl(this)
|
|
34
|
-
setFocusable(false)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
internal val blockGestures
|
|
38
|
-
get() = !alpha.equalWithRespectToEps(0F)
|
|
39
|
-
|
|
40
|
-
init {
|
|
41
|
-
setBackgroundColor(Color.BLACK)
|
|
42
|
-
alpha = initialAlpha
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// This view group is not supposed to have any children, however we need it to be a view group
|
|
46
|
-
override fun onLayout(
|
|
47
|
-
changed: Boolean,
|
|
48
|
-
l: Int,
|
|
49
|
-
t: Int,
|
|
50
|
-
r: Int,
|
|
51
|
-
b: Int,
|
|
52
|
-
) = Unit
|
|
53
|
-
|
|
54
|
-
// We do not want to have any action defined here. We just want listeners notified that the click happened.
|
|
55
|
-
@SuppressLint("ClickableViewAccessibility")
|
|
56
|
-
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
|
57
|
-
if (blockGestures && event?.actionMasked == MotionEvent.ACTION_UP) {
|
|
58
|
-
callOnClick()
|
|
59
|
-
}
|
|
60
|
-
return blockGestures
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
override fun reactTagForTouch(
|
|
64
|
-
x: Float,
|
|
65
|
-
y: Float,
|
|
66
|
-
): Int = throw IllegalStateException("[RNScreens] $TAG should never be asked for the view tag!")
|
|
67
|
-
|
|
68
|
-
override fun interceptsTouchEvent(
|
|
69
|
-
x: Float,
|
|
70
|
-
y: Float,
|
|
71
|
-
) = blockGestures
|
|
72
|
-
|
|
73
|
-
override fun onDetachedFromWindow() {
|
|
74
|
-
super.onDetachedFromWindow()
|
|
75
|
-
|
|
76
|
-
// Break reference cycle, since the pointerEventsImpl strongly retains this.
|
|
77
|
-
pointerEventsProxy.pointerEventsImpl = null
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
companion object {
|
|
81
|
-
const val TAG = "DimmingView"
|
|
82
|
-
}
|
|
83
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import android.view.View
|
|
6
|
-
import android.view.ViewGroup
|
|
7
|
-
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
8
|
-
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
9
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
10
|
-
|
|
11
|
-
class DimmingViewManager(
|
|
12
|
-
context: Context,
|
|
13
|
-
private val dialog: BottomSheetDialog,
|
|
14
|
-
) {
|
|
15
|
-
// TODO: @t0maboro - consider exposing as a prop
|
|
16
|
-
internal val maxAlpha: Float = MAX_ALPHA
|
|
17
|
-
|
|
18
|
-
internal var isTransitionAnimationRunning: Boolean = false
|
|
19
|
-
|
|
20
|
-
internal var dimmingViewAlpha: Float
|
|
21
|
-
get() = dimmingView.alpha
|
|
22
|
-
set(value) {
|
|
23
|
-
dimmingView.alpha = value
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
private val dimmingView =
|
|
27
|
-
DimmingView(context, initialAlpha = 0f).apply {
|
|
28
|
-
layoutParams =
|
|
29
|
-
CoordinatorLayout.LayoutParams(
|
|
30
|
-
ViewGroup.LayoutParams.MATCH_PARENT,
|
|
31
|
-
ViewGroup.LayoutParams.MATCH_PARENT,
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
internal fun setOnBackdropClickListener(listener: View.OnClickListener?) {
|
|
36
|
-
dimmingView.setOnClickListener(listener)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
internal fun onDialogShow() {
|
|
40
|
-
attachDimmingViewOverNativeTouchOutside()
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
internal fun attachToBehavior(behavior: BottomSheetBehavior<*>) {
|
|
44
|
-
behavior.addBottomSheetCallback(
|
|
45
|
-
object : BottomSheetBehavior.BottomSheetCallback() {
|
|
46
|
-
override fun onStateChanged(
|
|
47
|
-
bottomSheet: View,
|
|
48
|
-
newState: Int,
|
|
49
|
-
) = Unit
|
|
50
|
-
|
|
51
|
-
override fun onSlide(
|
|
52
|
-
bottomSheet: View,
|
|
53
|
-
slideOffset: Float,
|
|
54
|
-
) {
|
|
55
|
-
// Prevent system updates from overriding alpha while running custom enter/exit animation.
|
|
56
|
-
// When initialDetentIndex is snapping to a high detent, BottomSheetBehavior fires onSlide
|
|
57
|
-
// events that conflict with our manual alpha animator, causing the backdrop to flash.
|
|
58
|
-
if (isTransitionAnimationRunning) {
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
val fraction = if (slideOffset >= 0) 1f else 1f + slideOffset
|
|
63
|
-
dimmingView.alpha = fraction * maxAlpha
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private fun attachDimmingViewOverNativeTouchOutside() {
|
|
70
|
-
val coordinator = dialog.findViewById<CoordinatorLayout>(com.google.android.material.R.id.coordinator)
|
|
71
|
-
val bottomSheetView = dialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet)
|
|
72
|
-
|
|
73
|
-
if (coordinator != null && dimmingView.parent == null && bottomSheetView != null) {
|
|
74
|
-
val sheetIndex = coordinator.indexOfChild(bottomSheetView)
|
|
75
|
-
if (sheetIndex >= 0) {
|
|
76
|
-
coordinator.addView(dimmingView, sheetIndex)
|
|
77
|
-
} else {
|
|
78
|
-
Log.e(TAG, "[RNScreens] BottomSheetView not found! Falling back to bottom index.")
|
|
79
|
-
coordinator.addView(dimmingView, 0)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
companion object {
|
|
85
|
-
const val TAG = "DimmingViewManager"
|
|
86
|
-
|
|
87
|
-
private const val MAX_ALPHA = 0.3f
|
|
88
|
-
}
|
|
89
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.uimanager.PointerEvents
|
|
4
|
-
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
5
|
-
|
|
6
|
-
internal class DimmingViewPointerEventsImpl(
|
|
7
|
-
val dimmingView: DimmingView,
|
|
8
|
-
) : ReactPointerEventsView {
|
|
9
|
-
override val pointerEvents: PointerEvents
|
|
10
|
-
get() = if (dimmingView.blockGestures) PointerEvents.AUTO else PointerEvents.NONE
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
internal class DimmingViewPointerEventsProxy(
|
|
14
|
-
var pointerEventsImpl: DimmingViewPointerEventsImpl?,
|
|
15
|
-
) : ReactPointerEventsView {
|
|
16
|
-
override val pointerEvents: PointerEvents
|
|
17
|
-
get() = pointerEventsImpl?.pointerEvents ?: PointerEvents.NONE
|
|
18
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
2
|
-
|
|
3
|
-
internal class FormSheetDetents(
|
|
4
|
-
rawDetents: List<Double>,
|
|
5
|
-
) {
|
|
6
|
-
private val detents: List<Double> = rawDetents.toList()
|
|
7
|
-
|
|
8
|
-
init {
|
|
9
|
-
require(detents.isNotEmpty()) { "[RNScreens] At least one detent must be provided." }
|
|
10
|
-
require(detents.size <= MAX_DETENTS) { "[RNScreens] Maximum of $MAX_DETENTS detents supported, got ${detents.size}." }
|
|
11
|
-
|
|
12
|
-
// Valid fitToContents configuration is a single detent with value -1.0.
|
|
13
|
-
// For any other configuration, we should validate provided detents array.
|
|
14
|
-
if (!isFitToContents) {
|
|
15
|
-
detents.forEach {
|
|
16
|
-
require(it in 0.0..1.0) {
|
|
17
|
-
"[RNScreens] Detent values must be within 0.0 and 1.0, got $it."
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
require(detents == detents.distinct().sorted()) {
|
|
22
|
-
"[RNScreens] Detents must be sorted in strictly ascending order."
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
internal val isFitToContents: Boolean
|
|
28
|
-
get() = detents.size == 1 && detents[0] == FIT_TO_CONTENTS_DETENT_VALUE
|
|
29
|
-
|
|
30
|
-
internal val count: Int get() = detents.size
|
|
31
|
-
|
|
32
|
-
private fun heightFractionAt(index: Int): Double = detents[index]
|
|
33
|
-
|
|
34
|
-
private fun heightAt(
|
|
35
|
-
index: Int,
|
|
36
|
-
containerHeight: Int,
|
|
37
|
-
): Int = (heightFractionAt(index) * containerHeight).toInt()
|
|
38
|
-
|
|
39
|
-
internal fun firstHeight(containerHeight: Int): Int = heightAt(0, containerHeight)
|
|
40
|
-
|
|
41
|
-
internal fun maxAllowedHeight(containerHeight: Int): Int = heightAt(count - 1, containerHeight)
|
|
42
|
-
|
|
43
|
-
internal fun maxAllowedHeightForFitToContents(
|
|
44
|
-
containerHeight: Int,
|
|
45
|
-
contentHeight: Int,
|
|
46
|
-
bottomInset: Int,
|
|
47
|
-
): Int {
|
|
48
|
-
/*
|
|
49
|
-
* We add the `bottomInset` to the `contentHeight` so that the Material BottomSheet
|
|
50
|
-
* is laid out behind the system navigation bar. The sheet's container covers the insets,
|
|
51
|
-
* while the RN content is strictly constrained to `contentHeight`.
|
|
52
|
-
*/
|
|
53
|
-
if (contentHeight <= 0) {
|
|
54
|
-
// Avoid collapsing the sheet before the React content has been laid out and measured.
|
|
55
|
-
return containerHeight
|
|
56
|
-
}
|
|
57
|
-
return (contentHeight + bottomInset).coerceAtMost(containerHeight)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
internal fun halfExpandedRatio(): Float {
|
|
61
|
-
check(count == MAX_DETENTS) { "[RNScreens] Exactly $MAX_DETENTS detents are required for halfExpandedRatio." }
|
|
62
|
-
return (heightFractionAt(1) / heightFractionAt(2)).toFloat()
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
internal fun expandedOffsetFromTop(
|
|
66
|
-
containerHeight: Int,
|
|
67
|
-
topInset: Int = 0,
|
|
68
|
-
): Int {
|
|
69
|
-
check(count == MAX_DETENTS) { "[RNScreens] Exactly $MAX_DETENTS detents are required for expandedOffsetFromTop." }
|
|
70
|
-
return ((1 - heightFractionAt(2)) * containerHeight).toInt() + topInset
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Distance from the top of the window to the top of the largest detent's surface.
|
|
74
|
-
private fun largestDetentTopOffset(containerHeight: Int): Int = containerHeight - maxAllowedHeight(containerHeight)
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Material's BottomSheetDialog dynamically applies padding when its content overlaps
|
|
78
|
-
* system insets. To prevent recalculating the size, we pre-calculate a static height
|
|
79
|
-
* inside safe area bounds.
|
|
80
|
-
*/
|
|
81
|
-
internal fun sheetContainerHeight(
|
|
82
|
-
containerHeight: Int,
|
|
83
|
-
topInset: Int,
|
|
84
|
-
bottomInset: Int,
|
|
85
|
-
contentHeight: Int = 0,
|
|
86
|
-
): Int {
|
|
87
|
-
if (isFitToContents) {
|
|
88
|
-
// Until we have a measured content height, fall back to a safe-area height so Yoga can lay out.
|
|
89
|
-
if (contentHeight <= 0) {
|
|
90
|
-
return (containerHeight - topInset - bottomInset).coerceAtLeast(0)
|
|
91
|
-
}
|
|
92
|
-
return contentHeight.coerceAtMost(containerHeight)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Bottom inset is always fully subtracted because the sheet is in its dedicated window and it's
|
|
96
|
-
// anchored to the bottom.
|
|
97
|
-
// Top inset is subtracted only by the amount the sheet actually overlaps it.
|
|
98
|
-
val topOverlap = (topInset - largestDetentTopOffset(containerHeight)).coerceAtLeast(0)
|
|
99
|
-
return (maxAllowedHeight(containerHeight) - topOverlap - bottomInset).coerceAtLeast(0)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
companion object {
|
|
103
|
-
const val MAX_DETENTS = 3
|
|
104
|
-
const val FIT_TO_CONTENTS_DETENT_VALUE = -1.0
|
|
105
|
-
}
|
|
106
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.os.Bundle
|
|
5
|
-
import android.view.View
|
|
6
|
-
import android.view.ViewGroup
|
|
7
|
-
import android.view.Window
|
|
8
|
-
import android.view.WindowManager
|
|
9
|
-
import android.widget.FrameLayout
|
|
10
|
-
import androidx.core.view.WindowCompat
|
|
11
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* A custom BottomSheetDialog override used to render the FormSheet native component.
|
|
15
|
-
*
|
|
16
|
-
* We enforce edge-to-edge rendering, bypassing standard Material checks.
|
|
17
|
-
* This enforcement is required because our custom dimming view must span the entire screen.
|
|
18
|
-
* The FormSheetContainer is sized manually against the system insets.
|
|
19
|
-
*/
|
|
20
|
-
internal class FormSheetDialog(
|
|
21
|
-
context: Context,
|
|
22
|
-
) : BottomSheetDialog(context) {
|
|
23
|
-
override fun onCreate(savedInstanceState: Bundle?) {
|
|
24
|
-
super.onCreate(savedInstanceState)
|
|
25
|
-
|
|
26
|
-
hideNativeDimmingView(window)
|
|
27
|
-
disableNativeWindowAnimation(window)
|
|
28
|
-
|
|
29
|
-
setupBottomSheetHeight()
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
override fun onAttachedToWindow() {
|
|
33
|
-
super.onAttachedToWindow()
|
|
34
|
-
|
|
35
|
-
forceEdgeToEdge()
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Material's [BottomSheetDialog] only draws edge-to-edge when its theme opts in via the
|
|
40
|
-
* `enableEdgeToEdge` attribute AND the navigation bar is translucent (see
|
|
41
|
-
* `BottomSheetDialog#onAttachedToWindow`).
|
|
42
|
-
*
|
|
43
|
-
* We force edge-to-edge on every API level so the custom dimming view covers the whole screen.
|
|
44
|
-
*/
|
|
45
|
-
private fun forceEdgeToEdge() {
|
|
46
|
-
val window = window ?: return
|
|
47
|
-
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
48
|
-
findViewById<View>(com.google.android.material.R.id.container)?.fitsSystemWindows = false
|
|
49
|
-
findViewById<View>(com.google.android.material.R.id.coordinator)?.fitsSystemWindows = false
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private fun hideNativeDimmingView(window: Window?) = window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
|
|
53
|
-
|
|
54
|
-
private fun disableNativeWindowAnimation(window: Window?) = window?.setWindowAnimations(0)
|
|
55
|
-
|
|
56
|
-
private fun setupBottomSheetHeight() {
|
|
57
|
-
val bottomSheetView = findViewById<FrameLayout>(com.google.android.material.R.id.design_bottom_sheet)
|
|
58
|
-
bottomSheetView?.layoutParams?.height = ViewGroup.LayoutParams.MATCH_PARENT
|
|
59
|
-
}
|
|
60
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetDialogManager.kt
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import android.view.ContextThemeWrapper
|
|
6
|
-
import android.view.View
|
|
7
|
-
import android.widget.FrameLayout
|
|
8
|
-
import com.swmansion.rnscreens.modals.dimmingview.DimmingViewManager
|
|
9
|
-
import kotlin.properties.Delegates
|
|
10
|
-
|
|
11
|
-
class FormSheetDialogManager(
|
|
12
|
-
context: Context,
|
|
13
|
-
private val contentView: View,
|
|
14
|
-
) {
|
|
15
|
-
private var formSheetConfig = FormSheetConfig()
|
|
16
|
-
|
|
17
|
-
private val themedContext =
|
|
18
|
-
ContextThemeWrapper(
|
|
19
|
-
context,
|
|
20
|
-
com.google.android.material.R.style.Theme_Material3_DayNight_NoActionBar,
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
// Eagerly create the container so it's always ready for the provided content view
|
|
24
|
-
private val container = FormSheetContainer(themedContext, contentView)
|
|
25
|
-
|
|
26
|
-
// Eagerly create the dialog and attach the container
|
|
27
|
-
private val dialog =
|
|
28
|
-
FormSheetDialog(themedContext).apply {
|
|
29
|
-
setContentView(container)
|
|
30
|
-
setCanceledOnTouchOutside(false)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private val bottomSheetView = dialog.findViewById<FrameLayout>(com.google.android.material.R.id.design_bottom_sheet)
|
|
34
|
-
|
|
35
|
-
private val behaviorController =
|
|
36
|
-
bottomSheetView?.let {
|
|
37
|
-
FormSheetBehaviorController(it) { index -> eventEmitter?.emitOnDetentChanged(index) }
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
private val dimmingManager = DimmingViewManager(context, dialog)
|
|
41
|
-
|
|
42
|
-
private val appearanceCoordinator =
|
|
43
|
-
FormSheetAppearanceCoordinator(
|
|
44
|
-
bottomSheetView = bottomSheetView,
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
private val dimensionsCoordinator =
|
|
48
|
-
FormSheetDimensionsCoordinator(
|
|
49
|
-
dialog = dialog,
|
|
50
|
-
container = container,
|
|
51
|
-
bottomSheetView = bottomSheetView,
|
|
52
|
-
behaviorController = behaviorController,
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
private val presentationManager =
|
|
56
|
-
FormSheetPresentationManager(
|
|
57
|
-
dialog = dialog,
|
|
58
|
-
bottomSheetView = bottomSheetView,
|
|
59
|
-
dimmingManager = dimmingManager,
|
|
60
|
-
onNativeDismiss = { eventEmitter?.emitOnNativeDismissEvent() },
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
internal var eventEmitter: FormSheetDialogEventEmitter? by Delegates.observable(null) { _, _, newValue ->
|
|
64
|
-
presentationManager.appearanceEventEmitter = newValue
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
internal val contentSizeChangeDelegate: FormSheetContentSizeChangeDelegate
|
|
68
|
-
get() = dimensionsCoordinator
|
|
69
|
-
|
|
70
|
-
init {
|
|
71
|
-
presentationManager.setup()
|
|
72
|
-
appearanceCoordinator.setup()
|
|
73
|
-
dimensionsCoordinator.setup()
|
|
74
|
-
behaviorController?.setup()
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
internal fun applyConfig(newConfig: FormSheetConfig) {
|
|
78
|
-
val oldConfig = formSheetConfig
|
|
79
|
-
formSheetConfig = newConfig
|
|
80
|
-
|
|
81
|
-
val reopened = !oldConfig.isOpen && newConfig.isOpen
|
|
82
|
-
|
|
83
|
-
// ALWAYS refresh dimensions when reopening to ensure that BottomSheet
|
|
84
|
-
// state and layout are synchronized with native behavior.
|
|
85
|
-
val dimensionsChanged = oldConfig.detents != newConfig.detents
|
|
86
|
-
if (dimensionsChanged || reopened) {
|
|
87
|
-
dimensionsCoordinator.updateFormSheetDimensions(
|
|
88
|
-
resolveDetents(newConfig.detents),
|
|
89
|
-
newConfig.initialDetentIndex,
|
|
90
|
-
reopened,
|
|
91
|
-
)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (oldConfig.prefersGrabberVisible != newConfig.prefersGrabberVisible) {
|
|
95
|
-
container.setGrabberVisible(newConfig.prefersGrabberVisible)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (oldConfig.preferredCornerRadius != newConfig.preferredCornerRadius) {
|
|
99
|
-
appearanceCoordinator.updateCornerRadius(newConfig.preferredCornerRadius)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (oldConfig.nativeContainerBackgroundColor != newConfig.nativeContainerBackgroundColor) {
|
|
103
|
-
appearanceCoordinator.updateBackgroundColor(newConfig.nativeContainerBackgroundColor)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (oldConfig.isOpen != newConfig.isOpen) {
|
|
107
|
-
presentationManager.updatePresentationState(newConfig.isOpen)
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
private fun resolveDetents(rawDetents: List<Double>): FormSheetDetents {
|
|
112
|
-
if (rawDetents.isEmpty()) {
|
|
113
|
-
return FormSheetDetents(listOf(LARGE_DETENT_FRACTION))
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return try {
|
|
117
|
-
FormSheetDetents(rawDetents)
|
|
118
|
-
} catch (e: IllegalArgumentException) {
|
|
119
|
-
Log.e(
|
|
120
|
-
"[RNScreens]",
|
|
121
|
-
"Invalid FormSheet detents: $rawDetents. Falling back to large detent.",
|
|
122
|
-
e,
|
|
123
|
-
)
|
|
124
|
-
FormSheetDetents(listOf(LARGE_DETENT_FRACTION))
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
internal fun destroy() {
|
|
129
|
-
behaviorController?.destroy()
|
|
130
|
-
presentationManager.destroy()
|
|
131
|
-
dimensionsCoordinator.destroy()
|
|
132
|
-
dialog.dismiss()
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
companion object {
|
|
136
|
-
private const val LARGE_DETENT_FRACTION = 1.0
|
|
137
|
-
}
|
|
138
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
2
|
-
|
|
3
|
-
import android.view.ViewGroup
|
|
4
|
-
import android.widget.FrameLayout
|
|
5
|
-
import androidx.core.view.ViewCompat
|
|
6
|
-
import androidx.core.view.WindowInsetsCompat
|
|
7
|
-
import androidx.core.view.doOnLayout
|
|
8
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
9
|
-
|
|
10
|
-
internal class FormSheetDimensionsCoordinator(
|
|
11
|
-
private val dialog: BottomSheetDialog,
|
|
12
|
-
private val container: FormSheetContainer,
|
|
13
|
-
private val bottomSheetView: FrameLayout?,
|
|
14
|
-
private val behaviorController: FormSheetBehaviorController?,
|
|
15
|
-
) : FormSheetContentSizeChangeDelegate {
|
|
16
|
-
private var lastTopInset = 0
|
|
17
|
-
private var lastBottomInset = 0
|
|
18
|
-
private var currentDetents: FormSheetDetents? = null
|
|
19
|
-
private var currentInitialDetentIndex: Int = 0
|
|
20
|
-
private var shouldApplyInitialDetent: Boolean = false
|
|
21
|
-
|
|
22
|
-
private var currentContentHeight: Int = 0
|
|
23
|
-
|
|
24
|
-
internal fun setup() {
|
|
25
|
-
setupWindowInsetsListener()
|
|
26
|
-
|
|
27
|
-
bottomSheetView?.let { view ->
|
|
28
|
-
disableMaterialInsetsAnimationCallback(view)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
private fun setupWindowInsetsListener() {
|
|
33
|
-
ViewCompat.setOnApplyWindowInsetsListener(container) { _, insets ->
|
|
34
|
-
lastTopInset = getTopInset(insets)
|
|
35
|
-
lastBottomInset = getBottomInset(insets)
|
|
36
|
-
updateNativeContainerHeight()
|
|
37
|
-
insets
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* BottomSheetBehavior registers an internal `WindowInsetsAnimationCallback` on the
|
|
43
|
-
* sheet view during its first `onLayoutChild`. That callback drives `translationY` to follow
|
|
44
|
-
* animated inset changes, what interferes with our slide-in custom animation.
|
|
45
|
-
*
|
|
46
|
-
* We manage insets ourselves by setting a fixed height for FormSheetContainer, so we can
|
|
47
|
-
* clear the Material's callback to remove the conflict entirely.
|
|
48
|
-
*
|
|
49
|
-
* This method must run after the first layout pass.
|
|
50
|
-
*/
|
|
51
|
-
private fun disableMaterialInsetsAnimationCallback(view: FrameLayout) {
|
|
52
|
-
view.doOnLayout {
|
|
53
|
-
ViewCompat.setWindowInsetsAnimationCallback(it, null)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
override fun onContentHeightChanged(newHeight: Int) {
|
|
58
|
-
if (currentContentHeight != newHeight) {
|
|
59
|
-
currentContentHeight = newHeight
|
|
60
|
-
updateNativeContainerHeight()
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
internal fun updateFormSheetDimensions(
|
|
65
|
-
detents: FormSheetDetents?,
|
|
66
|
-
initialDetentIndex: Int = 0,
|
|
67
|
-
applyInitialDetent: Boolean = false,
|
|
68
|
-
) {
|
|
69
|
-
currentDetents = detents
|
|
70
|
-
currentInitialDetentIndex = initialDetentIndex
|
|
71
|
-
shouldApplyInitialDetent = applyInitialDetent
|
|
72
|
-
updateNativeContainerHeight()
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* For Yoga we require the container height to be "stable" to avoid updating content size in flight.
|
|
77
|
-
* If left as MATCH_PARENT, BottomSheetDialog dynamically applies insets as padding when sheet overflows
|
|
78
|
-
* status bar or display cutout. This causes Yoga to recalculate the layout, resulting in UI flickering
|
|
79
|
-
* during the drag gesture. By calculating and enforcing a static height that explicitly subtracts
|
|
80
|
-
* the system insets, we completely bypass these redundant layout passes.
|
|
81
|
-
*/
|
|
82
|
-
private fun updateNativeContainerHeight() {
|
|
83
|
-
val dialogDecorHeight = dialog.window?.decorView?.height ?: 0
|
|
84
|
-
|
|
85
|
-
if (dialogDecorHeight <= 0) {
|
|
86
|
-
return
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
currentDetents?.let { detents ->
|
|
90
|
-
behaviorController?.updateSheetBehavior(
|
|
91
|
-
detents = detents,
|
|
92
|
-
sheetAvailableSpace = dialogDecorHeight,
|
|
93
|
-
contentHeightForFitToContents = currentContentHeight,
|
|
94
|
-
nativeContainerPaddingBottom = lastBottomInset,
|
|
95
|
-
initialDetentIndex = currentInitialDetentIndex,
|
|
96
|
-
applyInitialDetent = shouldApplyInitialDetent,
|
|
97
|
-
)
|
|
98
|
-
shouldApplyInitialDetent = false
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
val sheetContainerHeight =
|
|
102
|
-
currentDetents?.sheetContainerHeight(dialogDecorHeight, lastTopInset, lastBottomInset, currentContentHeight)
|
|
103
|
-
?: (dialogDecorHeight - lastTopInset - lastBottomInset).coerceAtLeast(0)
|
|
104
|
-
|
|
105
|
-
val layoutParams =
|
|
106
|
-
container.layoutParams
|
|
107
|
-
?: FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, sheetContainerHeight)
|
|
108
|
-
|
|
109
|
-
if (layoutParams.width != ViewGroup.LayoutParams.MATCH_PARENT || layoutParams.height != sheetContainerHeight) {
|
|
110
|
-
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT
|
|
111
|
-
layoutParams.height = sheetContainerHeight
|
|
112
|
-
container.layoutParams = layoutParams
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
private fun getTopInset(insetsCompat: WindowInsetsCompat): Int =
|
|
117
|
-
insetsCompat
|
|
118
|
-
.getInsets(
|
|
119
|
-
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout(),
|
|
120
|
-
).top
|
|
121
|
-
|
|
122
|
-
private fun getBottomInset(insetsCompat: WindowInsetsCompat): Int =
|
|
123
|
-
insetsCompat
|
|
124
|
-
.getInsets(
|
|
125
|
-
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout(),
|
|
126
|
-
).bottom
|
|
127
|
-
|
|
128
|
-
internal fun destroy() {
|
|
129
|
-
ViewCompat.setOnApplyWindowInsetsListener(container, null)
|
|
130
|
-
}
|
|
131
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
2
|
-
|
|
3
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
4
|
-
import com.swmansion.rnscreens.modals.dimmingview.DimmingViewManager
|
|
5
|
-
|
|
6
|
-
internal class FormSheetNativeDismissCoordinator(
|
|
7
|
-
private val dialog: BottomSheetDialog,
|
|
8
|
-
private val dimmingManager: DimmingViewManager,
|
|
9
|
-
private val onNativeDismiss: () -> Unit,
|
|
10
|
-
) {
|
|
11
|
-
internal fun setup() {
|
|
12
|
-
dialog.setOnCancelListener {
|
|
13
|
-
onNativeDismiss()
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
dimmingManager.setOnBackdropClickListener {
|
|
17
|
-
onNativeDismiss()
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
internal fun destroy() {
|
|
22
|
-
dimmingManager.setOnBackdropClickListener {}
|
|
23
|
-
dialog.setOnCancelListener(null)
|
|
24
|
-
}
|
|
25
|
-
}
|