@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
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.9.0)
|
|
2
|
+
|
|
3
|
+
project(rnscreens)
|
|
4
|
+
|
|
5
|
+
if(${RNS_NEW_ARCH_ENABLED})
|
|
6
|
+
add_library(rnscreens
|
|
7
|
+
SHARED
|
|
8
|
+
../cpp/RNScreensTurboModule.cpp
|
|
9
|
+
../cpp/RNSScreenRemovalListener.cpp
|
|
10
|
+
./src/main/cpp/jni-adapter.cpp
|
|
11
|
+
./src/main/cpp/NativeProxy.cpp
|
|
12
|
+
./src/main/cpp/OnLoad.cpp
|
|
13
|
+
)
|
|
14
|
+
else()
|
|
15
|
+
add_library(rnscreens
|
|
16
|
+
SHARED
|
|
17
|
+
../cpp/RNScreensTurboModule.cpp
|
|
18
|
+
./src/main/cpp/jni-adapter.cpp
|
|
19
|
+
)
|
|
20
|
+
endif()
|
|
21
|
+
|
|
22
|
+
include_directories(
|
|
23
|
+
../cpp
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
set_target_properties(rnscreens PROPERTIES
|
|
27
|
+
CXX_STANDARD 20
|
|
28
|
+
CXX_STANDARD_REQUIRED ON
|
|
29
|
+
CXX_EXTENSIONS OFF
|
|
30
|
+
POSITION_INDEPENDENT_CODE ON
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
target_compile_definitions(
|
|
34
|
+
rnscreens
|
|
35
|
+
PRIVATE
|
|
36
|
+
-DFOLLY_NO_CONFIG=1
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
find_package(ReactAndroid REQUIRED CONFIG)
|
|
40
|
+
|
|
41
|
+
if(${RNS_NEW_ARCH_ENABLED})
|
|
42
|
+
find_package(fbjni REQUIRED CONFIG)
|
|
43
|
+
|
|
44
|
+
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
|
|
45
|
+
target_link_libraries(rnscreens
|
|
46
|
+
ReactAndroid::reactnative
|
|
47
|
+
ReactAndroid::jsi
|
|
48
|
+
fbjni::fbjni
|
|
49
|
+
android
|
|
50
|
+
)
|
|
51
|
+
else()
|
|
52
|
+
target_link_libraries(
|
|
53
|
+
rnscreens
|
|
54
|
+
ReactAndroid::jsi
|
|
55
|
+
ReactAndroid::react_nativemodule_core
|
|
56
|
+
ReactAndroid::react_utils
|
|
57
|
+
ReactAndroid::reactnativejni
|
|
58
|
+
ReactAndroid::fabricjni
|
|
59
|
+
ReactAndroid::react_debug
|
|
60
|
+
ReactAndroid::react_render_core
|
|
61
|
+
ReactAndroid::runtimeexecutor
|
|
62
|
+
ReactAndroid::react_render_graphics
|
|
63
|
+
ReactAndroid::rrc_view
|
|
64
|
+
ReactAndroid::yoga
|
|
65
|
+
ReactAndroid::rrc_text
|
|
66
|
+
ReactAndroid::glog
|
|
67
|
+
ReactAndroid::react_render_componentregistry
|
|
68
|
+
ReactAndroid::react_render_consistency
|
|
69
|
+
ReactAndroid::react_performance_timeline
|
|
70
|
+
ReactAndroid::react_render_observers_events
|
|
71
|
+
fbjni::fbjni
|
|
72
|
+
android
|
|
73
|
+
)
|
|
74
|
+
endif()
|
|
75
|
+
else()
|
|
76
|
+
target_link_libraries(rnscreens
|
|
77
|
+
ReactAndroid::jsi
|
|
78
|
+
android
|
|
79
|
+
)
|
|
80
|
+
endif()
|
package/android/build.gradle
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import com.android.Version
|
|
2
|
+
import groovy.json.JsonSlurper
|
|
2
3
|
|
|
3
4
|
buildscript {
|
|
4
5
|
ext {
|
|
@@ -8,7 +9,11 @@ buildscript {
|
|
|
8
9
|
rnsDefaultKotlinVersion = '1.8.0'
|
|
9
10
|
}
|
|
10
11
|
ext.safeExtGet = {prop, fallback ->
|
|
11
|
-
|
|
12
|
+
def props = (prop instanceof String) ? [prop] : prop
|
|
13
|
+
def result = props.find { key ->
|
|
14
|
+
return rootProject.ext.has(key)
|
|
15
|
+
}
|
|
16
|
+
return result ? rootProject.ext.get(result) : fallback
|
|
12
17
|
}
|
|
13
18
|
repositories {
|
|
14
19
|
google()
|
|
@@ -17,10 +22,14 @@ buildscript {
|
|
|
17
22
|
dependencies {
|
|
18
23
|
classpath('com.android.tools.build:gradle:4.2.2')
|
|
19
24
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${safeExtGet('kotlinVersion', rnsDefaultKotlinVersion)}"
|
|
20
|
-
classpath "com.diffplug.spotless:spotless-plugin-gradle:6.
|
|
25
|
+
classpath "com.diffplug.spotless:spotless-plugin-gradle:6.25.0"
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
|
|
29
|
+
def isRunningInContextOfScreensRepo() {
|
|
30
|
+
return project == rootProject
|
|
31
|
+
}
|
|
32
|
+
|
|
24
33
|
def isNewArchitectureEnabled() {
|
|
25
34
|
// To opt-in for the New Architecture, you can either:
|
|
26
35
|
// - Set `newArchEnabled` to true inside the `gradle.properties` file
|
|
@@ -29,8 +38,44 @@ def isNewArchitectureEnabled() {
|
|
|
29
38
|
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
|
30
39
|
}
|
|
31
40
|
|
|
41
|
+
def resolveReactNativeDirectory() {
|
|
42
|
+
def userDefinedRnDirPath = safeAppExtGet("REACT_NATIVE_NODE_MODULES_DIR", null)
|
|
43
|
+
if (userDefinedRnDirPath != null) {
|
|
44
|
+
return file(userDefinedRnDirPath)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
File standardRnDirFile = file("$rootDir/../node_modules/react-native/")
|
|
48
|
+
if (standardRnDirFile.exists()) {
|
|
49
|
+
return standardRnDirFile
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// This is legacy code, I'm not sure why it works in certain scenarios but it was reported that one of our
|
|
53
|
+
// projects needs this.
|
|
54
|
+
File legacyRnDirFile = file("$projectDir/../node_modules/react-native/")
|
|
55
|
+
if (legacyRnDirFile.exists()) {
|
|
56
|
+
return legacyRnDirFile
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// We're in non standard setup, e.g. monorepo - try to use node resolver to locate the react-native package.
|
|
60
|
+
String maybeRnPackagePath = ["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()
|
|
61
|
+
|
|
62
|
+
File nodeResolverRnDirFile = null
|
|
63
|
+
// file() constructor fails in case string is null or blank
|
|
64
|
+
if (maybeRnPackagePath != null && !maybeRnPackagePath.isBlank()) {
|
|
65
|
+
File maybeRnPackageFile = file(maybeRnPackagePath)
|
|
66
|
+
if (maybeRnPackageFile.exists()) {
|
|
67
|
+
nodeResolverRnDirFile = maybeRnPackageFile.parentFile
|
|
68
|
+
return nodeResolverRnDirFile
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
throw new Exception("[RNScreens] Failed to resolve react-native directory. " +
|
|
73
|
+
"Attempted locations: ${standardRnDirFile}, ${legacyRnDirFile} and ${nodeResolverRnDirFile}. " +
|
|
74
|
+
"You should set project extension property (in `app/build.gradle`) `REACT_NATIVE_NODE_MODULES_DIR` with path to react-native.")
|
|
75
|
+
}
|
|
76
|
+
|
|
32
77
|
// spotless is only accessible within react-native-screens repo
|
|
33
|
-
if (
|
|
78
|
+
if (isRunningInContextOfScreensRepo()) {
|
|
34
79
|
apply from: 'spotless.gradle'
|
|
35
80
|
}
|
|
36
81
|
|
|
@@ -45,11 +90,21 @@ def reactNativeArchitectures() {
|
|
|
45
90
|
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
|
46
91
|
}
|
|
47
92
|
|
|
93
|
+
def safeAppExtGet(prop, fallback) {
|
|
94
|
+
def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
|
|
95
|
+
appProject?.ext?.has(prop) ? appProject.ext.get(prop) : fallback
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
def IS_NEW_ARCHITECTURE_ENABLED = isNewArchitectureEnabled()
|
|
99
|
+
|
|
48
100
|
android {
|
|
49
101
|
compileSdkVersion safeExtGet('compileSdkVersion', rnsDefaultCompileSdkVersion)
|
|
50
102
|
def agpVersion = Version.ANDROID_GRADLE_PLUGIN_VERSION
|
|
51
103
|
if (agpVersion.tokenize('.')[0].toInteger() >= 7) {
|
|
52
104
|
namespace "com.swmansion.rnscreens"
|
|
105
|
+
buildFeatures {
|
|
106
|
+
buildConfig true
|
|
107
|
+
}
|
|
53
108
|
}
|
|
54
109
|
|
|
55
110
|
// Used to override the NDK path/version on internal CI or by allowing
|
|
@@ -62,14 +117,28 @@ android {
|
|
|
62
117
|
}
|
|
63
118
|
|
|
64
119
|
defaultConfig {
|
|
65
|
-
minSdkVersion safeExtGet('minSdkVersion', rnsDefaultMinSdkVersion)
|
|
66
|
-
targetSdkVersion safeExtGet('targetSdkVersion', rnsDefaultTargetSdkVersion)
|
|
120
|
+
minSdkVersion safeExtGet(['minSdkVersion', 'minSdk'], rnsDefaultMinSdkVersion)
|
|
121
|
+
targetSdkVersion safeExtGet(['targetSdkVersion', 'targetSdk'], rnsDefaultTargetSdkVersion)
|
|
67
122
|
versionCode 1
|
|
68
123
|
versionName "1.0"
|
|
69
|
-
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED",
|
|
124
|
+
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", IS_NEW_ARCHITECTURE_ENABLED.toString()
|
|
70
125
|
ndk {
|
|
71
126
|
abiFilters (*reactNativeArchitectures())
|
|
72
127
|
}
|
|
128
|
+
externalNativeBuild {
|
|
129
|
+
cmake {
|
|
130
|
+
arguments "-DANDROID_STL=c++_shared",
|
|
131
|
+
"-DRNS_NEW_ARCH_ENABLED=${IS_NEW_ARCHITECTURE_ENABLED}"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
buildFeatures {
|
|
136
|
+
prefab true
|
|
137
|
+
}
|
|
138
|
+
externalNativeBuild {
|
|
139
|
+
cmake {
|
|
140
|
+
path "CMakeLists.txt"
|
|
141
|
+
}
|
|
73
142
|
}
|
|
74
143
|
lintOptions {
|
|
75
144
|
abortOnError false
|
|
@@ -83,25 +152,31 @@ android {
|
|
|
83
152
|
// while there are more libraries copied in intermediates folder of the lib build directory, we exclude
|
|
84
153
|
// only the ones that make the build fail (ideally we should only include librnscreens_modules but we
|
|
85
154
|
// are only allowed to specify exclude patterns)
|
|
86
|
-
|
|
155
|
+
excludes = [
|
|
156
|
+
"META-INF",
|
|
157
|
+
"META-INF/**",
|
|
158
|
+
"**/libjsi.so",
|
|
159
|
+
"**/libc++_shared.so",
|
|
160
|
+
"**/libreact_render*.so",
|
|
161
|
+
"**/libreactnativejni.so",
|
|
162
|
+
"**/libreact_performance_timeline.so"
|
|
163
|
+
]
|
|
87
164
|
}
|
|
88
165
|
sourceSets.main {
|
|
89
166
|
ext.androidResDir = "src/main/res"
|
|
90
167
|
java {
|
|
91
|
-
if (
|
|
168
|
+
if (IS_NEW_ARCHITECTURE_ENABLED) {
|
|
92
169
|
srcDirs += [
|
|
93
170
|
"src/fabric/java",
|
|
94
171
|
]
|
|
95
172
|
} else {
|
|
96
173
|
srcDirs += [
|
|
97
174
|
"src/paper/java",
|
|
98
|
-
"build/generated/source/codegen/java"
|
|
99
175
|
]
|
|
100
176
|
}
|
|
101
|
-
|
|
102
177
|
}
|
|
103
178
|
res {
|
|
104
|
-
if (safeExtGet('compileSdkVersion', rnsDefaultCompileSdkVersion) >= 33) {
|
|
179
|
+
if (safeExtGet(['compileSdkVersion', 'compileSdk'], rnsDefaultCompileSdkVersion) >= 33) {
|
|
105
180
|
srcDirs = ["${androidResDir}/base", "${androidResDir}/v33"]
|
|
106
181
|
} else {
|
|
107
182
|
srcDirs = ["${androidResDir}/base"]
|
|
@@ -112,11 +187,9 @@ android {
|
|
|
112
187
|
|
|
113
188
|
repositories {
|
|
114
189
|
maven {
|
|
115
|
-
|
|
116
|
-
// Matches the RN Hello World template
|
|
117
|
-
// https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/local-cli/templates/HelloWorld/android/build.gradle#L21
|
|
118
|
-
url "$projectDir/../node_modules/react-native/android"
|
|
190
|
+
url "${resolveReactNativeDirectory()}/android"
|
|
119
191
|
}
|
|
192
|
+
|
|
120
193
|
mavenCentral()
|
|
121
194
|
mavenLocal()
|
|
122
195
|
google()
|
|
@@ -128,6 +201,12 @@ dependencies {
|
|
|
128
201
|
implementation 'androidx.fragment:fragment-ktx:1.6.1'
|
|
129
202
|
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
|
|
130
203
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
|
131
|
-
implementation 'com.google.android.material:material:1.
|
|
132
|
-
implementation "androidx.core:core-ktx:1.
|
|
204
|
+
implementation 'com.google.android.material:material:1.6.1'
|
|
205
|
+
implementation "androidx.core:core-ktx:1.8.0"
|
|
206
|
+
|
|
207
|
+
constraints {
|
|
208
|
+
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1") {
|
|
209
|
+
because("on older React Native versions this dependency conflicts with react-native-screens")
|
|
210
|
+
}
|
|
211
|
+
}
|
|
133
212
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
package com.swmansion.rnscreens
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.view.ViewGroup
|
|
5
|
+
import androidx.annotation.UiThread
|
|
6
|
+
import com.facebook.react.bridge.WritableMap
|
|
7
|
+
import com.facebook.react.bridge.WritableNativeMap
|
|
8
|
+
import com.facebook.react.uimanager.PixelUtil
|
|
9
|
+
import com.facebook.react.uimanager.StateWrapper
|
|
10
|
+
import kotlin.math.abs
|
|
11
|
+
|
|
12
|
+
abstract class FabricEnabledHeaderConfigViewGroup(
|
|
13
|
+
context: Context?,
|
|
14
|
+
) : ViewGroup(context) {
|
|
15
|
+
private var mStateWrapper: StateWrapper? = null
|
|
16
|
+
|
|
17
|
+
private var lastPaddingStart = 0f
|
|
18
|
+
private var lastPaddingEnd = 0f
|
|
19
|
+
|
|
20
|
+
fun setStateWrapper(wrapper: StateWrapper?) {
|
|
21
|
+
mStateWrapper = wrapper
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
fun updatePaddingsFabric(
|
|
25
|
+
paddingStart: Int,
|
|
26
|
+
paddingEnd: Int,
|
|
27
|
+
) {
|
|
28
|
+
updateState(paddingStart, paddingEnd)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@UiThread
|
|
32
|
+
fun updateState(
|
|
33
|
+
paddingStart: Int,
|
|
34
|
+
paddingEnd: Int,
|
|
35
|
+
) {
|
|
36
|
+
val paddingStartDip: Float = PixelUtil.toDIPFromPixel(paddingStart.toFloat())
|
|
37
|
+
val paddingEndDip: Float = PixelUtil.toDIPFromPixel(paddingEnd.toFloat())
|
|
38
|
+
|
|
39
|
+
// Check incoming state values. If they're already the correct value, return early to prevent
|
|
40
|
+
// infinite UpdateState/SetState loop.
|
|
41
|
+
if (abs(lastPaddingStart - paddingStart) < DELTA &&
|
|
42
|
+
abs(lastPaddingEnd - paddingEnd) < DELTA
|
|
43
|
+
) {
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
lastPaddingStart = paddingStartDip
|
|
48
|
+
lastPaddingEnd = paddingEndDip
|
|
49
|
+
|
|
50
|
+
val map: WritableMap =
|
|
51
|
+
WritableNativeMap().apply {
|
|
52
|
+
putDouble("paddingStart", paddingStartDip.toDouble())
|
|
53
|
+
putDouble("paddingEnd", paddingEndDip.toDouble())
|
|
54
|
+
}
|
|
55
|
+
mStateWrapper?.updateState(map)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
companion object {
|
|
59
|
+
private const val DELTA = 0.9f
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -3,47 +3,60 @@ package com.swmansion.rnscreens
|
|
|
3
3
|
import android.view.ViewGroup
|
|
4
4
|
import androidx.annotation.UiThread
|
|
5
5
|
import com.facebook.react.bridge.ReactContext
|
|
6
|
-
import com.facebook.react.bridge.ReadableMap
|
|
7
6
|
import com.facebook.react.bridge.WritableMap
|
|
8
7
|
import com.facebook.react.bridge.WritableNativeMap
|
|
9
|
-
import com.facebook.react.uimanager.FabricViewStateManager
|
|
10
8
|
import com.facebook.react.uimanager.PixelUtil
|
|
9
|
+
import com.facebook.react.uimanager.StateWrapper
|
|
11
10
|
import kotlin.math.abs
|
|
12
11
|
|
|
13
|
-
abstract class FabricEnabledViewGroup
|
|
14
|
-
|
|
12
|
+
abstract class FabricEnabledViewGroup(
|
|
13
|
+
context: ReactContext?,
|
|
14
|
+
) : ViewGroup(context) {
|
|
15
|
+
private var mStateWrapper: StateWrapper? = null
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
private var lastSetWidth = 0f
|
|
18
|
+
private var lastSetHeight = 0f
|
|
19
|
+
|
|
20
|
+
fun setStateWrapper(wrapper: StateWrapper?) {
|
|
21
|
+
mStateWrapper = wrapper
|
|
18
22
|
}
|
|
19
23
|
|
|
20
|
-
protected fun updateScreenSizeFabric(
|
|
21
|
-
|
|
24
|
+
protected fun updateScreenSizeFabric(
|
|
25
|
+
width: Int,
|
|
26
|
+
height: Int,
|
|
27
|
+
headerHeight: Int,
|
|
28
|
+
) {
|
|
29
|
+
updateState(width, height, headerHeight)
|
|
22
30
|
}
|
|
23
31
|
|
|
24
32
|
@UiThread
|
|
25
|
-
fun updateState(
|
|
33
|
+
fun updateState(
|
|
34
|
+
width: Int,
|
|
35
|
+
height: Int,
|
|
36
|
+
headerHeight: Int,
|
|
37
|
+
) {
|
|
26
38
|
val realWidth: Float = PixelUtil.toDIPFromPixel(width.toFloat())
|
|
27
39
|
val realHeight: Float = PixelUtil.toDIPFromPixel(height.toFloat())
|
|
40
|
+
val realHeaderHeight: Float = PixelUtil.toDIPFromPixel(headerHeight.toFloat())
|
|
28
41
|
|
|
29
42
|
// Check incoming state values. If they're already the correct value, return early to prevent
|
|
30
43
|
// infinite UpdateState/SetState loop.
|
|
31
|
-
val
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (abs(stateFrameWidth - realWidth) < delta &&
|
|
37
|
-
abs(stateFrameHeight - realHeight) < delta
|
|
38
|
-
) {
|
|
39
|
-
return
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
mFabricViewStateManager.setState {
|
|
43
|
-
val map: WritableMap = WritableNativeMap()
|
|
44
|
-
map.putDouble("frameWidth", realWidth.toDouble())
|
|
45
|
-
map.putDouble("frameHeight", realHeight.toDouble())
|
|
46
|
-
map
|
|
44
|
+
val delta = 0.9f
|
|
45
|
+
if (abs(lastSetWidth - realWidth) < delta &&
|
|
46
|
+
abs(lastSetHeight - realHeight) < delta
|
|
47
|
+
) {
|
|
48
|
+
return
|
|
47
49
|
}
|
|
50
|
+
|
|
51
|
+
lastSetWidth = realWidth
|
|
52
|
+
lastSetHeight = realHeight
|
|
53
|
+
val map: WritableMap =
|
|
54
|
+
WritableNativeMap().apply {
|
|
55
|
+
putDouble("frameWidth", realWidth.toDouble())
|
|
56
|
+
putDouble("frameHeight", realHeight.toDouble())
|
|
57
|
+
putDouble("contentOffsetX", 0.0)
|
|
58
|
+
putDouble("contentOffsetY", realHeaderHeight.toDouble())
|
|
59
|
+
}
|
|
60
|
+
mStateWrapper?.updateState(map)
|
|
48
61
|
}
|
|
49
62
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
package com.swmansion.rnscreens
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import com.facebook.jni.HybridData
|
|
5
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
6
|
+
import com.facebook.react.fabric.FabricUIManager
|
|
7
|
+
import java.lang.ref.WeakReference
|
|
8
|
+
import java.util.concurrent.ConcurrentHashMap
|
|
9
|
+
|
|
10
|
+
class NativeProxy {
|
|
11
|
+
@DoNotStrip
|
|
12
|
+
@Suppress("unused")
|
|
13
|
+
private val mHybridData: HybridData
|
|
14
|
+
|
|
15
|
+
init {
|
|
16
|
+
mHybridData = initHybrid()
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private external fun initHybrid(): HybridData
|
|
20
|
+
|
|
21
|
+
external fun nativeAddMutationsListener(fabricUIManager: FabricUIManager)
|
|
22
|
+
|
|
23
|
+
companion object {
|
|
24
|
+
// we use ConcurrentHashMap here since it will be read on the JS thread,
|
|
25
|
+
// and written to on the UI thread.
|
|
26
|
+
private val viewsMap = ConcurrentHashMap<Int, WeakReference<Screen>>()
|
|
27
|
+
|
|
28
|
+
fun addScreenToMap(
|
|
29
|
+
tag: Int,
|
|
30
|
+
view: Screen,
|
|
31
|
+
) {
|
|
32
|
+
viewsMap[tag] = WeakReference(view)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
fun removeScreenFromMap(tag: Int) {
|
|
36
|
+
viewsMap.remove(tag)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
fun clearMapOnInvalidate() {
|
|
40
|
+
viewsMap.clear()
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@DoNotStrip
|
|
45
|
+
public fun notifyScreenRemoved(screenTag: Int) {
|
|
46
|
+
val screen = viewsMap[screenTag]?.get()
|
|
47
|
+
if (screen is Screen) {
|
|
48
|
+
screen.startRemovalTransition()
|
|
49
|
+
} else {
|
|
50
|
+
Log.w("[RNScreens]", "Did not find view with tag $screenTag.")
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#include <fbjni/fbjni.h>
|
|
2
|
+
#include <react/fabric/Binding.h>
|
|
3
|
+
#include <react/renderer/scheduler/Scheduler.h>
|
|
4
|
+
|
|
5
|
+
#include <string>
|
|
6
|
+
|
|
7
|
+
#include "NativeProxy.h"
|
|
8
|
+
|
|
9
|
+
using namespace facebook;
|
|
10
|
+
using namespace react;
|
|
11
|
+
|
|
12
|
+
namespace rnscreens {
|
|
13
|
+
|
|
14
|
+
NativeProxy::NativeProxy(jni::alias_ref<NativeProxy::javaobject> jThis)
|
|
15
|
+
: javaPart_(jni::make_global(jThis)) {}
|
|
16
|
+
|
|
17
|
+
NativeProxy::~NativeProxy() {}
|
|
18
|
+
|
|
19
|
+
void NativeProxy::registerNatives() {
|
|
20
|
+
registerHybrid(
|
|
21
|
+
{makeNativeMethod("initHybrid", NativeProxy::initHybrid),
|
|
22
|
+
makeNativeMethod(
|
|
23
|
+
"nativeAddMutationsListener",
|
|
24
|
+
NativeProxy::nativeAddMutationsListener)});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void NativeProxy::nativeAddMutationsListener(
|
|
28
|
+
jni::alias_ref<facebook::react::JFabricUIManager::javaobject>
|
|
29
|
+
fabricUIManager) {
|
|
30
|
+
auto uiManager =
|
|
31
|
+
fabricUIManager->getBinding()->getScheduler()->getUIManager();
|
|
32
|
+
screenRemovalListener_ =
|
|
33
|
+
std::make_shared<RNSScreenRemovalListener>([this](int tag) {
|
|
34
|
+
static const auto method =
|
|
35
|
+
javaPart_->getClass()->getMethod<void(jint)>("notifyScreenRemoved");
|
|
36
|
+
method(javaPart_, tag);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
uiManager->getShadowTreeRegistry().enumerate(
|
|
40
|
+
[this](const facebook::react::ShadowTree &shadowTree, bool &stop) {
|
|
41
|
+
shadowTree.getMountingCoordinator()->setMountingOverrideDelegate(
|
|
42
|
+
screenRemovalListener_);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
jni::local_ref<NativeProxy::jhybriddata> NativeProxy::initHybrid(
|
|
47
|
+
jni::alias_ref<jhybridobject> jThis) {
|
|
48
|
+
return makeCxxInstance(jThis);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
} // namespace rnscreens
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <fbjni/fbjni.h>
|
|
4
|
+
#include <react/fabric/JFabricUIManager.h>
|
|
5
|
+
#include "RNSScreenRemovalListener.h"
|
|
6
|
+
|
|
7
|
+
#include <string>
|
|
8
|
+
|
|
9
|
+
namespace rnscreens {
|
|
10
|
+
using namespace facebook;
|
|
11
|
+
using namespace facebook::jni;
|
|
12
|
+
|
|
13
|
+
class NativeProxy : public jni::HybridClass<NativeProxy> {
|
|
14
|
+
public:
|
|
15
|
+
std::shared_ptr<RNSScreenRemovalListener> screenRemovalListener_;
|
|
16
|
+
static auto constexpr kJavaDescriptor =
|
|
17
|
+
"Lcom/swmansion/rnscreens/NativeProxy;";
|
|
18
|
+
static jni::local_ref<jhybriddata> initHybrid(
|
|
19
|
+
jni::alias_ref<jhybridobject> jThis);
|
|
20
|
+
static void registerNatives();
|
|
21
|
+
|
|
22
|
+
~NativeProxy();
|
|
23
|
+
|
|
24
|
+
private:
|
|
25
|
+
friend HybridBase;
|
|
26
|
+
jni::global_ref<NativeProxy::javaobject> javaPart_;
|
|
27
|
+
|
|
28
|
+
explicit NativeProxy(jni::alias_ref<NativeProxy::javaobject> jThis);
|
|
29
|
+
|
|
30
|
+
void nativeAddMutationsListener(
|
|
31
|
+
jni::alias_ref<facebook::react::JFabricUIManager::javaobject>
|
|
32
|
+
fabricUIManager);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
} // namespace rnscreens
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#include <jni.h>
|
|
2
|
+
#include <jsi/jsi.h>
|
|
3
|
+
#include <array>
|
|
4
|
+
#include <mutex>
|
|
5
|
+
#include "RNScreensTurboModule.h"
|
|
6
|
+
|
|
7
|
+
using namespace facebook;
|
|
8
|
+
|
|
9
|
+
jobject globalThis;
|
|
10
|
+
|
|
11
|
+
extern "C" JNIEXPORT void JNICALL
|
|
12
|
+
Java_com_swmansion_rnscreens_ScreensModule_nativeInstall(
|
|
13
|
+
JNIEnv *env,
|
|
14
|
+
jobject thiz,
|
|
15
|
+
jlong jsiPtr) {
|
|
16
|
+
auto runtime = reinterpret_cast<jsi::Runtime *>(jsiPtr);
|
|
17
|
+
if (!runtime) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
jsi::Runtime &rt = *runtime;
|
|
21
|
+
if (globalThis) {
|
|
22
|
+
env->DeleteGlobalRef(globalThis);
|
|
23
|
+
}
|
|
24
|
+
globalThis = env->NewGlobalRef(thiz);
|
|
25
|
+
JavaVM *jvm;
|
|
26
|
+
env->GetJavaVM(&jvm);
|
|
27
|
+
|
|
28
|
+
const auto &startTransition = [jvm](int stackTag) -> std::array<int, 2> {
|
|
29
|
+
JNIEnv *currentEnv;
|
|
30
|
+
if (jvm->AttachCurrentThread(¤tEnv, nullptr) != JNI_OK) {
|
|
31
|
+
return {0, 0};
|
|
32
|
+
}
|
|
33
|
+
jclass javaClass = currentEnv->GetObjectClass(globalThis);
|
|
34
|
+
jmethodID methodID = currentEnv->GetMethodID(
|
|
35
|
+
javaClass, "startTransition", "(Ljava/lang/Integer;)[I");
|
|
36
|
+
jclass integerClass = currentEnv->FindClass("java/lang/Integer");
|
|
37
|
+
jmethodID integerConstructor =
|
|
38
|
+
currentEnv->GetMethodID(integerClass, "<init>", "(I)V");
|
|
39
|
+
jobject integerArg =
|
|
40
|
+
currentEnv->NewObject(integerClass, integerConstructor, stackTag);
|
|
41
|
+
jintArray resultArray = (jintArray)currentEnv->CallObjectMethod(
|
|
42
|
+
globalThis, methodID, integerArg);
|
|
43
|
+
std::array<int, 2> result = {-1, -1};
|
|
44
|
+
jint *elements = currentEnv->GetIntArrayElements(resultArray, nullptr);
|
|
45
|
+
if (elements != nullptr) {
|
|
46
|
+
result[0] = elements[0];
|
|
47
|
+
result[1] = elements[1];
|
|
48
|
+
currentEnv->ReleaseIntArrayElements(resultArray, elements, JNI_ABORT);
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const auto &updateTransition = [jvm](int stackTag, double progress) {
|
|
54
|
+
JNIEnv *currentEnv;
|
|
55
|
+
if (jvm->AttachCurrentThread(¤tEnv, nullptr) != JNI_OK) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
jclass javaClass = currentEnv->GetObjectClass(globalThis);
|
|
59
|
+
jmethodID methodID =
|
|
60
|
+
currentEnv->GetMethodID(javaClass, "updateTransition", "(D)V");
|
|
61
|
+
currentEnv->CallVoidMethod(globalThis, methodID, progress);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const auto &finishTransition = [jvm](int stackTag, bool canceled) {
|
|
65
|
+
JNIEnv *currentEnv;
|
|
66
|
+
if (jvm->AttachCurrentThread(¤tEnv, nullptr) != JNI_OK) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
jclass javaClass = currentEnv->GetObjectClass(globalThis);
|
|
70
|
+
jmethodID methodID = currentEnv->GetMethodID(
|
|
71
|
+
javaClass, "finishTransition", "(Ljava/lang/Integer;Z)V");
|
|
72
|
+
jclass integerClass = currentEnv->FindClass("java/lang/Integer");
|
|
73
|
+
jmethodID integerConstructor =
|
|
74
|
+
currentEnv->GetMethodID(integerClass, "<init>", "(I)V");
|
|
75
|
+
jobject integerArg =
|
|
76
|
+
currentEnv->NewObject(integerClass, integerConstructor, stackTag);
|
|
77
|
+
currentEnv->CallVoidMethod(globalThis, methodID, integerArg, canceled);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const auto &disableSwipeBackForTopScreen = [](int _stackTag) {
|
|
81
|
+
// no implementation for Android
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
auto rnScreensModule = std::make_shared<RNScreens::RNScreensTurboModule>(
|
|
85
|
+
startTransition,
|
|
86
|
+
updateTransition,
|
|
87
|
+
finishTransition,
|
|
88
|
+
disableSwipeBackForTopScreen);
|
|
89
|
+
auto rnScreensModuleHostObject =
|
|
90
|
+
jsi::Object::createFromHostObject(rt, rnScreensModule);
|
|
91
|
+
rt.global().setProperty(
|
|
92
|
+
rt,
|
|
93
|
+
RNScreens::RNScreensTurboModule::MODULE_NAME,
|
|
94
|
+
std::move(rnScreensModuleHostObject));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
void JNICALL JNI_OnUnload(JavaVM *jvm, void *) {
|
|
98
|
+
JNIEnv *env;
|
|
99
|
+
if (jvm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_6) != JNI_OK) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (globalThis != nullptr) {
|
|
103
|
+
env->DeleteGlobalRef(globalThis);
|
|
104
|
+
globalThis = nullptr;
|
|
105
|
+
}
|
|
106
|
+
}
|