react-native-screens 5.0.0-alpha.2 → 5.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Package.swift +87 -0
- package/README.md +0 -11
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +3 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
- package/android/src/main/cpp/NativeProxy.cpp +30 -6
- package/android/src/main/cpp/NativeProxy.h +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
- package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +51 -20
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -8
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +36 -4
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetDialogManager.kt +107 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/model/FormSheetDetents.kt +152 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDimmingManager.kt +103 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentationManager.kt +290 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
- package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +32 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/react/modals/formsheet/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +17 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +11 -9
- package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +360 -101
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +211 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +156 -24
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +162 -228
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +29 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +8 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +159 -21
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +27 -5
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +50 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +46 -7
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +72 -36
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +22 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +58 -17
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +20 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +16 -1
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
- package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
- package/ios/legacy/RNSBarButtonItem.mm +15 -0
- package/ios/legacy/RNSConvert.h +6 -0
- package/ios/legacy/RNSConvert.mm +17 -0
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +130 -31
- package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
- package/ios/legacy/RNSScreenStack.mm +202 -15
- package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +72 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +34 -1
- package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
- package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
- package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
- package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
- package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
- package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +3 -14
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
- package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
- package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
- package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
- package/ios/split/RNSSplitHostComponentView.h +5 -15
- package/ios/split/RNSSplitHostComponentView.mm +55 -6
- package/ios/split/RNSSplitHostController.h +25 -6
- package/ios/split/RNSSplitHostController.mm +24 -92
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +27 -10
- package/ios/split/RNSSplitScreenController.h +26 -3
- package/ios/split/RNSSplitScreenController.mm +13 -30
- package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
- package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
- package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
- package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
- package/ios/stack/conversion/RNSConversions-Stack.h +62 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +134 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +14 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +103 -37
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +11 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +12 -3
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +72 -5
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +7 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackNavigationBar.h +25 -0
- package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
- package/ios/stack/host/RNSStackNavigationController.mm +13 -5
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +32 -2
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +179 -24
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +110 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.h +100 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +105 -74
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +4 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +41 -4
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +56 -56
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +15 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +37 -21
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +41 -4
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +17 -7
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
- package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/commonjs/components/tabs/index.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +39 -23
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +43 -6
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
- package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +18 -8
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.web.js +0 -3
- package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
- package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
- package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
- package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js +31 -11
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +620 -24
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +361 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +4 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +7 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +47 -0
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +4 -3
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
- package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +72 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/index.d.ts +4 -6
- package/lib/typescript/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +29 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +8 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +30 -0
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/package.json +11 -8
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
- package/src/components/stack/header/StackHeaderConfig.android.tsx +54 -43
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +641 -24
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +55 -17
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +384 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +4 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +7 -0
- package/src/components/stack/host/StackHost.tsx +12 -3
- package/src/components/stack/host/StackHost.types.ts +50 -0
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +14 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +3 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +76 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/components/tabs/index.ts +9 -0
- package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
- package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
- package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
- package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
- package/src/components/tabs/screen/TabsScreen.tsx +7 -0
- package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
- package/src/components/tabs/screen/index.ts +1 -0
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +43 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +13 -0
- package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -0
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
- package/src/legacy/components/ScreenStackItem.tsx +59 -12
- package/src/legacy/types.ts +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +0 -134
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +0 -162
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +0 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +0 -198
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
- package/ios/conversion/RNSConversions-Stack.h +0 -32
- package/ios/conversion/RNSConversions-Stack.mm +0 -41
- package/ios/conversion/always_false.h +0 -31
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
- package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
- package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
- package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
- package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
- package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
- package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
- package/src/components/tabs/host/TabsHost.d.ts +0 -12
- package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt
CHANGED
|
@@ -2,45 +2,33 @@ package com.swmansion.rnscreens.stack.header.config
|
|
|
2
2
|
|
|
3
3
|
import android.annotation.SuppressLint
|
|
4
4
|
import android.graphics.drawable.Drawable
|
|
5
|
-
import android.
|
|
6
|
-
import com.facebook.react.bridge.UIManager
|
|
7
|
-
import com.facebook.react.bridge.UIManagerListener
|
|
8
|
-
import com.facebook.react.common.annotations.UnstableReactNativeAPI
|
|
5
|
+
import android.view.Gravity
|
|
9
6
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
10
|
-
import com.facebook.react.uimanager.UIManagerHelper
|
|
11
7
|
import com.facebook.react.views.view.ReactViewGroup
|
|
12
8
|
import com.swmansion.rnscreens.common.ShadowStateProxy
|
|
9
|
+
import com.swmansion.rnscreens.common.text.ReactTextAppearance
|
|
13
10
|
import com.swmansion.rnscreens.helpers.IconResolution
|
|
14
11
|
import com.swmansion.rnscreens.helpers.PropIconResolver
|
|
15
|
-
import com.swmansion.rnscreens.helpers.getFabricUIManagerNotNull
|
|
16
12
|
import com.swmansion.rnscreens.helpers.resolveImage
|
|
17
13
|
import com.swmansion.rnscreens.stack.header.subview.OnStackHeaderSubviewChangeListener
|
|
18
14
|
import com.swmansion.rnscreens.stack.header.subview.StackHeaderSubview
|
|
19
15
|
import com.swmansion.rnscreens.stack.header.subview.StackHeaderSubviewType
|
|
16
|
+
import com.swmansion.rnscreens.stack.header.toolbar.StackHeaderToolbarMenuController
|
|
17
|
+
import com.swmansion.rnscreens.stack.header.toolbar.StackHeaderToolbarMenuDelegate
|
|
20
18
|
import com.swmansion.rnscreens.stack.header.toolbar.model.StackHeaderToolbarMenuConfig
|
|
21
|
-
import com.swmansion.rnscreens.stack.header.toolbar.model.StackHeaderToolbarMenuItemIconSource
|
|
22
|
-
import com.swmansion.rnscreens.stack.header.toolbar.update.StackHeaderToolbarFieldUpdate
|
|
23
19
|
import com.swmansion.rnscreens.stack.header.toolbar.update.StackHeaderToolbarMenuElementRawUpdate
|
|
24
20
|
import com.swmansion.rnscreens.stack.header.toolbar.update.StackHeaderToolbarMenuIconResolver
|
|
25
|
-
import com.swmansion.rnscreens.stack.header.toolbar.update.StackHeaderToolbarMenuUpdateQueue
|
|
26
21
|
import java.lang.ref.WeakReference
|
|
27
22
|
import kotlin.properties.Delegates
|
|
28
23
|
|
|
29
|
-
@OptIn(UnstableReactNativeAPI::class)
|
|
30
24
|
@SuppressLint("ViewConstructor")
|
|
31
25
|
internal class StackHeaderConfig(
|
|
32
26
|
val reactContext: ThemedReactContext,
|
|
33
27
|
) : ReactViewGroup(reactContext),
|
|
34
28
|
StackHeaderConfigurationProviding,
|
|
35
29
|
StackHeaderDelegate,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
init {
|
|
39
|
-
UIManagerHelper
|
|
40
|
-
.getFabricUIManagerNotNull(reactContext)
|
|
41
|
-
.addUIManagerEventListener(this)
|
|
42
|
-
}
|
|
43
|
-
|
|
30
|
+
StackHeaderToolbarMenuDelegate,
|
|
31
|
+
OnStackHeaderSubviewChangeListener {
|
|
44
32
|
// region Handling configuration changes
|
|
45
33
|
|
|
46
34
|
private var configObserver: StackHeaderConfigurationObserver? = null
|
|
@@ -49,116 +37,128 @@ internal class StackHeaderConfig(
|
|
|
49
37
|
configObserver = observer
|
|
50
38
|
}
|
|
51
39
|
|
|
52
|
-
override var invalidationFlags = StackHeaderInvalidationFlags.ALL
|
|
53
|
-
|
|
54
|
-
override fun clearInvalidationFlags(flags: StackHeaderInvalidationFlags) {
|
|
55
|
-
invalidationFlags = invalidationFlags.clearing(flags)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
40
|
private fun invalidate(flags: StackHeaderInvalidationFlags) {
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
private fun flushUpdates() {
|
|
63
|
-
if (configObserver == null || invalidationFlags.isEmpty) {
|
|
64
|
-
return
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
configObserver?.onConfigChanged(this)
|
|
41
|
+
configObserver?.onInvalidated(flags)
|
|
68
42
|
}
|
|
69
43
|
|
|
70
44
|
// endregion
|
|
71
45
|
|
|
72
46
|
// region Properties
|
|
73
47
|
|
|
74
|
-
override var type: StackHeaderType by
|
|
75
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.STRUCTURE)
|
|
76
|
-
}
|
|
48
|
+
override var type: StackHeaderType by invalidatingProperty(StackHeaderType.SMALL, StackHeaderInvalidationFlags.STRUCTURE)
|
|
77
49
|
internal set
|
|
78
50
|
|
|
79
|
-
override var title: String by
|
|
80
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.TITLE)
|
|
81
|
-
}
|
|
51
|
+
override var title: String by invalidatingProperty("", StackHeaderInvalidationFlags.TITLE)
|
|
82
52
|
internal set
|
|
83
53
|
|
|
84
|
-
override var
|
|
85
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.STRUCTURE)
|
|
86
|
-
}
|
|
54
|
+
override var subtitle: String by invalidatingProperty("", StackHeaderInvalidationFlags.TITLE)
|
|
87
55
|
internal set
|
|
88
56
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
57
|
+
// Requires header rebuild due to bug in Material implementation
|
|
58
|
+
override var maxLines: Int by invalidatingProperty(1, StackHeaderInvalidationFlags.STRUCTURE)
|
|
92
59
|
internal set
|
|
93
60
|
|
|
94
|
-
override var
|
|
95
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
96
|
-
}
|
|
61
|
+
override var hidden: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.STRUCTURE)
|
|
97
62
|
internal set
|
|
98
63
|
|
|
99
|
-
override var
|
|
100
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
101
|
-
}
|
|
64
|
+
override var transparent: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.STRUCTURE)
|
|
102
65
|
internal set
|
|
103
66
|
|
|
104
|
-
override var
|
|
105
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
106
|
-
}
|
|
67
|
+
override var backButtonHidden: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
107
68
|
internal set
|
|
108
69
|
|
|
109
|
-
override var
|
|
110
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
111
|
-
}
|
|
70
|
+
override var backButtonTintColorNormal: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
112
71
|
internal set
|
|
113
72
|
|
|
114
|
-
override var
|
|
115
|
-
if (old !== new) invalidate(StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
116
|
-
}
|
|
73
|
+
override var backButtonTintColorPressed: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
117
74
|
internal set
|
|
118
75
|
|
|
119
|
-
override var
|
|
120
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
121
|
-
}
|
|
76
|
+
override var backButtonTintColorFocused: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
122
77
|
internal set
|
|
123
78
|
|
|
124
|
-
override var
|
|
125
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
126
|
-
}
|
|
79
|
+
override var backButtonIcon: Drawable? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACK_BUTTON)
|
|
127
80
|
internal set
|
|
128
81
|
|
|
129
|
-
override var
|
|
130
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
131
|
-
}
|
|
82
|
+
override var overflowIconTintColorNormal: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.OVERFLOW_ICON)
|
|
132
83
|
internal set
|
|
133
84
|
|
|
134
|
-
override var
|
|
135
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
136
|
-
}
|
|
85
|
+
override var overflowIconTintColorPressed: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.OVERFLOW_ICON)
|
|
137
86
|
internal set
|
|
138
87
|
|
|
139
|
-
override var
|
|
140
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
141
|
-
}
|
|
88
|
+
override var overflowIconTintColorFocused: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.OVERFLOW_ICON)
|
|
142
89
|
internal set
|
|
143
90
|
|
|
144
|
-
override var
|
|
145
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.LIFT_ON_SCROLL)
|
|
146
|
-
}
|
|
91
|
+
override var overflowIcon: Drawable? by invalidatingProperty(null, StackHeaderInvalidationFlags.OVERFLOW_ICON)
|
|
147
92
|
internal set
|
|
148
93
|
|
|
149
|
-
override var
|
|
150
|
-
by Delegates.observable(StackHeaderToolbarMenuConfig(emptyList(), emptyList())) { _, old, new ->
|
|
151
|
-
if (old != new) invalidate(StackHeaderInvalidationFlags.TOOLBAR_MENU)
|
|
152
|
-
}
|
|
94
|
+
override var scrollFlagScroll: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
153
95
|
internal set
|
|
154
96
|
|
|
155
|
-
override var
|
|
156
|
-
|
|
157
|
-
|
|
97
|
+
override var scrollFlagEnterAlways: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
98
|
+
internal set
|
|
99
|
+
|
|
100
|
+
override var scrollFlagEnterAlwaysCollapsed: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
101
|
+
internal set
|
|
102
|
+
|
|
103
|
+
override var scrollFlagExitUntilCollapsed: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
104
|
+
internal set
|
|
105
|
+
|
|
106
|
+
override var scrollFlagSnap: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.SCROLL_FLAGS)
|
|
107
|
+
internal set
|
|
108
|
+
|
|
109
|
+
override var liftOnScroll: Boolean by invalidatingProperty(true, StackHeaderInvalidationFlags.LIFT_ON_SCROLL)
|
|
110
|
+
internal set
|
|
111
|
+
|
|
112
|
+
override var backgroundColor: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACKGROUND_COLORS)
|
|
113
|
+
internal set
|
|
114
|
+
|
|
115
|
+
override var scrolledBackgroundColor: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACKGROUND_COLORS)
|
|
116
|
+
internal set
|
|
117
|
+
|
|
118
|
+
override var statusBarScrimColor: Int? by invalidatingProperty(null, StackHeaderInvalidationFlags.BACKGROUND_COLORS)
|
|
119
|
+
internal set
|
|
120
|
+
|
|
121
|
+
override var titleCentered: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.TITLE_POSITIONING)
|
|
122
|
+
internal set
|
|
123
|
+
|
|
124
|
+
override var subtitleCentered: Boolean by invalidatingProperty(false, StackHeaderInvalidationFlags.TITLE_POSITIONING)
|
|
125
|
+
internal set
|
|
126
|
+
|
|
127
|
+
override var expandedTitleHorizontalGravity: Int by invalidatingProperty(Gravity.START, StackHeaderInvalidationFlags.TITLE_POSITIONING)
|
|
158
128
|
internal set
|
|
159
129
|
|
|
160
|
-
override
|
|
161
|
-
|
|
130
|
+
override var expandedTitleVerticalGravity: Int by invalidatingProperty(Gravity.BOTTOM, StackHeaderInvalidationFlags.TITLE_POSITIONING)
|
|
131
|
+
internal set
|
|
132
|
+
|
|
133
|
+
override var collapsedTitleHorizontalGravity: Int by invalidatingProperty(Gravity.START, StackHeaderInvalidationFlags.TITLE_POSITIONING)
|
|
134
|
+
internal set
|
|
135
|
+
|
|
136
|
+
override var collapsedTitleVerticalGravity: Int by invalidatingProperty(
|
|
137
|
+
Gravity.CENTER_VERTICAL,
|
|
138
|
+
StackHeaderInvalidationFlags.TITLE_POSITIONING,
|
|
139
|
+
)
|
|
140
|
+
internal set
|
|
141
|
+
|
|
142
|
+
override var collapsedTitleGravityMode: StackHeaderCollapsedTitleGravityMode
|
|
143
|
+
by invalidatingProperty(StackHeaderCollapsedTitleGravityMode.AVAILABLE_SPACE, StackHeaderInvalidationFlags.STRUCTURE)
|
|
144
|
+
internal set
|
|
145
|
+
|
|
146
|
+
override var contentInsetStart: Float?
|
|
147
|
+
by invalidatingProperty(null, StackHeaderInvalidationFlags.CONTENT_INSETS)
|
|
148
|
+
internal set
|
|
149
|
+
|
|
150
|
+
override var contentInsetEnd: Float?
|
|
151
|
+
by invalidatingProperty(null, StackHeaderInvalidationFlags.CONTENT_INSETS)
|
|
152
|
+
internal set
|
|
153
|
+
|
|
154
|
+
override val titleAppearance = ReactTextAppearance(reactContext.assets, ::invalidateTextAppearance)
|
|
155
|
+
override val subtitleAppearance = ReactTextAppearance(reactContext.assets, ::invalidateTextAppearance)
|
|
156
|
+
override val expandedTitleAppearance = ReactTextAppearance(reactContext.assets, ::invalidateTextAppearance)
|
|
157
|
+
override val collapsedTitleAppearance = ReactTextAppearance(reactContext.assets, ::invalidateTextAppearance)
|
|
158
|
+
override val expandedSubtitleAppearance = ReactTextAppearance(reactContext.assets, ::invalidateTextAppearance)
|
|
159
|
+
override val collapsedSubtitleAppearance = ReactTextAppearance(reactContext.assets, ::invalidateTextAppearance)
|
|
160
|
+
|
|
161
|
+
private fun invalidateTextAppearance() = invalidate(StackHeaderInvalidationFlags.TITLE_APPEARANCE)
|
|
162
162
|
|
|
163
163
|
// endregion
|
|
164
164
|
|
|
@@ -172,9 +172,6 @@ internal class StackHeaderConfig(
|
|
|
172
172
|
*/
|
|
173
173
|
internal fun onContentScrollViewChanged() {
|
|
174
174
|
invalidate(StackHeaderInvalidationFlags.LIFT_ON_SCROLL)
|
|
175
|
-
if (!isInsideMountTransaction) {
|
|
176
|
-
flushUpdates()
|
|
177
|
-
}
|
|
178
175
|
}
|
|
179
176
|
|
|
180
177
|
// endregion
|
|
@@ -186,104 +183,93 @@ internal class StackHeaderConfig(
|
|
|
186
183
|
// Resolution happens in resolveBackButtonIconIfNeeded(), called from onAfterUpdateTransaction.
|
|
187
184
|
internal var backButtonDrawableIconResourceName: String? = null
|
|
188
185
|
internal var backButtonImageIconUri: String? = null
|
|
189
|
-
private val backButtonIconResolver =
|
|
186
|
+
private val backButtonIconResolver = createPropIconResolver(reactContext)
|
|
190
187
|
|
|
191
188
|
internal fun resolveBackButtonIconIfNeeded() {
|
|
192
189
|
backButtonIconResolver.resolve(
|
|
193
|
-
reactContext,
|
|
194
190
|
backButtonDrawableIconResourceName,
|
|
195
191
|
backButtonImageIconUri,
|
|
196
192
|
) { result ->
|
|
197
193
|
when (result) {
|
|
198
194
|
IconResolution.Unchanged -> Unit
|
|
199
|
-
is IconResolution.Resolved ->
|
|
200
|
-
backButtonIcon = result.drawable
|
|
201
|
-
if (!isInsideMountTransaction) {
|
|
202
|
-
flushUpdates()
|
|
203
|
-
}
|
|
204
|
-
}
|
|
195
|
+
is IconResolution.Resolved -> backButtonIcon = result.drawable
|
|
205
196
|
}
|
|
206
197
|
}
|
|
207
198
|
}
|
|
208
199
|
|
|
209
200
|
// endregion
|
|
210
201
|
|
|
211
|
-
// region
|
|
202
|
+
// region Overflow menu icon resolution
|
|
212
203
|
|
|
213
|
-
|
|
204
|
+
// Staging fields for overflow menu icon resolution — mirrors the back button icon.
|
|
205
|
+
// Resolution happens in resolveOverflowIconIfNeeded(), called from onAfterUpdateTransaction.
|
|
206
|
+
internal var overflowIconDrawableIconResourceName: String? = null
|
|
207
|
+
internal var overflowIconImageIconUri: String? = null
|
|
208
|
+
private val overflowIconResolver = createPropIconResolver(reactContext)
|
|
214
209
|
|
|
215
|
-
|
|
210
|
+
internal fun resolveOverflowIconIfNeeded() {
|
|
211
|
+
overflowIconResolver.resolve(
|
|
212
|
+
overflowIconDrawableIconResourceName,
|
|
213
|
+
overflowIconImageIconUri,
|
|
214
|
+
) { result ->
|
|
215
|
+
when (result) {
|
|
216
|
+
IconResolution.Unchanged -> Unit
|
|
217
|
+
is IconResolution.Resolved -> overflowIcon = result.drawable
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
216
221
|
|
|
217
|
-
//
|
|
218
|
-
// (resolveToolbarMenuItemIconsIfNeeded). Command (`updateToolbarMenuElements`) icons are applied
|
|
219
|
-
// directly to the live toolbar and are intentionally NOT stored here.
|
|
220
|
-
private var toolbarMenuItemIcons = mapOf<String, Drawable?>()
|
|
222
|
+
// endregion
|
|
221
223
|
|
|
222
|
-
|
|
223
|
-
val nextResolvers = mutableMapOf<String, PropIconResolver>()
|
|
224
|
+
// region Toolbar menu
|
|
224
225
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
override val toolbarMenuController =
|
|
227
|
+
StackHeaderToolbarMenuController(createMenuIconResolver(reactContext))
|
|
228
|
+
.also { it.delegate = WeakReference(this) }
|
|
228
229
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
val icon =
|
|
235
|
-
when (result) {
|
|
236
|
-
IconResolution.Unchanged -> toolbarMenuItemIcons[id]
|
|
237
|
-
is IconResolution.Resolved -> {
|
|
238
|
-
toolbarMenuItemIcons = toolbarMenuItemIcons + (id to result.drawable)
|
|
239
|
-
result.drawable
|
|
240
|
-
}
|
|
241
|
-
}
|
|
230
|
+
internal fun setToolbarMenuFromProps(menu: StackHeaderToolbarMenuConfig) {
|
|
231
|
+
if (toolbarMenuController.setMenu(menu)) {
|
|
232
|
+
invalidate(StackHeaderInvalidationFlags.TOOLBAR_MENU)
|
|
233
|
+
}
|
|
234
|
+
}
|
|
242
235
|
|
|
243
|
-
|
|
244
|
-
|
|
236
|
+
internal fun setToolbarMenuGroupDividerEnabledFromProps(enabled: Boolean) {
|
|
237
|
+
if (toolbarMenuController.setGroupDividerEnabled(enabled)) {
|
|
238
|
+
invalidate(StackHeaderInvalidationFlags.TOOLBAR_MENU)
|
|
245
239
|
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
internal fun dispatchMenuElementUpdates(updates: List<StackHeaderToolbarMenuElementRawUpdate>) {
|
|
243
|
+
toolbarMenuController.enqueueElementUpdates(updates)
|
|
244
|
+
}
|
|
246
245
|
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
// StackHeaderToolbarMenuDelegate -> JS events
|
|
247
|
+
|
|
248
|
+
override fun onMenuItemClicked(id: String) {
|
|
249
|
+
eventEmitter.emitOnToolbarMenuItemPress(id)
|
|
249
250
|
}
|
|
250
251
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
252
|
+
override fun onGroupSelectionChanged(
|
|
253
|
+
groupId: String,
|
|
254
|
+
selectedIds: List<String>,
|
|
254
255
|
) {
|
|
255
|
-
|
|
256
|
-
val updated = currentMenu.updateItemIcon(id, icon)
|
|
257
|
-
if (updated !== currentMenu) {
|
|
258
|
-
toolbarMenu = updated
|
|
259
|
-
if (!isInsideMountTransaction) {
|
|
260
|
-
flushUpdates()
|
|
261
|
-
}
|
|
262
|
-
}
|
|
256
|
+
eventEmitter.emitOnToolbarMenuGroupSelectionChange(groupId, selectedIds)
|
|
263
257
|
}
|
|
264
258
|
|
|
265
259
|
// endregion
|
|
266
260
|
|
|
267
261
|
// region Subviews
|
|
268
262
|
|
|
269
|
-
override var backgroundSubview: StackHeaderSubview? by
|
|
270
|
-
if (old !== new) invalidate(StackHeaderInvalidationFlags.SUBVIEWS)
|
|
271
|
-
}
|
|
263
|
+
override var backgroundSubview: StackHeaderSubview? by invalidatingProperty(null, StackHeaderInvalidationFlags.SUBVIEWS)
|
|
272
264
|
private set
|
|
273
265
|
|
|
274
|
-
override var leadingSubview: StackHeaderSubview? by
|
|
275
|
-
if (old !== new) invalidate(StackHeaderInvalidationFlags.SUBVIEWS)
|
|
276
|
-
}
|
|
266
|
+
override var leadingSubview: StackHeaderSubview? by invalidatingProperty(null, StackHeaderInvalidationFlags.SUBVIEWS)
|
|
277
267
|
private set
|
|
278
268
|
|
|
279
|
-
override var centerSubview: StackHeaderSubview? by
|
|
280
|
-
if (old !== new) invalidate(StackHeaderInvalidationFlags.SUBVIEWS)
|
|
281
|
-
}
|
|
269
|
+
override var centerSubview: StackHeaderSubview? by invalidatingProperty(null, StackHeaderInvalidationFlags.SUBVIEWS)
|
|
282
270
|
private set
|
|
283
271
|
|
|
284
|
-
override var trailingSubview: StackHeaderSubview? by
|
|
285
|
-
if (old !== new) invalidate(StackHeaderInvalidationFlags.SUBVIEWS)
|
|
286
|
-
}
|
|
272
|
+
override var trailingSubview: StackHeaderSubview? by invalidatingProperty(null, StackHeaderInvalidationFlags.SUBVIEWS)
|
|
287
273
|
private set
|
|
288
274
|
|
|
289
275
|
override fun onStackHeaderSubviewChanged() {
|
|
@@ -349,17 +335,6 @@ internal class StackHeaderConfig(
|
|
|
349
335
|
)
|
|
350
336
|
}
|
|
351
337
|
|
|
352
|
-
override fun onMenuItemClicked(id: String) {
|
|
353
|
-
eventEmitter.emitOnToolbarMenuItemPress(id)
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
override fun onGroupSelectionChanged(
|
|
357
|
-
groupId: String,
|
|
358
|
-
selectedIds: List<String>,
|
|
359
|
-
) {
|
|
360
|
-
eventEmitter.emitOnToolbarMenuGroupSelectionChange(groupId, selectedIds)
|
|
361
|
-
}
|
|
362
|
-
|
|
363
338
|
override fun onSubviewOriginChanged(
|
|
364
339
|
type: StackHeaderSubviewType,
|
|
365
340
|
x: Int,
|
|
@@ -388,83 +363,42 @@ internal class StackHeaderConfig(
|
|
|
388
363
|
|
|
389
364
|
// endregion
|
|
390
365
|
|
|
391
|
-
// region
|
|
392
|
-
|
|
393
|
-
/**
|
|
394
|
-
* Resolves a single command's icon. Unlike the `toolbarMenu` prop path,
|
|
395
|
-
* this does NOT go through the stateful per-id [PropIconResolver] (whose
|
|
396
|
-
* drop-stale async guard could leave the queue waiting forever - the queue
|
|
397
|
-
* requires that [StackHeaderToolbarMenuIconResolver.resolve] always calls
|
|
398
|
-
* [onResolved] even if the image loading results in failure; see
|
|
399
|
-
* [StackHeaderToolbarMenuIconResolver] and
|
|
400
|
-
* [StackHeaderToolbarMenuUpdateQueue] for more details) and does NOT touch
|
|
401
|
-
* the prop icon cache: it resolves the source with an always-completing
|
|
402
|
-
* [resolveImage] and forwards the result to the queue, which applies it to
|
|
403
|
-
* the live toolbar. Ordering across commands is guaranteed by the queue, so
|
|
404
|
-
* no drop-stale is needed here; a failed or empty source resolves to `null`
|
|
405
|
-
* -> Reset (the icon is cleared) rather than stalling the queue.
|
|
406
|
-
*/
|
|
407
|
-
private val commandIconResolver =
|
|
408
|
-
StackHeaderToolbarMenuIconResolver { iconSource, onResolved ->
|
|
409
|
-
resolveImage(
|
|
410
|
-
reactContext,
|
|
411
|
-
iconSource.drawableIconResourceName,
|
|
412
|
-
iconSource.imageIconUri,
|
|
413
|
-
) { drawable ->
|
|
414
|
-
onResolved(StackHeaderToolbarFieldUpdate.from(drawable))
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
// Serializes `updateToolbarMenuElements` batches and waits for every icon in a batch to
|
|
419
|
-
// resolve before applying it, so each batch is applied atomically and in order.
|
|
420
|
-
private val menuUpdateQueue =
|
|
421
|
-
StackHeaderToolbarMenuUpdateQueue(
|
|
422
|
-
iconResolver = commandIconResolver,
|
|
423
|
-
delegate = { updates -> configObserver?.onMenuElementsUpdated(updates) },
|
|
424
|
-
)
|
|
366
|
+
// region Teardown
|
|
425
367
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
* its icons (if any) have resolved — see [StackHeaderToolbarMenuUpdateQueue].
|
|
430
|
-
*/
|
|
431
|
-
internal fun dispatchMenuElementUpdates(updates: List<StackHeaderToolbarMenuElementRawUpdate>) {
|
|
432
|
-
menuUpdateQueue.enqueue(updates)
|
|
368
|
+
internal fun tearDown() {
|
|
369
|
+
toolbarMenuController.tearDown()
|
|
370
|
+
configObserver = null
|
|
433
371
|
}
|
|
434
372
|
|
|
435
373
|
// endregion
|
|
436
374
|
|
|
437
|
-
// region
|
|
438
|
-
|
|
439
|
-
private var isInsideMountTransaction = false
|
|
440
|
-
|
|
441
|
-
override fun willMountItems(uiManager: UIManager) {
|
|
442
|
-
isInsideMountTransaction = true
|
|
443
|
-
}
|
|
375
|
+
// region Helpers
|
|
444
376
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
377
|
+
private fun <T> invalidatingProperty(
|
|
378
|
+
initialValue: T,
|
|
379
|
+
flag: StackHeaderInvalidationFlags,
|
|
380
|
+
) = Delegates.observable(initialValue) { _, old, new ->
|
|
381
|
+
if (old != new) invalidate(flag)
|
|
448
382
|
}
|
|
449
383
|
|
|
450
|
-
override fun willDispatchViewUpdates(uiManager: UIManager) = Unit
|
|
451
|
-
|
|
452
|
-
override fun didDispatchMountItems(uiManager: UIManager) = Unit
|
|
453
|
-
|
|
454
|
-
override fun didScheduleMountItems(uiManager: UIManager) = Unit
|
|
455
|
-
|
|
456
384
|
// endregion
|
|
457
385
|
|
|
458
|
-
//
|
|
386
|
+
// Built outside the instance scope on purpose: a lambda capturing this view
|
|
387
|
+
// would be retained by every icon load still in flight.
|
|
388
|
+
private companion object {
|
|
389
|
+
fun createPropIconResolver(context: ThemedReactContext) =
|
|
390
|
+
PropIconResolver { name, uri, onComplete ->
|
|
391
|
+
resolveImage(context, name, uri, onComplete)
|
|
392
|
+
}
|
|
459
393
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
394
|
+
fun createMenuIconResolver(context: ThemedReactContext) =
|
|
395
|
+
StackHeaderToolbarMenuIconResolver { iconSource, onResolved ->
|
|
396
|
+
resolveImage(
|
|
397
|
+
context,
|
|
398
|
+
iconSource.drawableIconResourceName,
|
|
399
|
+
iconSource.imageIconUri,
|
|
400
|
+
onResolved,
|
|
401
|
+
)
|
|
402
|
+
}
|
|
467
403
|
}
|
|
468
|
-
|
|
469
|
-
// endregion
|
|
470
404
|
}
|