expo-router 5.0.2-preview.0 → 5.0.2-preview.1
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/build/ExpoRoot.js +18 -9
- package/build/ExpoRoot.js.map +1 -1
- package/build/LocationProvider.js +2 -3
- package/build/LocationProvider.js.map +1 -1
- package/build/Route.js +4 -4
- package/build/Route.js.map +1 -1
- package/build/doctor/index.js +1 -2
- package/build/doctor/index.js.map +1 -1
- package/build/exports.js +17 -7
- package/build/exports.js.map +1 -1
- package/build/fast-refresh.js.map +1 -1
- package/build/fork/NavigationContainer.d.ts +2 -7
- package/build/fork/NavigationContainer.d.ts.map +1 -1
- package/build/fork/NavigationContainer.js.map +1 -1
- package/build/fork/createMemoryHistory.d.ts.map +1 -1
- package/build/fork/createMemoryHistory.js +1 -2
- package/build/fork/createMemoryHistory.js.map +1 -1
- package/build/fork/extractPathFromURL.js +3 -4
- package/build/fork/extractPathFromURL.js.map +1 -1
- package/build/fork/findFocusedRoute.d.ts +1 -11
- package/build/fork/findFocusedRoute.d.ts.map +1 -1
- package/build/fork/findFocusedRoute.js +1 -2
- package/build/fork/findFocusedRoute.js.map +1 -1
- package/build/fork/getPathFromState-forks.d.ts.map +1 -1
- package/build/fork/getPathFromState-forks.js +24 -14
- package/build/fork/getPathFromState-forks.js.map +1 -1
- package/build/fork/getPathFromState.js +20 -11
- package/build/fork/getPathFromState.js.map +1 -1
- package/build/fork/getStateFromPath-forks.d.ts +4 -4
- package/build/fork/getStateFromPath-forks.d.ts.map +1 -1
- package/build/fork/getStateFromPath-forks.js +18 -19
- package/build/fork/getStateFromPath-forks.js.map +1 -1
- package/build/fork/getStateFromPath.js +18 -9
- package/build/fork/getStateFromPath.js.map +1 -1
- package/build/fork/native-stack/NativeStackView.js +1 -2
- package/build/fork/native-stack/NativeStackView.js.map +1 -1
- package/build/fork/native-stack/createNativeStackNavigator.js +18 -9
- package/build/fork/native-stack/createNativeStackNavigator.js.map +1 -1
- package/build/fork/useBackButton.d.ts +0 -1
- package/build/fork/useBackButton.d.ts.map +1 -1
- package/build/fork/useBackButton.js +1 -2
- package/build/fork/useBackButton.js.map +1 -1
- package/build/fork/useBackButton.native.js +18 -9
- package/build/fork/useBackButton.native.js.map +1 -1
- package/build/fork/useDocumentTitle.js +18 -9
- package/build/fork/useDocumentTitle.js.map +1 -1
- package/build/fork/useDocumentTitle.native.js +1 -2
- package/build/fork/useDocumentTitle.native.js.map +1 -1
- package/build/fork/useLinking.d.ts +3 -26
- package/build/fork/useLinking.d.ts.map +1 -1
- package/build/fork/useLinking.js +20 -10
- package/build/fork/useLinking.js.map +1 -1
- package/build/fork/useLinking.native.d.ts +6 -6
- package/build/fork/useLinking.native.js +19 -10
- package/build/fork/useLinking.native.js.map +1 -1
- package/build/fork/useThenable.js +18 -9
- package/build/fork/useThenable.js.map +1 -1
- package/build/fork/validatePathConfig.js +1 -1
- package/build/fork/validatePathConfig.js.map +1 -1
- package/build/getDevServer/index.js.map +1 -1
- package/build/getLinkingConfig.js +3 -3
- package/build/getLinkingConfig.js.map +1 -1
- package/build/getReactNavigationConfig.js +3 -4
- package/build/getReactNavigationConfig.js.map +1 -1
- package/build/getRoutes.js +3 -3
- package/build/getRoutes.js.map +1 -1
- package/build/getRoutesCore.js +6 -7
- package/build/getRoutesCore.js.map +1 -1
- package/build/getRoutesRedirects.d.ts +0 -1
- package/build/getRoutesRedirects.d.ts.map +1 -1
- package/build/getRoutesRedirects.js +3 -4
- package/build/getRoutesRedirects.js.map +1 -1
- package/build/getRoutesSSR.js +3 -3
- package/build/getRoutesSSR.js.map +1 -1
- package/build/getServerManifest.js +2 -3
- package/build/getServerManifest.js.map +1 -1
- package/build/global-state/routeInfo.js +18 -9
- package/build/global-state/routeInfo.js.map +1 -1
- package/build/global-state/router-store.d.ts +6 -6
- package/build/global-state/router-store.d.ts.map +1 -1
- package/build/global-state/router-store.js +22 -12
- package/build/global-state/router-store.js.map +1 -1
- package/build/global-state/routing.js +29 -20
- package/build/global-state/routing.js.map +1 -1
- package/build/global-state/serverLocationContext.d.ts +0 -1
- package/build/global-state/serverLocationContext.d.ts.map +1 -1
- package/build/global-state/sort-routes.js +1 -2
- package/build/global-state/sort-routes.js.map +1 -1
- package/build/head/ExpoHead.android.d.ts +1 -1
- package/build/head/ExpoHead.android.js +1 -2
- package/build/head/ExpoHead.android.js.map +1 -1
- package/build/head/ExpoHead.ios.js.map +1 -1
- package/build/head/ExpoHeadModule.js.map +1 -1
- package/build/head/url.js +2 -3
- package/build/head/url.js.map +1 -1
- package/build/hooks.js +11 -12
- package/build/hooks.js.map +1 -1
- package/build/layouts/DrawerClient.d.ts +16 -17
- package/build/layouts/DrawerClient.d.ts.map +1 -1
- package/build/layouts/RootModal.d.ts +1 -2
- package/build/layouts/RootModal.d.ts.map +1 -1
- package/build/layouts/RootModal.js +2 -2
- package/build/layouts/RootModal.js.map +1 -1
- package/build/layouts/StackClient.d.ts +16 -16
- package/build/layouts/StackClient.d.ts.map +1 -1
- package/build/layouts/StackClient.js.map +1 -1
- package/build/layouts/TabsClient.d.ts +12 -12
- package/build/layouts/TabsClient.js.map +1 -1
- package/build/layouts/withLayoutContext.d.ts +2 -2
- package/build/layouts/withLayoutContext.d.ts.map +1 -1
- package/build/layouts/withLayoutContext.js +19 -10
- package/build/layouts/withLayoutContext.js.map +1 -1
- package/build/link/Link.d.ts.map +1 -1
- package/build/link/Link.js +2 -2
- package/build/link/Link.js.map +1 -1
- package/build/link/href.d.ts.map +1 -1
- package/build/link/href.js +2 -2
- package/build/link/href.js.map +1 -1
- package/build/link/linking.d.ts.map +1 -1
- package/build/link/linking.js +21 -11
- package/build/link/linking.js.map +1 -1
- package/build/link/useDomComponentNavigation.js +6 -7
- package/build/link/useDomComponentNavigation.js.map +1 -1
- package/build/link/useLinkHooks.d.ts.map +1 -1
- package/build/link/useLinkHooks.js +2 -2
- package/build/link/useLinkHooks.js.map +1 -1
- package/build/link/useLinkToPathProps.d.ts.map +1 -1
- package/build/link/useLinkToPathProps.js +2 -3
- package/build/link/useLinkToPathProps.js.map +1 -1
- package/build/link/useLoadedNavigation.d.ts.map +1 -1
- package/build/link/useLoadedNavigation.js +2 -3
- package/build/link/useLoadedNavigation.js.map +1 -1
- package/build/loadStaticParamsAsync.js +3 -4
- package/build/loadStaticParamsAsync.js.map +1 -1
- package/build/matchers.js +14 -15
- package/build/matchers.js.map +1 -1
- package/build/onboard/Tutorial.js +1 -2
- package/build/onboard/Tutorial.js.map +1 -1
- package/build/onboard/createEntryFile.js +2 -3
- package/build/onboard/createEntryFile.js.map +1 -1
- package/build/qualified-entry.js +1 -2
- package/build/qualified-entry.js.map +1 -1
- package/build/renderRootComponent.js +18 -9
- package/build/renderRootComponent.js.map +1 -1
- package/build/routes-manifest.js +1 -2
- package/build/routes-manifest.js.map +1 -1
- package/build/rsc/entry.js +1 -2
- package/build/rsc/entry.js.map +1 -1
- package/build/rsc/exports.d.ts +0 -1
- package/build/rsc/exports.d.ts.map +1 -1
- package/build/rsc/exports.js +18 -18
- package/build/rsc/exports.js.map +1 -1
- package/build/rsc/middleware.js +2 -3
- package/build/rsc/middleware.js.map +1 -1
- package/build/rsc/path.d.ts.map +1 -1
- package/build/rsc/path.js.map +1 -1
- package/build/rsc/router/client.d.ts +7 -7
- package/build/rsc/router/client.d.ts.map +1 -1
- package/build/rsc/router/client.js +4 -4
- package/build/rsc/router/client.js.map +1 -1
- package/build/rsc/router/common.js +4 -4
- package/build/rsc/router/common.js.map +1 -1
- package/build/rsc/router/create-expo-pages.d.ts.map +1 -1
- package/build/rsc/router/create-expo-pages.js +1 -2
- package/build/rsc/router/create-expo-pages.js.map +1 -1
- package/build/rsc/router/create-pages.d.ts +1 -3
- package/build/rsc/router/create-pages.d.ts.map +1 -1
- package/build/rsc/router/create-pages.js +1 -2
- package/build/rsc/router/create-pages.js.map +1 -1
- package/build/rsc/router/defineRouter.js +2 -3
- package/build/rsc/router/defineRouter.js.map +1 -1
- package/build/rsc/router/errors.js.map +1 -1
- package/build/rsc/router/expo-definedRouter.d.ts +1 -1
- package/build/rsc/router/expo-definedRouter.js.map +1 -1
- package/build/rsc/router/fetch.js +1 -2
- package/build/rsc/router/fetch.js.map +1 -1
- package/build/rsc/router/host.d.ts +3 -3
- package/build/rsc/router/host.d.ts.map +1 -1
- package/build/rsc/router/host.js.map +1 -1
- package/build/rsc/router/noopRouter.d.ts +1 -1
- package/build/rsc/router/utils.d.ts.map +1 -1
- package/build/rsc/router/utils.js.map +1 -1
- package/build/rsc/rsc-renderer.js +1 -2
- package/build/rsc/rsc-renderer.js.map +1 -1
- package/build/rsc/server.d.ts.map +1 -1
- package/build/rsc/server.js +5 -5
- package/build/rsc/server.js.map +1 -1
- package/build/sortRoutes.d.ts.map +1 -1
- package/build/sortRoutes.js +2 -3
- package/build/sortRoutes.js.map +1 -1
- package/build/static/getRootComponent.js +1 -2
- package/build/static/getRootComponent.js.map +1 -1
- package/build/static/getServerManifest.js +2 -3
- package/build/static/getServerManifest.js.map +1 -1
- package/build/static/html.js +2 -3
- package/build/static/html.js.map +1 -1
- package/build/static/renderStaticContent.js +19 -9
- package/build/static/renderStaticContent.js.map +1 -1
- package/build/testing-library/context-stubs.d.ts +1 -2
- package/build/testing-library/context-stubs.d.ts.map +1 -1
- package/build/testing-library/context-stubs.js +3 -3
- package/build/testing-library/context-stubs.js.map +1 -1
- package/build/testing-library/index.d.ts.map +1 -1
- package/build/testing-library/index.js +2 -2
- package/build/testing-library/index.js.map +1 -1
- package/build/testing-library/mock-config.js +2 -3
- package/build/testing-library/mock-config.js.map +1 -1
- package/build/testing-library/mocks.js.map +1 -1
- package/build/testing-library/require-context-ponyfill.js +1 -1
- package/build/testing-library/require-context-ponyfill.js.map +1 -1
- package/build/typed-routes/generate.js +4 -5
- package/build/typed-routes/generate.js.map +1 -1
- package/build/typed-routes/index.d.ts.map +1 -1
- package/build/typed-routes/index.js +2 -2
- package/build/typed-routes/index.js.map +1 -1
- package/build/ui/Slot.d.ts +0 -1
- package/build/ui/Slot.d.ts.map +1 -1
- package/build/ui/TabContext.d.ts +47 -55
- package/build/ui/TabContext.d.ts.map +1 -1
- package/build/ui/TabList.js +2 -3
- package/build/ui/TabList.js.map +1 -1
- package/build/ui/TabRouter.d.ts +27 -27
- package/build/ui/TabRouter.d.ts.map +1 -1
- package/build/ui/TabRouter.js +18 -9
- package/build/ui/TabRouter.js.map +1 -1
- package/build/ui/TabSlot.js +4 -5
- package/build/ui/TabSlot.js.map +1 -1
- package/build/ui/TabTrigger.js +3 -4
- package/build/ui/TabTrigger.js.map +1 -1
- package/build/ui/Tabs.d.ts +73 -78
- package/build/ui/Tabs.d.ts.map +1 -1
- package/build/ui/Tabs.js +3 -4
- package/build/ui/Tabs.js.map +1 -1
- package/build/ui/common.d.ts +2 -3
- package/build/ui/common.d.ts.map +1 -1
- package/build/ui/common.js +3 -3
- package/build/ui/common.js.map +1 -1
- package/build/ui/useComponent.d.ts.map +1 -1
- package/build/ui/useComponent.js +1 -2
- package/build/ui/useComponent.js.map +1 -1
- package/build/useDeprecated.js +2 -3
- package/build/useDeprecated.js.map +1 -1
- package/build/useFocusEffect.js +18 -9
- package/build/useFocusEffect.js.map +1 -1
- package/build/useNavigation.js +1 -2
- package/build/useNavigation.js.map +1 -1
- package/build/useScreens.js +5 -6
- package/build/useScreens.js.map +1 -1
- package/build/utils/splash.js +5 -6
- package/build/utils/splash.js.map +1 -1
- package/build/utils/url.js +3 -4
- package/build/utils/url.js.map +1 -1
- package/build/views/EmptyRoute.js +1 -2
- package/build/views/EmptyRoute.js.map +1 -1
- package/build/views/ErrorBoundary.d.ts +0 -1
- package/build/views/ErrorBoundary.d.ts.map +1 -1
- package/build/views/ErrorBoundary.js +1 -2
- package/build/views/ErrorBoundary.js.map +1 -1
- package/build/views/Navigator.js +22 -12
- package/build/views/Navigator.js.map +1 -1
- package/build/views/Pressable.d.ts.map +1 -1
- package/build/views/Screen.js +1 -2
- package/build/views/Screen.js.map +1 -1
- package/build/views/Sitemap.js +2 -3
- package/build/views/Sitemap.js.map +1 -1
- package/build/views/SuspenseFallback.js +1 -2
- package/build/views/SuspenseFallback.js.map +1 -1
- package/build/views/Toast.js +3 -3
- package/build/views/Toast.js.map +1 -1
- package/build/views/Try.js +17 -7
- package/build/views/Try.js.map +1 -1
- package/build/views/Unmatched.js +1 -2
- package/build/views/Unmatched.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findFocusedRoute.d.ts","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY
|
|
1
|
+
{"version":3,"file":"findFocusedRoute.d.ts","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY;;eAUnD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Forked so we can access without importing any React Native code in Node.js environments.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.findFocusedRoute =
|
|
4
|
+
exports.findFocusedRoute = findFocusedRoute;
|
|
5
5
|
function findFocusedRoute(state) {
|
|
6
6
|
let current = state;
|
|
7
7
|
while (current?.routes[current.index ?? 0].state != null) {
|
|
@@ -10,5 +10,4 @@ function findFocusedRoute(state) {
|
|
|
10
10
|
const route = current?.routes[current?.index ?? 0];
|
|
11
11
|
return route;
|
|
12
12
|
}
|
|
13
|
-
exports.findFocusedRoute = findFocusedRoute;
|
|
14
13
|
//# sourceMappingURL=findFocusedRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findFocusedRoute.js","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":";AAAA,2FAA2F
|
|
1
|
+
{"version":3,"file":"findFocusedRoute.js","sourceRoot":"","sources":["../../src/fork/findFocusedRoute.tsx"],"names":[],"mappings":";AAAA,2FAA2F;;AAI3F,4CAUC;AAVD,SAAgB,gBAAgB,CAAC,KAAmB;IAClD,IAAI,OAAO,GAA6B,KAAK,CAAC;IAE9C,OAAO,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACzD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["// Forked so we can access without importing any React Native code in Node.js environments.\n\nimport type { InitialState } from '@react-navigation/routers';\n\nexport function findFocusedRoute(state: InitialState) {\n let current: InitialState | undefined = state;\n\n while (current?.routes[current.index ?? 0].state != null) {\n current = current.routes[current.index ?? 0].state;\n }\n\n const route = current?.routes[current?.index ?? 0];\n\n return route;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathFromState-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,MAAM,MAAM,WAAW,GAAG;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,MAAM,EAAE,EAC3D,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,GAAG,OAAO,EACX,EAAE,OAAO,CAAC,SAAS,CAAC,QAEpB;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,EACD,SAAS,CAAC,EAAE,eAAe;;EA0B5B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAarD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UASxD;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,OAAO,EACP,KAAK,EACL,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,sBAA6B,EAC7B,gBAAgB,GACjB,EAAE,WAAW,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,UAkEA;AAED,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"getPathFromState-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,MAAM,MAAM,WAAW,GAAG;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,MAAM,EAAE,EAC3D,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,GAAG,OAAO,EACX,EAAE,OAAO,CAAC,SAAS,CAAC,QAEpB;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,EACD,SAAS,CAAC,EAAE,eAAe;;EA0B5B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UAarD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UASxD;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,OAAO,EACP,KAAK,EACL,MAAM,EACN,cAAc,EACd,qBAAqB,EACrB,sBAA6B,EAC7B,gBAAgB,GACjB,EAAE,WAAW,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,UAkEA;AAED,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,WAAoD,CAAC;AAEjG,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC"}
|
|
@@ -15,22 +15,37 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
36
|
+
exports.getParamName = void 0;
|
|
37
|
+
exports.validatePathConfig = validatePathConfig;
|
|
38
|
+
exports.fixCurrentParams = fixCurrentParams;
|
|
39
|
+
exports.appendQueryAndHash = appendQueryAndHash;
|
|
40
|
+
exports.appendBaseUrl = appendBaseUrl;
|
|
41
|
+
exports.getPathWithConventionsCollapsed = getPathWithConventionsCollapsed;
|
|
42
|
+
exports.isDynamicPart = isDynamicPart;
|
|
27
43
|
const native_1 = require("@react-navigation/native");
|
|
28
44
|
const queryString = __importStar(require("query-string"));
|
|
29
45
|
const matchers_1 = require("../matchers");
|
|
30
46
|
function validatePathConfig({ preserveDynamicRoutes, preserveGroups, shouldEncodeURISegment, ...options }) {
|
|
31
47
|
(0, native_1.validatePathConfig)(options);
|
|
32
48
|
}
|
|
33
|
-
exports.validatePathConfig = validatePathConfig;
|
|
34
49
|
function fixCurrentParams(allParams, route, stringify) {
|
|
35
50
|
// Better handle array params
|
|
36
51
|
const currentParams = Object.fromEntries(Object.entries(route.params).flatMap(([key, value]) => {
|
|
@@ -52,7 +67,6 @@ function fixCurrentParams(allParams, route, stringify) {
|
|
|
52
67
|
Object.assign(allParams, currentParams);
|
|
53
68
|
return currentParams;
|
|
54
69
|
}
|
|
55
|
-
exports.fixCurrentParams = fixCurrentParams;
|
|
56
70
|
function appendQueryAndHash(path, { '#': hash, ...focusedParams }) {
|
|
57
71
|
const query = queryString.stringify(focusedParams, { sort: false });
|
|
58
72
|
if (query) {
|
|
@@ -63,7 +77,6 @@ function appendQueryAndHash(path, { '#': hash, ...focusedParams }) {
|
|
|
63
77
|
}
|
|
64
78
|
return path;
|
|
65
79
|
}
|
|
66
|
-
exports.appendQueryAndHash = appendQueryAndHash;
|
|
67
80
|
function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
|
|
68
81
|
if (process.env.NODE_ENV !== 'development') {
|
|
69
82
|
if (baseUrl) {
|
|
@@ -72,7 +85,6 @@ function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
|
|
|
72
85
|
}
|
|
73
86
|
return path;
|
|
74
87
|
}
|
|
75
|
-
exports.appendBaseUrl = appendBaseUrl;
|
|
76
88
|
function getPathWithConventionsCollapsed({ pattern, route, params, preserveGroups, preserveDynamicRoutes, shouldEncodeURISegment = true, initialRouteName, }) {
|
|
77
89
|
const segments = pattern.split('/');
|
|
78
90
|
return segments
|
|
@@ -138,13 +150,11 @@ function getPathWithConventionsCollapsed({ pattern, route, params, preserveGroup
|
|
|
138
150
|
.map((v) => v ?? '')
|
|
139
151
|
.join('/');
|
|
140
152
|
}
|
|
141
|
-
exports.getPathWithConventionsCollapsed = getPathWithConventionsCollapsed;
|
|
142
153
|
const getParamName = (pattern) => pattern.replace(/^[:*]/, '').replace(/\?$/, '');
|
|
143
154
|
exports.getParamName = getParamName;
|
|
144
155
|
function isDynamicPart(p) {
|
|
145
156
|
return p.startsWith(':') || p.startsWith('*');
|
|
146
157
|
}
|
|
147
|
-
exports.isDynamicPart = isDynamicPart;
|
|
148
158
|
function segmentMatchesConvention(segment) {
|
|
149
159
|
return (segment === 'index' ||
|
|
150
160
|
(0, matchers_1.matchDynamicName)(segment) != null ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathFromState-forks.js","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"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","sourcesContent":["import { validatePathConfig as RNValidatePathConfig, type Route } from '@react-navigation/native';\nimport * as queryString from 'query-string';\n\nimport type { Options, State, StringifyConfig } from './getPathFromState';\nimport { matchDeepDynamicRouteName, matchDynamicName, matchGroupName } from '../matchers';\n\nexport type ExpoOptions = {\n preserveDynamicRoutes?: boolean;\n preserveGroups?: boolean;\n shouldEncodeURISegment?: boolean;\n};\n\nexport type ExpoConfigItem = {\n // Used as fallback for groups\n initialRouteName?: string;\n};\n\nexport function validatePathConfig<ParamList extends object>({\n preserveDynamicRoutes,\n preserveGroups,\n shouldEncodeURISegment,\n ...options\n}: Options<ParamList>) {\n RNValidatePathConfig(options);\n}\n\nexport function fixCurrentParams(\n allParams: Record<string, any>,\n route: Route<string> & {\n state?: State;\n },\n stringify?: StringifyConfig\n) {\n // Better handle array params\n const currentParams = Object.fromEntries(\n Object.entries(route.params!).flatMap(([key, value]) => {\n if (key === 'screen' || key === 'params') {\n return [];\n }\n\n return [\n [\n key,\n stringify?.[key]\n ? stringify[key](value)\n : Array.isArray(value)\n ? value.map(String)\n : String(value),\n ],\n ];\n })\n );\n\n // We always assign params, as non pattern routes may still have query params\n Object.assign(allParams, currentParams);\n\n return currentParams;\n}\n\nexport function appendQueryAndHash(\n path: string,\n { '#': hash, ...focusedParams }: Record<string, any>\n) {\n const query = queryString.stringify(focusedParams, { sort: false });\n\n if (query) {\n path += `?${query}`;\n }\n\n if (hash) {\n path += `#${hash}`;\n }\n\n return path;\n}\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n\n return path;\n}\n\nexport function getPathWithConventionsCollapsed({\n pattern,\n route,\n params,\n preserveGroups,\n preserveDynamicRoutes,\n shouldEncodeURISegment = true,\n initialRouteName,\n}: ExpoOptions & {\n pattern: string;\n route: Route<any>;\n params: Record<string, any>;\n initialRouteName?: string;\n}) {\n const segments = pattern.split('/');\n\n return segments\n .map((p, i) => {\n const name = getParamName(p);\n\n // Showing the route name seems ok, though whatever we show here will be incorrect\n // Since the page doesn't actually exist\n if (p.startsWith('*')) {\n if (preserveDynamicRoutes) {\n if (name === 'not-found') {\n return '+not-found';\n }\n\n return `[...${name}]`;\n } else if (params[name]) {\n if (Array.isArray(params[name])) {\n return params[name].join('/');\n }\n return params[name];\n } else if (route.name.startsWith('[') && route.name.endsWith(']')) {\n return '';\n } else if (p === '*not-found') {\n return '';\n } else {\n return route.name;\n }\n }\n\n // If the path has a pattern for a param, put the param in the path\n if (p.startsWith(':')) {\n if (preserveDynamicRoutes) {\n return `[${name}]`;\n }\n // Optional params without value assigned in route.params should be ignored\n const value = params[name];\n if (value === undefined && p.endsWith('?')) {\n return;\n }\n\n return (shouldEncodeURISegment ? encodeURISegment(value) : value) ?? 'undefined';\n }\n\n if (!preserveGroups && matchGroupName(p) != null) {\n // When the last part is a group it could be a shared URL\n // if the route has an initialRouteName defined, then we should\n // use that as the component path as we can assume it will be shown.\n if (segments.length - 1 === i) {\n if (initialRouteName) {\n // Return an empty string if the init route is ambiguous.\n if (segmentMatchesConvention(initialRouteName)) {\n return '';\n }\n return shouldEncodeURISegment\n ? encodeURISegment(initialRouteName, { preserveBrackets: true })\n : initialRouteName;\n }\n }\n return '';\n }\n // Preserve dynamic syntax for rehydration\n return shouldEncodeURISegment ? encodeURISegment(p, { preserveBrackets: true }) : p;\n })\n .map((v) => v ?? '')\n .join('/');\n}\n\nexport const getParamName = (pattern: string) => pattern.replace(/^[:*]/, '').replace(/\\?$/, '');\n\nexport function isDynamicPart(p: string) {\n return p.startsWith(':') || p.startsWith('*');\n}\n\nfunction segmentMatchesConvention(segment: string): boolean {\n return (\n segment === 'index' ||\n matchDynamicName(segment) != null ||\n matchGroupName(segment) != null ||\n matchDeepDynamicRouteName(segment) != null\n );\n}\n\nfunction encodeURISegment(str: string, { preserveBrackets = false } = {}) {\n // Valid characters according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n str = String(str).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) => encodeURIComponent(char));\n\n if (preserveBrackets) {\n // Preserve brackets\n str = str.replace(/%5B/g, '[').replace(/%5D/g, ']');\n }\n return str;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"getPathFromState-forks.js","sourceRoot":"","sources":["../../src/fork/getPathFromState-forks.ts"],"names":[],"mappings":"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","sourcesContent":["import { validatePathConfig as RNValidatePathConfig, type Route } from '@react-navigation/native';\nimport * as queryString from 'query-string';\n\nimport type { Options, State, StringifyConfig } from './getPathFromState';\nimport { matchDeepDynamicRouteName, matchDynamicName, matchGroupName } from '../matchers';\n\nexport type ExpoOptions = {\n preserveDynamicRoutes?: boolean;\n preserveGroups?: boolean;\n shouldEncodeURISegment?: boolean;\n};\n\nexport type ExpoConfigItem = {\n // Used as fallback for groups\n initialRouteName?: string;\n};\n\nexport function validatePathConfig<ParamList extends object>({\n preserveDynamicRoutes,\n preserveGroups,\n shouldEncodeURISegment,\n ...options\n}: Options<ParamList>) {\n RNValidatePathConfig(options);\n}\n\nexport function fixCurrentParams(\n allParams: Record<string, any>,\n route: Route<string> & {\n state?: State;\n },\n stringify?: StringifyConfig\n) {\n // Better handle array params\n const currentParams = Object.fromEntries(\n Object.entries(route.params!).flatMap(([key, value]) => {\n if (key === 'screen' || key === 'params') {\n return [];\n }\n\n return [\n [\n key,\n stringify?.[key]\n ? stringify[key](value)\n : Array.isArray(value)\n ? value.map(String)\n : String(value),\n ],\n ];\n })\n );\n\n // We always assign params, as non pattern routes may still have query params\n Object.assign(allParams, currentParams);\n\n return currentParams;\n}\n\nexport function appendQueryAndHash(\n path: string,\n { '#': hash, ...focusedParams }: Record<string, any>\n) {\n const query = queryString.stringify(focusedParams, { sort: false });\n\n if (query) {\n path += `?${query}`;\n }\n\n if (hash) {\n path += `#${hash}`;\n }\n\n return path;\n}\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n\n return path;\n}\n\nexport function getPathWithConventionsCollapsed({\n pattern,\n route,\n params,\n preserveGroups,\n preserveDynamicRoutes,\n shouldEncodeURISegment = true,\n initialRouteName,\n}: ExpoOptions & {\n pattern: string;\n route: Route<any>;\n params: Record<string, any>;\n initialRouteName?: string;\n}) {\n const segments = pattern.split('/');\n\n return segments\n .map((p, i) => {\n const name = getParamName(p);\n\n // Showing the route name seems ok, though whatever we show here will be incorrect\n // Since the page doesn't actually exist\n if (p.startsWith('*')) {\n if (preserveDynamicRoutes) {\n if (name === 'not-found') {\n return '+not-found';\n }\n\n return `[...${name}]`;\n } else if (params[name]) {\n if (Array.isArray(params[name])) {\n return params[name].join('/');\n }\n return params[name];\n } else if (route.name.startsWith('[') && route.name.endsWith(']')) {\n return '';\n } else if (p === '*not-found') {\n return '';\n } else {\n return route.name;\n }\n }\n\n // If the path has a pattern for a param, put the param in the path\n if (p.startsWith(':')) {\n if (preserveDynamicRoutes) {\n return `[${name}]`;\n }\n // Optional params without value assigned in route.params should be ignored\n const value = params[name];\n if (value === undefined && p.endsWith('?')) {\n return;\n }\n\n return (shouldEncodeURISegment ? encodeURISegment(value) : value) ?? 'undefined';\n }\n\n if (!preserveGroups && matchGroupName(p) != null) {\n // When the last part is a group it could be a shared URL\n // if the route has an initialRouteName defined, then we should\n // use that as the component path as we can assume it will be shown.\n if (segments.length - 1 === i) {\n if (initialRouteName) {\n // Return an empty string if the init route is ambiguous.\n if (segmentMatchesConvention(initialRouteName)) {\n return '';\n }\n return shouldEncodeURISegment\n ? encodeURISegment(initialRouteName, { preserveBrackets: true })\n : initialRouteName;\n }\n }\n return '';\n }\n // Preserve dynamic syntax for rehydration\n return shouldEncodeURISegment ? encodeURISegment(p, { preserveBrackets: true }) : p;\n })\n .map((v) => v ?? '')\n .join('/');\n}\n\nexport const getParamName = (pattern: string) => pattern.replace(/^[:*]/, '').replace(/\\?$/, '');\n\nexport function isDynamicPart(p: string) {\n return p.startsWith(':') || p.startsWith('*');\n}\n\nfunction segmentMatchesConvention(segment: string): boolean {\n return (\n segment === 'index' ||\n matchDynamicName(segment) != null ||\n matchGroupName(segment) != null ||\n matchDeepDynamicRouteName(segment) != null\n );\n}\n\nfunction encodeURISegment(str: string, { preserveBrackets = false } = {}) {\n // Valid characters according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n str = String(str).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) => encodeURIComponent(char));\n\n if (preserveBrackets) {\n // Preserve brackets\n str = str.replace(/%5B/g, '[').replace(/%5D/g, ']');\n }\n return str;\n}\n"]}
|
|
@@ -15,15 +15,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
36
|
+
exports.getPathFromState = getPathFromState;
|
|
37
|
+
exports.getPathDataFromState = getPathDataFromState;
|
|
38
|
+
exports.appendBaseUrl = appendBaseUrl;
|
|
27
39
|
const queryString = __importStar(require("query-string"));
|
|
28
40
|
const expo = __importStar(require("./getPathFromState-forks"));
|
|
29
41
|
// END FORK
|
|
@@ -72,7 +84,6 @@ let cachedNormalizedConfigs = [
|
|
|
72
84
|
function getPathFromState(state, options) {
|
|
73
85
|
return getPathDataFromState(state, options).path;
|
|
74
86
|
}
|
|
75
|
-
exports.getPathFromState = getPathFromState;
|
|
76
87
|
function getPathDataFromState(state, options) {
|
|
77
88
|
if (state == null) {
|
|
78
89
|
throw Error("Got 'undefined' for the navigation state. You must pass a valid state object.");
|
|
@@ -283,7 +294,6 @@ function getPathDataFromState(state, options) {
|
|
|
283
294
|
return { path, params: allParams };
|
|
284
295
|
// END FORK
|
|
285
296
|
}
|
|
286
|
-
exports.getPathDataFromState = getPathDataFromState;
|
|
287
297
|
// const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\?$/, '');
|
|
288
298
|
const joinPaths = (...paths) => []
|
|
289
299
|
.concat(...paths.map((p) => p.split('/')))
|
|
@@ -321,5 +331,4 @@ function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
|
|
|
321
331
|
}
|
|
322
332
|
return path;
|
|
323
333
|
}
|
|
324
|
-
exports.appendBaseUrl = appendBaseUrl;
|
|
325
334
|
//# sourceMappingURL=getPathFromState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathFromState.js","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"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","sourcesContent":["import { PathConfig, PathConfigMap } from '@react-navigation/native';\nimport type { NavigationState, PartialState, Route } from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport * as expo from './getPathFromState-forks';\nimport type { ExpoConfigItem, ExpoOptions } from './getPathFromState-forks';\n\n// START FORK\nexport type Options<ParamList extends object> = ExpoOptions & {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n// END FORK\n\nexport type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\nexport type StringifyConfig = Record<string, (value: any) => string>;\n\n// START FORK\ntype ConfigItem = ExpoConfigItem & {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\n// END FORK\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n const route =\n typeof state.index === 'number'\n ? state.routes[state.index]\n : state.routes[state.routes.length - 1];\n\n if (route.state) {\n return getActiveRoute(route.state);\n }\n\n return route;\n};\n\nlet cachedNormalizedConfigs: [PathConfigMap<object> | undefined, Record<string, ConfigItem>] = [\n undefined,\n {},\n];\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n * {\n * routes: [\n * {\n * name: 'Chat',\n * params: { author: 'Jane', id: 42 },\n * },\n * ],\n * },\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * stringify: { author: author => author.toLowerCase() }\n * }\n * }\n * }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n): string {\n return getPathDataFromState(state, options).path;\n}\n\nexport function getPathDataFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n) {\n if (state == null) {\n throw Error(\"Got 'undefined' for the navigation state. You must pass a valid state object.\");\n }\n\n if (options) {\n // START FORK\n expo.validatePathConfig(options);\n // validatePathConfig(options);\n // END FORK\n }\n\n // Create a normalized configs object which will be easier to use\n if (cachedNormalizedConfigs[0] !== options?.screens) {\n cachedNormalizedConfigs = [\n options?.screens,\n options?.screens ? createNormalizedConfigs(options.screens) : {},\n ];\n }\n const configs: Record<string, ConfigItem> = cachedNormalizedConfigs[1];\n\n let path = '/';\n let current: State | undefined = state;\n\n const allParams: Record<string, any> = {};\n\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index] as Route<string> & {\n state?: State;\n };\n\n let pattern: string | undefined;\n\n let focusedParams: Record<string, any> | undefined;\n const focusedRoute = getActiveRoute(state);\n let currentOptions = configs;\n\n // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames: string[] = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.stringify;\n\n // START FORK\n // This mutates allParams\n const currentParams = expo.fixCurrentParams(allParams, route, stringify);\n\n // const currentParams = Object.fromEntries(\n // Object.entries(route.params).map(([key, value]) => [\n // key,\n // stringify?.[key] ? stringify[key](value) : String(value),\n // ])\n // );\n\n // if (pattern) {\n // Object.assign(allParams, currentParams);\n // }\n // END FORK\n\n if (focusedRoute === route) {\n // If this is the focused route, keep the params for later use\n // We save it here since it's been stringified already\n focusedParams = { ...currentParams };\n\n pattern\n ?.split('/')\n .filter((p) => expo.isDynamicPart(p))\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n const name = expo.getParamName(p);\n\n // Remove the params present in the pattern since we'll only use the rest for query string\n if (focusedParams) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[name];\n }\n });\n }\n }\n\n // If there is no `screens` property or no nested state, we return pattern\n if (!currentOptions[route.name].screens || route.state === undefined) {\n // START FORK\n // Expo Router allows you to navigate to a (group) and not specify a target screen\n // This is different from React Navigation, which requires a target screen\n // We need to handle this case here, by selecting either the index screen or the first screen of the group\n\n // IMPORTANT: This does not affect groups that use _layout files with initialRouteNames\n // Layout files create a new route config. This only affects groups without layouts that have their screens\n // hoisted.\n\n // Example:\n // - /home/_layout\n // - /home/(a|b|c)/index --> Hoisted to /home/_layout navigator\n // - /home/(a|b|c)/other --> Hoisted to /home/_layout navigator\n // - /home/(profile)/me --> Hoisted to /home/_layout navigator\n //\n // route.push('/home/(a)') --> This should navigate to /home/(a)/index\n // route.push('/home/(profile)') --> This should navigate to /home/(profile)/me\n const screens = currentOptions[route.name].screens;\n\n // Determine what screen the user wants to navigate to. If no screen is specified, assume there is an index screen\n // In the examples above, this ensures that /home/(a) navigates to /home/(a)/index\n const targetScreen =\n // This is typed as unknown, so we need to add these extra assertions\n route.params && 'screen' in route.params && typeof route.params.screen === 'string'\n ? route.params.screen\n : 'index';\n\n // If the target screen is not in the screens object, default to the first screen\n // In the examples above, this ensures that /home/(profile) navigates to /home/(profile)/me\n // As there is no index screen in the group\n const screen = screens\n ? screens[targetScreen]\n ? targetScreen\n : Object.keys(screens)[0]\n : undefined;\n\n if (screen && screens && currentOptions[route.name].screens?.[screen]) {\n route = { ...screens[screen], name: screen, key: screen };\n currentOptions = screens;\n } else {\n hasNext = false;\n }\n // hasNext = false;\n // END FORK\n } else {\n index =\n typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n\n // if there is config for next route name, we go deeper\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute as Route<string> & { state?: State };\n currentOptions = nestedConfig;\n } else {\n // If not, there is no sense in going deeper in config\n hasNext = false;\n }\n }\n }\n\n if (pattern === undefined) {\n pattern = nestedRouteNames.join('/');\n }\n\n if (currentOptions[route.name] !== undefined) {\n // START FORK\n path += expo.getPathWithConventionsCollapsed({\n ...options,\n pattern,\n route,\n params: allParams,\n initialRouteName: configs[route.name]?.initialRouteName,\n });\n // path += pattern\n // .split('/')\n // .map((p) => {\n // const name = getParamName(p);\n\n // // We don't know what to show for wildcard patterns\n // // Showing the route name seems ok, though whatever we show here will be incorrect\n // // Since the page doesn't actually exist\n // if (p === '*') {\n // return route.name;\n // }\n\n // // If the path has a pattern for a param, put the param in the path\n // if (p.startsWith(':')) {\n // const value = allParams[name];\n\n // if (value === undefined && p.endsWith('?')) {\n // // Optional params without value assigned in route.params should be ignored\n // return '';\n // }\n\n // // Valid characters according to\n // // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n // return String(value).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) =>\n // encodeURIComponent(char)\n // );\n // }\n\n // return encodeURIComponent(p);\n // })\n // .join('/');\n // } else {\n } else if (!route.name.startsWith('+')) {\n path += encodeURIComponent(route.name);\n }\n // END FORK\n\n if (!focusedParams) {\n focusedParams = focusedRoute.params;\n }\n\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (const param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n\n // START FORK\n delete focusedParams['#'];\n // END FORK\n\n const query = queryString.stringify(focusedParams, { sort: false });\n if (query) {\n path += `?${query}`;\n }\n }\n\n current = route.state;\n }\n\n // Remove multiple as well as trailing slashes\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n // Include the root path if specified\n if (options?.path) {\n path = joinPaths(options.path, path);\n }\n\n // START FORK\n path = expo.appendBaseUrl(path);\n if (allParams['#']) {\n path += `#${allParams['#']}`;\n }\n // END FORK\n\n // START FORK\n return { path, params: allParams };\n // END FORK\n}\n\n// const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\\?$/, '');\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst createConfigItem = (\n config: PathConfig<object> | string,\n parentPattern?: string\n): ConfigItem => {\n if (typeof config === 'string') {\n // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n return { pattern };\n }\n\n if (config.exact && config.path === undefined) {\n throw new Error(\n \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n );\n }\n\n // If an object is specified as the value (e.g. Foo: { ... }),\n // It can have `path` property and `screens` prop which has nested configs\n const pattern =\n config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';\n\n const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;\n\n return {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern: pattern?.split('/').filter(Boolean).join('/'),\n stringify: config.stringify,\n screens,\n };\n};\n\nconst createNormalizedConfigs = (\n options: PathConfigMap<object>,\n pattern?: string\n): Record<string, ConfigItem> =>\n Object.fromEntries(\n Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, pattern);\n\n return [name, result];\n })\n );\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n return path;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"getPathFromState.js","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"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","sourcesContent":["import { PathConfig, PathConfigMap } from '@react-navigation/native';\nimport type { NavigationState, PartialState, Route } from '@react-navigation/routers';\nimport * as queryString from 'query-string';\n\nimport * as expo from './getPathFromState-forks';\nimport type { ExpoConfigItem, ExpoOptions } from './getPathFromState-forks';\n\n// START FORK\nexport type Options<ParamList extends object> = ExpoOptions & {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n// END FORK\n\nexport type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;\n\nexport type StringifyConfig = Record<string, (value: any) => string>;\n\n// START FORK\ntype ConfigItem = ExpoConfigItem & {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\n// END FORK\n\nconst getActiveRoute = (state: State): { name: string; params?: object } => {\n const route =\n typeof state.index === 'number'\n ? state.routes[state.index]\n : state.routes[state.routes.length - 1];\n\n if (route.state) {\n return getActiveRoute(route.state);\n }\n\n return route;\n};\n\nlet cachedNormalizedConfigs: [PathConfigMap<object> | undefined, Record<string, ConfigItem>] = [\n undefined,\n {},\n];\n\n/**\n * Utility to serialize a navigation state object to a path string.\n *\n * @example\n * ```js\n * getPathFromState(\n * {\n * routes: [\n * {\n * name: 'Chat',\n * params: { author: 'Jane', id: 42 },\n * },\n * ],\n * },\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * stringify: { author: author => author.toLowerCase() }\n * }\n * }\n * }\n * )\n * ```\n *\n * @param state Navigation state to serialize.\n * @param options Extra options to fine-tune how to serialize the path.\n * @returns Path representing the state, e.g. /foo/bar?count=42.\n */\nexport function getPathFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n): string {\n return getPathDataFromState(state, options).path;\n}\n\nexport function getPathDataFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n) {\n if (state == null) {\n throw Error(\"Got 'undefined' for the navigation state. You must pass a valid state object.\");\n }\n\n if (options) {\n // START FORK\n expo.validatePathConfig(options);\n // validatePathConfig(options);\n // END FORK\n }\n\n // Create a normalized configs object which will be easier to use\n if (cachedNormalizedConfigs[0] !== options?.screens) {\n cachedNormalizedConfigs = [\n options?.screens,\n options?.screens ? createNormalizedConfigs(options.screens) : {},\n ];\n }\n const configs: Record<string, ConfigItem> = cachedNormalizedConfigs[1];\n\n let path = '/';\n let current: State | undefined = state;\n\n const allParams: Record<string, any> = {};\n\n while (current) {\n let index = typeof current.index === 'number' ? current.index : 0;\n let route = current.routes[index] as Route<string> & {\n state?: State;\n };\n\n let pattern: string | undefined;\n\n let focusedParams: Record<string, any> | undefined;\n const focusedRoute = getActiveRoute(state);\n let currentOptions = configs;\n\n // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames: string[] = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.stringify;\n\n // START FORK\n // This mutates allParams\n const currentParams = expo.fixCurrentParams(allParams, route, stringify);\n\n // const currentParams = Object.fromEntries(\n // Object.entries(route.params).map(([key, value]) => [\n // key,\n // stringify?.[key] ? stringify[key](value) : String(value),\n // ])\n // );\n\n // if (pattern) {\n // Object.assign(allParams, currentParams);\n // }\n // END FORK\n\n if (focusedRoute === route) {\n // If this is the focused route, keep the params for later use\n // We save it here since it's been stringified already\n focusedParams = { ...currentParams };\n\n pattern\n ?.split('/')\n .filter((p) => expo.isDynamicPart(p))\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n const name = expo.getParamName(p);\n\n // Remove the params present in the pattern since we'll only use the rest for query string\n if (focusedParams) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[name];\n }\n });\n }\n }\n\n // If there is no `screens` property or no nested state, we return pattern\n if (!currentOptions[route.name].screens || route.state === undefined) {\n // START FORK\n // Expo Router allows you to navigate to a (group) and not specify a target screen\n // This is different from React Navigation, which requires a target screen\n // We need to handle this case here, by selecting either the index screen or the first screen of the group\n\n // IMPORTANT: This does not affect groups that use _layout files with initialRouteNames\n // Layout files create a new route config. This only affects groups without layouts that have their screens\n // hoisted.\n\n // Example:\n // - /home/_layout\n // - /home/(a|b|c)/index --> Hoisted to /home/_layout navigator\n // - /home/(a|b|c)/other --> Hoisted to /home/_layout navigator\n // - /home/(profile)/me --> Hoisted to /home/_layout navigator\n //\n // route.push('/home/(a)') --> This should navigate to /home/(a)/index\n // route.push('/home/(profile)') --> This should navigate to /home/(profile)/me\n const screens = currentOptions[route.name].screens;\n\n // Determine what screen the user wants to navigate to. If no screen is specified, assume there is an index screen\n // In the examples above, this ensures that /home/(a) navigates to /home/(a)/index\n const targetScreen =\n // This is typed as unknown, so we need to add these extra assertions\n route.params && 'screen' in route.params && typeof route.params.screen === 'string'\n ? route.params.screen\n : 'index';\n\n // If the target screen is not in the screens object, default to the first screen\n // In the examples above, this ensures that /home/(profile) navigates to /home/(profile)/me\n // As there is no index screen in the group\n const screen = screens\n ? screens[targetScreen]\n ? targetScreen\n : Object.keys(screens)[0]\n : undefined;\n\n if (screen && screens && currentOptions[route.name].screens?.[screen]) {\n route = { ...screens[screen], name: screen, key: screen };\n currentOptions = screens;\n } else {\n hasNext = false;\n }\n // hasNext = false;\n // END FORK\n } else {\n index =\n typeof route.state.index === 'number' ? route.state.index : route.state.routes.length - 1;\n\n const nextRoute = route.state.routes[index];\n const nestedConfig = currentOptions[route.name].screens;\n\n // if there is config for next route name, we go deeper\n if (nestedConfig && nextRoute.name in nestedConfig) {\n route = nextRoute as Route<string> & { state?: State };\n currentOptions = nestedConfig;\n } else {\n // If not, there is no sense in going deeper in config\n hasNext = false;\n }\n }\n }\n\n if (pattern === undefined) {\n pattern = nestedRouteNames.join('/');\n }\n\n if (currentOptions[route.name] !== undefined) {\n // START FORK\n path += expo.getPathWithConventionsCollapsed({\n ...options,\n pattern,\n route,\n params: allParams,\n initialRouteName: configs[route.name]?.initialRouteName,\n });\n // path += pattern\n // .split('/')\n // .map((p) => {\n // const name = getParamName(p);\n\n // // We don't know what to show for wildcard patterns\n // // Showing the route name seems ok, though whatever we show here will be incorrect\n // // Since the page doesn't actually exist\n // if (p === '*') {\n // return route.name;\n // }\n\n // // If the path has a pattern for a param, put the param in the path\n // if (p.startsWith(':')) {\n // const value = allParams[name];\n\n // if (value === undefined && p.endsWith('?')) {\n // // Optional params without value assigned in route.params should be ignored\n // return '';\n // }\n\n // // Valid characters according to\n // // https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 (see pchar definition)\n // return String(value).replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]/g, (char) =>\n // encodeURIComponent(char)\n // );\n // }\n\n // return encodeURIComponent(p);\n // })\n // .join('/');\n // } else {\n } else if (!route.name.startsWith('+')) {\n path += encodeURIComponent(route.name);\n }\n // END FORK\n\n if (!focusedParams) {\n focusedParams = focusedRoute.params;\n }\n\n if (route.state) {\n path += '/';\n } else if (focusedParams) {\n for (const param in focusedParams) {\n if (focusedParams[param] === 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete focusedParams[param];\n }\n }\n\n // START FORK\n delete focusedParams['#'];\n // END FORK\n\n const query = queryString.stringify(focusedParams, { sort: false });\n if (query) {\n path += `?${query}`;\n }\n }\n\n current = route.state;\n }\n\n // Remove multiple as well as trailing slashes\n path = path.replace(/\\/+/g, '/');\n path = path.length > 1 ? path.replace(/\\/$/, '') : path;\n\n // Include the root path if specified\n if (options?.path) {\n path = joinPaths(options.path, path);\n }\n\n // START FORK\n path = expo.appendBaseUrl(path);\n if (allParams['#']) {\n path += `#${allParams['#']}`;\n }\n // END FORK\n\n // START FORK\n return { path, params: allParams };\n // END FORK\n}\n\n// const getParamName = (pattern: string) => pattern.replace(/^:/, '').replace(/\\?$/, '');\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst createConfigItem = (\n config: PathConfig<object> | string,\n parentPattern?: string\n): ConfigItem => {\n if (typeof config === 'string') {\n // If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern\n const pattern = parentPattern ? joinPaths(parentPattern, config) : config;\n\n return { pattern };\n }\n\n if (config.exact && config.path === undefined) {\n throw new Error(\n \"A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.\"\n );\n }\n\n // If an object is specified as the value (e.g. Foo: { ... }),\n // It can have `path` property and `screens` prop which has nested configs\n const pattern =\n config.exact !== true ? joinPaths(parentPattern || '', config.path || '') : config.path || '';\n\n const screens = config.screens ? createNormalizedConfigs(config.screens, pattern) : undefined;\n\n return {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern: pattern?.split('/').filter(Boolean).join('/'),\n stringify: config.stringify,\n screens,\n };\n};\n\nconst createNormalizedConfigs = (\n options: PathConfigMap<object>,\n pattern?: string\n): Record<string, ConfigItem> =>\n Object.fromEntries(\n Object.entries(options).map(([name, c]) => {\n const result = createConfigItem(c, pattern);\n\n return [name, result];\n })\n );\n\nexport function appendBaseUrl(\n path: string,\n baseUrl: string | undefined = process.env.EXPO_BASE_URL\n) {\n if (process.env.NODE_ENV !== 'development') {\n if (baseUrl) {\n return `/${baseUrl.replace(/^\\/+/, '').replace(/\\/$/, '')}${path}`;\n }\n }\n return path;\n}\n"]}
|
|
@@ -44,20 +44,20 @@ export declare function spreadParamsAcrossAllStates(state: InitialState, params?
|
|
|
44
44
|
export declare function stripBaseUrl(path: string, baseUrl?: string | undefined): string;
|
|
45
45
|
export declare function matchForEmptyPath(configs: RouteConfig[]): {
|
|
46
46
|
path: string;
|
|
47
|
-
type: "
|
|
47
|
+
type: "static" | "dynamic" | "layout";
|
|
48
48
|
userReadableName: string;
|
|
49
49
|
isIndex: boolean;
|
|
50
|
-
isInitial?: boolean
|
|
50
|
+
isInitial?: boolean;
|
|
51
51
|
hasChildren: boolean;
|
|
52
52
|
expandedRouteNames: string[];
|
|
53
53
|
parts: string[];
|
|
54
54
|
screen: string;
|
|
55
|
-
regex?: RegExp
|
|
55
|
+
regex?: RegExp;
|
|
56
56
|
pattern: string;
|
|
57
57
|
routeNames: string[];
|
|
58
58
|
parse?: {
|
|
59
59
|
[x: string]: (value: string) => any;
|
|
60
|
-
}
|
|
60
|
+
};
|
|
61
61
|
} | undefined;
|
|
62
62
|
export declare function appendIsInitial(initialRoutes: InitialRouteConfig[]): (config: RouteConfig) => RouteConfig;
|
|
63
63
|
export declare function getRouteConfigSorter(previousSegments?: string[]): (a: RouteConfig, b: RouteConfig) => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStateFromPath-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getStateFromPath-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGhG,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,6BAQlF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,UAMnD;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC;;;;;;;;;;;;EA2BxD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAC/B,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAkCpC;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,sBAI/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,UAEpC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iCAOrD;AAwBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,WAAW,QAsBnF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAK5F;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UAQxD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"getStateFromPath-forks.d.ts","sourceRoot":"","sources":["../../src/fork/getStateFromPath-forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGhG,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,6BAQlF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,UAMnD;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC;;;;;;;;;;;;EA2BxD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAC/B,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAkCpC;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,sBAI/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,WAEtC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,UAEpC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,iCAOrD;AAwBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,WAAW,QAsBnF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAK5F;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAAqC,UAQxD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE;;UAtMhD,QAAQ,GAAG,SAAS,GAAG,QAAQ;sBACnB,MAAM;aACf,OAAO;gBACJ,OAAO;iBACN,OAAO;wBACA,MAAM,EAAE;WACrB,MAAM,EAAE;;;;;;;;cAgOhB;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAKhD,QAAQ,WAAW,iBAMrC;AAQD,wBAAgB,oBAAoB,CAAC,gBAAgB,GAAE,MAAM,EAAO,IACtC,GAAG,WAAW,EAAE,GAAG,WAAW,YAoJ3D;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,EACpD,IAAI,CAAC,EAAE,MAAM,iDA4Bd;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UAUrC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAalD"}
|
|
@@ -3,7 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.populateParams = populateParams;
|
|
7
|
+
exports.safelyDecodeURIComponent = safelyDecodeURIComponent;
|
|
8
|
+
exports.getUrlWithReactNavigationConcessions = getUrlWithReactNavigationConcessions;
|
|
9
|
+
exports.createConfig = createConfig;
|
|
10
|
+
exports.assertScreens = assertScreens;
|
|
11
|
+
exports.configRegExp = configRegExp;
|
|
12
|
+
exports.isDynamicPart = isDynamicPart;
|
|
13
|
+
exports.replacePart = replacePart;
|
|
14
|
+
exports.getParamValue = getParamValue;
|
|
15
|
+
exports.handleUrlParams = handleUrlParams;
|
|
16
|
+
exports.spreadParamsAcrossAllStates = spreadParamsAcrossAllStates;
|
|
17
|
+
exports.stripBaseUrl = stripBaseUrl;
|
|
18
|
+
exports.matchForEmptyPath = matchForEmptyPath;
|
|
19
|
+
exports.appendIsInitial = appendIsInitial;
|
|
20
|
+
exports.getRouteConfigSorter = getRouteConfigSorter;
|
|
21
|
+
exports.parseQueryParams = parseQueryParams;
|
|
22
|
+
exports.cleanPath = cleanPath;
|
|
23
|
+
exports.routePatternToRegex = routePatternToRegex;
|
|
7
24
|
const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
|
|
8
25
|
const matchers_1 = require("../matchers");
|
|
9
26
|
/**
|
|
@@ -19,7 +36,6 @@ function populateParams(routes, params) {
|
|
|
19
36
|
}
|
|
20
37
|
return routes;
|
|
21
38
|
}
|
|
22
|
-
exports.populateParams = populateParams;
|
|
23
39
|
function safelyDecodeURIComponent(str) {
|
|
24
40
|
try {
|
|
25
41
|
return decodeURIComponent(str);
|
|
@@ -28,7 +44,6 @@ function safelyDecodeURIComponent(str) {
|
|
|
28
44
|
return str;
|
|
29
45
|
}
|
|
30
46
|
}
|
|
31
|
-
exports.safelyDecodeURIComponent = safelyDecodeURIComponent;
|
|
32
47
|
function getUrlWithReactNavigationConcessions(path, baseUrl = process.env.EXPO_BASE_URL) {
|
|
33
48
|
let parsed;
|
|
34
49
|
try {
|
|
@@ -55,7 +70,6 @@ function getUrlWithReactNavigationConcessions(path, baseUrl = process.env.EXPO_B
|
|
|
55
70
|
pathWithoutGroups,
|
|
56
71
|
};
|
|
57
72
|
}
|
|
58
|
-
exports.getUrlWithReactNavigationConcessions = getUrlWithReactNavigationConcessions;
|
|
59
73
|
function createConfig(screen, pattern, routeNames, config = {}) {
|
|
60
74
|
const parts = [];
|
|
61
75
|
let isDynamic = false;
|
|
@@ -86,27 +100,22 @@ function createConfig(screen, pattern, routeNames, config = {}) {
|
|
|
86
100
|
}),
|
|
87
101
|
};
|
|
88
102
|
}
|
|
89
|
-
exports.createConfig = createConfig;
|
|
90
103
|
function assertScreens(options) {
|
|
91
104
|
if (!options?.screens) {
|
|
92
105
|
throw Error("You must pass a 'screens' object to 'getStateFromPath' to generate a path.");
|
|
93
106
|
}
|
|
94
107
|
}
|
|
95
|
-
exports.assertScreens = assertScreens;
|
|
96
108
|
function configRegExp(config) {
|
|
97
109
|
return config.pattern
|
|
98
110
|
? new RegExp(`^(${config.pattern.split('/').map(formatRegexPattern).join('')})$`)
|
|
99
111
|
: undefined;
|
|
100
112
|
}
|
|
101
|
-
exports.configRegExp = configRegExp;
|
|
102
113
|
function isDynamicPart(p) {
|
|
103
114
|
return p.length > 1 && (p.startsWith(':') || p.startsWith('*'));
|
|
104
115
|
}
|
|
105
|
-
exports.isDynamicPart = isDynamicPart;
|
|
106
116
|
function replacePart(p) {
|
|
107
117
|
return p.replace(/^[:*]/, '').replace(/\?$/, '');
|
|
108
118
|
}
|
|
109
|
-
exports.replacePart = replacePart;
|
|
110
119
|
function getParamValue(p, value) {
|
|
111
120
|
if (p.startsWith('*')) {
|
|
112
121
|
const values = value.split('/').filter((v) => v !== '');
|
|
@@ -116,7 +125,6 @@ function getParamValue(p, value) {
|
|
|
116
125
|
return value;
|
|
117
126
|
}
|
|
118
127
|
}
|
|
119
|
-
exports.getParamValue = getParamValue;
|
|
120
128
|
function formatRegexPattern(it) {
|
|
121
129
|
// Allow spaces in file path names.
|
|
122
130
|
it = it.replace(' ', '%20');
|
|
@@ -155,14 +163,12 @@ function handleUrlParams(route, params) {
|
|
|
155
163
|
}
|
|
156
164
|
}
|
|
157
165
|
}
|
|
158
|
-
exports.handleUrlParams = handleUrlParams;
|
|
159
166
|
function spreadParamsAcrossAllStates(state, params) {
|
|
160
167
|
while (state) {
|
|
161
168
|
const route = state.routes[0];
|
|
162
169
|
route.params = Object.assign({}, route.params, params);
|
|
163
170
|
}
|
|
164
171
|
}
|
|
165
|
-
exports.spreadParamsAcrossAllStates = spreadParamsAcrossAllStates;
|
|
166
172
|
function stripBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
|
|
167
173
|
if (process.env.NODE_ENV !== 'development') {
|
|
168
174
|
if (baseUrl) {
|
|
@@ -171,7 +177,6 @@ function stripBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {
|
|
|
171
177
|
}
|
|
172
178
|
return path;
|
|
173
179
|
}
|
|
174
|
-
exports.stripBaseUrl = stripBaseUrl;
|
|
175
180
|
function matchForEmptyPath(configs) {
|
|
176
181
|
// We need to add special handling of empty path so navigation to empty path also works
|
|
177
182
|
// When handling empty path, we should only look at the root level config
|
|
@@ -197,7 +202,6 @@ function matchForEmptyPath(configs) {
|
|
|
197
202
|
leafNodes.find((config) => config.path.startsWith('*') && config.regex.test('/'));
|
|
198
203
|
return match;
|
|
199
204
|
}
|
|
200
|
-
exports.matchForEmptyPath = matchForEmptyPath;
|
|
201
205
|
function appendIsInitial(initialRoutes) {
|
|
202
206
|
const resolvedInitialPatterns = initialRoutes.map((route) => joinPaths(...route.parentScreens, route.initialRouteName));
|
|
203
207
|
return function (config) {
|
|
@@ -207,7 +211,6 @@ function appendIsInitial(initialRoutes) {
|
|
|
207
211
|
return config;
|
|
208
212
|
};
|
|
209
213
|
}
|
|
210
|
-
exports.appendIsInitial = appendIsInitial;
|
|
211
214
|
const joinPaths = (...paths) => []
|
|
212
215
|
.concat(...paths.map((p) => p.split('/')))
|
|
213
216
|
.filter(Boolean)
|
|
@@ -351,7 +354,6 @@ function getRouteConfigSorter(previousSegments = []) {
|
|
|
351
354
|
return b.parts.length - a.parts.length;
|
|
352
355
|
};
|
|
353
356
|
}
|
|
354
|
-
exports.getRouteConfigSorter = getRouteConfigSorter;
|
|
355
357
|
function parseQueryParams(path, route, parseConfig, hash) {
|
|
356
358
|
const searchParams = new URL(path, 'https://phony.example').searchParams;
|
|
357
359
|
const params = Object.create(null);
|
|
@@ -375,7 +377,6 @@ function parseQueryParams(path, route, parseConfig, hash) {
|
|
|
375
377
|
}
|
|
376
378
|
return Object.keys(params).length ? params : undefined;
|
|
377
379
|
}
|
|
378
|
-
exports.parseQueryParams = parseQueryParams;
|
|
379
380
|
function cleanPath(path) {
|
|
380
381
|
path = path
|
|
381
382
|
// let remaining = path
|
|
@@ -386,7 +387,6 @@ function cleanPath(path) {
|
|
|
386
387
|
// Make sure there is a trailing slash
|
|
387
388
|
return path.endsWith('/') ? path : `${path}/`;
|
|
388
389
|
}
|
|
389
|
-
exports.cleanPath = cleanPath;
|
|
390
390
|
function routePatternToRegex(pattern) {
|
|
391
391
|
return new RegExp(`^(${pattern
|
|
392
392
|
.split('/')
|
|
@@ -398,5 +398,4 @@ function routePatternToRegex(pattern) {
|
|
|
398
398
|
})
|
|
399
399
|
.join('')})`);
|
|
400
400
|
}
|
|
401
|
-
exports.routePatternToRegex = routePatternToRegex;
|
|
402
401
|
//# sourceMappingURL=getStateFromPath-forks.js.map
|