@react-navigation/native 8.0.0-alpha.4 → 8.0.0-alpha.40
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/android/build.gradle +4 -6
- package/android/src/main/java/org/reactnavigation/MaterialSymbolModule.kt +20 -9
- package/android/src/main/java/org/reactnavigation/MaterialSymbolTypeface.kt +61 -18
- package/android/src/main/java/org/reactnavigation/MaterialSymbolView.kt +39 -14
- package/android/src/main/java/org/reactnavigation/MaterialSymbolViewManager.kt +14 -7
- package/android/src/main/java/org/reactnavigation/ReactNavigationPackage.kt +3 -1
- package/assets/fonts/MaterialSymbolsOutlined.codepoints +179 -24
- package/assets/fonts/MaterialSymbolsOutlined_100.ttf +0 -0
- package/assets/fonts/MaterialSymbolsOutlined_200.ttf +0 -0
- package/assets/fonts/MaterialSymbolsOutlined_300.ttf +0 -0
- package/assets/fonts/MaterialSymbolsOutlined_400.ttf +0 -0
- package/assets/fonts/MaterialSymbolsOutlined_500.ttf +0 -0
- package/assets/fonts/MaterialSymbolsOutlined_600.ttf +0 -0
- package/assets/fonts/MaterialSymbolsOutlined_700.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded.codepoints +179 -24
- package/assets/fonts/MaterialSymbolsRounded_100.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded_200.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded_300.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded_400.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded_500.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded_600.ttf +0 -0
- package/assets/fonts/MaterialSymbolsRounded_700.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp.codepoints +179 -24
- package/assets/fonts/MaterialSymbolsSharp_100.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp_200.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp_300.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp_400.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp_500.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp_600.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp_700.ttf +0 -0
- package/ios/ReactNavigationCornerInsetView.h +14 -0
- package/ios/ReactNavigationCornerInsetView.mm +182 -0
- package/ios/ReactNavigationCornerInsetView.swift +193 -0
- package/ios/ReactNavigationCornerInsetViewComponentDescriptor.h +23 -0
- package/ios/ReactNavigationCornerInsetViewShadowNode.h +27 -0
- package/ios/ReactNavigationCornerInsetViewShadowNode.mm +42 -0
- package/ios/ReactNavigationCornerInsetViewState.h +19 -0
- package/ios/ReactNavigationSFSymbolView.mm +22 -9
- package/ios/ReactNavigationSFSymbolView.swift +355 -65
- package/lib/module/Link.js +80 -24
- package/lib/module/Link.js.map +1 -1
- package/lib/module/Link.native.js +72 -0
- package/lib/module/Link.native.js.map +1 -0
- package/lib/module/NavigationContainer.js +22 -17
- package/lib/module/NavigationContainer.js.map +1 -1
- package/lib/module/__stubs__/createStackNavigator.js +10 -4
- package/lib/module/__stubs__/createStackNavigator.js.map +1 -1
- package/lib/module/constants.js +5 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/constants.native.js +6 -0
- package/lib/module/constants.native.js.map +1 -0
- package/lib/module/createMemoryHistory.js +23 -7
- package/lib/module/createMemoryHistory.js.map +1 -1
- package/lib/module/createStandardNavigationFactories.js +99 -0
- package/lib/module/createStandardNavigationFactories.js.map +1 -0
- package/lib/module/createStaticNavigation.js +5 -4
- package/lib/module/createStaticNavigation.js.map +1 -1
- package/lib/module/extractPathFromURL.js +2 -2
- package/lib/module/extractPathFromURL.js.map +1 -1
- package/lib/module/getStateFromHref.js +2 -2
- package/lib/module/getStateFromHref.js.map +1 -1
- package/lib/module/index.js +5 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/native/CornerInset.ios.js +69 -0
- package/lib/module/native/CornerInset.ios.js.map +1 -0
- package/lib/module/native/CornerInset.js +12 -0
- package/lib/module/native/CornerInset.js.map +1 -0
- package/lib/module/native/MaterialSymbol.android.js +3 -12
- package/lib/module/native/MaterialSymbol.android.js.map +1 -1
- package/lib/module/native/MaterialSymbolViewNativeComponent.ts +6 -3
- package/lib/module/native/ReactNavigationCornerInsetViewNativeComponent.ts +33 -0
- package/lib/module/native/SFSymbol.ios.js +35 -14
- package/lib/module/native/SFSymbol.ios.js.map +1 -1
- package/lib/module/native/SFSymbolViewNativeComponent.ts +30 -14
- package/lib/module/server/ServerContext.js.map +1 -0
- package/lib/module/server/index.js +21 -0
- package/lib/module/server/index.js.map +1 -0
- package/lib/module/theming/DarkTheme.js +5 -5
- package/lib/module/theming/DarkTheme.js.map +1 -1
- package/lib/module/theming/LightTheme.js +16 -0
- package/lib/module/theming/LightTheme.js.map +1 -0
- package/lib/module/theming/MaterialFallbackTheme.js +28 -0
- package/lib/module/theming/MaterialFallbackTheme.js.map +1 -0
- package/lib/module/theming/MaterialTheme.android.js +33 -0
- package/lib/module/theming/MaterialTheme.android.js.map +1 -0
- package/lib/module/theming/MaterialTheme.js +4 -0
- package/lib/module/theming/MaterialTheme.js.map +1 -0
- package/lib/module/theming/fonts.js +15 -54
- package/lib/module/theming/fonts.js.map +1 -1
- package/lib/module/theming/fonts.native.js +42 -0
- package/lib/module/theming/fonts.native.js.map +1 -0
- package/lib/module/useBackButton.js.map +1 -1
- package/lib/module/useBackButton.native.js +4 -1
- package/lib/module/useBackButton.native.js.map +1 -1
- package/lib/module/useDeepStableValue.js +12 -0
- package/lib/module/useDeepStableValue.js.map +1 -0
- package/lib/module/useDocumentTitle.js.map +1 -1
- package/lib/module/useLinkBuilder.js +8 -7
- package/lib/module/useLinkBuilder.js.map +1 -1
- package/lib/module/useLinkProps.js +150 -68
- package/lib/module/useLinkProps.js.map +1 -1
- package/lib/module/useLinkTo.js +1 -1
- package/lib/module/useLinkTo.js.map +1 -1
- package/lib/module/useLinking.js +203 -32
- package/lib/module/useLinking.js.map +1 -1
- package/lib/module/useLinking.native.js +25 -8
- package/lib/module/useLinking.native.js.map +1 -1
- package/lib/module/useLocale.js +1 -1
- package/lib/module/useLocale.js.map +1 -1
- package/lib/module/useMemoArray.js +25 -0
- package/lib/module/useMemoArray.js.map +1 -0
- package/lib/module/useRoutePath.js +1 -1
- package/lib/module/useRoutePath.js.map +1 -1
- package/lib/module/useScrollToTop.js +3 -2
- package/lib/module/useScrollToTop.js.map +1 -1
- package/lib/typescript/src/Link.d.ts +17 -9
- package/lib/typescript/src/Link.d.ts.map +1 -1
- package/lib/typescript/src/Link.native.d.ts +4 -0
- package/lib/typescript/src/Link.native.d.ts.map +1 -0
- package/lib/typescript/src/LinkingContext.d.ts +1 -1
- package/lib/typescript/src/LinkingContext.d.ts.map +1 -1
- package/lib/typescript/src/LocaleDirContext.d.ts +1 -1
- package/lib/typescript/src/LocaleDirContext.d.ts.map +1 -1
- package/lib/typescript/src/NavigationContainer.d.ts +13 -6
- package/lib/typescript/src/NavigationContainer.d.ts.map +1 -1
- package/lib/typescript/src/__stubs__/createStackNavigator.d.ts +6 -9
- package/lib/typescript/src/__stubs__/createStackNavigator.d.ts.map +1 -1
- package/lib/typescript/src/constants.d.ts +4 -0
- package/lib/typescript/src/constants.d.ts.map +1 -0
- package/lib/typescript/src/constants.native.d.ts +4 -0
- package/lib/typescript/src/constants.native.d.ts.map +1 -0
- package/lib/typescript/src/createMemoryHistory.d.ts +1 -1
- package/lib/typescript/src/createMemoryHistory.d.ts.map +1 -1
- package/lib/typescript/src/createStandardNavigationFactories.d.ts +33 -0
- package/lib/typescript/src/createStandardNavigationFactories.d.ts.map +1 -0
- package/lib/typescript/src/createStaticNavigation.d.ts +7 -7
- package/lib/typescript/src/createStaticNavigation.d.ts.map +1 -1
- package/lib/typescript/src/extractPathFromURL.d.ts +1 -1
- package/lib/typescript/src/extractPathFromURL.d.ts.map +1 -1
- package/lib/typescript/src/getStateFromHref.d.ts +3 -3
- package/lib/typescript/src/getStateFromHref.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +16 -14
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native/CornerInset.d.ts +28 -0
- package/lib/typescript/src/native/CornerInset.d.ts.map +1 -0
- package/lib/typescript/src/native/CornerInset.ios.d.ts +8 -0
- package/lib/typescript/src/native/CornerInset.ios.d.ts.map +1 -0
- package/lib/typescript/src/native/MaterialSymbol.android.d.ts +1 -1
- package/lib/typescript/src/native/MaterialSymbol.android.d.ts.map +1 -1
- package/lib/typescript/src/native/MaterialSymbol.d.ts +2 -2
- package/lib/typescript/src/native/MaterialSymbol.d.ts.map +1 -1
- package/lib/typescript/src/native/MaterialSymbolData.d.ts +1 -1
- package/lib/typescript/src/native/MaterialSymbolData.d.ts.map +1 -1
- package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts +2 -2
- package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/native/ReactNavigationCornerInsetViewNativeComponent.d.ts +14 -0
- package/lib/typescript/src/native/ReactNavigationCornerInsetViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/native/SFSymbol.d.ts +1 -1
- package/lib/typescript/src/native/SFSymbol.d.ts.map +1 -1
- package/lib/typescript/src/native/SFSymbol.ios.d.ts +2 -2
- package/lib/typescript/src/native/SFSymbol.ios.d.ts.map +1 -1
- package/lib/typescript/src/native/SFSymbolViewNativeComponent.d.ts +26 -13
- package/lib/typescript/src/native/SFSymbolViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/native/types.d.ts +241 -45
- package/lib/typescript/src/native/types.d.ts.map +1 -1
- package/lib/typescript/src/{ServerContext.d.ts → server/ServerContext.d.ts} +1 -4
- package/lib/typescript/src/server/ServerContext.d.ts.map +1 -0
- package/lib/typescript/src/server/index.d.ts +10 -0
- package/lib/typescript/src/server/index.d.ts.map +1 -0
- package/lib/typescript/src/theming/DarkTheme.d.ts +4 -38
- package/lib/typescript/src/theming/DarkTheme.d.ts.map +1 -1
- package/lib/typescript/src/theming/LightTheme.d.ts +30 -0
- package/lib/typescript/src/theming/LightTheme.d.ts.map +1 -0
- package/lib/typescript/src/theming/{DefaultTheme.d.ts → MaterialFallbackTheme.d.ts} +25 -30
- package/lib/typescript/src/theming/MaterialFallbackTheme.d.ts.map +1 -0
- package/lib/typescript/src/theming/MaterialTheme.android.d.ts +115 -0
- package/lib/typescript/src/theming/MaterialTheme.android.d.ts.map +1 -0
- package/lib/typescript/src/theming/MaterialTheme.d.ts +2 -0
- package/lib/typescript/src/theming/MaterialTheme.d.ts.map +1 -0
- package/lib/typescript/src/theming/fonts.d.ts +0 -34
- package/lib/typescript/src/theming/fonts.d.ts.map +1 -1
- package/lib/typescript/src/theming/fonts.native.d.ts +36 -0
- package/lib/typescript/src/theming/fonts.native.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +13 -16
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useBackButton.d.ts +1 -1
- package/lib/typescript/src/useBackButton.d.ts.map +1 -1
- package/lib/typescript/src/useBackButton.native.d.ts.map +1 -1
- package/lib/typescript/src/useDeepStableValue.d.ts +2 -0
- package/lib/typescript/src/useDeepStableValue.d.ts.map +1 -0
- package/lib/typescript/src/useDocumentTitle.d.ts +2 -2
- package/lib/typescript/src/useDocumentTitle.d.ts.map +1 -1
- package/lib/typescript/src/useLinkBuilder.d.ts +56 -68
- package/lib/typescript/src/useLinkBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useLinkProps.d.ts +36 -12
- package/lib/typescript/src/useLinkProps.d.ts.map +1 -1
- package/lib/typescript/src/useLinking.d.ts +7 -45
- package/lib/typescript/src/useLinking.d.ts.map +1 -1
- package/lib/typescript/src/useLinking.native.d.ts +9 -83
- package/lib/typescript/src/useLinking.native.d.ts.map +1 -1
- package/lib/typescript/src/useLocale.d.ts +1 -1
- package/lib/typescript/src/useMemoArray.d.ts +2 -0
- package/lib/typescript/src/useMemoArray.d.ts.map +1 -0
- package/lib/typescript/src/useScrollToTop.d.ts.map +1 -1
- package/package.json +47 -23
- package/src/Link.native.tsx +69 -0
- package/src/Link.tsx +126 -37
- package/src/NavigationContainer.tsx +47 -39
- package/src/__stubs__/createStackNavigator.tsx +19 -17
- package/src/constants.native.tsx +10 -0
- package/src/constants.tsx +5 -0
- package/src/createMemoryHistory.tsx +28 -7
- package/src/createStandardNavigationFactories.tsx +219 -0
- package/src/createStaticNavigation.tsx +13 -17
- package/src/extractPathFromURL.tsx +5 -3
- package/src/getStateFromHref.tsx +8 -3
- package/src/index.tsx +11 -2
- package/src/native/CornerInset.ios.tsx +87 -0
- package/src/native/CornerInset.tsx +40 -0
- package/src/native/MaterialSymbol.android.tsx +2 -18
- package/src/native/MaterialSymbol.tsx +1 -1
- package/src/native/MaterialSymbolData.tsx +155 -0
- package/src/native/MaterialSymbolViewNativeComponent.ts +6 -3
- package/src/native/ReactNavigationCornerInsetViewNativeComponent.ts +33 -0
- package/src/native/SFSymbol.ios.tsx +73 -14
- package/src/native/SFSymbolViewNativeComponent.ts +30 -14
- package/src/native/types.tsx +297 -47
- package/src/{ServerContext.tsx → server/ServerContext.tsx} +1 -4
- package/src/server/index.tsx +19 -0
- package/src/theming/DarkTheme.tsx +4 -4
- package/src/theming/{DefaultTheme.tsx → LightTheme.tsx} +4 -4
- package/src/theming/MaterialFallbackTheme.tsx +29 -0
- package/src/theming/MaterialTheme.android.tsx +45 -0
- package/src/theming/MaterialTheme.tsx +4 -0
- package/src/theming/fonts.native.tsx +41 -0
- package/src/theming/fonts.tsx +15 -54
- package/src/types.tsx +38 -40
- package/src/useBackButton.native.tsx +2 -0
- package/src/useBackButton.tsx +2 -2
- package/src/useDeepStableValue.tsx +12 -0
- package/src/useDocumentTitle.tsx +2 -2
- package/src/useLinkBuilder.tsx +15 -7
- package/src/useLinkProps.tsx +379 -126
- package/src/useLinkTo.tsx +1 -1
- package/src/useLinking.native.tsx +64 -35
- package/src/useLinking.tsx +323 -47
- package/src/useLocale.tsx +1 -1
- package/src/useMemoArray.tsx +41 -0
- package/src/useRoutePath.tsx +1 -1
- package/src/useScrollToTop.tsx +3 -2
- package/android/build/.transforms/586a73aab4c351d3f13dc604ca6964e8/results.bin +0 -1
- package/android/build/.transforms/586a73aab4c351d3f13dc604ca6964e8/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/results.bin +0 -1
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/BuildConfig.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$Companion.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$WhenMappings.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$getImageSource$1.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolTypeface.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolTypefaceResult.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolView.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolViewManager$Companion.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolViewManager.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/ReactNavigationPackage.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/generated/source/buildConfig/debug/org/reactnavigation/BuildConfig.java +0 -10
- package/android/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.java +0 -39
- package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.java +0 -45
- package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.java +0 -22
- package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.java +0 -39
- package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.java +0 -20
- package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
- package/android/build/generated/source/codegen/jni/ReactNavigationSpec-generated.cpp +0 -32
- package/android/build/generated/source/codegen/jni/ReactNavigationSpec.h +0 -31
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ComponentDescriptors.cpp +0 -23
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ComponentDescriptors.h +0 -25
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/EventEmitters.cpp +0 -17
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/EventEmitters.h +0 -30
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.cpp +0 -106
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.h +0 -118
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI-generated.cpp +0 -31
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI.h +0 -71
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ShadowNodes.cpp +0 -18
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ShadowNodes.h +0 -43
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/States.cpp +0 -16
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/States.h +0 -22
- package/android/build/generated/source/codegen/schema.json +0 -1
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
- package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbols.hash +0 -1
- package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbolsOutlined_400.ttf +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-navigation_native_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/org/reactnavigation/BuildConfig.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
- package/android/build/intermediates/react-navigation/fonts/MaterialSymbols.hash +0 -1
- package/android/build/intermediates/react-navigation/fonts/MaterialSymbolsOutlined_400.ttf +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-navigation_native_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$WhenMappings.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$getImageSource$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolTypefaceResult.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolViewManager$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolViewManager.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/ReactNavigationPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -16
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/react-navigation_native_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$WhenMappings.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$getImageSource$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolTypefaceResult.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolViewManager$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolViewManager.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/ReactNavigationPackage.class +0 -0
- package/lib/module/ServerContainer.js +0 -55
- package/lib/module/ServerContainer.js.map +0 -1
- package/lib/module/ServerContext.js.map +0 -1
- package/lib/module/__stubs__/window.js +0 -75
- package/lib/module/__stubs__/window.js.map +0 -1
- package/lib/module/theming/DefaultTheme.js +0 -16
- package/lib/module/theming/DefaultTheme.js.map +0 -1
- package/lib/typescript/src/ServerContainer.d.ts +0 -14
- package/lib/typescript/src/ServerContainer.d.ts.map +0 -1
- package/lib/typescript/src/ServerContext.d.ts.map +0 -1
- package/lib/typescript/src/__stubs__/window.d.ts +0 -18
- package/lib/typescript/src/__stubs__/window.d.ts.map +0 -1
- package/lib/typescript/src/theming/DefaultTheme.d.ts.map +0 -1
- package/src/ServerContainer.tsx +0 -57
- package/src/__stubs__/window.tsx +0 -77
- /package/lib/module/{ServerContext.js → server/ServerContext.js} +0 -0
package/src/useLinking.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
CommonActions,
|
|
2
3
|
findFocusedRoute,
|
|
3
4
|
getActionFromState as getActionFromStateDefault,
|
|
4
5
|
getPathFromState as getPathFromStateDefault,
|
|
@@ -6,27 +7,84 @@ import {
|
|
|
6
7
|
type NavigationContainerRef,
|
|
7
8
|
type NavigationState,
|
|
8
9
|
type ParamListBase,
|
|
10
|
+
type PartialState,
|
|
9
11
|
useNavigationIndependentTree,
|
|
10
12
|
} from '@react-navigation/core';
|
|
11
13
|
import isEqual from 'fast-deep-equal';
|
|
12
14
|
import * as React from 'react';
|
|
13
15
|
|
|
14
16
|
import { createMemoryHistory } from './createMemoryHistory';
|
|
15
|
-
import { ServerContext } from './ServerContext';
|
|
17
|
+
import { ServerContext } from './server/ServerContext';
|
|
16
18
|
import type { LinkingOptions } from './types';
|
|
17
19
|
import type { Thenable } from './useThenable';
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
/**
|
|
22
|
+
* History delta already applied by the browser when handling `popstate`
|
|
23
|
+
* The value 'replace' means the delta is unknown, so we can only replace
|
|
24
|
+
*/
|
|
25
|
+
type PopStateDelta = number | 'replace';
|
|
26
|
+
|
|
27
|
+
const getRoutesUntilIndex = (state: NavigationState) =>
|
|
28
|
+
state.routes.slice(0, state.index + 1);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Get the state object to construct the path from.
|
|
32
|
+
*
|
|
33
|
+
* We use the root state as the base, and fallback to existing `route.state`.
|
|
34
|
+
* If a navigator mounts later, this ensures we don't remove it from URL.
|
|
35
|
+
* It could happen during suspense, hydration, conditional rendering etc.
|
|
36
|
+
*/
|
|
37
|
+
const getStateForPath = (
|
|
38
|
+
state: NavigationState | PartialState<NavigationState>,
|
|
39
|
+
fallbackState: NavigationState | PartialState<NavigationState> | undefined
|
|
40
|
+
): Omit<PartialState<NavigationState>, 'stale'> => {
|
|
41
|
+
const index = state.index ?? state.routes.length - 1;
|
|
42
|
+
const route = state.routes[index];
|
|
43
|
+
|
|
44
|
+
if (route == null) {
|
|
45
|
+
return state;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const fallbackRoute = fallbackState?.routes[index];
|
|
49
|
+
|
|
50
|
+
if (
|
|
51
|
+
(fallbackRoute != null &&
|
|
52
|
+
'key' in fallbackRoute &&
|
|
53
|
+
typeof fallbackRoute?.key === 'string' &&
|
|
54
|
+
typeof route?.key === 'string' &&
|
|
55
|
+
fallbackRoute.key !== route.key) ||
|
|
56
|
+
route.name !== fallbackRoute?.name
|
|
57
|
+
) {
|
|
58
|
+
return state;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const childState = route.state
|
|
62
|
+
? getStateForPath(route.state, fallbackRoute.state)
|
|
63
|
+
: fallbackRoute.state;
|
|
64
|
+
|
|
65
|
+
if (route.state === childState) {
|
|
66
|
+
return state;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
...state,
|
|
71
|
+
routes: state.routes.map((item) =>
|
|
72
|
+
item === route ? { ...item, state: childState } : item
|
|
73
|
+
),
|
|
74
|
+
};
|
|
75
|
+
};
|
|
20
76
|
|
|
21
77
|
/**
|
|
22
78
|
* Calculate total history length including both navigator history and route history
|
|
23
79
|
*/
|
|
24
80
|
const getTotalHistoryLength = (state: NavigationState): number => {
|
|
81
|
+
const routes = getRoutesUntilIndex(state);
|
|
82
|
+
|
|
25
83
|
const baseHistoryLength = state.history
|
|
26
84
|
? state.history.length
|
|
27
|
-
:
|
|
85
|
+
: routes.length;
|
|
28
86
|
|
|
29
|
-
const routeHistoryLength =
|
|
87
|
+
const routeHistoryLength = routes.reduce((acc, r) => {
|
|
30
88
|
return acc + (r.history ? r.history.length : 0);
|
|
31
89
|
}, 0);
|
|
32
90
|
|
|
@@ -51,6 +109,10 @@ const findMatchingState = <T extends NavigationState>(
|
|
|
51
109
|
const aRoute = a.routes[a.index];
|
|
52
110
|
const bRoute = b.routes[b.index];
|
|
53
111
|
|
|
112
|
+
if (aRoute == null || bRoute == null) {
|
|
113
|
+
return [a, b];
|
|
114
|
+
}
|
|
115
|
+
|
|
54
116
|
const aChildState = aRoute.state as T | undefined;
|
|
55
117
|
const bChildState = bRoute.state as T | undefined;
|
|
56
118
|
|
|
@@ -74,31 +136,75 @@ const findMatchingState = <T extends NavigationState>(
|
|
|
74
136
|
return findMatchingState(aChildState, bChildState);
|
|
75
137
|
};
|
|
76
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Check if the state change is popping the last route or history entry.
|
|
141
|
+
*/
|
|
142
|
+
const isPoppingLastEntry = (
|
|
143
|
+
current: NavigationState,
|
|
144
|
+
record: NavigationState
|
|
145
|
+
): boolean => {
|
|
146
|
+
const currentRoute = current.routes[current.index];
|
|
147
|
+
const recordRoute = record.routes[record.index];
|
|
148
|
+
|
|
149
|
+
if (currentRoute == null || recordRoute == null) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const currentRouteHistory = currentRoute.history;
|
|
154
|
+
const recordRouteHistory = recordRoute.history ?? [];
|
|
155
|
+
|
|
156
|
+
if (currentRouteHistory?.length) {
|
|
157
|
+
return (
|
|
158
|
+
currentRoute.key === recordRoute.key &&
|
|
159
|
+
currentRouteHistory.length === recordRouteHistory.length + 1
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (current.history && record.history) {
|
|
164
|
+
return current.history.length === record.history.length + 1;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const currentRoutes = getRoutesUntilIndex(current);
|
|
168
|
+
const recordRoutes = getRoutesUntilIndex(record);
|
|
169
|
+
|
|
170
|
+
if (currentRoutes.length === recordRoutes.length + 1) {
|
|
171
|
+
return recordRoutes.every((route, i) => {
|
|
172
|
+
const currentRoute = currentRoutes[i];
|
|
173
|
+
|
|
174
|
+
return currentRoute != null && route.key === currentRoute.key;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return false;
|
|
179
|
+
};
|
|
180
|
+
|
|
77
181
|
/**
|
|
78
182
|
* Run async function in series as it's called.
|
|
79
183
|
*/
|
|
80
184
|
export const series = (cb: () => Promise<void>) => {
|
|
81
185
|
let queue = Promise.resolve();
|
|
186
|
+
|
|
82
187
|
const callback = () => {
|
|
83
188
|
// eslint-disable-next-line promise/no-callback-in-promise
|
|
84
|
-
queue = queue.then(cb)
|
|
189
|
+
queue = queue.then(cb).catch((e) => {
|
|
190
|
+
console.error(e);
|
|
191
|
+
});
|
|
85
192
|
};
|
|
193
|
+
|
|
86
194
|
return callback;
|
|
87
195
|
};
|
|
88
196
|
|
|
89
197
|
const linkingHandlers = new Set<symbol>();
|
|
90
198
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
export function useLinking(
|
|
94
|
-
ref: React.RefObject<NavigationContainerRef<ParamListBase> | null>,
|
|
199
|
+
export function useLinking<ParamList extends ParamListBase>(
|
|
200
|
+
ref: React.RefObject<NavigationContainerRef<ParamList> | null>,
|
|
95
201
|
{
|
|
96
202
|
enabled = true,
|
|
97
203
|
config,
|
|
98
204
|
getStateFromPath = getStateFromPathDefault,
|
|
99
205
|
getPathFromState = getPathFromStateDefault,
|
|
100
206
|
getActionFromState = getActionFromStateDefault,
|
|
101
|
-
}:
|
|
207
|
+
}: LinkingOptions<ParamList>
|
|
102
208
|
) {
|
|
103
209
|
const independent = useNavigationIndependentTree();
|
|
104
210
|
|
|
@@ -134,7 +240,15 @@ export function useLinking(
|
|
|
134
240
|
};
|
|
135
241
|
}, [enabled, independent]);
|
|
136
242
|
|
|
137
|
-
const
|
|
243
|
+
const server = React.use(ServerContext);
|
|
244
|
+
|
|
245
|
+
const [history] = React.useState(() => {
|
|
246
|
+
if (server || typeof window === 'undefined') {
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
return createMemoryHistory();
|
|
251
|
+
});
|
|
138
252
|
|
|
139
253
|
// We store these options in ref to avoid re-creating getInitialState and re-subscribing listeners
|
|
140
254
|
// This lets user avoid wrapping the items in `React.useCallback` or `React.useMemo`
|
|
@@ -154,7 +268,7 @@ export function useLinking(
|
|
|
154
268
|
});
|
|
155
269
|
|
|
156
270
|
const validateRoutesNotExistInRootState = React.useCallback(
|
|
157
|
-
(state:
|
|
271
|
+
(state: PartialState<NavigationState>) => {
|
|
158
272
|
const navigation = ref.current;
|
|
159
273
|
const rootState = navigation?.getRootState();
|
|
160
274
|
// Make sure that the routes in the state exist in the root navigator
|
|
@@ -164,24 +278,30 @@ export function useLinking(
|
|
|
164
278
|
[ref]
|
|
165
279
|
);
|
|
166
280
|
|
|
167
|
-
const server = React.useContext(ServerContext);
|
|
168
|
-
|
|
169
281
|
const getInitialState = React.useCallback(() => {
|
|
170
|
-
let value:
|
|
282
|
+
let value: PartialState<NavigationState> | undefined;
|
|
171
283
|
|
|
172
284
|
if (enabledRef.current) {
|
|
173
|
-
const location =
|
|
174
|
-
server
|
|
175
|
-
|
|
285
|
+
const location = server
|
|
286
|
+
? server.location
|
|
287
|
+
: typeof window !== 'undefined'
|
|
288
|
+
? window.location
|
|
289
|
+
: undefined;
|
|
176
290
|
|
|
177
291
|
const path = location ? location.pathname + location.search : undefined;
|
|
178
292
|
|
|
179
293
|
if (path) {
|
|
180
|
-
|
|
294
|
+
try {
|
|
295
|
+
value = getStateFromPathRef.current(path, configRef.current);
|
|
296
|
+
} catch (e) {
|
|
297
|
+
console.error(e);
|
|
298
|
+
|
|
299
|
+
value = undefined;
|
|
300
|
+
}
|
|
181
301
|
}
|
|
182
302
|
}
|
|
183
303
|
|
|
184
|
-
const thenable: Thenable<
|
|
304
|
+
const thenable: Thenable<PartialState<NavigationState> | undefined> = {
|
|
185
305
|
then(onfulfilled) {
|
|
186
306
|
return Promise.resolve(onfulfilled ? onfulfilled(value) : value);
|
|
187
307
|
},
|
|
@@ -193,9 +313,15 @@ export function useLinking(
|
|
|
193
313
|
|
|
194
314
|
const previousIndexRef = React.useRef<number | undefined>(undefined);
|
|
195
315
|
const previousStateRef = React.useRef<NavigationState | undefined>(undefined);
|
|
196
|
-
const
|
|
316
|
+
const pendingPopStateDeltaRef = React.useRef<PopStateDelta | undefined>(
|
|
317
|
+
undefined
|
|
318
|
+
);
|
|
197
319
|
|
|
198
320
|
React.useEffect(() => {
|
|
321
|
+
if (!history) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
|
|
199
325
|
previousIndexRef.current = history.index;
|
|
200
326
|
|
|
201
327
|
return history.listen(() => {
|
|
@@ -213,7 +339,88 @@ export function useLinking(
|
|
|
213
339
|
const previousIndex = previousIndexRef.current ?? 0;
|
|
214
340
|
|
|
215
341
|
previousIndexRef.current = index;
|
|
216
|
-
|
|
342
|
+
|
|
343
|
+
const rollbackHistory = () => {
|
|
344
|
+
const delta = previousIndex - index;
|
|
345
|
+
|
|
346
|
+
if (delta === 0) {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
history
|
|
351
|
+
.go(delta)
|
|
352
|
+
// eslint-disable-next-line promise/always-return
|
|
353
|
+
?.then(() => {
|
|
354
|
+
previousIndexRef.current = history.index;
|
|
355
|
+
})
|
|
356
|
+
.catch(() => {
|
|
357
|
+
// The navigation was interrupted
|
|
358
|
+
});
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
const rollbackHistoryIfPrevented = (
|
|
362
|
+
callback: () => void,
|
|
363
|
+
pendingDelta: PopStateDelta
|
|
364
|
+
) => {
|
|
365
|
+
let removePrevented = false;
|
|
366
|
+
let actionChangedState = false;
|
|
367
|
+
|
|
368
|
+
const unsubscribeEvent = navigation.addListener(
|
|
369
|
+
'__unsafe_event__',
|
|
370
|
+
(e) => {
|
|
371
|
+
if (e.data.type === 'beforeRemove' && e.data.defaultPrevented) {
|
|
372
|
+
removePrevented = true;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
);
|
|
376
|
+
|
|
377
|
+
// After preventing remove, user may synchronously continue navigation
|
|
378
|
+
// This is common when showing a confirmation dialog
|
|
379
|
+
// If this action produces an update, we don't want to rollback the history
|
|
380
|
+
const unsubscribeAction = navigation.addListener(
|
|
381
|
+
'__unsafe_action__',
|
|
382
|
+
(e) => {
|
|
383
|
+
if (!e.data.noop) {
|
|
384
|
+
actionChangedState = true;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
);
|
|
388
|
+
|
|
389
|
+
try {
|
|
390
|
+
callback();
|
|
391
|
+
} finally {
|
|
392
|
+
unsubscribeEvent();
|
|
393
|
+
unsubscribeAction();
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (actionChangedState) {
|
|
397
|
+
// The change may be committed later, e.g. with transitions
|
|
398
|
+
// Remember the delta so it can be subtracted when syncing the commit
|
|
399
|
+
pendingPopStateDeltaRef.current = pendingDelta;
|
|
400
|
+
} else if (removePrevented) {
|
|
401
|
+
rollbackHistory();
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
const dispatch = (
|
|
406
|
+
action: Parameters<typeof navigation.dispatch>[0],
|
|
407
|
+
pendingDelta: PopStateDelta
|
|
408
|
+
) => {
|
|
409
|
+
rollbackHistoryIfPrevented(
|
|
410
|
+
() => navigation.dispatch(action),
|
|
411
|
+
pendingDelta
|
|
412
|
+
);
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
const resetRoot = (
|
|
416
|
+
state: Parameters<typeof navigation.resetRoot>[0],
|
|
417
|
+
pendingDelta: PopStateDelta
|
|
418
|
+
) => {
|
|
419
|
+
rollbackHistoryIfPrevented(
|
|
420
|
+
() => navigation.resetRoot(state),
|
|
421
|
+
pendingDelta
|
|
422
|
+
);
|
|
423
|
+
};
|
|
217
424
|
|
|
218
425
|
// When browser back/forward is clicked, we first need to check if state object for this index exists
|
|
219
426
|
// If it does we'll reset to that state object
|
|
@@ -221,11 +428,56 @@ export function useLinking(
|
|
|
221
428
|
const record = history.get(index);
|
|
222
429
|
|
|
223
430
|
if (record?.path === path && record?.state) {
|
|
224
|
-
navigation.
|
|
431
|
+
const currentState = navigation.getRootState();
|
|
432
|
+
|
|
433
|
+
const [currentFocused, recordFocused] = findMatchingState(
|
|
434
|
+
currentState,
|
|
435
|
+
record.state
|
|
436
|
+
);
|
|
437
|
+
|
|
438
|
+
if (
|
|
439
|
+
previousIndex - index === 1 &&
|
|
440
|
+
currentFocused &&
|
|
441
|
+
recordFocused &&
|
|
442
|
+
isPoppingLastEntry(currentFocused, recordFocused)
|
|
443
|
+
) {
|
|
444
|
+
const pending = pendingPopStateDeltaRef.current;
|
|
445
|
+
|
|
446
|
+
// If we detect that the state change is popping the last entry
|
|
447
|
+
// Dispatch a back action instead of resetting to the state
|
|
448
|
+
// This makes sure changes to history state since the entry was added don't get lost
|
|
449
|
+
dispatch(
|
|
450
|
+
CommonActions.goBack(),
|
|
451
|
+
// Stack on any delta from a previous `popstate` that hasn't committed yet
|
|
452
|
+
pending === 'replace' ? 'replace' : (pending ?? 0) - 1
|
|
453
|
+
);
|
|
454
|
+
} else {
|
|
455
|
+
// The browser already moved from the current state to the record's state
|
|
456
|
+
resetRoot(
|
|
457
|
+
record.state,
|
|
458
|
+
currentFocused && recordFocused
|
|
459
|
+
? getTotalHistoryLength(recordFocused) -
|
|
460
|
+
getTotalHistoryLength(currentFocused)
|
|
461
|
+
: 'replace'
|
|
462
|
+
);
|
|
463
|
+
}
|
|
464
|
+
|
|
225
465
|
return;
|
|
226
466
|
}
|
|
227
467
|
|
|
228
|
-
|
|
468
|
+
let state: PartialState<NavigationState> | undefined;
|
|
469
|
+
|
|
470
|
+
try {
|
|
471
|
+
state = getStateFromPathRef.current(
|
|
472
|
+
path,
|
|
473
|
+
configRef.current,
|
|
474
|
+
navigation.getRootState()
|
|
475
|
+
);
|
|
476
|
+
} catch (e) {
|
|
477
|
+
console.error(e);
|
|
478
|
+
|
|
479
|
+
state = undefined;
|
|
480
|
+
}
|
|
229
481
|
|
|
230
482
|
// We should only dispatch an action when going forward
|
|
231
483
|
// Otherwise the action will likely add items to history, which would mess things up
|
|
@@ -244,7 +496,7 @@ export function useLinking(
|
|
|
244
496
|
|
|
245
497
|
if (action !== undefined) {
|
|
246
498
|
try {
|
|
247
|
-
|
|
499
|
+
dispatch(action, 'replace');
|
|
248
500
|
} catch (e) {
|
|
249
501
|
// Ignore any errors from deep linking.
|
|
250
502
|
// This could happen in case of malformed links, navigation object not being initialized etc.
|
|
@@ -257,36 +509,44 @@ export function useLinking(
|
|
|
257
509
|
);
|
|
258
510
|
}
|
|
259
511
|
} else {
|
|
260
|
-
|
|
512
|
+
resetRoot(state, 'replace');
|
|
261
513
|
}
|
|
262
514
|
} else {
|
|
263
|
-
|
|
515
|
+
resetRoot(state, 'replace');
|
|
264
516
|
}
|
|
265
517
|
} else {
|
|
266
518
|
// if current path didn't return any state, we should revert to initial state
|
|
267
|
-
|
|
519
|
+
resetRoot(state, 'replace');
|
|
268
520
|
}
|
|
269
521
|
});
|
|
270
522
|
}, [enabled, history, ref, validateRoutesNotExistInRootState]);
|
|
271
523
|
|
|
272
524
|
React.useEffect(() => {
|
|
273
|
-
if (!enabled) {
|
|
525
|
+
if (!enabled || !history) {
|
|
274
526
|
return;
|
|
275
527
|
}
|
|
276
528
|
|
|
277
529
|
const getPathForRoute = (
|
|
278
530
|
route: ReturnType<typeof findFocusedRoute>,
|
|
279
|
-
state: NavigationState
|
|
531
|
+
state: NavigationState | PartialState<NavigationState>
|
|
280
532
|
): string => {
|
|
281
533
|
let path;
|
|
282
534
|
|
|
283
535
|
// If the `route` object contains a `path`, use that path as long as `route.name` and `params` still match
|
|
284
536
|
// This makes sure that we preserve the original URL for wildcard routes
|
|
285
537
|
if (route?.path) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
538
|
+
let stateForPath: PartialState<NavigationState> | undefined;
|
|
539
|
+
|
|
540
|
+
try {
|
|
541
|
+
stateForPath = getStateFromPathRef.current(
|
|
542
|
+
route.path,
|
|
543
|
+
configRef.current
|
|
544
|
+
);
|
|
545
|
+
} catch (e) {
|
|
546
|
+
console.error(e);
|
|
547
|
+
|
|
548
|
+
stateForPath = undefined;
|
|
549
|
+
}
|
|
290
550
|
|
|
291
551
|
if (stateForPath) {
|
|
292
552
|
const focusedRoute = findFocusedRoute(stateForPath);
|
|
@@ -329,18 +589,21 @@ export function useLinking(
|
|
|
329
589
|
const state = ref.current.getRootState();
|
|
330
590
|
|
|
331
591
|
if (state) {
|
|
332
|
-
const
|
|
333
|
-
|
|
592
|
+
const stateForPath = getStateForPath(state, ref.current.getState());
|
|
593
|
+
|
|
594
|
+
const route = findFocusedRoute(stateForPath);
|
|
595
|
+
const path = getPathForRoute(route, stateForPath);
|
|
334
596
|
|
|
335
597
|
if (previousStateRef.current === undefined) {
|
|
336
598
|
previousStateRef.current = state;
|
|
337
599
|
}
|
|
338
600
|
|
|
339
601
|
history.replace({ path, state });
|
|
602
|
+
previousIndexRef.current = history.index;
|
|
340
603
|
}
|
|
341
604
|
}
|
|
342
605
|
|
|
343
|
-
const
|
|
606
|
+
const onUpdate = async () => {
|
|
344
607
|
const navigation = ref.current;
|
|
345
608
|
|
|
346
609
|
if (!navigation || !enabled) {
|
|
@@ -355,12 +618,20 @@ export function useLinking(
|
|
|
355
618
|
return;
|
|
356
619
|
}
|
|
357
620
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
621
|
+
// Skip if the state hasn't changed since we last synced it
|
|
622
|
+
if (previousState === state) {
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
const stateForPath = getStateForPath(state, navigation.getState());
|
|
627
|
+
|
|
628
|
+
const route = findFocusedRoute(stateForPath);
|
|
629
|
+
const path = getPathForRoute(route, stateForPath);
|
|
630
|
+
|
|
631
|
+
const pendingPopStateDelta = pendingPopStateDeltaRef.current;
|
|
361
632
|
|
|
362
633
|
previousStateRef.current = state;
|
|
363
|
-
|
|
634
|
+
pendingPopStateDeltaRef.current = undefined;
|
|
364
635
|
|
|
365
636
|
// To detect the kind of state change, we need to:
|
|
366
637
|
// - Find the common focused navigation state in previous and current state
|
|
@@ -374,13 +645,14 @@ export function useLinking(
|
|
|
374
645
|
if (
|
|
375
646
|
previousFocusedState &&
|
|
376
647
|
focusedState &&
|
|
377
|
-
//
|
|
378
|
-
|
|
379
|
-
path !== pendingPath
|
|
648
|
+
// If the delta from `popstate` is unknown, we can only replace
|
|
649
|
+
pendingPopStateDelta !== 'replace'
|
|
380
650
|
) {
|
|
381
651
|
const historyDelta =
|
|
382
652
|
getTotalHistoryLength(focusedState) -
|
|
383
|
-
getTotalHistoryLength(previousFocusedState)
|
|
653
|
+
getTotalHistoryLength(previousFocusedState) -
|
|
654
|
+
// Subtract the delta already applied by the browser to sync only the remaining changes
|
|
655
|
+
(pendingPopStateDelta ?? 0);
|
|
384
656
|
|
|
385
657
|
if (historyDelta > 0) {
|
|
386
658
|
// If history length is increased, we should pushState
|
|
@@ -422,12 +694,16 @@ export function useLinking(
|
|
|
422
694
|
// This would happen if the user did a reset/conditionally changed navigators
|
|
423
695
|
history.replace({ path, state });
|
|
424
696
|
}
|
|
697
|
+
|
|
698
|
+
previousIndexRef.current = history.index;
|
|
425
699
|
};
|
|
426
700
|
|
|
427
|
-
// We debounce
|
|
701
|
+
// We debounce onUpdate coz we don't want multiple state changes to be handled at one time
|
|
428
702
|
// This could happen since `history.go(n)` is asynchronous
|
|
429
703
|
// If `pushState` or `replaceState` were called before `history.go(n)` completes, it'll mess stuff up
|
|
430
|
-
|
|
704
|
+
const handleUpdate = series(onUpdate);
|
|
705
|
+
|
|
706
|
+
return ref.current?.addListener('state', handleUpdate);
|
|
431
707
|
}, [enabled, history, ref]);
|
|
432
708
|
|
|
433
709
|
return {
|
package/src/useLocale.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import { LocaleDirContext } from './LocaleDirContext';
|
|
|
6
6
|
* Hook to access the text direction specified in the `NavigationContainer`.
|
|
7
7
|
*/
|
|
8
8
|
export function useLocale() {
|
|
9
|
-
const direction = React.
|
|
9
|
+
const direction = React.use(LocaleDirContext);
|
|
10
10
|
|
|
11
11
|
if (direction === undefined) {
|
|
12
12
|
throw new Error(
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
export function useMemoArray<T>(
|
|
4
|
+
entries: [item: T, deps: readonly unknown[]][]
|
|
5
|
+
): T[] {
|
|
6
|
+
const previousRef = React.useRef<
|
|
7
|
+
| {
|
|
8
|
+
entries: { item: T; deps: readonly unknown[] }[];
|
|
9
|
+
items: T[];
|
|
10
|
+
}
|
|
11
|
+
| undefined
|
|
12
|
+
>(undefined);
|
|
13
|
+
|
|
14
|
+
const previous = previousRef.current;
|
|
15
|
+
const next = entries.map(([item, deps], index) => {
|
|
16
|
+
const previousEntry = previous?.entries[index];
|
|
17
|
+
const depsEqual =
|
|
18
|
+
previousEntry &&
|
|
19
|
+
previousEntry.deps.length === deps.length &&
|
|
20
|
+
previousEntry.deps.every((it, index) => Object.is(it, deps[index]));
|
|
21
|
+
|
|
22
|
+
return depsEqual ? previousEntry : { item, deps };
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
if (
|
|
26
|
+
previous &&
|
|
27
|
+
previous.entries.length === next.length &&
|
|
28
|
+
next.every((entry, index) => entry === previous.entries[index])
|
|
29
|
+
) {
|
|
30
|
+
return previous.items;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const items = next.map((entry) => entry.item);
|
|
34
|
+
|
|
35
|
+
previousRef.current = {
|
|
36
|
+
entries: next,
|
|
37
|
+
items,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return items;
|
|
41
|
+
}
|
package/src/useRoutePath.tsx
CHANGED
|
@@ -9,7 +9,7 @@ import { LinkingContext } from './LinkingContext';
|
|
|
9
9
|
* @returns Path for the current route.
|
|
10
10
|
*/
|
|
11
11
|
export function useRoutePath() {
|
|
12
|
-
const { options } = React.
|
|
12
|
+
const { options } = React.use(LinkingContext);
|
|
13
13
|
const state = useStateForPath();
|
|
14
14
|
|
|
15
15
|
if (state === undefined) {
|
package/src/useScrollToTop.tsx
CHANGED
|
@@ -51,7 +51,7 @@ function getScrollableNode(ref: React.RefObject<ScrollableWrapper>) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export function useScrollToTop(ref: React.RefObject<ScrollableWrapper>) {
|
|
54
|
-
const navigation = React.
|
|
54
|
+
const navigation = React.use(NavigationContext);
|
|
55
55
|
const route = useRoute();
|
|
56
56
|
|
|
57
57
|
if (navigation === undefined) {
|
|
@@ -91,9 +91,10 @@ export function useScrollToTop(ref: React.RefObject<ScrollableWrapper>) {
|
|
|
91
91
|
|
|
92
92
|
// In a nested stack navigator, tab press resets the stack to first screen
|
|
93
93
|
// So we should scroll to top only when we are on first screen
|
|
94
|
+
const firstRoute = navigation.getState().routes[0];
|
|
94
95
|
const isFirst =
|
|
95
96
|
tabNavigations.includes(navigation) ||
|
|
96
|
-
|
|
97
|
+
firstRoute?.key === route.key;
|
|
97
98
|
|
|
98
99
|
// Run the operation in the next frame so we're sure all listeners have been run
|
|
99
100
|
// This is necessary to know if preventDefault() has been called
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
o/classes
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
o/bundleLibRuntimeToDirDebug
|
|
Binary file
|