@amazon-devices/react-native-screens 2.0.9000000000 → 3.0.9000000000-rn-83
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/d557bc3ccca761f329c4a0be9f40c5edeceaeb72783a7971e6e3dcf80a6bedb0.bundle +45130 -0
- package/SystemBundles/d557bc3ccca761f329c4a0be9f40c5edeceaeb72783a7971e6e3dcf80a6bedb0.map +13686 -0
- package/SystemModules/amzn__react-native-screens-3.modules.txt +158 -0
- package/SystemModules/amzn__react-native-screens-3.private.modules.txt +376 -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 +2 -2
- package/lib/commonjs/TransitionProgressContext.js.map +1 -1
- package/lib/commonjs/components/DebugContainer.js +38 -0
- package/lib/commonjs/components/DebugContainer.js.map +1 -0
- package/lib/commonjs/components/DebugContainer.web.js +14 -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 +48 -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 +100 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.web.js +39 -0
- package/lib/commonjs/components/ScreenStackHeaderConfig.web.js.map +1 -0
- package/lib/commonjs/components/ScreenStackItem.js +106 -0
- package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
- package/lib/commonjs/components/SearchBar.js +67 -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 +16 -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 +17 -2
- 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 +3 -2
- 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 +6 -3
- 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 +5 -6
- 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 +200 -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 -95
- 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 +1 -1
- package/lib/commonjs/native-stack/index.js.map +1 -1
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +24 -24
- 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 +1 -2
- package/lib/commonjs/native-stack/utils/AnimatedHeaderHeightContext.js.map +1 -1
- package/lib/commonjs/native-stack/utils/HeaderHeightContext.js +1 -2
- package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
- package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js +1 -2
- 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 +2 -3
- package/lib/commonjs/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +5 -6
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useHeaderHeight.js +2 -3
- package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/views/FontProcessor.js +2 -4
- 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 +23 -15
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +124 -56
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js +1 -2
- package/lib/commonjs/reanimated/ReanimatedHeaderHeightContext.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +14 -21
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreen.js +4 -4
- package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +10 -18
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js +1 -2
- package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
- package/lib/commonjs/reanimated/index.js +1 -1
- package/lib/commonjs/reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js +4 -5
- package/lib/commonjs/reanimated/useReanimatedHeaderHeight.js.map +1 -1
- package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js +2 -3
- package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useTransitionProgress.js +2 -3
- 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 +41 -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 +91 -0
- package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -0
- package/lib/module/components/ScreenStackHeaderConfig.web.js +26 -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 +62 -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 +10 -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 +22 -21
- 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 +4 -5
- 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 +14 -6
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +118 -47
- 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 +9 -13
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreen.js +2 -3
- package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js +8 -16
- 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 +4 -3
- 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 +187 -37
- 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/oss-attribution/attribution.txt +77 -0
- package/oss-attribution/licenseInfos.json +27 -0
- package/package.json +196 -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 +47 -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 +127 -0
- package/src/components/ScreenStackHeaderConfig.web.tsx +45 -0
- package/src/components/ScreenStackItem.tsx +174 -0
- package/src/components/SearchBar.tsx +105 -0
- package/src/components/SearchBar.web.tsx +5 -0
- package/src/components/helpers/DelayedFreeze.tsx +27 -0
- package/src/components/helpers/usePrevious.tsx +12 -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 +3 -2
- 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 +22 -6
- package/src/native-stack/views/NativeStackView.tsx +141 -54
- 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 +213 -41
- 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/3d72c1ccdc1866604203e2067a94f7ab2c45408da644bb242aa980ffea58a74d.bundle +0 -33190
- package/SystemBundles/3d72c1ccdc1866604203e2067a94f7ab2c45408da644bb242aa980ffea58a74d.map +0 -10181
- package/SystemModules/amzn__react-native-screens.modules.txt +0 -101
- package/SystemModules/amzn__react-native-screens.private.modules.txt +0 -243
- 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
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Animated, View, Platform } from 'react-native';
|
|
5
|
+
|
|
6
|
+
import TransitionProgressContext from '../TransitionProgressContext';
|
|
7
|
+
import DelayedFreeze from './helpers/DelayedFreeze';
|
|
8
|
+
import { ScreenProps } from '../types';
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
freezeEnabled,
|
|
12
|
+
isNativePlatformSupported,
|
|
13
|
+
screensEnabled,
|
|
14
|
+
} from '../core';
|
|
15
|
+
|
|
16
|
+
// Native components
|
|
17
|
+
import ScreenNativeComponent, {
|
|
18
|
+
NativeProps as ScreenNativeComponentProps,
|
|
19
|
+
} from '../fabric/ScreenNativeComponent';
|
|
20
|
+
import ModalScreenNativeComponent, {
|
|
21
|
+
NativeProps as ModalScreenNativeComponentProps,
|
|
22
|
+
} from '../fabric/ModalScreenNativeComponent';
|
|
23
|
+
import { usePrevious } from './helpers/usePrevious';
|
|
24
|
+
|
|
25
|
+
type NativeProps = ScreenNativeComponentProps | ModalScreenNativeComponentProps;
|
|
26
|
+
const AnimatedNativeScreen = Animated.createAnimatedComponent(
|
|
27
|
+
ScreenNativeComponent,
|
|
28
|
+
);
|
|
29
|
+
const AnimatedNativeModalScreen = Animated.createAnimatedComponent(
|
|
30
|
+
ModalScreenNativeComponent,
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
// Incomplete type, all accessible properties available at:
|
|
34
|
+
// react-native/Libraries/Components/View/ReactNativeViewViewConfig.js
|
|
35
|
+
interface ViewConfig extends View {
|
|
36
|
+
viewConfig: {
|
|
37
|
+
validAttributes: {
|
|
38
|
+
style: {
|
|
39
|
+
display: boolean;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
_viewConfig: {
|
|
44
|
+
validAttributes: {
|
|
45
|
+
style: {
|
|
46
|
+
display: boolean;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// This value must be kept in sync with native side.
|
|
53
|
+
const SHEET_FIT_TO_CONTENTS = [-1];
|
|
54
|
+
const SHEET_COMPAT_LARGE = [1.0];
|
|
55
|
+
const SHEET_COMPAT_MEDIUM = [0.5];
|
|
56
|
+
const SHEET_COMPAT_ALL = [0.5, 1.0];
|
|
57
|
+
|
|
58
|
+
const SHEET_DIMMED_ALWAYS = -1;
|
|
59
|
+
// const SHEET_DIMMED_NEVER = 9999;
|
|
60
|
+
|
|
61
|
+
function assertDetentsArrayIsSorted(array: number[]) {
|
|
62
|
+
for (let i = 1; i < array.length; i++) {
|
|
63
|
+
if (array[i - 1] > array[i]) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
'[RNScreens] The detent array is not sorted in ascending order!',
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// These exist to transform old 'legacy' values used by the formsheet API to the new API shape.
|
|
72
|
+
// We can get rid of it, once we get rid of support for legacy values: 'large', 'medium', 'all'.
|
|
73
|
+
function resolveSheetAllowedDetents(
|
|
74
|
+
allowedDetentsCompat: ScreenProps['sheetAllowedDetents'],
|
|
75
|
+
): number[] {
|
|
76
|
+
if (Array.isArray(allowedDetentsCompat)) {
|
|
77
|
+
if (Platform.OS === 'android' && allowedDetentsCompat.length > 3) {
|
|
78
|
+
if (__DEV__) {
|
|
79
|
+
console.warn(
|
|
80
|
+
'[RNScreens] Sheets API on Android do accept only up to 3 values. Any surplus value are ignored.',
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
allowedDetentsCompat = allowedDetentsCompat.slice(0, 3);
|
|
84
|
+
}
|
|
85
|
+
if (__DEV__) {
|
|
86
|
+
assertDetentsArrayIsSorted(allowedDetentsCompat);
|
|
87
|
+
}
|
|
88
|
+
return allowedDetentsCompat;
|
|
89
|
+
} else if (allowedDetentsCompat === 'fitToContents') {
|
|
90
|
+
return SHEET_FIT_TO_CONTENTS;
|
|
91
|
+
} else if (allowedDetentsCompat === 'large') {
|
|
92
|
+
return SHEET_COMPAT_LARGE;
|
|
93
|
+
} else if (allowedDetentsCompat === 'medium') {
|
|
94
|
+
return SHEET_COMPAT_MEDIUM;
|
|
95
|
+
} else if (allowedDetentsCompat === 'all') {
|
|
96
|
+
return SHEET_COMPAT_ALL;
|
|
97
|
+
} else {
|
|
98
|
+
// Safe default, only large detent is allowed.
|
|
99
|
+
return [1.0];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function resolveSheetLargestUndimmedDetent(
|
|
104
|
+
lud: ScreenProps['sheetLargestUndimmedDetentIndex'],
|
|
105
|
+
lastDetentIndex: number,
|
|
106
|
+
): number {
|
|
107
|
+
if (typeof lud === 'number') {
|
|
108
|
+
if (!isIndexInClosedRange(lud, SHEET_DIMMED_ALWAYS, lastDetentIndex)) {
|
|
109
|
+
if (__DEV__) {
|
|
110
|
+
throw new Error(
|
|
111
|
+
"[RNScreens] Provided value of 'sheetLargestUndimmedDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.",
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
// Return default in production
|
|
115
|
+
return SHEET_DIMMED_ALWAYS;
|
|
116
|
+
}
|
|
117
|
+
return lud;
|
|
118
|
+
} else if (lud === 'last') {
|
|
119
|
+
return lastDetentIndex;
|
|
120
|
+
} else if (lud === 'none' || lud === 'all') {
|
|
121
|
+
return SHEET_DIMMED_ALWAYS;
|
|
122
|
+
} else if (lud === 'large') {
|
|
123
|
+
return 1;
|
|
124
|
+
} else if (lud === 'medium') {
|
|
125
|
+
return 0;
|
|
126
|
+
} else {
|
|
127
|
+
// Safe default, every detent is dimmed
|
|
128
|
+
return SHEET_DIMMED_ALWAYS;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function resolveSheetInitialDetentIndex(
|
|
133
|
+
index: ScreenProps['sheetInitialDetentIndex'],
|
|
134
|
+
lastDetentIndex: number,
|
|
135
|
+
): number {
|
|
136
|
+
if (index === 'last') {
|
|
137
|
+
index = lastDetentIndex;
|
|
138
|
+
} else if (index == null) {
|
|
139
|
+
// Intentional check for undefined & null ^
|
|
140
|
+
index = 0;
|
|
141
|
+
}
|
|
142
|
+
if (!isIndexInClosedRange(index, 0, lastDetentIndex)) {
|
|
143
|
+
if (__DEV__) {
|
|
144
|
+
throw new Error(
|
|
145
|
+
"[RNScreens] Provided value of 'sheetInitialDetentIndex' prop is out of bounds of 'sheetAllowedDetents' array.",
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
// Return default in production
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
return index;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function isIndexInClosedRange(
|
|
155
|
+
value: number,
|
|
156
|
+
lowerBound: number,
|
|
157
|
+
upperBound: number,
|
|
158
|
+
): boolean {
|
|
159
|
+
return Number.isInteger(value) && value >= lowerBound && value <= upperBound;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export const InnerScreen = React.forwardRef<View, ScreenProps>(
|
|
163
|
+
function InnerScreen(props, ref) {
|
|
164
|
+
const innerRef = React.useRef<ViewConfig | null>(null);
|
|
165
|
+
React.useImperativeHandle(ref, () => innerRef.current!, []);
|
|
166
|
+
const prevActivityState = usePrevious(props.activityState);
|
|
167
|
+
|
|
168
|
+
const setRef = (ref: ViewConfig) => {
|
|
169
|
+
innerRef.current = ref;
|
|
170
|
+
props.onComponentRef?.(ref);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const closing = React.useRef(new Animated.Value(0)).current;
|
|
174
|
+
const progress = React.useRef(new Animated.Value(0)).current;
|
|
175
|
+
const goingForward = React.useRef(new Animated.Value(0)).current;
|
|
176
|
+
|
|
177
|
+
const {
|
|
178
|
+
enabled = screensEnabled(),
|
|
179
|
+
freezeOnBlur = freezeEnabled(),
|
|
180
|
+
shouldFreeze,
|
|
181
|
+
...rest
|
|
182
|
+
} = props;
|
|
183
|
+
|
|
184
|
+
// To maintain default behavior of formSheet stack presentation style and to have reasonable
|
|
185
|
+
// defaults for new medium-detent iOS API we need to set defaults here
|
|
186
|
+
const {
|
|
187
|
+
// formSheet presentation related props
|
|
188
|
+
sheetAllowedDetents = [1.0],
|
|
189
|
+
sheetLargestUndimmedDetentIndex = SHEET_DIMMED_ALWAYS,
|
|
190
|
+
sheetGrabberVisible = false,
|
|
191
|
+
sheetCornerRadius = -1.0,
|
|
192
|
+
sheetExpandsWhenScrolledToEdge = true,
|
|
193
|
+
sheetElevation = 24,
|
|
194
|
+
sheetInitialDetentIndex = 0,
|
|
195
|
+
// Other
|
|
196
|
+
stackPresentation,
|
|
197
|
+
// Events for override
|
|
198
|
+
onAppear,
|
|
199
|
+
onDisappear,
|
|
200
|
+
onWillAppear,
|
|
201
|
+
onWillDisappear,
|
|
202
|
+
} = rest;
|
|
203
|
+
|
|
204
|
+
if (enabled && isNativePlatformSupported) {
|
|
205
|
+
const resolvedSheetAllowedDetents =
|
|
206
|
+
resolveSheetAllowedDetents(sheetAllowedDetents);
|
|
207
|
+
const resolvedSheetLargestUndimmedDetent =
|
|
208
|
+
resolveSheetLargestUndimmedDetent(
|
|
209
|
+
sheetLargestUndimmedDetentIndex,
|
|
210
|
+
resolvedSheetAllowedDetents.length - 1,
|
|
211
|
+
);
|
|
212
|
+
const resolvedSheetInitialDetentIndex = resolveSheetInitialDetentIndex(
|
|
213
|
+
sheetInitialDetentIndex,
|
|
214
|
+
resolvedSheetAllowedDetents.length - 1,
|
|
215
|
+
);
|
|
216
|
+
// Due to how Yoga resolves layout, we need to have different components for modal nad non-modal screens
|
|
217
|
+
const AnimatedScreen =
|
|
218
|
+
Platform.OS === 'android' ||
|
|
219
|
+
// amznmod_react - disable NativeModalScreen on kepler because native component is not implemented yet
|
|
220
|
+
// @ts-ignore
|
|
221
|
+
Platform.OS === 'kepler' ||
|
|
222
|
+
stackPresentation === undefined ||
|
|
223
|
+
stackPresentation === 'push' ||
|
|
224
|
+
stackPresentation === 'containedModal' ||
|
|
225
|
+
stackPresentation === 'containedTransparentModal'
|
|
226
|
+
? AnimatedNativeScreen
|
|
227
|
+
: AnimatedNativeModalScreen;
|
|
228
|
+
|
|
229
|
+
let {
|
|
230
|
+
// Filter out active prop in this case because it is unused and
|
|
231
|
+
// can cause problems depending on react-native version:
|
|
232
|
+
// https://github.com/react-navigation/react-navigation/issues/4886
|
|
233
|
+
active,
|
|
234
|
+
activityState,
|
|
235
|
+
children,
|
|
236
|
+
isNativeStack,
|
|
237
|
+
gestureResponseDistance,
|
|
238
|
+
onGestureCancel,
|
|
239
|
+
style,
|
|
240
|
+
...props
|
|
241
|
+
} = rest;
|
|
242
|
+
|
|
243
|
+
if (active !== undefined && activityState === undefined) {
|
|
244
|
+
console.warn(
|
|
245
|
+
'It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens',
|
|
246
|
+
);
|
|
247
|
+
activityState = active !== 0 ? 2 : 0; // in the new version, we need one of the screens to have value of 2 after the transition
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
if (
|
|
251
|
+
isNativeStack &&
|
|
252
|
+
prevActivityState !== undefined &&
|
|
253
|
+
activityState !== undefined
|
|
254
|
+
) {
|
|
255
|
+
if (prevActivityState > activityState) {
|
|
256
|
+
throw new Error(
|
|
257
|
+
'[RNScreens] activityState cannot be decreased in NativeStack',
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
const handleRef = (ref: ViewConfig) => {
|
|
263
|
+
if (ref?.viewConfig?.validAttributes?.style) {
|
|
264
|
+
ref.viewConfig.validAttributes.style = {
|
|
265
|
+
...ref.viewConfig.validAttributes.style,
|
|
266
|
+
display: false,
|
|
267
|
+
};
|
|
268
|
+
setRef(ref);
|
|
269
|
+
} else if (ref?._viewConfig?.validAttributes?.style) {
|
|
270
|
+
ref._viewConfig.validAttributes.style = {
|
|
271
|
+
...ref._viewConfig.validAttributes.style,
|
|
272
|
+
display: false,
|
|
273
|
+
};
|
|
274
|
+
setRef(ref);
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const freeze =
|
|
279
|
+
freezeOnBlur &&
|
|
280
|
+
(shouldFreeze !== undefined ? shouldFreeze : activityState === 0);
|
|
281
|
+
|
|
282
|
+
return (
|
|
283
|
+
<DelayedFreeze freeze={freeze}>
|
|
284
|
+
<AnimatedScreen
|
|
285
|
+
{...props}
|
|
286
|
+
/**
|
|
287
|
+
* This messy override is to conform NativeProps used by codegen and
|
|
288
|
+
* our Public API. To see reasoning go to this PR:
|
|
289
|
+
* https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
|
|
290
|
+
*/
|
|
291
|
+
onAppear={onAppear as NativeProps['onAppear']}
|
|
292
|
+
onDisappear={onDisappear as NativeProps['onDisappear']}
|
|
293
|
+
onWillAppear={onWillAppear as NativeProps['onWillAppear']}
|
|
294
|
+
onWillDisappear={onWillDisappear as NativeProps['onWillDisappear']}
|
|
295
|
+
onGestureCancel={
|
|
296
|
+
(onGestureCancel as NativeProps['onGestureCancel']) ??
|
|
297
|
+
(() => {
|
|
298
|
+
// for internal use
|
|
299
|
+
})
|
|
300
|
+
}
|
|
301
|
+
//
|
|
302
|
+
// Hierarchy of screens is handled on the native side and setting zIndex value causes this issue:
|
|
303
|
+
// https://github.com/software-mansion/react-native-screens/issues/2345
|
|
304
|
+
// With below change of zIndex, we force RN diffing mechanism to NOT include detaching and attaching mutation in one transaction.
|
|
305
|
+
// Detailed information can be found here https://github.com/software-mansion/react-native-screens/pull/2351
|
|
306
|
+
style={[style, { zIndex: undefined }]}
|
|
307
|
+
activityState={activityState}
|
|
308
|
+
sheetAllowedDetents={resolvedSheetAllowedDetents}
|
|
309
|
+
sheetLargestUndimmedDetent={resolvedSheetLargestUndimmedDetent}
|
|
310
|
+
sheetElevation={sheetElevation}
|
|
311
|
+
sheetGrabberVisible={sheetGrabberVisible}
|
|
312
|
+
sheetCornerRadius={sheetCornerRadius}
|
|
313
|
+
sheetExpandsWhenScrolledToEdge={sheetExpandsWhenScrolledToEdge}
|
|
314
|
+
sheetInitialDetent={resolvedSheetInitialDetentIndex}
|
|
315
|
+
gestureResponseDistance={{
|
|
316
|
+
start: gestureResponseDistance?.start ?? -1,
|
|
317
|
+
end: gestureResponseDistance?.end ?? -1,
|
|
318
|
+
top: gestureResponseDistance?.top ?? -1,
|
|
319
|
+
bottom: gestureResponseDistance?.bottom ?? -1,
|
|
320
|
+
}}
|
|
321
|
+
// This prevents showing blank screen when navigating between multiple screens with freezing
|
|
322
|
+
// https://github.com/software-mansion/react-native-screens/pull/1208
|
|
323
|
+
ref={handleRef}
|
|
324
|
+
onTransitionProgress={
|
|
325
|
+
!isNativeStack
|
|
326
|
+
? undefined
|
|
327
|
+
: Animated.event(
|
|
328
|
+
[
|
|
329
|
+
{
|
|
330
|
+
nativeEvent: {
|
|
331
|
+
progress,
|
|
332
|
+
closing,
|
|
333
|
+
goingForward,
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
],
|
|
337
|
+
{ useNativeDriver: true },
|
|
338
|
+
)
|
|
339
|
+
}>
|
|
340
|
+
{!isNativeStack ? ( // see comment of this prop in types.tsx for information why it is needed
|
|
341
|
+
children
|
|
342
|
+
) : (
|
|
343
|
+
<TransitionProgressContext.Provider
|
|
344
|
+
value={{
|
|
345
|
+
progress,
|
|
346
|
+
closing,
|
|
347
|
+
goingForward,
|
|
348
|
+
}}>
|
|
349
|
+
{children}
|
|
350
|
+
</TransitionProgressContext.Provider>
|
|
351
|
+
)}
|
|
352
|
+
</AnimatedScreen>
|
|
353
|
+
</DelayedFreeze>
|
|
354
|
+
);
|
|
355
|
+
} else {
|
|
356
|
+
// same reason as above
|
|
357
|
+
let {
|
|
358
|
+
active,
|
|
359
|
+
activityState,
|
|
360
|
+
style,
|
|
361
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
362
|
+
onComponentRef,
|
|
363
|
+
...props
|
|
364
|
+
} = rest;
|
|
365
|
+
|
|
366
|
+
if (active !== undefined && activityState === undefined) {
|
|
367
|
+
activityState = active !== 0 ? 2 : 0;
|
|
368
|
+
}
|
|
369
|
+
return (
|
|
370
|
+
<Animated.View
|
|
371
|
+
style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}
|
|
372
|
+
ref={setRef}
|
|
373
|
+
{...props}
|
|
374
|
+
/>
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
// context to be used when the user wants to use enhanced implementation
|
|
381
|
+
// e.g. to use `useReanimatedTransitionProgress` (see `reanimated` folder in repo)
|
|
382
|
+
export const ScreenContext = React.createContext(InnerScreen);
|
|
383
|
+
|
|
384
|
+
const Screen = React.forwardRef<View, ScreenProps>((props, ref) => {
|
|
385
|
+
const ScreenWrapper = React.useContext(ScreenContext) || InnerScreen;
|
|
386
|
+
|
|
387
|
+
return <ScreenWrapper {...props} ref={ref} />;
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
Screen.displayName = 'Screen';
|
|
391
|
+
|
|
392
|
+
export default Screen;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { ScreenProps } from '../types';
|
|
4
|
+
import { Animated, View } from 'react-native';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
import { screensEnabled } from '../core';
|
|
8
|
+
|
|
9
|
+
export const InnerScreen = View;
|
|
10
|
+
|
|
11
|
+
// We're using class component here because of the error from reanimated:
|
|
12
|
+
// createAnimatedComponent` does not support stateless functional components; use a class component instead.
|
|
13
|
+
// NOTE: React Server Components do not support class components.
|
|
14
|
+
export class NativeScreen extends React.Component<ScreenProps> {
|
|
15
|
+
// amznmod_react - add support for react 19
|
|
16
|
+
render(): React.JSX.Element {
|
|
17
|
+
let {
|
|
18
|
+
active,
|
|
19
|
+
activityState,
|
|
20
|
+
style,
|
|
21
|
+
enabled = screensEnabled(),
|
|
22
|
+
...rest
|
|
23
|
+
} = this.props;
|
|
24
|
+
|
|
25
|
+
if (enabled) {
|
|
26
|
+
if (active !== undefined && activityState === undefined) {
|
|
27
|
+
activityState = active !== 0 ? 2 : 0; // change taken from index.native.tsx
|
|
28
|
+
}
|
|
29
|
+
return (
|
|
30
|
+
<View
|
|
31
|
+
// @ts-expect-error: hidden exists on web, but not in React Native
|
|
32
|
+
hidden={activityState === 0}
|
|
33
|
+
style={[style, { display: activityState !== 0 ? 'flex' : 'none' }]}
|
|
34
|
+
{...rest}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return <View {...rest} />;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const Screen = Animated.createAnimatedComponent(NativeScreen);
|
|
44
|
+
|
|
45
|
+
export const ScreenContext = React.createContext(Screen);
|
|
46
|
+
|
|
47
|
+
export default Screen;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { Platform, View } from 'react-native';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { ScreenContainerProps } from '../types';
|
|
6
|
+
import { isNativePlatformSupported, screensEnabled } from '../core';
|
|
7
|
+
|
|
8
|
+
// Native components
|
|
9
|
+
import ScreenContainerNativeComponent from '../fabric/ScreenContainerNativeComponent';
|
|
10
|
+
import ScreenNavigationContainerNativeComponent from '../fabric/ScreenNavigationContainerNativeComponent';
|
|
11
|
+
|
|
12
|
+
function ScreenContainer(props: ScreenContainerProps) {
|
|
13
|
+
const { enabled = screensEnabled(), hasTwoStates, ...rest } = props;
|
|
14
|
+
|
|
15
|
+
if (enabled && isNativePlatformSupported) {
|
|
16
|
+
if (hasTwoStates) {
|
|
17
|
+
const ScreenNavigationContainer =
|
|
18
|
+
Platform.OS === 'ios'
|
|
19
|
+
? ScreenNavigationContainerNativeComponent
|
|
20
|
+
: ScreenContainerNativeComponent;
|
|
21
|
+
return <ScreenNavigationContainer {...rest} />;
|
|
22
|
+
}
|
|
23
|
+
return <ScreenContainerNativeComponent {...rest} />;
|
|
24
|
+
}
|
|
25
|
+
return <View {...rest} />;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default ScreenContainer;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewProps } from 'react-native';
|
|
3
|
+
import ScreenContentWrapperNativeComponent from '../fabric/ScreenContentWrapperNativeComponent';
|
|
4
|
+
|
|
5
|
+
function ScreenContentWrapper(props: ViewProps) {
|
|
6
|
+
return <ScreenContentWrapperNativeComponent collapsable={false} {...props} />;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export default ScreenContentWrapper;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewProps } from 'react-native';
|
|
3
|
+
import ScreenFooterNativeComponent from '../fabric/ScreenFooterNativeComponent';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Unstable API
|
|
7
|
+
*/
|
|
8
|
+
function ScreenFooter(props: ViewProps) {
|
|
9
|
+
return <ScreenFooterNativeComponent {...props} />;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type FooterProps = {
|
|
13
|
+
children?: React.ReactNode;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export function FooterComponent({ children }: FooterProps) {
|
|
17
|
+
return <ScreenFooter collapsable={false}>{children}</ScreenFooter>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default ScreenFooter;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React, { PropsWithChildren } from 'react';
|
|
4
|
+
import {
|
|
5
|
+
GestureDetectorBridge,
|
|
6
|
+
ScreensRefsHolder,
|
|
7
|
+
GestureProviderProps,
|
|
8
|
+
GoBackGesture,
|
|
9
|
+
ScreenStackProps,
|
|
10
|
+
} from '../types';
|
|
11
|
+
import { GHContext, RNSScreensRefContext } from '../contexts';
|
|
12
|
+
import warnOnce from 'warn-once';
|
|
13
|
+
|
|
14
|
+
// Native components
|
|
15
|
+
import ScreenStackNativeComponent, {
|
|
16
|
+
NativeProps,
|
|
17
|
+
} from '../fabric/ScreenStackNativeComponent';
|
|
18
|
+
|
|
19
|
+
const assertGHProvider = (
|
|
20
|
+
ScreenGestureDetector: (
|
|
21
|
+
props: PropsWithChildren<GestureProviderProps>,
|
|
22
|
+
) => React.JSX.Element,
|
|
23
|
+
goBackGesture: GoBackGesture | undefined,
|
|
24
|
+
) => {
|
|
25
|
+
const isGestureDetectorProviderNotDetected =
|
|
26
|
+
ScreenGestureDetector.name !== 'GHWrapper' && goBackGesture !== undefined;
|
|
27
|
+
|
|
28
|
+
warnOnce(
|
|
29
|
+
isGestureDetectorProviderNotDetected,
|
|
30
|
+
'Cannot detect GestureDetectorProvider in a screen that uses `goBackGesture`. Make sure your navigator is wrapped in GestureDetectorProvider.',
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const assertCustomScreenTransitionsProps = (
|
|
35
|
+
screensRefs: ScreenStackProps['screensRefs'],
|
|
36
|
+
currentScreenId: ScreenStackProps['currentScreenId'],
|
|
37
|
+
goBackGesture: ScreenStackProps['goBackGesture'],
|
|
38
|
+
) => {
|
|
39
|
+
const isGestureDetectorNotConfiguredProperly =
|
|
40
|
+
goBackGesture !== undefined &&
|
|
41
|
+
screensRefs === null &&
|
|
42
|
+
currentScreenId === undefined;
|
|
43
|
+
|
|
44
|
+
warnOnce(
|
|
45
|
+
isGestureDetectorNotConfiguredProperly,
|
|
46
|
+
'Custom Screen Transition require screensRefs and currentScreenId to be provided.',
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
function ScreenStack(props: ScreenStackProps) {
|
|
51
|
+
const {
|
|
52
|
+
goBackGesture,
|
|
53
|
+
screensRefs: passedScreenRefs, // TODO: For compatibility with v5, remove once v5 is removed
|
|
54
|
+
currentScreenId,
|
|
55
|
+
transitionAnimation,
|
|
56
|
+
screenEdgeGesture,
|
|
57
|
+
onFinishTransitioning,
|
|
58
|
+
children,
|
|
59
|
+
...rest
|
|
60
|
+
} = props;
|
|
61
|
+
|
|
62
|
+
const screensRefs = React.useRef<ScreensRefsHolder>(
|
|
63
|
+
passedScreenRefs?.current ?? {},
|
|
64
|
+
);
|
|
65
|
+
const ref = React.useRef(null);
|
|
66
|
+
const ScreenGestureDetector = React.useContext(GHContext);
|
|
67
|
+
const gestureDetectorBridge = React.useRef<GestureDetectorBridge>({
|
|
68
|
+
stackUseEffectCallback: _stackRef => {
|
|
69
|
+
// this method will be overriden in GestureDetector
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
gestureDetectorBridge.current.stackUseEffectCallback(ref);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
assertGHProvider(ScreenGestureDetector, goBackGesture);
|
|
78
|
+
|
|
79
|
+
assertCustomScreenTransitionsProps(
|
|
80
|
+
screensRefs,
|
|
81
|
+
currentScreenId,
|
|
82
|
+
goBackGesture,
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<RNSScreensRefContext.Provider value={screensRefs}>
|
|
87
|
+
<ScreenGestureDetector
|
|
88
|
+
gestureDetectorBridge={gestureDetectorBridge}
|
|
89
|
+
goBackGesture={goBackGesture}
|
|
90
|
+
transitionAnimation={transitionAnimation}
|
|
91
|
+
screenEdgeGesture={screenEdgeGesture ?? false}
|
|
92
|
+
screensRefs={screensRefs}
|
|
93
|
+
currentScreenId={currentScreenId}>
|
|
94
|
+
<ScreenStackNativeComponent
|
|
95
|
+
{...rest}
|
|
96
|
+
/**
|
|
97
|
+
* This messy override is to conform NativeProps used by codegen and
|
|
98
|
+
* our Public API. To see reasoning go to this PR:
|
|
99
|
+
* https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
|
|
100
|
+
*/
|
|
101
|
+
onFinishTransitioning={
|
|
102
|
+
onFinishTransitioning as NativeProps['onFinishTransitioning']
|
|
103
|
+
}
|
|
104
|
+
ref={ref}>
|
|
105
|
+
{children}
|
|
106
|
+
</ScreenStackNativeComponent>
|
|
107
|
+
</ScreenGestureDetector>
|
|
108
|
+
</RNSScreensRefContext.Provider>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export default ScreenStack;
|