@amazon-devices/react-native-screens 2.0.1759135970 → 3.0.9000000000
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/README.md +57 -18
- package/RNScreens.podspec +12 -30
- package/SystemBundles/31d5b6b69618249f6233b73a1de7c4d890c86be7ccb031ce7cf2dcc41783f9f7.bundle +45301 -0
- package/SystemBundles/31d5b6b69618249f6233b73a1de7c4d890c86be7ccb031ce7cf2dcc41783f9f7.map +13711 -0
- package/SystemModules/amzn__react-native-screens-3.modules.txt +158 -0
- package/SystemModules/amzn__react-native-screens-3.private.modules.txt +377 -0
- package/SystemModules/keplerscript-system-bundle-config.json +4 -4
- package/android/CMakeLists.txt +80 -0
- package/android/build.gradle +96 -17
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +61 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +38 -25
- package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +53 -0
- package/android/src/main/cpp/NativeProxy.cpp +51 -0
- package/android/src/main/cpp/NativeProxy.h +35 -0
- package/android/src/main/cpp/OnLoad.cpp +8 -0
- package/android/src/main/cpp/jni-adapter.cpp +106 -0
- package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +20 -10
- package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +69 -1
- package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +104 -0
- package/android/src/main/java/com/swmansion/rnscreens/ModalScreenViewManager.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/NativeDismissalObserver.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +65 -7
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +327 -84
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +122 -72
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainerViewManager.kt +27 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapper.kt +38 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapperManager.kt +25 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenEventDispatcher.kt +10 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFooter.kt +299 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFooterManager.kt +25 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +91 -67
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +12 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenModalFragment.kt +281 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +184 -81
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +467 -80
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +8 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +156 -124
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigShadowNode.kt +25 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +159 -39
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +24 -9
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +19 -13
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackViewManager.kt +31 -28
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +276 -71
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +124 -64
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +127 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreensShadowNode.kt +4 -2
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +160 -53
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +57 -32
- package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +15 -10
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetBehaviorExt.kt +42 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogRootView.kt +104 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogScreen.kt +26 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingFragment.kt +493 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingView.kt +66 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/GestureTransparentViewGroup.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetUtils.kt +135 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +7 -8
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderBackButtonClickedEvent.kt +8 -9
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +7 -8
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenDismissedEvent.kt +8 -4
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenTransitionProgressEvent.kt +13 -16
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillAppearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/ScreenWillDisappearEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +8 -9
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +8 -11
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +7 -8
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +8 -9
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +7 -8
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +12 -11
- package/android/src/main/java/com/swmansion/rnscreens/events/SheetDetentChangedEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/StackFinishTransitioningEvent.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/ext/NumericExt.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +32 -0
- package/android/src/main/java/com/swmansion/rnscreens/utils/DeviceUtils.kt +1 -5
- package/android/src/main/java/com/swmansion/rnscreens/utils/PaddingBundle.kt +8 -0
- package/android/src/main/java/com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper.kt +282 -0
- package/android/src/main/jni/CMakeLists.txt +35 -23
- package/android/src/main/jni/rnscreens.h +3 -0
- package/android/src/main/res/base/anim/rns_ios_from_left_background_close.xml +5 -0
- package/android/src/main/res/base/anim/rns_ios_from_left_background_open.xml +5 -0
- package/android/src/main/res/base/anim/rns_ios_from_left_foreground_close.xml +6 -0
- package/android/src/main/res/base/anim/rns_ios_from_left_foreground_open.xml +6 -0
- package/android/src/main/res/base/anim/rns_ios_from_right_background_close.xml +5 -0
- package/android/src/main/res/base/anim/rns_ios_from_right_background_open.xml +5 -0
- package/android/src/main/res/base/anim/rns_ios_from_right_foreground_close.xml +6 -0
- package/android/src/main/res/base/anim/rns_ios_from_right_foreground_open.xml +6 -0
- package/android/src/main/res/base/drawable/rns_rounder_top_corners_shape.xml +8 -0
- package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +0 -1
- package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +2 -2
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +16 -3
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +7 -2
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +6 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +2 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +99 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +37 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +39 -0
- package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledViewGroup.kt +11 -2
- package/android/src/paper/java/com/swmansion/rnscreens/NativeProxy.kt +19 -0
- package/android/src/paper/java/com/swmansion/rnscreens/NativeScreensModuleSpec.java +36 -0
- package/common/cpp/react/renderer/components/rnscreens/FrameCorrectionModes.h +51 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenComponentDescriptor.h +40 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.cpp +16 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSModalScreenShadowNode.h +32 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +55 -12
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +157 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.h +31 -11
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h +49 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp +22 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h +40 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.cpp +34 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.h +57 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h +27 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.cpp +8 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h +31 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.cpp +15 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.h +39 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +23 -2
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +33 -8
- package/common/cpp/react/renderer/components/rnscreens/utils/RectUtil.h +36 -0
- package/cpp/RNSScreenRemovalListener.cpp +25 -0
- package/cpp/RNSScreenRemovalListener.h +20 -0
- package/cpp/RNScreensTurboModule.cpp +115 -0
- package/cpp/RNScreensTurboModule.h +40 -0
- package/gesture-handler/package.json +6 -0
- package/ios/RNSConvert.h +24 -4
- package/ios/RNSConvert.mm +180 -55
- package/ios/RNSEnums.h +48 -0
- package/ios/RNSFullWindowOverlay.mm +12 -2
- package/ios/RNSModalScreen.h +8 -0
- package/ios/RNSModalScreen.mm +65 -0
- package/ios/RNSModule.h +19 -0
- package/ios/RNSModule.mm +173 -0
- package/ios/RNSPercentDrivenInteractiveTransition.h +12 -0
- package/ios/RNSPercentDrivenInteractiveTransition.mm +69 -0
- package/ios/RNSScreen.h +24 -5
- package/ios/RNSScreen.mm +652 -173
- package/ios/RNSScreenContainer.mm +12 -1
- package/ios/RNSScreenContentWrapper.h +44 -0
- package/ios/RNSScreenContentWrapper.mm +67 -0
- package/ios/RNSScreenFooter.h +30 -0
- package/ios/RNSScreenFooter.mm +142 -0
- package/ios/RNSScreenNavigationContainer.mm +7 -0
- package/ios/RNSScreenStack.h +6 -0
- package/ios/RNSScreenStack.mm +333 -109
- package/ios/RNSScreenStackAnimator.h +15 -1
- package/ios/RNSScreenStackAnimator.mm +380 -115
- package/ios/RNSScreenStackHeaderConfig.h +74 -6
- package/ios/RNSScreenStackHeaderConfig.mm +338 -69
- package/ios/RNSScreenStackHeaderSubview.h +0 -7
- package/ios/RNSScreenStackHeaderSubview.mm +61 -24
- package/ios/RNSScreenWindowTraits.h +1 -1
- package/ios/RNSScreenWindowTraits.mm +24 -50
- package/ios/RNSSearchBar.h +5 -5
- package/ios/RNSSearchBar.mm +42 -11
- package/ios/events/RNSHeaderHeightChangeEvent.h +0 -1
- package/ios/events/RNSHeaderHeightChangeEvent.mm +15 -0
- package/ios/events/RNSScreenViewEvent.h +0 -1
- package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.h +15 -0
- package/ios/utils/RCTSurfaceTouchHandler+RNSUtility.mm +14 -0
- package/ios/utils/RCTTouchHandler+RNSUtility.h +15 -0
- package/ios/utils/RCTTouchHandler+RNSUtility.mm +15 -0
- package/ios/utils/RNSDefines.h +7 -0
- package/ios/utils/RNSUIBarButtonItem.h +2 -0
- package/ios/utils/UINavigationBar+RNSUtility.h +37 -0
- package/ios/utils/UINavigationBar+RNSUtility.mm +44 -0
- package/ios/utils/UIView+RNSUtility.h +23 -0
- package/ios/utils/UIView+RNSUtility.mm +54 -0
- package/kepler-compatibility.json +2 -2
- package/lib/commonjs/TransitionProgressContext.js +1 -0
- package/lib/commonjs/TransitionProgressContext.js.map +1 -1
- package/lib/commonjs/components/DebugContainer.js +39 -0
- package/lib/commonjs/components/DebugContainer.js.map +1 -0
- package/lib/commonjs/components/DebugContainer.web.js +15 -0
- package/lib/commonjs/components/DebugContainer.web.js.map +1 -0
- package/lib/commonjs/components/FullWindowOverlay.js +31 -0
- package/lib/commonjs/components/FullWindowOverlay.js.map +1 -0
- package/lib/commonjs/components/FullWindowOverlay.web.js +9 -0
- package/lib/commonjs/components/FullWindowOverlay.web.js.map +1 -0
- package/lib/commonjs/components/Screen.js +286 -0
- package/lib/commonjs/components/Screen.js.map +1 -0
- package/lib/commonjs/components/Screen.web.js +47 -0
- package/lib/commonjs/components/Screen.web.js.map +1 -0
- package/lib/commonjs/components/ScreenContainer.js +32 -0
- package/lib/commonjs/components/ScreenContainer.js.map +1 -0
- package/lib/commonjs/components/ScreenContainer.web.js +10 -0
- package/lib/commonjs/components/ScreenContainer.web.js.map +1 -0
- package/lib/commonjs/components/ScreenContentWrapper.js +17 -0
- package/lib/commonjs/components/ScreenContentWrapper.js.map +1 -0
- package/lib/commonjs/components/ScreenContentWrapper.web.js +10 -0
- package/lib/commonjs/components/ScreenContentWrapper.web.js.map +1 -0
- package/lib/commonjs/components/ScreenFooter.js +25 -0
- package/lib/commonjs/components/ScreenFooter.js.map +1 -0
- package/lib/commonjs/components/ScreenFooter.web.js +11 -0
- package/lib/commonjs/components/ScreenFooter.web.js.map +1 -0
- package/lib/commonjs/components/ScreenStack.js +67 -0
- package/lib/commonjs/components/ScreenStack.js.map +1 -0
- package/lib/commonjs/components/ScreenStack.web.js +10 -0
- package/lib/commonjs/components/ScreenStack.web.js.map +1 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.js +90 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +27 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
- package/lib/commonjs/components/ScreenStackItem.js +107 -0
- package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
- package/lib/commonjs/components/SearchBar.js +63 -0
- package/lib/commonjs/components/SearchBar.js.map +1 -0
- package/lib/commonjs/components/SearchBar.web.js +10 -0
- package/lib/commonjs/components/SearchBar.web.js.map +1 -0
- package/lib/commonjs/components/helpers/DelayedFreeze.js +31 -0
- package/lib/commonjs/components/helpers/DelayedFreeze.js.map +1 -0
- package/lib/commonjs/components/helpers/usePrevious.js +15 -0
- package/lib/commonjs/components/helpers/usePrevious.js.map +1 -0
- package/lib/commonjs/contexts.js +11 -0
- package/lib/commonjs/contexts.js.map +1 -0
- package/lib/commonjs/core.js +40 -0
- package/lib/commonjs/core.js.map +1 -0
- package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +16 -1
- package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js +14 -0
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/NativeScreensModule.js +10 -0
- package/lib/commonjs/fabric/NativeScreensModule.js.map +1 -0
- package/lib/commonjs/fabric/NativeScreensModule.web.js +8 -0
- package/lib/commonjs/fabric/NativeScreensModule.web.js.map +1 -0
- package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +8 -11
- package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js +18 -0
- package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenFooterNativeComponent.js +10 -0
- package/lib/commonjs/fabric/ScreenFooterNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js +13 -15
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +2 -1
- package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +10 -9
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -2
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js +8 -11
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/SearchBarNativeComponent.js +4 -5
- package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
- package/lib/commonjs/gesture-handler/GestureDetectorProvider.js +19 -0
- package/lib/commonjs/gesture-handler/GestureDetectorProvider.js.map +1 -0
- package/lib/commonjs/gesture-handler/RNScreensTurboModule.js +8 -0
- package/lib/commonjs/gesture-handler/RNScreensTurboModule.js.map +1 -0
- package/lib/commonjs/gesture-handler/ScreenGestureDetector.js +201 -0
- package/lib/commonjs/gesture-handler/ScreenGestureDetector.js.map +1 -0
- package/lib/commonjs/gesture-handler/constraints.js +64 -0
- package/lib/commonjs/gesture-handler/constraints.js.map +1 -0
- package/lib/commonjs/gesture-handler/defaults.js +45 -0
- package/lib/commonjs/gesture-handler/defaults.js.map +1 -0
- package/lib/commonjs/gesture-handler/fabricUtils.js +66 -0
- package/lib/commonjs/gesture-handler/fabricUtils.js.map +1 -0
- package/lib/commonjs/gesture-handler/fabricUtils.web.js +17 -0
- package/lib/commonjs/gesture-handler/fabricUtils.web.js.map +1 -0
- package/lib/commonjs/gesture-handler/index.js +14 -0
- package/lib/commonjs/gesture-handler/index.js.map +1 -0
- package/lib/commonjs/index.js +157 -94
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native-stack/contexts/GHContext.js +12 -0
- package/lib/commonjs/native-stack/contexts/GHContext.js.map +1 -0
- package/lib/commonjs/native-stack/index.js.map +1 -1
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +21 -20
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/commonjs/native-stack/types.js.map +1 -1
- package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
- package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
- package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
- package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/utils/getStatusBarHeight.js +22 -0
- package/lib/commonjs/native-stack/utils/getStatusBarHeight.js.map +1 -0
- package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +2 -4
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/views/FontProcessor.js +1 -3
- package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
- package/lib/commonjs/native-stack/views/FooterComponent.js +17 -0
- package/lib/commonjs/native-stack/views/FooterComponent.js.map +1 -0
- package/lib/commonjs/native-stack/views/HeaderConfig.js +21 -13
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +118 -52
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +15 -21
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreen.js +2 -2
- package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +8 -16
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
- package/lib/commonjs/reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +2 -2
- package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
- package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useTransitionProgress.js.map +1 -1
- package/lib/commonjs/utils.js +28 -6
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/TransitionProgressContext.js +2 -0
- package/lib/module/TransitionProgressContext.js.map +1 -1
- package/lib/module/components/DebugContainer.js +30 -0
- package/lib/module/components/DebugContainer.js.map +1 -0
- package/lib/module/components/DebugContainer.web.js +6 -0
- package/lib/module/components/DebugContainer.web.js.map +1 -0
- package/lib/module/components/FullWindowOverlay.js +24 -0
- package/lib/module/components/FullWindowOverlay.js.map +1 -0
- package/lib/module/components/FullWindowOverlay.web.js +3 -0
- package/lib/module/components/FullWindowOverlay.web.js.map +1 -0
- package/lib/module/components/Screen.js +282 -0
- package/lib/module/components/Screen.js.map +1 -0
- package/lib/module/components/Screen.web.js +40 -0
- package/lib/module/components/Screen.web.js.map +1 -0
- package/lib/module/components/ScreenContainer.js +26 -0
- package/lib/module/components/ScreenContainer.js.map +1 -0
- package/lib/module/components/ScreenContainer.web.js +4 -0
- package/lib/module/components/ScreenContainer.web.js.map +1 -0
- package/lib/module/components/ScreenContentWrapper.js +10 -0
- package/lib/module/components/ScreenContentWrapper.js.map +1 -0
- package/lib/module/components/ScreenContentWrapper.web.js +4 -0
- package/lib/module/components/ScreenContentWrapper.web.js.map +1 -0
- package/lib/module/components/ScreenFooter.js +18 -0
- package/lib/module/components/ScreenFooter.js.map +1 -0
- package/lib/module/components/ScreenFooter.web.js +6 -0
- package/lib/module/components/ScreenFooter.web.js.map +1 -0
- package/lib/module/components/ScreenStack.js +63 -0
- package/lib/module/components/ScreenStack.js.map +1 -0
- package/lib/module/components/ScreenStack.web.js +4 -0
- package/lib/module/components/ScreenStack.web.js.map +1 -0
- package/lib/module/components/ScreenStackHeaderConfig.js +81 -0
- package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
- package/lib/module/components/ScreenStackHeaderConfig.web.js +14 -0
- package/lib/module/components/ScreenStackHeaderConfig.web.js.map +1 -0
- package/lib/module/components/ScreenStackItem.js +98 -0
- package/lib/module/components/ScreenStackItem.js.map +1 -0
- package/lib/module/components/SearchBar.js +57 -0
- package/lib/module/components/SearchBar.js.map +1 -0
- package/lib/module/components/SearchBar.web.js +4 -0
- package/lib/module/components/SearchBar.web.js.map +1 -0
- package/lib/module/components/helpers/DelayedFreeze.js +24 -0
- package/lib/module/components/helpers/DelayedFreeze.js.map +1 -0
- package/lib/module/components/helpers/usePrevious.js +9 -0
- package/lib/module/components/helpers/usePrevious.js.map +1 -0
- package/lib/module/contexts.js +4 -0
- package/lib/module/contexts.js.map +1 -0
- package/lib/module/core.js +31 -0
- package/lib/module/core.js.map +1 -0
- package/lib/module/fabric/FullWindowOverlayNativeComponent.js +16 -0
- package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/module/fabric/ModalScreenNativeComponent.js +10 -0
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -0
- package/lib/module/fabric/NativeScreensModule.js +5 -0
- package/lib/module/fabric/NativeScreensModule.js.map +1 -0
- package/lib/module/fabric/NativeScreensModule.web.js +2 -0
- package/lib/module/fabric/NativeScreensModule.web.js.map +1 -0
- package/lib/module/fabric/ScreenContainerNativeComponent.js +3 -4
- package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenContentWrapperNativeComponent.js +10 -0
- package/lib/module/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenFooterNativeComponent.js +3 -0
- package/lib/module/fabric/ScreenFooterNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenNativeComponent.js +8 -7
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +2 -0
- package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +8 -2
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +5 -1
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackNativeComponent.js +3 -3
- package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/SearchBarNativeComponent.js +3 -1
- package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
- package/lib/module/gesture-handler/GestureDetectorProvider.js +12 -0
- package/lib/module/gesture-handler/GestureDetectorProvider.js.map +1 -0
- package/lib/module/gesture-handler/RNScreensTurboModule.js +2 -0
- package/lib/module/gesture-handler/RNScreensTurboModule.js.map +1 -0
- package/lib/module/gesture-handler/ScreenGestureDetector.js +193 -0
- package/lib/module/gesture-handler/ScreenGestureDetector.js.map +1 -0
- package/lib/module/gesture-handler/constraints.js +56 -0
- package/lib/module/gesture-handler/constraints.js.map +1 -0
- package/lib/module/gesture-handler/defaults.js +39 -0
- package/lib/module/gesture-handler/defaults.js.map +1 -0
- package/lib/module/gesture-handler/fabricUtils.js +61 -0
- package/lib/module/gesture-handler/fabricUtils.js.map +1 -0
- package/lib/module/gesture-handler/fabricUtils.web.js +10 -0
- package/lib/module/gesture-handler/fabricUtils.web.js.map +1 -0
- package/lib/module/gesture-handler/index.js +5 -0
- package/lib/module/gesture-handler/index.js.map +1 -0
- package/lib/module/index.js +29 -64
- package/lib/module/index.js.map +1 -1
- package/lib/module/native-stack/contexts/GHContext.js +6 -0
- package/lib/module/native-stack/contexts/GHContext.js.map +1 -0
- package/lib/module/native-stack/index.js.map +1 -1
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js +21 -20
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/module/native-stack/types.js.map +1 -1
- package/lib/module/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
- package/lib/module/native-stack/utils/HeaderHeightContext.js.map +1 -1
- package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
- package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
- package/lib/module/native-stack/utils/getStatusBarHeight.js +16 -0
- package/lib/module/native-stack/utils/getStatusBarHeight.js.map +1 -0
- package/lib/module/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
- package/lib/module/native-stack/utils/useBackPressSubscription.js +2 -4
- package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
- package/lib/module/native-stack/views/FontProcessor.js +2 -3
- package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
- package/lib/module/native-stack/views/FooterComponent.js +10 -0
- package/lib/module/native-stack/views/FooterComponent.js.map +1 -0
- package/lib/module/native-stack/views/HeaderConfig.js +13 -6
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +114 -46
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js +8 -12
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreen.js +1 -2
- package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js +7 -15
- package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/module/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
- package/lib/module/reanimated/index.js.map +1 -1
- package/lib/module/reanimated/useReanimatedHeaderHeight.js +1 -1
- package/lib/module/reanimated/useReanimatedHeaderHeight.js.map +1 -1
- package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useTransitionProgress.js.map +1 -1
- package/lib/module/utils.js +26 -5
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/TransitionProgressContext.d.ts +2 -1
- package/lib/typescript/TransitionProgressContext.d.ts.map +1 -0
- package/lib/typescript/components/DebugContainer.d.ts +15 -0
- package/lib/typescript/components/DebugContainer.d.ts.map +1 -0
- package/lib/typescript/components/DebugContainer.web.d.ts +4 -0
- package/lib/typescript/components/DebugContainer.web.d.ts.map +1 -0
- package/lib/typescript/components/FullWindowOverlay.d.ts +6 -0
- package/lib/typescript/components/FullWindowOverlay.d.ts.map +1 -0
- package/lib/typescript/components/FullWindowOverlay.web.d.ts +6 -0
- package/lib/typescript/components/FullWindowOverlay.web.d.ts.map +1 -0
- package/lib/typescript/components/Screen.d.ts +8 -0
- package/lib/typescript/components/Screen.d.ts.map +1 -0
- package/lib/typescript/components/Screen.web.d.ts +11 -0
- package/lib/typescript/components/Screen.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenContainer.d.ts +5 -0
- package/lib/typescript/components/ScreenContainer.d.ts.map +1 -0
- package/lib/typescript/components/ScreenContainer.web.d.ts +4 -0
- package/lib/typescript/components/ScreenContainer.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenContentWrapper.d.ts +5 -0
- package/lib/typescript/components/ScreenContentWrapper.d.ts.map +1 -0
- package/lib/typescript/components/ScreenContentWrapper.web.d.ts +4 -0
- package/lib/typescript/components/ScreenContentWrapper.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenFooter.d.ts +12 -0
- package/lib/typescript/components/ScreenFooter.d.ts.map +1 -0
- package/lib/typescript/components/ScreenFooter.web.d.ts +6 -0
- package/lib/typescript/components/ScreenFooter.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenStack.d.ts +5 -0
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -0
- package/lib/typescript/components/ScreenStack.web.d.ts +4 -0
- package/lib/typescript/components/ScreenStack.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +13 -0
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts +13 -0
- package/lib/typescript/components/ScreenStackHeaderConfig.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenStackItem.d.ts +11 -0
- package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -0
- package/lib/typescript/components/SearchBar.d.ts +5 -0
- package/lib/typescript/components/SearchBar.d.ts.map +1 -0
- package/lib/typescript/components/SearchBar.web.d.ts +4 -0
- package/lib/typescript/components/SearchBar.web.d.ts.map +1 -0
- package/lib/typescript/components/helpers/DelayedFreeze.d.ts +8 -0
- package/lib/typescript/components/helpers/DelayedFreeze.d.ts.map +1 -0
- package/lib/typescript/components/helpers/usePrevious.d.ts +2 -0
- package/lib/typescript/components/helpers/usePrevious.d.ts.map +1 -0
- package/lib/typescript/contexts.d.ts +5 -0
- package/lib/typescript/contexts.d.ts.map +1 -0
- package/lib/typescript/core.d.ts +6 -0
- package/lib/typescript/core.d.ts.map +1 -0
- package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +76 -0
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/NativeScreensModule.d.ts +6 -0
- package/lib/typescript/fabric/NativeScreensModule.d.ts.map +1 -0
- package/lib/typescript/fabric/NativeScreensModule.web.d.ts +3 -0
- package/lib/typescript/fabric/NativeScreensModule.web.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts +7 -0
- package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +34 -24
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +12 -2
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +4 -2
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +17 -16
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts +5 -0
- package/lib/typescript/gesture-handler/GestureDetectorProvider.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts +13 -0
- package/lib/typescript/gesture-handler/RNScreensTurboModule.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts +5 -0
- package/lib/typescript/gesture-handler/ScreenGestureDetector.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/constraints.d.ts +6 -0
- package/lib/typescript/gesture-handler/constraints.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/defaults.d.ts +20 -0
- package/lib/typescript/gesture-handler/defaults.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/fabricUtils.d.ts +10 -0
- package/lib/typescript/gesture-handler/fabricUtils.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/fabricUtils.web.d.ts +6 -0
- package/lib/typescript/gesture-handler/fabricUtils.web.d.ts.map +1 -0
- package/lib/typescript/gesture-handler/index.d.ts +2 -0
- package/lib/typescript/gesture-handler/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +25 -31
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/native-stack/contexts/GHContext.d.ts +4 -0
- package/lib/typescript/native-stack/contexts/GHContext.d.ts.map +1 -0
- package/lib/typescript/native-stack/index.d.ts +1 -0
- package/lib/typescript/native-stack/index.d.ts.map +1 -0
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +4 -0
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
- package/lib/typescript/native-stack/types.d.ts +191 -33
- package/lib/typescript/native-stack/types.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts +1 -0
- package/lib/typescript/native-stack/utils/AnimatedHeaderHeightContext.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts +1 -0
- package/lib/typescript/native-stack/utils/HeaderHeightContext.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts +2 -1
- package/lib/typescript/native-stack/utils/SafeAreaProviderCompat.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts +3 -2
- package/lib/typescript/native-stack/utils/getDefaultHeaderHeight.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts +3 -0
- package/lib/typescript/native-stack/utils/getStatusBarHeight.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts +2 -1
- package/lib/typescript/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +1 -0
- package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts.map +1 -0
- package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts +1 -0
- package/lib/typescript/native-stack/utils/useHeaderHeight.d.ts.map +1 -0
- package/lib/typescript/native-stack/views/FontProcessor.d.ts +1 -0
- package/lib/typescript/native-stack/views/FontProcessor.d.ts.map +1 -0
- package/lib/typescript/native-stack/views/FooterComponent.d.ts +7 -0
- package/lib/typescript/native-stack/views/FooterComponent.d.ts.map +1 -0
- package/lib/typescript/native-stack/views/HeaderConfig.d.ts +3 -2
- package/lib/typescript/native-stack/views/HeaderConfig.d.ts.map +1 -0
- package/lib/typescript/native-stack/views/NativeStackView.d.ts +2 -1
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -0
- package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts +1 -0
- package/lib/typescript/reanimated/ReanimatedHeaderHeightContext.d.ts.map +1 -0
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +3 -3
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts.map +1 -0
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts +3 -3
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts.map +1 -0
- package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +1 -0
- package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts.map +1 -0
- package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts +2 -1
- package/lib/typescript/reanimated/ReanimatedTransitionProgressContext.d.ts.map +1 -0
- package/lib/typescript/reanimated/index.d.ts +1 -0
- package/lib/typescript/reanimated/index.d.ts.map +1 -0
- package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts +2 -3
- package/lib/typescript/reanimated/useReanimatedHeaderHeight.d.ts.map +1 -0
- package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts +4 -9
- package/lib/typescript/reanimated/useReanimatedTransitionProgress.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +186 -36
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/useTransitionProgress.d.ts +4 -3
- package/lib/typescript/useTransitionProgress.d.ts.map +1 -0
- package/lib/typescript/utils.d.ts +27 -1
- package/lib/typescript/utils.d.ts.map +1 -0
- package/native-stack/README.md +156 -108
- package/native-stack/package.json +4 -4
- package/package.json +1 -1
- package/react-native.config.js +19 -16
- package/reanimated/package.json +1 -1
- package/src/TransitionProgressContext.tsx +3 -1
- package/src/components/DebugContainer.tsx +46 -0
- package/src/components/DebugContainer.web.tsx +7 -0
- package/src/components/FullWindowOverlay.tsx +33 -0
- package/src/components/FullWindowOverlay.web.tsx +6 -0
- package/src/components/Screen.tsx +392 -0
- package/src/components/Screen.web.tsx +46 -0
- package/src/components/ScreenContainer.tsx +28 -0
- package/src/components/ScreenContainer.web.tsx +5 -0
- package/src/components/ScreenContentWrapper.tsx +9 -0
- package/src/components/ScreenContentWrapper.web.tsx +5 -0
- package/src/components/ScreenFooter.tsx +20 -0
- package/src/components/ScreenFooter.web.tsx +7 -0
- package/src/components/ScreenStack.tsx +112 -0
- package/src/components/ScreenStack.web.tsx +5 -0
- package/src/components/ScreenStackHeaderConfig.tsx +122 -0
- package/src/components/ScreenStackHeaderConfig.web.tsx +39 -0
- package/src/components/ScreenStackItem.tsx +174 -0
- package/src/components/SearchBar.tsx +102 -0
- package/src/components/SearchBar.web.tsx +5 -0
- package/src/components/helpers/DelayedFreeze.tsx +27 -0
- package/src/components/helpers/usePrevious.tsx +11 -0
- package/src/contexts.tsx +9 -0
- package/src/core.ts +45 -0
- package/src/fabric/FullWindowOverlayNativeComponent.ts +16 -0
- package/src/fabric/ModalScreenNativeComponent.ts +115 -0
- package/src/fabric/NativeScreensModule.ts +8 -0
- package/src/fabric/NativeScreensModule.web.ts +1 -0
- package/src/fabric/ScreenContainerNativeComponent.ts +3 -3
- package/src/fabric/ScreenContentWrapperNativeComponent.ts +14 -0
- package/src/fabric/ScreenFooterNativeComponent.ts +6 -0
- package/src/fabric/ScreenNativeComponent.ts +34 -23
- package/src/fabric/ScreenNavigationContainerNativeComponent.ts +3 -1
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +38 -2
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +5 -1
- package/src/fabric/ScreenStackNativeComponent.ts +3 -2
- package/src/fabric/SearchBarNativeComponent.ts +17 -13
- package/src/gesture-handler/GestureDetectorProvider.tsx +16 -0
- package/src/gesture-handler/RNScreensTurboModule.ts +13 -0
- package/src/gesture-handler/ScreenGestureDetector.tsx +241 -0
- package/src/gesture-handler/constraints.ts +87 -0
- package/src/gesture-handler/defaults.ts +46 -0
- package/src/gesture-handler/fabricUtils.ts +86 -0
- package/src/gesture-handler/fabricUtils.web.ts +10 -0
- package/src/gesture-handler/index.tsx +4 -0
- package/src/index.tsx +49 -113
- package/src/native-stack/contexts/GHContext.tsx +9 -0
- package/src/native-stack/navigators/createNativeStackNavigator.tsx +6 -3
- package/src/native-stack/types.tsx +204 -31
- package/src/native-stack/utils/getDefaultHeaderHeight.tsx +2 -2
- package/src/native-stack/utils/getStatusBarHeight.tsx +22 -0
- package/src/native-stack/utils/useAnimatedHeaderHeight.tsx +1 -1
- package/src/native-stack/utils/useBackPressSubscription.tsx +1 -1
- package/src/native-stack/utils/useHeaderHeight.tsx +1 -1
- package/src/native-stack/views/FontProcessor.tsx +2 -2
- package/src/native-stack/views/FooterComponent.tsx +10 -0
- package/src/native-stack/views/HeaderConfig.tsx +20 -5
- package/src/native-stack/views/NativeStackView.tsx +137 -53
- package/src/reanimated/ReanimatedHeaderHeightContext.tsx +1 -1
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +15 -13
- package/src/reanimated/ReanimatedScreen.tsx +4 -3
- package/src/reanimated/ReanimatedScreenProvider.tsx +3 -2
- package/src/reanimated/useReanimatedHeaderHeight.tsx +2 -2
- package/src/reanimated/useReanimatedTransitionProgress.tsx +1 -1
- package/src/types.tsx +210 -40
- package/src/useTransitionProgress.tsx +1 -1
- package/src/utils.ts +27 -5
- package/windows/README.md +4 -1
- package/windows/RNScreens/Screen.h +3 -1
- package/SystemBundles/4a5c11b5bb8dfc0553e927a2c8678e1dbd4a75220fe24dfbdba59b5550215de6.bundle +0 -33681
- package/SystemBundles/4a5c11b5bb8dfc0553e927a2c8678e1dbd4a75220fe24dfbdba59b5550215de6.map +0 -1
- package/SystemModules/amzn__react-native-screens.modules.txt +0 -101
- package/SystemModules/amzn__react-native-screens.private.modules.txt +0 -244
- package/lib/commonjs/index.native.js +0 -409
- package/lib/commonjs/index.native.js.map +0 -1
- package/lib/module/index.native.js +0 -412
- package/lib/module/index.native.js.map +0 -1
- package/lib/typescript/index.native.d.ts +0 -2
- package/src/index.native.tsx +0 -601
|
@@ -8,7 +8,11 @@
|
|
|
8
8
|
#import <react/renderer/components/rnscreens/EventEmitters.h>
|
|
9
9
|
#import <react/renderer/components/rnscreens/Props.h>
|
|
10
10
|
#import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
|
|
11
|
+
#import <rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h>
|
|
11
12
|
#import "RCTImageComponentView+RNSScreenStackHeaderConfig.h"
|
|
13
|
+
#ifndef NDEBUG
|
|
14
|
+
#import <react/utils/ManagedObjectWrapper.h>
|
|
15
|
+
#endif // !NDEBUG
|
|
12
16
|
#else
|
|
13
17
|
#import <React/RCTImageView.h>
|
|
14
18
|
#import <React/RCTShadowView.h>
|
|
@@ -19,6 +23,8 @@
|
|
|
19
23
|
#import <React/RCTFont.h>
|
|
20
24
|
#import <React/RCTImageLoader.h>
|
|
21
25
|
#import <React/RCTImageSource.h>
|
|
26
|
+
#import "RNSConvert.h"
|
|
27
|
+
#import "RNSDefines.h"
|
|
22
28
|
#import "RNSScreen.h"
|
|
23
29
|
#import "RNSScreenStackHeaderConfig.h"
|
|
24
30
|
#import "RNSSearchBar.h"
|
|
@@ -54,13 +60,26 @@ namespace react = facebook::react;
|
|
|
54
60
|
|
|
55
61
|
@implementation RNSScreenStackHeaderConfig {
|
|
56
62
|
NSMutableArray<RNSScreenStackHeaderSubview *> *_reactSubviews;
|
|
63
|
+
NSDirectionalEdgeInsets _lastHeaderInsets;
|
|
57
64
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
58
65
|
BOOL _initialPropsSet;
|
|
66
|
+
react::RNSScreenStackHeaderConfigShadowNode::ConcreteState::Shared _state;
|
|
67
|
+
#ifndef NDEBUG
|
|
68
|
+
RCTImageLoader *imageLoader;
|
|
69
|
+
#endif // !NDEBUG
|
|
59
70
|
#else
|
|
71
|
+
__weak RCTBridge *_bridge;
|
|
60
72
|
#endif
|
|
61
73
|
}
|
|
62
74
|
|
|
63
75
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
76
|
+
|
|
77
|
+
// Needed because of this: https://github.com/facebook/react-native/pull/37274
|
|
78
|
+
+ (void)load
|
|
79
|
+
{
|
|
80
|
+
[super load];
|
|
81
|
+
}
|
|
82
|
+
|
|
64
83
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
65
84
|
{
|
|
66
85
|
if (self = [super initWithFrame:frame]) {
|
|
@@ -81,6 +100,16 @@ namespace react = facebook::react;
|
|
|
81
100
|
}
|
|
82
101
|
return self;
|
|
83
102
|
}
|
|
103
|
+
|
|
104
|
+
- (instancetype)initWithBridge:(RCTBridge *)bridge
|
|
105
|
+
{
|
|
106
|
+
if (self = [super init]) {
|
|
107
|
+
_bridge = bridge;
|
|
108
|
+
_translucent = YES;
|
|
109
|
+
[self initProps];
|
|
110
|
+
}
|
|
111
|
+
return self;
|
|
112
|
+
}
|
|
84
113
|
#endif
|
|
85
114
|
|
|
86
115
|
- (void)initProps
|
|
@@ -88,8 +117,10 @@ namespace react = facebook::react;
|
|
|
88
117
|
self.hidden = YES;
|
|
89
118
|
_reactSubviews = [NSMutableArray new];
|
|
90
119
|
_backTitleVisible = YES;
|
|
120
|
+
_blurEffect = RNSBlurEffectStyleNone;
|
|
91
121
|
}
|
|
92
122
|
|
|
123
|
+
RNS_IGNORE_SUPER_CALL_BEGIN
|
|
93
124
|
- (UIView *)reactSuperview
|
|
94
125
|
{
|
|
95
126
|
return _screenView;
|
|
@@ -99,6 +130,7 @@ namespace react = facebook::react;
|
|
|
99
130
|
{
|
|
100
131
|
return _reactSubviews;
|
|
101
132
|
}
|
|
133
|
+
RNS_IGNORE_SUPER_CALL_END
|
|
102
134
|
|
|
103
135
|
- (void)removeFromSuperview
|
|
104
136
|
{
|
|
@@ -140,13 +172,16 @@ namespace react = facebook::react;
|
|
|
140
172
|
nextVC = nav.topViewController;
|
|
141
173
|
}
|
|
142
174
|
|
|
143
|
-
// we want updates sent to the VC below modal too since it is also visible
|
|
144
|
-
BOOL isPresentingVC = nextVC != nil && vc.presentedViewController == nextVC;
|
|
175
|
+
// we want updates sent to the VC directly below modal too since it is also visible
|
|
176
|
+
BOOL isPresentingVC = nextVC != nil && vc.presentedViewController == nextVC && vc == nav.topViewController;
|
|
145
177
|
|
|
146
178
|
BOOL isInFullScreenModal = nav == nil && _screenView.stackPresentation == RNSScreenStackPresentationFullScreenModal;
|
|
147
179
|
// if nav is nil, it means we can be in a fullScreen modal, so there is no nextVC, but we still want to update
|
|
148
180
|
if (vc != nil && (nextVC == vc || isInFullScreenModal || isPresentingVC)) {
|
|
149
181
|
[RNSScreenStackHeaderConfig updateViewController:self.screenView.controller withConfig:self animated:YES];
|
|
182
|
+
// As the header might have change in `updateViewController` we need to ensure that header height
|
|
183
|
+
// returned by the `onHeaderHeightChange` event is correct.
|
|
184
|
+
[self.screenView.controller calculateAndNotifyHeaderHeightChangeIsModal:NO];
|
|
150
185
|
}
|
|
151
186
|
}
|
|
152
187
|
|
|
@@ -160,6 +195,51 @@ namespace react = facebook::react;
|
|
|
160
195
|
[navctr.view setNeedsLayout];
|
|
161
196
|
}
|
|
162
197
|
|
|
198
|
+
- (void)updateHeaderInsetsInShadowTreeTo:(NSDirectionalEdgeInsets)insets
|
|
199
|
+
{
|
|
200
|
+
if (_lastHeaderInsets.leading != insets.leading || _lastHeaderInsets.trailing != insets.trailing) {
|
|
201
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
202
|
+
auto newState = react::RNSScreenStackHeaderConfigState{insets.leading, insets.trailing};
|
|
203
|
+
_state->updateState(std::move(newState));
|
|
204
|
+
_lastHeaderInsets = std::move(insets);
|
|
205
|
+
#else
|
|
206
|
+
[_bridge.uiManager setLocalData:[[RNSHeaderConfigInsetsPayload alloc] initWithInsets:insets] forView:self];
|
|
207
|
+
_lastHeaderInsets = std::move(insets);
|
|
208
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
- (BOOL)hasSubviewOfType:(RNSScreenStackHeaderSubviewType)type
|
|
213
|
+
{
|
|
214
|
+
for (RNSScreenStackHeaderSubview *subview in _reactSubviews) {
|
|
215
|
+
if (subview.type == type) {
|
|
216
|
+
return YES;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return NO;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
- (BOOL)hasSubviewLeft
|
|
224
|
+
{
|
|
225
|
+
return [self hasSubviewOfType:RNSScreenStackHeaderSubviewTypeLeft];
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
- (BOOL)shouldHeaderBeVisible
|
|
229
|
+
{
|
|
230
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
231
|
+
return self.show;
|
|
232
|
+
#else
|
|
233
|
+
return !self.hide;
|
|
234
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
- (BOOL)shouldBackButtonBeVisibleInNavigationBar:(nullable UINavigationBar *)navBar
|
|
238
|
+
{
|
|
239
|
+
return navBar.backItem != nil && !self.hideBackButton &&
|
|
240
|
+
!(self.backButtonInCustomView == false && self.hasSubviewLeft);
|
|
241
|
+
}
|
|
242
|
+
|
|
163
243
|
+ (void)setAnimatedConfig:(UIViewController *)vc withConfig:(RNSScreenStackHeaderConfig *)config
|
|
164
244
|
{
|
|
165
245
|
UINavigationBar *navbar = ((UINavigationController *)vc.parentViewController).navigationBar;
|
|
@@ -224,7 +304,7 @@ namespace react = facebook::react;
|
|
|
224
304
|
[navbar setTitleTextAttributes:attrs];
|
|
225
305
|
}
|
|
226
306
|
|
|
227
|
-
#if !TARGET_OS_TV
|
|
307
|
+
#if !TARGET_OS_TV && !TARGET_OS_VISION
|
|
228
308
|
if (@available(iOS 11.0, *)) {
|
|
229
309
|
if (config.largeTitle &&
|
|
230
310
|
(config.largeTitleFontFamily || config.largeTitleFontSize || config.largeTitleFontWeight ||
|
|
@@ -264,10 +344,10 @@ namespace react = facebook::react;
|
|
|
264
344
|
[button setTitleTextAttributes:attrs forState:UIControlStateFocused];
|
|
265
345
|
}
|
|
266
346
|
|
|
267
|
-
|
|
347
|
+
- (UIImage *)loadBackButtonImageInViewController:(UIViewController *)vc
|
|
268
348
|
{
|
|
269
349
|
BOOL hasBackButtonImage = NO;
|
|
270
|
-
for (RNSScreenStackHeaderSubview *subview in
|
|
350
|
+
for (RNSScreenStackHeaderSubview *subview in self.reactSubviews) {
|
|
271
351
|
if (subview.type == RNSScreenStackHeaderSubviewTypeBackButton && subview.subviews.count > 0) {
|
|
272
352
|
hasBackButtonImage = YES;
|
|
273
353
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
@@ -293,6 +373,7 @@ namespace react = facebook::react;
|
|
|
293
373
|
|
|
294
374
|
UIImage *image = imageView.image;
|
|
295
375
|
|
|
376
|
+
#ifndef NDEBUG
|
|
296
377
|
// IMPORTANT!!!
|
|
297
378
|
// image can be nil in DEV MODE ONLY
|
|
298
379
|
//
|
|
@@ -307,8 +388,9 @@ namespace react = facebook::react;
|
|
|
307
388
|
// in DEV MODE we try to load from cache (we use private API for that as it is not exposed
|
|
308
389
|
// publically in headers).
|
|
309
390
|
RCTImageSource *imageSource = [RNSScreenStackHeaderConfig imageSourceFromImageView:imageView];
|
|
310
|
-
|
|
311
|
-
|
|
391
|
+
#ifndef RCT_NEW_ARCH_ENABLED
|
|
392
|
+
RCTImageLoader *imageLoader = [_bridge moduleForClass:[RCTImageLoader class]];
|
|
393
|
+
#endif // !RCT_NEW_ARCH_ENABLED
|
|
312
394
|
image = [imageLoader.imageCache
|
|
313
395
|
imageForUrl:imageSource.request.URL.absoluteString
|
|
314
396
|
size:imageSource.size
|
|
@@ -320,6 +402,7 @@ namespace react = facebook::react;
|
|
|
320
402
|
resizeMode:imageView.resizeMode];
|
|
321
403
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
322
404
|
}
|
|
405
|
+
#endif // !NDEBUG
|
|
323
406
|
if (image == nil) {
|
|
324
407
|
// This will be triggered if the image is not in the cache yet. What we do is we wait until
|
|
325
408
|
// the end of transition and run header config updates again. We could potentially wait for
|
|
@@ -336,7 +419,7 @@ namespace react = facebook::react;
|
|
|
336
419
|
#if !TARGET_OS_TV
|
|
337
420
|
vc.navigationItem.hidesBackButton = YES;
|
|
338
421
|
#endif
|
|
339
|
-
[
|
|
422
|
+
[self updateViewControllerIfNeeded];
|
|
340
423
|
}];
|
|
341
424
|
}
|
|
342
425
|
return [UIImage new];
|
|
@@ -353,6 +436,11 @@ namespace react = facebook::react;
|
|
|
353
436
|
withConfig:(RNSScreenStackHeaderConfig *)config
|
|
354
437
|
{
|
|
355
438
|
[self updateViewController:vc withConfig:config animated:animated];
|
|
439
|
+
// As the header might have change in `updateViewController` we need to ensure that header height
|
|
440
|
+
// returned by the `onHeaderHeightChange` event is correct.
|
|
441
|
+
if ([vc isKindOfClass:[RNSScreen class]]) {
|
|
442
|
+
[(RNSScreen *)vc calculateAndNotifyHeaderHeightChangeIsModal:NO];
|
|
443
|
+
}
|
|
356
444
|
}
|
|
357
445
|
|
|
358
446
|
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
|
@@ -363,8 +451,16 @@ namespace react = facebook::react;
|
|
|
363
451
|
UINavigationBarAppearance *appearance = [UINavigationBarAppearance new];
|
|
364
452
|
|
|
365
453
|
if (config.backgroundColor && CGColorGetAlpha(config.backgroundColor.CGColor) == 0.) {
|
|
454
|
+
// Preserve the shadow properties in case the user wants to show the shadow on scroll.
|
|
455
|
+
UIColor *shadowColor = appearance.shadowColor;
|
|
456
|
+
UIImage *shadowImage = appearance.shadowImage;
|
|
366
457
|
// transparent background color
|
|
367
458
|
[appearance configureWithTransparentBackground];
|
|
459
|
+
|
|
460
|
+
if (!config.hideShadow) {
|
|
461
|
+
appearance.shadowColor = shadowColor;
|
|
462
|
+
appearance.shadowImage = shadowImage;
|
|
463
|
+
}
|
|
368
464
|
} else {
|
|
369
465
|
[appearance configureWithOpaqueBackground];
|
|
370
466
|
}
|
|
@@ -374,13 +470,12 @@ namespace react = facebook::react;
|
|
|
374
470
|
appearance.backgroundColor = config.backgroundColor;
|
|
375
471
|
}
|
|
376
472
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
appearance.backgroundEffect =
|
|
473
|
+
if (config.blurEffect != RNSBlurEffectStyleNone) {
|
|
474
|
+
appearance.backgroundEffect =
|
|
475
|
+
[UIBlurEffect effectWithStyle:[RNSConvert tryConvertRNSBlurEffectStyleToUIBlurEffectStyle:config.blurEffect]];
|
|
476
|
+
} else {
|
|
477
|
+
appearance.backgroundEffect = nil;
|
|
382
478
|
}
|
|
383
|
-
#endif
|
|
384
479
|
|
|
385
480
|
if (config.hideShadow) {
|
|
386
481
|
appearance.shadowColor = nil;
|
|
@@ -389,9 +484,12 @@ namespace react = facebook::react;
|
|
|
389
484
|
if (config.titleFontFamily || config.titleFontSize || config.titleFontWeight || config.titleColor) {
|
|
390
485
|
NSMutableDictionary *attrs = [NSMutableDictionary new];
|
|
391
486
|
|
|
487
|
+
// Ignore changing header title color on visionOS
|
|
488
|
+
#if !TARGET_OS_VISION
|
|
392
489
|
if (config.titleColor) {
|
|
393
490
|
attrs[NSForegroundColorAttributeName] = config.titleColor;
|
|
394
491
|
}
|
|
492
|
+
#endif
|
|
395
493
|
|
|
396
494
|
NSString *family = config.titleFontFamily ?: nil;
|
|
397
495
|
NSNumber *size = config.titleFontSize ?: @17;
|
|
@@ -414,9 +512,12 @@ namespace react = facebook::react;
|
|
|
414
512
|
config.largeTitleColor || config.titleColor) {
|
|
415
513
|
NSMutableDictionary *largeAttrs = [NSMutableDictionary new];
|
|
416
514
|
|
|
515
|
+
// Ignore changing header title color on visionOS
|
|
516
|
+
#if !TARGET_OS_VISION
|
|
417
517
|
if (config.largeTitleColor || config.titleColor) {
|
|
418
518
|
largeAttrs[NSForegroundColorAttributeName] = config.largeTitleColor ? config.largeTitleColor : config.titleColor;
|
|
419
519
|
}
|
|
520
|
+
#endif
|
|
420
521
|
|
|
421
522
|
NSString *largeFamily = config.largeTitleFontFamily ?: nil;
|
|
422
523
|
NSNumber *largeSize = config.largeTitleFontSize ?: @34;
|
|
@@ -436,7 +537,7 @@ namespace react = facebook::react;
|
|
|
436
537
|
appearance.largeTitleTextAttributes = largeAttrs;
|
|
437
538
|
}
|
|
438
539
|
|
|
439
|
-
UIImage *backButtonImage = [
|
|
540
|
+
UIImage *backButtonImage = [config loadBackButtonImageInViewController:vc];
|
|
440
541
|
if (backButtonImage) {
|
|
441
542
|
[appearance setBackIndicatorImage:backButtonImage transitionMaskImage:backButtonImage];
|
|
442
543
|
} else if (appearance.backIndicatorImage) {
|
|
@@ -453,16 +554,20 @@ namespace react = facebook::react;
|
|
|
453
554
|
UINavigationItem *navitem = vc.navigationItem;
|
|
454
555
|
UINavigationController *navctr = (UINavigationController *)vc.parentViewController;
|
|
455
556
|
|
|
557
|
+
// When modal is shown the underlying RNSScreen isn't attached to any navigation controller.
|
|
558
|
+
// During the modal dismissal transition this update method is called on this RNSScreen resulting in nil navctr.
|
|
559
|
+
// After the transition is completed it will be called again and will configure the navigation controller correctly.
|
|
560
|
+
// Also see: https://github.com/software-mansion/react-native-screens/pull/2336
|
|
561
|
+
if (navctr == nil) {
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
|
|
456
565
|
NSUInteger currentIndex = [navctr.viewControllers indexOfObject:vc];
|
|
457
566
|
UINavigationItem *prevItem =
|
|
458
567
|
currentIndex > 0 ? [navctr.viewControllers objectAtIndex:currentIndex - 1].navigationItem : nil;
|
|
459
568
|
|
|
460
569
|
BOOL wasHidden = navctr.navigationBarHidden;
|
|
461
|
-
|
|
462
|
-
BOOL shouldHide = config == nil || !config.show;
|
|
463
|
-
#else
|
|
464
|
-
BOOL shouldHide = config == nil || config.hide;
|
|
465
|
-
#endif
|
|
570
|
+
BOOL shouldHide = config == nil || !config.shouldHeaderBeVisible;
|
|
466
571
|
|
|
467
572
|
if (!shouldHide && !config.translucent) {
|
|
468
573
|
// when nav bar is not translucent we chage edgesForExtendedLayout to avoid system laying out
|
|
@@ -479,8 +584,17 @@ namespace react = facebook::react;
|
|
|
479
584
|
config.direction == UISemanticContentAttributeForceRightToLeft) &&
|
|
480
585
|
// iOS 12 cancels swipe gesture when direction is changed. See #1091
|
|
481
586
|
navctr.view.semanticContentAttribute != config.direction) {
|
|
587
|
+
// This is needed for swipe back gesture direction
|
|
482
588
|
navctr.view.semanticContentAttribute = config.direction;
|
|
589
|
+
|
|
590
|
+
// This is responsible for the direction of the navigationBar and its contents
|
|
483
591
|
navctr.navigationBar.semanticContentAttribute = config.direction;
|
|
592
|
+
[[UIButton appearanceWhenContainedInInstancesOfClasses:@[ navctr.navigationBar.class ]]
|
|
593
|
+
setSemanticContentAttribute:config.direction];
|
|
594
|
+
[[UIView appearanceWhenContainedInInstancesOfClasses:@[ navctr.navigationBar.class ]]
|
|
595
|
+
setSemanticContentAttribute:config.direction];
|
|
596
|
+
[[UISearchBar appearanceWhenContainedInInstancesOfClasses:@[ navctr.navigationBar.class ]]
|
|
597
|
+
setSemanticContentAttribute:config.direction];
|
|
484
598
|
}
|
|
485
599
|
|
|
486
600
|
if (shouldHide) {
|
|
@@ -497,8 +611,24 @@ namespace react = facebook::react;
|
|
|
497
611
|
action:nil];
|
|
498
612
|
[backBarButtonItem setMenuHidden:config.disableBackButtonMenu];
|
|
499
613
|
|
|
614
|
+
auto isBackButtonCustomized = !isBackTitleBlank || config.disableBackButtonMenu;
|
|
615
|
+
|
|
616
|
+
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_14_0) && \
|
|
617
|
+
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_14_0
|
|
618
|
+
if (@available(iOS 14.0, *)) {
|
|
619
|
+
prevItem.backButtonDisplayMode = config.backButtonDisplayMode;
|
|
620
|
+
}
|
|
621
|
+
#endif
|
|
622
|
+
|
|
500
623
|
if (config.isBackTitleVisible) {
|
|
501
|
-
if (config.backTitleFontFamily
|
|
624
|
+
if ((config.backTitleFontFamily &&
|
|
625
|
+
// While being used by react-navigation, the `backTitleFontFamily` will
|
|
626
|
+
// be set to "System" by default - which is the system default font.
|
|
627
|
+
// To avoid always considering the font as customized, we need to have an additional check.
|
|
628
|
+
// See: https://github.com/software-mansion/react-native-screens/pull/2105#discussion_r1565222738
|
|
629
|
+
![config.backTitleFontFamily isEqual:@"System"]) ||
|
|
630
|
+
config.backTitleFontSize) {
|
|
631
|
+
isBackButtonCustomized = YES;
|
|
502
632
|
NSMutableDictionary *attrs = [NSMutableDictionary new];
|
|
503
633
|
NSNumber *size = config.backTitleFontSize ?: @17;
|
|
504
634
|
if (config.backTitleFontFamily) {
|
|
@@ -521,9 +651,17 @@ namespace react = facebook::react;
|
|
|
521
651
|
// When backBarButtonItem's title is null, back menu will use value
|
|
522
652
|
// of backButtonTitle
|
|
523
653
|
[backBarButtonItem setTitle:nil];
|
|
654
|
+
isBackButtonCustomized = YES;
|
|
524
655
|
prevItem.backButtonTitle = resolvedBackTitle;
|
|
525
656
|
}
|
|
526
|
-
|
|
657
|
+
|
|
658
|
+
// Prevent unnecessary assignment of backBarButtonItem if it is not customized,
|
|
659
|
+
// as assigning one will override the native behavior of automatically shortening
|
|
660
|
+
// the title to "Back" or hide the back title if there's not enough space.
|
|
661
|
+
// See: https://github.com/software-mansion/react-native-screens/issues/1589
|
|
662
|
+
if (isBackButtonCustomized) {
|
|
663
|
+
prevItem.backBarButtonItem = backBarButtonItem;
|
|
664
|
+
}
|
|
527
665
|
|
|
528
666
|
if (@available(iOS 11.0, *)) {
|
|
529
667
|
if (config.largeTitle) {
|
|
@@ -541,10 +679,26 @@ namespace react = facebook::react;
|
|
|
541
679
|
navitem.standardAppearance = appearance;
|
|
542
680
|
navitem.compactAppearance = appearance;
|
|
543
681
|
|
|
682
|
+
// appearance does not apply to the tvOS so we need to use lagacy customization
|
|
683
|
+
#if TARGET_OS_TV
|
|
684
|
+
navctr.navigationBar.titleTextAttributes = appearance.titleTextAttributes;
|
|
685
|
+
navctr.navigationBar.backgroundColor = appearance.backgroundColor;
|
|
686
|
+
#endif
|
|
687
|
+
|
|
544
688
|
UINavigationBarAppearance *scrollEdgeAppearance =
|
|
545
689
|
[[UINavigationBarAppearance alloc] initWithBarAppearance:appearance];
|
|
546
690
|
if (config.largeTitleBackgroundColor != nil) {
|
|
547
|
-
|
|
691
|
+
// Add support for using a fully transparent bar when the backgroundColor is set to transparent.
|
|
692
|
+
if (CGColorGetAlpha(config.largeTitleBackgroundColor.CGColor) == 0.) {
|
|
693
|
+
// This will also remove the background blur effect in the large title which is otherwise inherited from the
|
|
694
|
+
// standard appearance.
|
|
695
|
+
[scrollEdgeAppearance configureWithTransparentBackground];
|
|
696
|
+
// This must be set to nil otherwise a default view will be added to the navigation bar background with an
|
|
697
|
+
// opaque background.
|
|
698
|
+
scrollEdgeAppearance.backgroundColor = nil;
|
|
699
|
+
} else {
|
|
700
|
+
scrollEdgeAppearance.backgroundColor = config.largeTitleBackgroundColor;
|
|
701
|
+
}
|
|
548
702
|
}
|
|
549
703
|
if (config.largeTitleHideShadow) {
|
|
550
704
|
scrollEdgeAppearance.shadowColor = nil;
|
|
@@ -556,7 +710,7 @@ namespace react = facebook::react;
|
|
|
556
710
|
#if !TARGET_OS_TV
|
|
557
711
|
// updating backIndicatotImage does not work when called during transition. On iOS pre 13 we need
|
|
558
712
|
// to update it before the navigation starts.
|
|
559
|
-
UIImage *backButtonImage = [
|
|
713
|
+
UIImage *backButtonImage = [config loadBackButtonImageInViewController:vc];
|
|
560
714
|
if (backButtonImage) {
|
|
561
715
|
navctr.navigationBar.backIndicatorImage = backButtonImage;
|
|
562
716
|
navctr.navigationBar.backIndicatorTransitionMaskImage = backButtonImage;
|
|
@@ -574,6 +728,8 @@ namespace react = facebook::react;
|
|
|
574
728
|
navitem.titleView = nil;
|
|
575
729
|
|
|
576
730
|
for (RNSScreenStackHeaderSubview *subview in config.reactSubviews) {
|
|
731
|
+
// This code should be kept in sync on Fabric with analogous switch statement in
|
|
732
|
+
// `- [RNSScreenStackHeaderConfig replaceNavigationBarViewsWithSnapshotOfSubview:]` method.
|
|
577
733
|
switch (subview.type) {
|
|
578
734
|
case RNSScreenStackHeaderSubviewTypeLeft: {
|
|
579
735
|
#if !TARGET_OS_TV
|
|
@@ -659,6 +815,7 @@ namespace react = facebook::react;
|
|
|
659
815
|
}
|
|
660
816
|
}
|
|
661
817
|
|
|
818
|
+
RNS_IGNORE_SUPER_CALL_BEGIN
|
|
662
819
|
- (void)insertReactSubview:(RNSScreenStackHeaderSubview *)subview atIndex:(NSInteger)atIndex
|
|
663
820
|
{
|
|
664
821
|
[_reactSubviews insertObject:subview atIndex:atIndex];
|
|
@@ -669,12 +826,7 @@ namespace react = facebook::react;
|
|
|
669
826
|
{
|
|
670
827
|
[_reactSubviews removeObject:subview];
|
|
671
828
|
}
|
|
672
|
-
|
|
673
|
-
- (void)didUpdateReactSubviews
|
|
674
|
-
{
|
|
675
|
-
[super didUpdateReactSubviews];
|
|
676
|
-
[self updateViewControllerIfNeeded];
|
|
677
|
-
}
|
|
829
|
+
RNS_IGNORE_SUPER_CALL_BEGIN
|
|
678
830
|
|
|
679
831
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
680
832
|
#pragma mark - Fabric specific
|
|
@@ -696,13 +848,52 @@ namespace react = facebook::react;
|
|
|
696
848
|
|
|
697
849
|
// [_reactSubviews insertObject:(RNSScreenStackHeaderSubview *)childComponentView atIndex:index];
|
|
698
850
|
[self insertReactSubview:(RNSScreenStackHeaderSubview *)childComponentView atIndex:index];
|
|
851
|
+
|
|
852
|
+
// TODO: This could be called only once per transaction.
|
|
699
853
|
[self updateViewControllerIfNeeded];
|
|
700
854
|
}
|
|
701
855
|
|
|
702
856
|
- (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index
|
|
703
857
|
{
|
|
858
|
+
BOOL isGoingToBeRemoved = _screenView.isMarkedForUnmountInCurrentTransaction;
|
|
859
|
+
if (isGoingToBeRemoved) {
|
|
860
|
+
// For explanation of why we can make a snapshot here despite the fact that our children are already
|
|
861
|
+
// unmounted see https://github.com/software-mansion/react-native-screens/pull/2261
|
|
862
|
+
[self replaceNavigationBarViewsWithSnapshotOfSubview:(RNSScreenStackHeaderSubview *)childComponentView];
|
|
863
|
+
}
|
|
704
864
|
[_reactSubviews removeObject:(RNSScreenStackHeaderSubview *)childComponentView];
|
|
705
865
|
[childComponentView removeFromSuperview];
|
|
866
|
+
if (!isGoingToBeRemoved) {
|
|
867
|
+
[self updateViewControllerIfNeeded];
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
- (void)replaceNavigationBarViewsWithSnapshotOfSubview:(RNSScreenStackHeaderSubview *)childComponentView
|
|
872
|
+
{
|
|
873
|
+
if (childComponentView.window != nil) {
|
|
874
|
+
UINavigationItem *navitem = _screenView.controller.navigationItem;
|
|
875
|
+
UIView *snapshot = [childComponentView snapshotViewAfterScreenUpdates:NO];
|
|
876
|
+
|
|
877
|
+
// This code should be kept in sync with analogous switch statement in
|
|
878
|
+
// `+ [RNSScreenStackHeaderConfig updateViewController: withConfig: animated:]` method.
|
|
879
|
+
switch (childComponentView.type) {
|
|
880
|
+
case RNSScreenStackHeaderSubviewTypeLeft:
|
|
881
|
+
navitem.leftBarButtonItem.customView = snapshot;
|
|
882
|
+
break;
|
|
883
|
+
case RNSScreenStackHeaderSubviewTypeCenter:
|
|
884
|
+
case RNSScreenStackHeaderSubviewTypeTitle:
|
|
885
|
+
navitem.titleView = snapshot;
|
|
886
|
+
break;
|
|
887
|
+
case RNSScreenStackHeaderSubviewTypeRight:
|
|
888
|
+
navitem.rightBarButtonItem.customView = snapshot;
|
|
889
|
+
break;
|
|
890
|
+
case RNSScreenStackHeaderSubviewTypeSearchBar:
|
|
891
|
+
case RNSScreenStackHeaderSubviewTypeBackButton:
|
|
892
|
+
break;
|
|
893
|
+
default:
|
|
894
|
+
RCTLogError(@"[RNScreens] Unhandled subview type: %ld", childComponentView.type);
|
|
895
|
+
}
|
|
896
|
+
}
|
|
706
897
|
}
|
|
707
898
|
|
|
708
899
|
static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
@@ -718,6 +909,9 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
718
909
|
return RCTResizeModeCenter;
|
|
719
910
|
case react::ImageResizeMode::Repeat:
|
|
720
911
|
return RCTResizeModeRepeat;
|
|
912
|
+
default:
|
|
913
|
+
// Both RCTConvert and ImageProps use this as a default as of RN 0.76
|
|
914
|
+
return RCTResizeModeStretch;
|
|
721
915
|
}
|
|
722
916
|
}
|
|
723
917
|
|
|
@@ -727,7 +921,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
727
921
|
*/
|
|
728
922
|
+ (RCTImageSource *)imageSourceFromImageView:(RCTImageComponentView *)view
|
|
729
923
|
{
|
|
730
|
-
auto
|
|
924
|
+
const auto &imageProps = *std::static_pointer_cast<const react::ImageProps>(view.props);
|
|
731
925
|
react::ImageSource cppImageSource = imageProps.sources.at(0);
|
|
732
926
|
auto imageSize = CGSize{cppImageSource.size.width, cppImageSource.size.height};
|
|
733
927
|
NSURLRequest *request =
|
|
@@ -744,11 +938,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
744
938
|
{
|
|
745
939
|
[super prepareForRecycle];
|
|
746
940
|
_initialPropsSet = NO;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
750
|
-
{
|
|
751
|
-
return react::concreteComponentDescriptorProvider<react::RNSScreenStackHeaderConfigComponentDescriptor>();
|
|
941
|
+
_lastHeaderInsets = NSDirectionalEdgeInsets{};
|
|
752
942
|
}
|
|
753
943
|
|
|
754
944
|
- (NSNumber *)getFontSizePropValue:(int)value
|
|
@@ -758,14 +948,9 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
758
948
|
return nil;
|
|
759
949
|
}
|
|
760
950
|
|
|
761
|
-
|
|
951
|
+
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
|
|
762
952
|
{
|
|
763
|
-
|
|
764
|
-
case react::RNSScreenStackHeaderConfigDirection::Rtl:
|
|
765
|
-
return UISemanticContentAttributeForceRightToLeft;
|
|
766
|
-
case react::RNSScreenStackHeaderConfigDirection::Ltr:
|
|
767
|
-
return UISemanticContentAttributeForceLeftToRight;
|
|
768
|
-
}
|
|
953
|
+
return react::concreteComponentDescriptorProvider<react::RNSScreenStackHeaderConfigComponentDescriptor>();
|
|
769
954
|
}
|
|
770
955
|
|
|
771
956
|
- (void)updateProps:(react::Props::Shared const &)props oldProps:(react::Props::Shared const &)oldProps
|
|
@@ -804,6 +989,7 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
804
989
|
_largeTitleFontWeight = RCTNSStringFromStringNilIfEmpty(newScreenProps.largeTitleFontWeight);
|
|
805
990
|
_largeTitleFontSize = [self getFontSizePropValue:newScreenProps.largeTitleFontSize];
|
|
806
991
|
_largeTitleHideShadow = newScreenProps.largeTitleHideShadow;
|
|
992
|
+
_largeTitleBackgroundColor = RCTUIColorFromSharedColor(newScreenProps.largeTitleBackgroundColor);
|
|
807
993
|
|
|
808
994
|
_backTitle = RCTNSStringFromStringNilIfEmpty(newScreenProps.backTitle);
|
|
809
995
|
if (newScreenProps.backTitleFontFamily != oldScreenProps.backTitleFontFamily) {
|
|
@@ -812,9 +998,11 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
812
998
|
_backTitleFontSize = [self getFontSizePropValue:newScreenProps.backTitleFontSize];
|
|
813
999
|
_hideBackButton = newScreenProps.hideBackButton;
|
|
814
1000
|
_disableBackButtonMenu = newScreenProps.disableBackButtonMenu;
|
|
1001
|
+
_backButtonDisplayMode =
|
|
1002
|
+
[RNSConvert UINavigationItemBackButtonDisplayModeFromCppEquivalent:newScreenProps.backButtonDisplayMode];
|
|
815
1003
|
|
|
816
1004
|
if (newScreenProps.direction != oldScreenProps.direction) {
|
|
817
|
-
_direction = [
|
|
1005
|
+
_direction = [RNSConvert UISemanticContentAttributeFromCppEquivalent:newScreenProps.direction];
|
|
818
1006
|
}
|
|
819
1007
|
|
|
820
1008
|
_backTitleVisible = newScreenProps.backTitleVisible;
|
|
@@ -826,6 +1014,10 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
826
1014
|
_color = RCTUIColorFromSharedColor(newScreenProps.color);
|
|
827
1015
|
_backgroundColor = RCTUIColorFromSharedColor(newScreenProps.backgroundColor);
|
|
828
1016
|
|
|
1017
|
+
if (newScreenProps.blurEffect != oldScreenProps.blurEffect) {
|
|
1018
|
+
_blurEffect = [RNSConvert RNSBlurEffectStyleFromCppEquivalent:newScreenProps.blurEffect];
|
|
1019
|
+
}
|
|
1020
|
+
|
|
829
1021
|
[self updateViewControllerIfNeeded];
|
|
830
1022
|
|
|
831
1023
|
if (needsNavigationControllerLayout) {
|
|
@@ -838,9 +1030,25 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
838
1030
|
[super updateProps:props oldProps:oldProps];
|
|
839
1031
|
}
|
|
840
1032
|
|
|
1033
|
+
- (void)updateState:(const facebook::react::State::Shared &)state
|
|
1034
|
+
oldState:(const facebook::react::State::Shared &)oldState
|
|
1035
|
+
{
|
|
1036
|
+
_state = std::static_pointer_cast<const react::RNSScreenStackHeaderConfigShadowNode::ConcreteState>(state);
|
|
1037
|
+
#ifndef NDEBUG
|
|
1038
|
+
if (auto imgLoaderPtr = _state.get()->getData().getImageLoader().lock()) {
|
|
1039
|
+
imageLoader = react::unwrapManagedObject(imgLoaderPtr);
|
|
1040
|
+
}
|
|
1041
|
+
#endif // !NDEBUG
|
|
1042
|
+
}
|
|
1043
|
+
|
|
841
1044
|
#else
|
|
842
1045
|
#pragma mark - Paper specific
|
|
843
1046
|
|
|
1047
|
+
- (void)didUpdateReactSubviews
|
|
1048
|
+
{
|
|
1049
|
+
[self updateViewControllerIfNeeded];
|
|
1050
|
+
}
|
|
1051
|
+
|
|
844
1052
|
- (void)didSetProps:(NSArray<NSString *> *)changedProps
|
|
845
1053
|
{
|
|
846
1054
|
[super didSetProps:changedProps];
|
|
@@ -876,11 +1084,21 @@ Class<RCTComponentViewProtocol> RNSScreenStackHeaderConfigCls(void)
|
|
|
876
1084
|
|
|
877
1085
|
RCT_EXPORT_MODULE()
|
|
878
1086
|
|
|
1087
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
1088
|
+
#else
|
|
1089
|
+
|
|
879
1090
|
- (UIView *)view
|
|
880
1091
|
{
|
|
881
|
-
return [RNSScreenStackHeaderConfig
|
|
1092
|
+
return [[RNSScreenStackHeaderConfig alloc] initWithBridge:self.bridge];
|
|
882
1093
|
}
|
|
883
1094
|
|
|
1095
|
+
- (RCTShadowView *)shadowView
|
|
1096
|
+
{
|
|
1097
|
+
return [RNSScreenStackHeaderConfigShadowView new];
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
#endif // RCT_NEW_ARCH_ENABLED
|
|
1101
|
+
|
|
884
1102
|
RCT_EXPORT_VIEW_PROPERTY(title, NSString)
|
|
885
1103
|
RCT_EXPORT_VIEW_PROPERTY(titleFontFamily, NSString)
|
|
886
1104
|
RCT_EXPORT_VIEW_PROPERTY(titleFontSize, NSNumber)
|
|
@@ -891,7 +1109,7 @@ RCT_EXPORT_VIEW_PROPERTY(backTitleFontFamily, NSString)
|
|
|
891
1109
|
RCT_EXPORT_VIEW_PROPERTY(backTitleFontSize, NSNumber)
|
|
892
1110
|
RCT_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor)
|
|
893
1111
|
RCT_EXPORT_VIEW_PROPERTY(backTitleVisible, BOOL)
|
|
894
|
-
RCT_EXPORT_VIEW_PROPERTY(blurEffect,
|
|
1112
|
+
RCT_EXPORT_VIEW_PROPERTY(blurEffect, RNSBlurEffectStyle)
|
|
895
1113
|
RCT_EXPORT_VIEW_PROPERTY(color, UIColor)
|
|
896
1114
|
RCT_EXPORT_VIEW_PROPERTY(direction, UISemanticContentAttribute)
|
|
897
1115
|
RCT_EXPORT_VIEW_PROPERTY(largeTitle, BOOL)
|
|
@@ -905,48 +1123,89 @@ RCT_EXPORT_VIEW_PROPERTY(hideBackButton, BOOL)
|
|
|
905
1123
|
RCT_EXPORT_VIEW_PROPERTY(hideShadow, BOOL)
|
|
906
1124
|
RCT_EXPORT_VIEW_PROPERTY(backButtonInCustomView, BOOL)
|
|
907
1125
|
RCT_EXPORT_VIEW_PROPERTY(disableBackButtonMenu, BOOL)
|
|
908
|
-
|
|
909
|
-
RCT_REMAP_VIEW_PROPERTY(hidden, hide, BOOL)
|
|
1126
|
+
RCT_EXPORT_VIEW_PROPERTY(backButtonDisplayMode, UINavigationItemBackButtonDisplayMode)
|
|
1127
|
+
RCT_REMAP_VIEW_PROPERTY(hidden, hide, BOOL) // `hidden` is an UIView property, we need to use different name internally
|
|
910
1128
|
RCT_EXPORT_VIEW_PROPERTY(translucent, BOOL)
|
|
911
1129
|
|
|
912
1130
|
@end
|
|
913
1131
|
|
|
1132
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
1133
|
+
#else
|
|
1134
|
+
|
|
1135
|
+
@implementation RNSHeaderConfigInsetsPayload
|
|
1136
|
+
|
|
1137
|
+
- (instancetype)init
|
|
1138
|
+
{
|
|
1139
|
+
return [self initWithInsets:NSDirectionalEdgeInsets{}];
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
- (instancetype)initWithInsets:(NSDirectionalEdgeInsets)insets
|
|
1143
|
+
{
|
|
1144
|
+
if (self = [super init]) {
|
|
1145
|
+
self.insets = insets;
|
|
1146
|
+
}
|
|
1147
|
+
return self;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
@end
|
|
1151
|
+
|
|
1152
|
+
@implementation RNSScreenStackHeaderConfigShadowView {
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
- (void)setLocalData:(NSObject *)localData
|
|
1156
|
+
{
|
|
1157
|
+
if ([localData isKindOfClass:RNSHeaderConfigInsetsPayload.class]) {
|
|
1158
|
+
RNSHeaderConfigInsetsPayload *payload = (RNSHeaderConfigInsetsPayload *)localData;
|
|
1159
|
+
[self setPaddingStart:YGValue{.value = (float)payload.insets.leading, .unit = YGUnitPoint}];
|
|
1160
|
+
[self setPaddingEnd:YGValue{.value = (float)payload.insets.trailing, .unit = YGUnitPoint}];
|
|
1161
|
+
|
|
1162
|
+
// Trigger layout prop recomputation
|
|
1163
|
+
[self didSetProps:@[]];
|
|
1164
|
+
} else {
|
|
1165
|
+
[super setLocalData:localData];
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
@end
|
|
1170
|
+
#endif
|
|
1171
|
+
|
|
914
1172
|
@implementation RCTConvert (RNSScreenStackHeader)
|
|
915
1173
|
|
|
916
1174
|
+ (NSMutableDictionary *)blurEffectsForIOSVersion
|
|
917
1175
|
{
|
|
918
1176
|
NSMutableDictionary *blurEffects = [NSMutableDictionary new];
|
|
919
1177
|
[blurEffects addEntriesFromDictionary:@{
|
|
920
|
-
@"
|
|
921
|
-
@"
|
|
922
|
-
@"
|
|
1178
|
+
@"none" : @(RNSBlurEffectStyleNone),
|
|
1179
|
+
@"extraLight" : @(RNSBlurEffectStyleExtraLight),
|
|
1180
|
+
@"light" : @(RNSBlurEffectStyleLight),
|
|
1181
|
+
@"dark" : @(RNSBlurEffectStyleDark),
|
|
923
1182
|
}];
|
|
924
1183
|
|
|
925
1184
|
if (@available(iOS 10.0, *)) {
|
|
926
1185
|
[blurEffects addEntriesFromDictionary:@{
|
|
927
|
-
@"regular" : @(
|
|
928
|
-
@"prominent" : @(
|
|
1186
|
+
@"regular" : @(RNSBlurEffectStyleRegular),
|
|
1187
|
+
@"prominent" : @(RNSBlurEffectStyleProminent),
|
|
929
1188
|
}];
|
|
930
1189
|
}
|
|
931
1190
|
#if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
|
932
1191
|
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
|
|
933
1192
|
if (@available(iOS 13.0, *)) {
|
|
934
1193
|
[blurEffects addEntriesFromDictionary:@{
|
|
935
|
-
@"systemUltraThinMaterial" : @(
|
|
936
|
-
@"systemThinMaterial" : @(
|
|
937
|
-
@"systemMaterial" : @(
|
|
938
|
-
@"systemThickMaterial" : @(
|
|
939
|
-
@"systemChromeMaterial" : @(
|
|
940
|
-
@"systemUltraThinMaterialLight" : @(
|
|
941
|
-
@"systemThinMaterialLight" : @(
|
|
942
|
-
@"systemMaterialLight" : @(
|
|
943
|
-
@"systemThickMaterialLight" : @(
|
|
944
|
-
@"systemChromeMaterialLight" : @(
|
|
945
|
-
@"systemUltraThinMaterialDark" : @(
|
|
946
|
-
@"systemThinMaterialDark" : @(
|
|
947
|
-
@"systemMaterialDark" : @(
|
|
948
|
-
@"systemThickMaterialDark" : @(
|
|
949
|
-
@"systemChromeMaterialDark" : @(
|
|
1194
|
+
@"systemUltraThinMaterial" : @(RNSBlurEffectStyleSystemUltraThinMaterial),
|
|
1195
|
+
@"systemThinMaterial" : @(RNSBlurEffectStyleSystemThinMaterial),
|
|
1196
|
+
@"systemMaterial" : @(RNSBlurEffectStyleSystemMaterial),
|
|
1197
|
+
@"systemThickMaterial" : @(RNSBlurEffectStyleSystemThickMaterial),
|
|
1198
|
+
@"systemChromeMaterial" : @(RNSBlurEffectStyleSystemChromeMaterial),
|
|
1199
|
+
@"systemUltraThinMaterialLight" : @(RNSBlurEffectStyleSystemUltraThinMaterialLight),
|
|
1200
|
+
@"systemThinMaterialLight" : @(RNSBlurEffectStyleSystemThinMaterialLight),
|
|
1201
|
+
@"systemMaterialLight" : @(RNSBlurEffectStyleSystemMaterialLight),
|
|
1202
|
+
@"systemThickMaterialLight" : @(RNSBlurEffectStyleSystemThickMaterialLight),
|
|
1203
|
+
@"systemChromeMaterialLight" : @(RNSBlurEffectStyleSystemChromeMaterialLight),
|
|
1204
|
+
@"systemUltraThinMaterialDark" : @(RNSBlurEffectStyleSystemUltraThinMaterialDark),
|
|
1205
|
+
@"systemThinMaterialDark" : @(RNSBlurEffectStyleSystemThinMaterialDark),
|
|
1206
|
+
@"systemMaterialDark" : @(RNSBlurEffectStyleSystemMaterialDark),
|
|
1207
|
+
@"systemThickMaterialDark" : @(RNSBlurEffectStyleSystemThickMaterialDark),
|
|
1208
|
+
@"systemChromeMaterialDark" : @(RNSBlurEffectStyleSystemChromeMaterialDark),
|
|
950
1209
|
}];
|
|
951
1210
|
}
|
|
952
1211
|
#endif
|
|
@@ -962,6 +1221,16 @@ RCT_ENUM_CONVERTER(
|
|
|
962
1221
|
UISemanticContentAttributeUnspecified,
|
|
963
1222
|
integerValue)
|
|
964
1223
|
|
|
965
|
-
RCT_ENUM_CONVERTER(
|
|
1224
|
+
RCT_ENUM_CONVERTER(
|
|
1225
|
+
UINavigationItemBackButtonDisplayMode,
|
|
1226
|
+
(@{
|
|
1227
|
+
@"default" : @(UINavigationItemBackButtonDisplayModeDefault),
|
|
1228
|
+
@"generic" : @(UINavigationItemBackButtonDisplayModeGeneric),
|
|
1229
|
+
@"minimal" : @(UINavigationItemBackButtonDisplayModeMinimal),
|
|
1230
|
+
}),
|
|
1231
|
+
UINavigationItemBackButtonDisplayModeDefault,
|
|
1232
|
+
integerValue)
|
|
1233
|
+
|
|
1234
|
+
RCT_ENUM_CONVERTER(RNSBlurEffectStyle, ([self blurEffectsForIOSVersion]), RNSBlurEffectStyleNone, integerValue)
|
|
966
1235
|
|
|
967
1236
|
@end
|