expo-router 5.0.2-preview.6 → 5.0.3

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.
Files changed (113) hide show
  1. package/build/ExpoRoot.d.ts.map +1 -1
  2. package/build/ExpoRoot.js +19 -18
  3. package/build/ExpoRoot.js.map +1 -1
  4. package/build/constants.d.ts +2 -0
  5. package/build/constants.d.ts.map +1 -0
  6. package/build/constants.js +5 -0
  7. package/build/constants.js.map +1 -0
  8. package/build/{link/useDomComponentNavigation.d.ts → domComponents/emitDomEvent.d.ts} +2 -4
  9. package/build/domComponents/emitDomEvent.d.ts.map +1 -0
  10. package/build/domComponents/emitDomEvent.js +32 -0
  11. package/build/domComponents/emitDomEvent.js.map +1 -0
  12. package/build/domComponents/events.d.ts +6 -0
  13. package/build/domComponents/events.d.ts.map +1 -0
  14. package/build/domComponents/events.js +9 -0
  15. package/build/domComponents/events.js.map +1 -0
  16. package/build/domComponents/useDomComponentNavigation.d.ts +2 -0
  17. package/build/domComponents/useDomComponentNavigation.d.ts.map +1 -0
  18. package/build/domComponents/useDomComponentNavigation.js +37 -0
  19. package/build/domComponents/useDomComponentNavigation.js.map +1 -0
  20. package/build/fork/getStateFromPath.d.ts +1 -2
  21. package/build/fork/getStateFromPath.d.ts.map +1 -1
  22. package/build/fork/getStateFromPath.js +11 -5
  23. package/build/fork/getStateFromPath.js.map +1 -1
  24. package/build/getLinkingConfig.d.ts +6 -7
  25. package/build/getLinkingConfig.d.ts.map +1 -1
  26. package/build/getLinkingConfig.js +10 -9
  27. package/build/getLinkingConfig.js.map +1 -1
  28. package/build/getRoutesRedirects.d.ts +2 -0
  29. package/build/getRoutesRedirects.d.ts.map +1 -1
  30. package/build/getRoutesRedirects.js +56 -0
  31. package/build/getRoutesRedirects.js.map +1 -1
  32. package/build/global-state/routeInfo.d.ts +29 -4
  33. package/build/global-state/routeInfo.d.ts.map +1 -1
  34. package/build/global-state/routeInfo.js +124 -55
  35. package/build/global-state/routeInfo.js.map +1 -1
  36. package/build/global-state/router-store.d.ts +35 -83
  37. package/build/global-state/router-store.d.ts.map +1 -1
  38. package/build/global-state/router-store.js +138 -238
  39. package/build/global-state/router-store.js.map +1 -1
  40. package/build/global-state/routing.d.ts +13 -14
  41. package/build/global-state/routing.d.ts.map +1 -1
  42. package/build/global-state/routing.js +32 -30
  43. package/build/global-state/routing.js.map +1 -1
  44. package/build/global-state/storeContext.d.ts +29 -0
  45. package/build/global-state/storeContext.d.ts.map +1 -0
  46. package/build/global-state/storeContext.js +9 -0
  47. package/build/global-state/storeContext.js.map +1 -0
  48. package/build/hooks.d.ts +13 -4
  49. package/build/hooks.d.ts.map +1 -1
  50. package/build/hooks.js +13 -23
  51. package/build/hooks.js.map +1 -1
  52. package/build/imperative-api.d.ts.map +1 -1
  53. package/build/imperative-api.js +13 -13
  54. package/build/imperative-api.js.map +1 -1
  55. package/build/layouts/DrawerClient.d.ts +3 -2
  56. package/build/layouts/DrawerClient.d.ts.map +1 -1
  57. package/build/layouts/StackClient.d.ts +5 -2
  58. package/build/layouts/StackClient.d.ts.map +1 -1
  59. package/build/layouts/StackClient.js +2 -0
  60. package/build/layouts/StackClient.js.map +1 -1
  61. package/build/layouts/TabsClient.d.ts +3 -2
  62. package/build/layouts/TabsClient.d.ts.map +1 -1
  63. package/build/layouts/withLayoutContext.d.ts +6 -1
  64. package/build/layouts/withLayoutContext.d.ts.map +1 -1
  65. package/build/layouts/withLayoutContext.js +28 -20
  66. package/build/layouts/withLayoutContext.js.map +1 -1
  67. package/build/link/linking.d.ts +2 -2
  68. package/build/link/linking.d.ts.map +1 -1
  69. package/build/link/linking.js +5 -4
  70. package/build/link/linking.js.map +1 -1
  71. package/build/link/useLinkToPathProps.d.ts.map +1 -1
  72. package/build/link/useLinkToPathProps.js +4 -5
  73. package/build/link/useLinkToPathProps.js.map +1 -1
  74. package/build/link/useLoadedNavigation.d.ts.map +1 -1
  75. package/build/link/useLoadedNavigation.js +2 -3
  76. package/build/link/useLoadedNavigation.js.map +1 -1
  77. package/build/primitives.d.ts.map +1 -1
  78. package/build/primitives.js +1 -0
  79. package/build/primitives.js.map +1 -1
  80. package/build/testing-library/index.d.ts +3 -3
  81. package/build/testing-library/index.d.ts.map +1 -1
  82. package/build/testing-library/index.js +5 -10
  83. package/build/testing-library/index.js.map +1 -1
  84. package/build/ui/common.d.ts.map +1 -1
  85. package/build/ui/common.js +4 -3
  86. package/build/ui/common.js.map +1 -1
  87. package/build/useNavigation.d.ts.map +1 -1
  88. package/build/useNavigation.js +47 -56
  89. package/build/useNavigation.js.map +1 -1
  90. package/build/useScreens.d.ts +2 -2
  91. package/build/useScreens.d.ts.map +1 -1
  92. package/build/useScreens.js +18 -3
  93. package/build/useScreens.js.map +1 -1
  94. package/build/views/ErrorBoundary.d.ts.map +1 -1
  95. package/build/views/ErrorBoundary.js +2 -68
  96. package/build/views/ErrorBoundary.js.map +1 -1
  97. package/build/views/Navigator.d.ts.map +1 -1
  98. package/build/views/Navigator.js +4 -4
  99. package/build/views/Navigator.js.map +1 -1
  100. package/build/views/Protected.d.ts +8 -0
  101. package/build/views/Protected.d.ts.map +1 -0
  102. package/build/views/Protected.js +11 -0
  103. package/build/views/Protected.js.map +1 -0
  104. package/build/views/Screen.d.ts +4 -0
  105. package/build/views/Screen.d.ts.map +1 -1
  106. package/build/views/Screen.js +52 -4
  107. package/build/views/Screen.js.map +1 -1
  108. package/build/views/Sitemap.js +5 -2
  109. package/build/views/Sitemap.js.map +1 -1
  110. package/package.json +3 -3
  111. package/build/link/useDomComponentNavigation.d.ts.map +0 -1
  112. package/build/link/useDomComponentNavigation.js +0 -68
  113. package/build/link/useDomComponentNavigation.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoRoot.d.ts","sourceRoot":"","sources":["../src/ExpoRoot.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAY,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAK7F,OAAO,EAAE,kBAAkB,EAAsB,MAAM,oBAAoB,CAAC;AAK5E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtE,CAAC;AAYF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAwB,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAqBtF"}
1
+ {"version":3,"file":"ExpoRoot.d.ts","sourceRoot":"","sources":["../src/ExpoRoot.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAY,KAAK,aAAa,EAAW,MAAM,OAAO,CAAC;AAO7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKxD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtE,CAAC;AAgBF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAwB,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAqBtF"}
package/build/ExpoRoot.js CHANGED
@@ -39,11 +39,12 @@ const native_1 = require("@react-navigation/native");
39
39
  const react_1 = __importStar(require("react"));
40
40
  const react_native_1 = require("react-native");
41
41
  const react_native_safe_area_context_1 = require("react-native-safe-area-context");
42
+ const constants_1 = require("./constants");
43
+ const useDomComponentNavigation_1 = require("./domComponents/useDomComponentNavigation");
42
44
  const NavigationContainer_1 = require("./fork/NavigationContainer");
43
- const getLinkingConfig_1 = require("./getLinkingConfig");
44
45
  const router_store_1 = require("./global-state/router-store");
45
46
  const serverLocationContext_1 = require("./global-state/serverLocationContext");
46
- const useDomComponentNavigation_1 = require("./link/useDomComponentNavigation");
47
+ const storeContext_1 = require("./global-state/storeContext");
47
48
  const primitives_1 = require("./primitives");
48
49
  const statusbar_1 = require("./utils/statusbar");
49
50
  const SplashScreen = __importStar(require("./views/Splash"));
@@ -54,6 +55,9 @@ const INITIAL_METRICS = react_native_1.Platform.OS === 'web' || isTestEnv
54
55
  insets: { top: 0, left: 0, right: 0, bottom: 0 },
55
56
  }
56
57
  : undefined;
58
+ const documentTitle = {
59
+ enabled: false,
60
+ };
57
61
  /**
58
62
  * @hidden
59
63
  */
@@ -115,11 +119,8 @@ function ContextNavigator({ context, location: initialLocation = initialUrl, wra
115
119
  const serverUrl = serverContext.location
116
120
  ? `${serverContext.location.pathname}${serverContext.location.search}`
117
121
  : undefined;
118
- const store = (0, router_store_1.useInitializeExpoRouter)(context, {
119
- ...linking,
120
- serverUrl,
121
- });
122
- (0, useDomComponentNavigation_1.useDomComponentNavigation)(store);
122
+ const store = (0, router_store_1.useStore)(context, linking, serverUrl);
123
+ (0, useDomComponentNavigation_1.useDomComponentNavigation)();
123
124
  if (store.shouldShowTutorial()) {
124
125
  SplashScreen.hideAsync();
125
126
  if (process.env.NODE_ENV === 'development') {
@@ -133,19 +134,19 @@ function ContextNavigator({ context, location: initialLocation = initialUrl, wra
133
134
  return null;
134
135
  }
135
136
  }
136
- return (<NavigationContainer_1.NavigationContainer ref={store.navigationRef} initialState={store.initialState} linking={store.linking} onUnhandledAction={onUnhandledAction} documentTitle={{
137
- enabled: false,
138
- }}>
139
- <serverLocationContext_1.ServerContext.Provider value={serverContext}>
140
- <WrapperComponent>
141
- <Content component={store.rootComponent}/>
142
- </WrapperComponent>
143
- </serverLocationContext_1.ServerContext.Provider>
144
- </NavigationContainer_1.NavigationContainer>);
137
+ return (<storeContext_1.StoreContext.Provider value={store}>
138
+ <NavigationContainer_1.NavigationContainer ref={store.navigationRef} initialState={store.state} linking={store.linking} onUnhandledAction={onUnhandledAction} documentTitle={documentTitle} onReady={store.onReady}>
139
+ <serverLocationContext_1.ServerContext.Provider value={serverContext}>
140
+ <WrapperComponent>
141
+ <Content />
142
+ </WrapperComponent>
143
+ </serverLocationContext_1.ServerContext.Provider>
144
+ </NavigationContainer_1.NavigationContainer>
145
+ </storeContext_1.StoreContext.Provider>);
145
146
  }
146
- function Content({ component }) {
147
+ function Content() {
147
148
  const { state, descriptors, NavigationContent } = (0, native_1.useNavigationBuilder)(native_1.StackRouter, {
148
- children: <primitives_1.Screen name={getLinkingConfig_1.INTERNAL_SLOT_NAME} component={component}/>,
149
+ children: <primitives_1.Screen name={constants_1.INTERNAL_SLOT_NAME} component={router_store_1.store.rootComponent}/>,
149
150
  });
150
151
  return <NavigationContent>{descriptors[state.routes[0].key].render()}</NavigationContent>;
151
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoRoot.js","sourceRoot":"","sources":["../src/ExpoRoot.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport {\n LinkingOptions,\n NavigationAction,\n StackRouter,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport React, { type PropsWithChildren, Fragment, type ComponentType, useMemo } from 'react';\nimport { StatusBar, useColorScheme, Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport { NavigationContainer as UpstreamNavigationContainer } from './fork/NavigationContainer';\nimport { ExpoLinkingOptions, INTERNAL_SLOT_NAME } from './getLinkingConfig';\nimport { useInitializeExpoRouter } from './global-state/router-store';\nimport { ServerContext, ServerContextType } from './global-state/serverLocationContext';\nimport { useDomComponentNavigation } from './link/useDomComponentNavigation';\nimport { Screen } from './primitives';\nimport { RequireContext } from './types';\nimport { canOverrideStatusBarBehavior } from './utils/statusbar';\nimport * as SplashScreen from './views/Splash';\n\nexport type ExpoRootProps = {\n context: RequireContext;\n location?: URL | string;\n wrapper?: ComponentType<PropsWithChildren>;\n linking?: Partial<ExpoLinkingOptions>;\n};\n\nexport type NativeIntent = {\n redirectSystemPath?: (event: {\n path: string | null;\n initial: boolean;\n }) => Promise<string | null | undefined> | string | null | undefined;\n};\n\nconst isTestEnv = process.env.NODE_ENV === 'test';\n\nconst INITIAL_METRICS =\n Platform.OS === 'web' || isTestEnv\n ? {\n frame: { x: 0, y: 0, width: 0, height: 0 },\n insets: { top: 0, left: 0, right: 0, bottom: 0 },\n }\n : undefined;\n\n/**\n * @hidden\n */\nexport function ExpoRoot({ wrapper: ParentWrapper = Fragment, ...props }: ExpoRootProps) {\n /*\n * Due to static rendering we need to wrap these top level views in second wrapper\n * View's like <SafeAreaProvider /> generate a <div> so if the parent wrapper\n * is a HTML document, we need to ensure its inside the <body>\n */\n const wrapper = ({ children }: PropsWithChildren) => {\n return (\n <ParentWrapper>\n <SafeAreaProvider\n // SSR support\n initialMetrics={INITIAL_METRICS}>\n {/* Users can override this by adding another StatusBar element anywhere higher in the component tree. */}\n {canOverrideStatusBarBehavior && <AutoStatusBar />}\n {children}\n </SafeAreaProvider>\n </ParentWrapper>\n );\n };\n\n return <ContextNavigator {...props} wrapper={wrapper} />;\n}\n\nfunction AutoStatusBar() {\n return <StatusBar barStyle={useColorScheme() === 'light' ? 'dark-content' : 'light-content'} />;\n}\n\nconst initialUrl =\n Platform.OS === 'web' && typeof window !== 'undefined'\n ? new URL(window.location.href)\n : undefined;\n\nfunction ContextNavigator({\n context,\n location: initialLocation = initialUrl,\n wrapper: WrapperComponent = Fragment,\n linking = {},\n}: ExpoRootProps) {\n // location and linking.getInitialURL are both used to initialize the router state\n // - location is used on web and during static rendering\n // - linking.getInitialURL is used on native\n const serverContext = useMemo(() => {\n let contextType: ServerContextType = {};\n\n if (initialLocation instanceof URL) {\n contextType = {\n location: {\n pathname: initialLocation.pathname + initialLocation.hash,\n search: initialLocation.search,\n },\n };\n } else if (typeof initialLocation === 'string') {\n // The initial location is a string, so we need to parse it into a URL.\n const url = new URL(initialLocation, 'http://placeholder.base');\n contextType = {\n location: {\n pathname: url.pathname,\n search: url.search,\n },\n };\n }\n\n return contextType;\n }, []);\n\n /*\n * The serverUrl is an initial URL used in server rendering environments.\n * e.g Static renders, units tests, etc\n */\n const serverUrl = serverContext.location\n ? `${serverContext.location.pathname}${serverContext.location.search}`\n : undefined;\n\n const store = useInitializeExpoRouter(context, {\n ...linking,\n serverUrl,\n });\n\n useDomComponentNavigation(store);\n\n if (store.shouldShowTutorial()) {\n SplashScreen.hideAsync();\n if (process.env.NODE_ENV === 'development') {\n const Tutorial = require('./onboard/Tutorial').Tutorial;\n return (\n <WrapperComponent>\n <Tutorial />\n </WrapperComponent>\n );\n } else {\n // Ensure tutorial styles are stripped in production.\n return null;\n }\n }\n\n return (\n <UpstreamNavigationContainer\n ref={store.navigationRef}\n initialState={store.initialState}\n linking={store.linking as LinkingOptions<any>}\n onUnhandledAction={onUnhandledAction}\n documentTitle={{\n enabled: false,\n }}>\n <ServerContext.Provider value={serverContext}>\n <WrapperComponent>\n <Content component={store.rootComponent} />\n </WrapperComponent>\n </ServerContext.Provider>\n </UpstreamNavigationContainer>\n );\n}\n\nfunction Content({ component }: { component: ComponentType<any> }) {\n const { state, descriptors, NavigationContent } = useNavigationBuilder(StackRouter, {\n children: <Screen name={INTERNAL_SLOT_NAME} component={component} />,\n });\n\n return <NavigationContent>{descriptors[state.routes[0].key].render()}</NavigationContent>;\n}\n\nlet onUnhandledAction: (action: NavigationAction) => void;\n\nif (process.env.NODE_ENV !== 'production') {\n onUnhandledAction = (action: NavigationAction) => {\n const payload: Record<string, any> | undefined = action.payload;\n\n let message = `The action '${action.type}'${\n payload ? ` with payload ${JSON.stringify(action.payload)}` : ''\n } was not handled by any navigator.`;\n\n switch (action.type) {\n case 'NAVIGATE':\n case 'PUSH':\n case 'REPLACE':\n case 'JUMP_TO':\n if (payload?.name) {\n message += `\\n\\nDo you have a route named '${payload.name}'?`;\n } else {\n message += `\\n\\nYou need to pass the name of the screen to navigate to. This may be a bug.`;\n }\n\n break;\n case 'GO_BACK':\n case 'POP':\n case 'POP_TO_TOP':\n message += `\\n\\nIs there any screen to go back to?`;\n break;\n case 'OPEN_DRAWER':\n case 'CLOSE_DRAWER':\n case 'TOGGLE_DRAWER':\n message += `\\n\\nIs your screen inside a Drawer navigator?`;\n break;\n }\n\n message += `\\n\\nThis is a development-only warning and won't be shown in production.`;\n\n if (process.env.NODE_ENV === 'test') {\n throw new Error(message);\n }\n console.error(message);\n };\n} else {\n onUnhandledAction = function () {};\n}\n"]}
1
+ {"version":3,"file":"ExpoRoot.js","sourceRoot":"","sources":["../src/ExpoRoot.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDb,4BAqBC;AA1ED,qDAKkC;AAClC,+CAA6F;AAC7F,+CAAmE;AACnE,mFAAkE;AAElE,2CAAiD;AACjD,yFAAsF;AACtF,oEAAgG;AAEhG,8DAA8D;AAC9D,gFAAwF;AACxF,8DAA2D;AAC3D,6CAAsC;AAEtC,iDAAiE;AACjE,6DAA+C;AAgB/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AAElD,MAAM,eAAe,GACnB,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,SAAS;IAChC,CAAC,CAAC;QACE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAC1C,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KACjD;IACH,CAAC,CAAC,SAAS,CAAC;AAEhB,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;GAEG;AACH,SAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,gBAAQ,EAAE,GAAG,KAAK,EAAiB;IACrF;;;;OAIG;IACH,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;QAClD,OAAO,CACL,CAAC,aAAa,CACZ;QAAA,CAAC,iDAAgB;QACf,cAAc;QACd,cAAc,CAAC,CAAC,eAAe,CAAC,CAChC;UAAA,CAAC,wGAAwG,CACzG;UAAA,CAAC,wCAA4B,IAAI,CAAC,aAAa,CAAC,AAAD,EAAG,CAClD;UAAA,CAAC,QAAQ,CACX;QAAA,EAAE,iDAAgB,CACpB;MAAA,EAAE,aAAa,CAAC,CACjB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAG,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,CAAC,wBAAS,CAAC,QAAQ,CAAC,CAAC,IAAA,6BAAc,GAAE,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,EAAG,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,GACd,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,OAAO,MAAM,KAAK,WAAW;IACpD,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/B,CAAC,CAAC,SAAS,CAAC;AAEhB,SAAS,gBAAgB,CAAC,EACxB,OAAO,EACP,QAAQ,EAAE,eAAe,GAAG,UAAU,EACtC,OAAO,EAAE,gBAAgB,GAAG,gBAAQ,EACpC,OAAO,GAAG,EAAE,GACE;IACd,kFAAkF;IAClF,yDAAyD;IACzD,6CAA6C;IAC7C,MAAM,aAAa,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACjC,IAAI,WAAW,GAAsB,EAAE,CAAC;QAExC,IAAI,eAAe,YAAY,GAAG,EAAE,CAAC;YACnC,WAAW,GAAG;gBACZ,QAAQ,EAAE;oBACR,QAAQ,EAAE,eAAe,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI;oBACzD,MAAM,EAAE,eAAe,CAAC,MAAM;iBAC/B;aACF,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC/C,uEAAuE;YACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;YAChE,WAAW,GAAG;gBACZ,QAAQ,EAAE;oBACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB;aACF,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;;OAGG;IACH,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ;QACtC,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE;QACtE,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,KAAK,GAAG,IAAA,uBAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAEpD,IAAA,qDAAyB,GAAE,CAAC;IAE5B,IAAI,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC/B,YAAY,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC;YACxD,OAAO,CACL,CAAC,gBAAgB,CACf;UAAA,CAAC,QAAQ,CAAC,AAAD,EACX;QAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CACL,CAAC,2BAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAClC;MAAA,CAAC,yCAA2B,CAC1B,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CACzB,YAAY,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,OAA8B,CAAC,CAC9C,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CACvB;QAAA,CAAC,qCAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAC3C;UAAA,CAAC,gBAAgB,CACf;YAAA,CAAC,OAAO,CAAC,AAAD,EACV;UAAA,EAAE,gBAAgB,CACpB;QAAA,EAAE,qCAAa,CAAC,QAAQ,CAC1B;MAAA,EAAE,yCAA2B,CAC/B;IAAA,EAAE,2BAAY,CAAC,QAAQ,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,OAAO;IACd,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAA,6BAAoB,EAAC,oBAAW,EAAE;QAClF,QAAQ,EAAE,CAAC,mBAAM,CAAC,IAAI,CAAC,CAAC,8BAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,oBAAK,CAAC,aAAa,CAAC,EAAG;KAC/E,CAAC,CAAC;IAEH,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC5F,CAAC;AAED,IAAI,iBAAqD,CAAC;AAE1D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,iBAAiB,GAAG,CAAC,MAAwB,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAoC,MAAM,CAAC,OAAO,CAAC;QAEhE,IAAI,OAAO,GAAG,eAAe,MAAM,CAAC,IAAI,IACtC,OAAO,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAChE,oCAAoC,CAAC;QAErC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,SAAS;gBACZ,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;oBAClB,OAAO,IAAI,kCAAkC,OAAO,CAAC,IAAI,IAAI,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,gFAAgF,CAAC;gBAC9F,CAAC;gBAED,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,KAAK,CAAC;YACX,KAAK,YAAY;gBACf,OAAO,IAAI,wCAAwC,CAAC;gBACpD,MAAM;YACR,KAAK,aAAa,CAAC;YACnB,KAAK,cAAc,CAAC;YACpB,KAAK,eAAe;gBAClB,OAAO,IAAI,+CAA+C,CAAC;gBAC3D,MAAM;QACV,CAAC;QAED,OAAO,IAAI,0EAA0E,CAAC;QAEtF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,iBAAiB,GAAG,cAAa,CAAC,CAAC;AACrC,CAAC","sourcesContent":["'use client';\n\nimport {\n LinkingOptions,\n NavigationAction,\n StackRouter,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport React, { type PropsWithChildren, Fragment, type ComponentType, useMemo } from 'react';\nimport { StatusBar, useColorScheme, Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport { INTERNAL_SLOT_NAME } from './constants';\nimport { useDomComponentNavigation } from './domComponents/useDomComponentNavigation';\nimport { NavigationContainer as UpstreamNavigationContainer } from './fork/NavigationContainer';\nimport { ExpoLinkingOptions } from './getLinkingConfig';\nimport { store, useStore } from './global-state/router-store';\nimport { ServerContext, ServerContextType } from './global-state/serverLocationContext';\nimport { StoreContext } from './global-state/storeContext';\nimport { Screen } from './primitives';\nimport { RequireContext } from './types';\nimport { canOverrideStatusBarBehavior } from './utils/statusbar';\nimport * as SplashScreen from './views/Splash';\n\nexport type ExpoRootProps = {\n context: RequireContext;\n location?: URL | string;\n wrapper?: ComponentType<PropsWithChildren>;\n linking?: Partial<ExpoLinkingOptions>;\n};\n\nexport type NativeIntent = {\n redirectSystemPath?: (event: {\n path: string | null;\n initial: boolean;\n }) => Promise<string | null | undefined> | string | null | undefined;\n};\n\nconst isTestEnv = process.env.NODE_ENV === 'test';\n\nconst INITIAL_METRICS =\n Platform.OS === 'web' || isTestEnv\n ? {\n frame: { x: 0, y: 0, width: 0, height: 0 },\n insets: { top: 0, left: 0, right: 0, bottom: 0 },\n }\n : undefined;\n\nconst documentTitle = {\n enabled: false,\n};\n\n/**\n * @hidden\n */\nexport function ExpoRoot({ wrapper: ParentWrapper = Fragment, ...props }: ExpoRootProps) {\n /*\n * Due to static rendering we need to wrap these top level views in second wrapper\n * View's like <SafeAreaProvider /> generate a <div> so if the parent wrapper\n * is a HTML document, we need to ensure its inside the <body>\n */\n const wrapper = ({ children }: PropsWithChildren) => {\n return (\n <ParentWrapper>\n <SafeAreaProvider\n // SSR support\n initialMetrics={INITIAL_METRICS}>\n {/* Users can override this by adding another StatusBar element anywhere higher in the component tree. */}\n {canOverrideStatusBarBehavior && <AutoStatusBar />}\n {children}\n </SafeAreaProvider>\n </ParentWrapper>\n );\n };\n\n return <ContextNavigator {...props} wrapper={wrapper} />;\n}\n\nfunction AutoStatusBar() {\n return <StatusBar barStyle={useColorScheme() === 'light' ? 'dark-content' : 'light-content'} />;\n}\n\nconst initialUrl =\n Platform.OS === 'web' && typeof window !== 'undefined'\n ? new URL(window.location.href)\n : undefined;\n\nfunction ContextNavigator({\n context,\n location: initialLocation = initialUrl,\n wrapper: WrapperComponent = Fragment,\n linking = {},\n}: ExpoRootProps) {\n // location and linking.getInitialURL are both used to initialize the router state\n // - location is used on web and during static rendering\n // - linking.getInitialURL is used on native\n const serverContext = useMemo(() => {\n let contextType: ServerContextType = {};\n\n if (initialLocation instanceof URL) {\n contextType = {\n location: {\n pathname: initialLocation.pathname + initialLocation.hash,\n search: initialLocation.search,\n },\n };\n } else if (typeof initialLocation === 'string') {\n // The initial location is a string, so we need to parse it into a URL.\n const url = new URL(initialLocation, 'http://placeholder.base');\n contextType = {\n location: {\n pathname: url.pathname,\n search: url.search,\n },\n };\n }\n\n return contextType;\n }, []);\n\n /*\n * The serverUrl is an initial URL used in server rendering environments.\n * e.g Static renders, units tests, etc\n */\n const serverUrl = serverContext.location\n ? `${serverContext.location.pathname}${serverContext.location.search}`\n : undefined;\n\n const store = useStore(context, linking, serverUrl);\n\n useDomComponentNavigation();\n\n if (store.shouldShowTutorial()) {\n SplashScreen.hideAsync();\n if (process.env.NODE_ENV === 'development') {\n const Tutorial = require('./onboard/Tutorial').Tutorial;\n return (\n <WrapperComponent>\n <Tutorial />\n </WrapperComponent>\n );\n } else {\n // Ensure tutorial styles are stripped in production.\n return null;\n }\n }\n\n return (\n <StoreContext.Provider value={store}>\n <UpstreamNavigationContainer\n ref={store.navigationRef}\n initialState={store.state}\n linking={store.linking as LinkingOptions<any>}\n onUnhandledAction={onUnhandledAction}\n documentTitle={documentTitle}\n onReady={store.onReady}>\n <ServerContext.Provider value={serverContext}>\n <WrapperComponent>\n <Content />\n </WrapperComponent>\n </ServerContext.Provider>\n </UpstreamNavigationContainer>\n </StoreContext.Provider>\n );\n}\n\nfunction Content() {\n const { state, descriptors, NavigationContent } = useNavigationBuilder(StackRouter, {\n children: <Screen name={INTERNAL_SLOT_NAME} component={store.rootComponent} />,\n });\n\n return <NavigationContent>{descriptors[state.routes[0].key].render()}</NavigationContent>;\n}\n\nlet onUnhandledAction: (action: NavigationAction) => void;\n\nif (process.env.NODE_ENV !== 'production') {\n onUnhandledAction = (action: NavigationAction) => {\n const payload: Record<string, any> | undefined = action.payload;\n\n let message = `The action '${action.type}'${\n payload ? ` with payload ${JSON.stringify(action.payload)}` : ''\n } was not handled by any navigator.`;\n\n switch (action.type) {\n case 'NAVIGATE':\n case 'PUSH':\n case 'REPLACE':\n case 'JUMP_TO':\n if (payload?.name) {\n message += `\\n\\nDo you have a route named '${payload.name}'?`;\n } else {\n message += `\\n\\nYou need to pass the name of the screen to navigate to. This may be a bug.`;\n }\n\n break;\n case 'GO_BACK':\n case 'POP':\n case 'POP_TO_TOP':\n message += `\\n\\nIs there any screen to go back to?`;\n break;\n case 'OPEN_DRAWER':\n case 'CLOSE_DRAWER':\n case 'TOGGLE_DRAWER':\n message += `\\n\\nIs your screen inside a Drawer navigator?`;\n break;\n }\n\n message += `\\n\\nThis is a development-only warning and won't be shown in production.`;\n\n if (process.env.NODE_ENV === 'test') {\n throw new Error(message);\n }\n console.error(message);\n };\n} else {\n onUnhandledAction = function () {};\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const INTERNAL_SLOT_NAME = "__root";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INTERNAL_SLOT_NAME = void 0;
4
+ exports.INTERNAL_SLOT_NAME = '__root';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,QAAQ,CAAC","sourcesContent":["export const INTERNAL_SLOT_NAME = '__root';\n"]}
@@ -1,9 +1,7 @@
1
- import type { RouterStore } from '../global-state/router-store';
2
- import type { LinkToOptions } from '../global-state/routing';
1
+ import { LinkToOptions } from '../global-state/routing';
3
2
  export declare function emitDomSetParams(params?: Record<string, undefined | string | number | (string | number)[]>): boolean;
4
3
  export declare function emitDomDismiss(count?: number): boolean;
5
4
  export declare function emitDomGoBack(): boolean;
6
5
  export declare function emitDomDismissAll(): boolean;
7
6
  export declare function emitDomLinkEvent(href: string, options: LinkToOptions): boolean;
8
- export declare function useDomComponentNavigation(store: RouterStore): void;
9
- //# sourceMappingURL=useDomComponentNavigation.d.ts.map
7
+ //# sourceMappingURL=emitDomEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitDomEvent.d.ts","sourceRoot":"","sources":["../../src/domComponents/emitDomEvent.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAWxD,wBAAgB,gBAAgB,CAC9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM,WAG/E;AAED,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,WAE5C;AAED,wBAAgB,aAAa,YAE5B;AAED,wBAAgB,iBAAiB,YAEhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,WAEpE"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitDomSetParams = emitDomSetParams;
4
+ exports.emitDomDismiss = emitDomDismiss;
5
+ exports.emitDomGoBack = emitDomGoBack;
6
+ exports.emitDomDismissAll = emitDomDismissAll;
7
+ exports.emitDomLinkEvent = emitDomLinkEvent;
8
+ const events_1 = require("./events");
9
+ function emitDomEvent(type, data = {}) {
10
+ // @ts-expect-error: ReactNativeWebView is a global variable injected by the WebView
11
+ if (typeof ReactNativeWebView !== 'undefined') {
12
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type, data }));
13
+ return true;
14
+ }
15
+ return false;
16
+ }
17
+ function emitDomSetParams(params = {}) {
18
+ return emitDomEvent(events_1.ROUTER_SET_PARAMS_TYPE, { params });
19
+ }
20
+ function emitDomDismiss(count) {
21
+ return emitDomEvent(events_1.ROUTER_DISMISS_TYPE, { count });
22
+ }
23
+ function emitDomGoBack() {
24
+ return emitDomEvent(events_1.ROUTER_BACK_TYPE);
25
+ }
26
+ function emitDomDismissAll() {
27
+ return emitDomEvent(events_1.ROUTER_DISMISS_ALL_TYPE);
28
+ }
29
+ function emitDomLinkEvent(href, options) {
30
+ return emitDomEvent(events_1.ROUTER_LINK_TYPE, { href, options });
31
+ }
32
+ //# sourceMappingURL=emitDomEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitDomEvent.js","sourceRoot":"","sources":["../../src/domComponents/emitDomEvent.ts"],"names":[],"mappings":";;AAkBA,4CAIC;AAED,wCAEC;AAED,sCAEC;AAED,8CAEC;AAED,4CAEC;AAtCD,qCAMkB;AAGlB,SAAS,YAAY,CAAC,IAAY,EAAE,OAAY,EAAE;IAChD,oFAAoF;IACpF,IAAI,OAAO,kBAAkB,KAAK,WAAW,EAAE,CAAC;QAC7C,MAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gBAAgB,CAC9B,SAA4E,EAAE;IAE9E,OAAO,YAAY,CAAC,+BAAsB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,YAAY,CAAC,4BAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,YAAY,CAAC,yBAAgB,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,YAAY,CAAC,gCAAuB,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY,EAAE,OAAsB;IACnE,OAAO,YAAY,CAAC,yBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import {\n ROUTER_SET_PARAMS_TYPE,\n ROUTER_DISMISS_TYPE,\n ROUTER_BACK_TYPE,\n ROUTER_DISMISS_ALL_TYPE,\n ROUTER_LINK_TYPE,\n} from './events';\nimport { LinkToOptions } from '../global-state/routing';\n\nfunction emitDomEvent(type: string, data: any = {}) {\n // @ts-expect-error: ReactNativeWebView is a global variable injected by the WebView\n if (typeof ReactNativeWebView !== 'undefined') {\n (window as any).ReactNativeWebView.postMessage(JSON.stringify({ type, data }));\n return true;\n }\n return false;\n}\n\nexport function emitDomSetParams(\n params: Record<string, undefined | string | number | (string | number)[]> = {}\n) {\n return emitDomEvent(ROUTER_SET_PARAMS_TYPE, { params });\n}\n\nexport function emitDomDismiss(count?: number) {\n return emitDomEvent(ROUTER_DISMISS_TYPE, { count });\n}\n\nexport function emitDomGoBack() {\n return emitDomEvent(ROUTER_BACK_TYPE);\n}\n\nexport function emitDomDismissAll() {\n return emitDomEvent(ROUTER_DISMISS_ALL_TYPE);\n}\n\nexport function emitDomLinkEvent(href: string, options: LinkToOptions) {\n return emitDomEvent(ROUTER_LINK_TYPE, { href, options });\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export declare const ROUTER_LINK_TYPE = "$$router_link";
2
+ export declare const ROUTER_DISMISS_ALL_TYPE = "$$router_dismissAll";
3
+ export declare const ROUTER_DISMISS_TYPE = "$$router_dismiss";
4
+ export declare const ROUTER_BACK_TYPE = "$$router_goBack";
5
+ export declare const ROUTER_SET_PARAMS_TYPE = "$$router_setParams";
6
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/domComponents/events.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,sBAAsB,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ROUTER_SET_PARAMS_TYPE = exports.ROUTER_BACK_TYPE = exports.ROUTER_DISMISS_TYPE = exports.ROUTER_DISMISS_ALL_TYPE = exports.ROUTER_LINK_TYPE = void 0;
4
+ exports.ROUTER_LINK_TYPE = '$$router_link';
5
+ exports.ROUTER_DISMISS_ALL_TYPE = '$$router_dismissAll';
6
+ exports.ROUTER_DISMISS_TYPE = '$$router_dismiss';
7
+ exports.ROUTER_BACK_TYPE = '$$router_goBack';
8
+ exports.ROUTER_SET_PARAMS_TYPE = '$$router_setParams';
9
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/domComponents/events.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,eAAe,CAAC;AACnC,QAAA,uBAAuB,GAAG,qBAAqB,CAAC;AAChD,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AACzC,QAAA,gBAAgB,GAAG,iBAAiB,CAAC;AACrC,QAAA,sBAAsB,GAAG,oBAAoB,CAAC","sourcesContent":["export const ROUTER_LINK_TYPE = '$$router_link';\nexport const ROUTER_DISMISS_ALL_TYPE = '$$router_dismissAll';\nexport const ROUTER_DISMISS_TYPE = '$$router_dismiss';\nexport const ROUTER_BACK_TYPE = '$$router_goBack';\nexport const ROUTER_SET_PARAMS_TYPE = '$$router_setParams';\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function useDomComponentNavigation(): void;
2
+ //# sourceMappingURL=useDomComponentNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDomComponentNavigation.d.ts","sourceRoot":"","sources":["../../src/domComponents/useDomComponentNavigation.ts"],"names":[],"mappings":"AAYA,wBAAgB,yBAAyB,SAyBxC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useDomComponentNavigation = useDomComponentNavigation;
7
+ const global_1 = require("expo/dom/global");
8
+ const react_1 = __importDefault(require("react"));
9
+ const events_1 = require("./events");
10
+ const routing_1 = require("../global-state/routing");
11
+ function useDomComponentNavigation() {
12
+ react_1.default.useEffect(() => {
13
+ if (process.env.EXPO_OS === 'web') {
14
+ return () => { };
15
+ }
16
+ return (0, global_1.addGlobalDomEventListener)(({ type, data }) => {
17
+ switch (type) {
18
+ case events_1.ROUTER_LINK_TYPE:
19
+ (0, routing_1.linkTo)(data.href, data.options);
20
+ break;
21
+ case events_1.ROUTER_DISMISS_ALL_TYPE:
22
+ (0, routing_1.dismissAll)();
23
+ break;
24
+ case events_1.ROUTER_DISMISS_TYPE:
25
+ (0, routing_1.dismiss)(data.count);
26
+ break;
27
+ case events_1.ROUTER_BACK_TYPE:
28
+ (0, routing_1.goBack)();
29
+ break;
30
+ case events_1.ROUTER_SET_PARAMS_TYPE:
31
+ (0, routing_1.setParams)(data.params);
32
+ break;
33
+ }
34
+ });
35
+ }, []);
36
+ }
37
+ //# sourceMappingURL=useDomComponentNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDomComponentNavigation.js","sourceRoot":"","sources":["../../src/domComponents/useDomComponentNavigation.ts"],"names":[],"mappings":";;;;;AAYA,8DAyBC;AArCD,4CAA4D;AAC5D,kDAA0B;AAE1B,qCAMkB;AAClB,qDAAyF;AAEzF,SAAgB,yBAAyB;IACvC,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAClC,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,IAAA,kCAAyB,EAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,yBAAgB;oBACnB,IAAA,gBAAM,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,gCAAuB;oBAC1B,IAAA,oBAAU,GAAE,CAAC;oBACb,MAAM;gBACR,KAAK,4BAAmB;oBACtB,IAAA,iBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,yBAAgB;oBACnB,IAAA,gBAAM,GAAE,CAAC;oBACT,MAAM;gBACR,KAAK,+BAAsB;oBACzB,IAAA,mBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,MAAM;YACV,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC","sourcesContent":["import { addGlobalDomEventListener } from 'expo/dom/global';\nimport React from 'react';\n\nimport {\n ROUTER_LINK_TYPE,\n ROUTER_DISMISS_ALL_TYPE,\n ROUTER_DISMISS_TYPE,\n ROUTER_BACK_TYPE,\n ROUTER_SET_PARAMS_TYPE,\n} from './events';\nimport { dismiss, dismissAll, goBack, linkTo, setParams } from '../global-state/routing';\n\nexport function useDomComponentNavigation() {\n React.useEffect(() => {\n if (process.env.EXPO_OS === 'web') {\n return () => {};\n }\n return addGlobalDomEventListener<any>(({ type, data }) => {\n switch (type) {\n case ROUTER_LINK_TYPE:\n linkTo(data.href, data.options);\n break;\n case ROUTER_DISMISS_ALL_TYPE:\n dismissAll();\n break;\n case ROUTER_DISMISS_TYPE:\n dismiss(data.count);\n break;\n case ROUTER_BACK_TYPE:\n goBack();\n break;\n case ROUTER_SET_PARAMS_TYPE:\n setParams(data.params);\n break;\n }\n });\n }, []);\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  import { PathConfigMap } from '@react-navigation/native';
2
2
  import type { NavigationState, PartialState } from '@react-navigation/routers';
3
3
  import type { ExpoOptions, ExpoRouteConfig } from './getStateFromPath-forks';
4
- import { RouterStore } from '../global-state/router-store';
5
4
  export type Options<ParamList extends object> = ExpoOptions & {
6
5
  path?: string;
7
6
  initialRouteName?: string;
@@ -49,6 +48,6 @@ export type ParsedRoute = {
49
48
  * @param path Path string to parse and convert, e.g. /foo/bar?count=42.
50
49
  * @param options Extra options to fine-tune how to parse the path.
51
50
  */
52
- export declare function getStateFromPath<ParamList extends object>(this: RouterStore | undefined | void, path: string, options?: Options<ParamList>): ResultState | undefined;
51
+ export declare function getStateFromPath<ParamList extends object>(path: string, options?: Options<ParamList>, segments?: string[]): ResultState | undefined;
53
52
  export {};
54
53
  //# sourceMappingURL=getStateFromPath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getStateFromPath.d.ts","sourceRoot":"","sources":["../../src/fork/getStateFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAgB,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI7F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,MAAM,MAAM,OAAO,CAAC,SAAS,SAAS,MAAM,IAAI,WAAW,GAAG;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CAC1C,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,MAAM,EAEvD,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,EAEpC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC3B,WAAW,GAAG,SAAS,CAsGzB"}
1
+ {"version":3,"file":"getStateFromPath.d.ts","sourceRoot":"","sources":["../../src/fork/getStateFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAgB,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI7F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI7E,MAAM,MAAM,OAAO,CAAC,SAAS,SAAS,MAAM,IAAI,WAAW,GAAG;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CAC1C,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,MAAM,EACvD,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAE5B,QAAQ,GAAE,MAAM,EAAO,GAEtB,WAAW,GAAG,SAAS,CAwGzB"}
@@ -41,7 +41,7 @@ const native_1 = require("@react-navigation/native");
41
41
  const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
42
42
  const findFocusedRoute_1 = require("./findFocusedRoute");
43
43
  const expo = __importStar(require("./getStateFromPath-forks"));
44
- const getLinkingConfig_1 = require("../getLinkingConfig");
44
+ const constants_1 = require("../constants");
45
45
  /**
46
46
  * Utility to parse a path string to initial state object accepted by the container.
47
47
  * This is useful for deep linking when we need to handle the incoming URL.
@@ -63,10 +63,16 @@ const getLinkingConfig_1 = require("../getLinkingConfig");
63
63
  * @param path Path string to parse and convert, e.g. /foo/bar?count=42.
64
64
  * @param options Extra options to fine-tune how to parse the path.
65
65
  */
66
- function getStateFromPath(
66
+ function getStateFromPath(path, options,
67
+ // START FORK
68
+ segments = []
67
69
  // END FORK
68
- path, options) {
69
- const { initialRoutes, configs, configWithRegexes } = getConfigResources(options, this?.routeInfo?.segments);
70
+ ) {
71
+ const { initialRoutes, configs, configWithRegexes } = getConfigResources(options,
72
+ // START FORK
73
+ segments
74
+ // END FORK
75
+ );
70
76
  const screens = options?.screens;
71
77
  // START FORK
72
78
  const expoPath = expo.getUrlWithReactNavigationConcessions(path);
@@ -379,7 +385,7 @@ const createNormalizedConfigs = (screen, routeConfig, routeNames = [], initials,
379
385
  config.exact !== true
380
386
  ? joinPaths(parentPattern || '', config.path || '')
381
387
  : config.path || '';
382
- if (screen !== getLinkingConfig_1.INTERNAL_SLOT_NAME) {
388
+ if (screen !== constants_1.INTERNAL_SLOT_NAME) {
383
389
  configs.push(createConfigItem(screen, routeNames, pattern, config.path, config.parse, config));
384
390
  }
385
391
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getStateFromPath.js","sourceRoot":"","sources":["../../src/fork/getStateFromPath.ts"],"names":[],"mappings":"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","sourcesContent":["import { PathConfigMap, validatePathConfig } from '@react-navigation/native';\nimport type { InitialState, NavigationState, PartialState } from '@react-navigation/routers';\nimport escape from 'escape-string-regexp';\n\nimport { findFocusedRoute } from './findFocusedRoute';\nimport type { ExpoOptions, ExpoRouteConfig } from './getStateFromPath-forks';\nimport * as expo from './getStateFromPath-forks';\nimport { INTERNAL_SLOT_NAME } from '../getLinkingConfig';\nimport { RouterStore } from '../global-state/router-store';\n\nexport type Options<ParamList extends object> = ExpoOptions & {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n\ntype ParseConfig = Record<string, (value: string) => any>;\n\nexport type RouteConfig = ExpoRouteConfig & {\n screen: string;\n regex?: RegExp;\n path: string;\n pattern: string;\n routeNames: string[];\n parse?: ParseConfig;\n};\n\nexport type InitialRouteConfig = {\n initialRouteName: string;\n parentScreens: string[];\n};\n\nexport type ResultState = PartialState<NavigationState> & {\n state?: ResultState;\n};\n\nexport type ParsedRoute = {\n name: string;\n path?: string;\n params?: Record<string, any> | undefined;\n};\n\ntype ConfigResources = {\n initialRoutes: InitialRouteConfig[];\n configs: RouteConfig[];\n configWithRegexes: RouteConfig[];\n};\n\n/**\n * Utility to parse a path string to initial state object accepted by the container.\n * This is useful for deep linking when we need to handle the incoming URL.\n *\n * @example\n * ```js\n * getStateFromPath(\n * '/chat/jane/42',\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * parse: { id: Number }\n * }\n * }\n * }\n * )\n * ```\n * @param path Path string to parse and convert, e.g. /foo/bar?count=42.\n * @param options Extra options to fine-tune how to parse the path.\n */\nexport function getStateFromPath<ParamList extends object>(\n // START FORK\n this: RouterStore | undefined | void,\n // END FORK\n path: string,\n options?: Options<ParamList>\n): ResultState | undefined {\n const { initialRoutes, configs, configWithRegexes } = getConfigResources(\n options,\n this?.routeInfo?.segments\n );\n\n const screens = options?.screens;\n\n // START FORK\n const expoPath = expo.getUrlWithReactNavigationConcessions(path);\n // END FORK\n\n // START FORK\n let remaining = expo.cleanPath(expoPath.nonstandardPathname);\n // let remaining = path\n // .replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n // .replace(/^\\//, '') // Remove extra leading slash\n // .replace(/\\?.*$/, ''); // Remove query params which we will handle later\n\n // // Make sure there is a trailing slash\n // remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;\n // END FORK\n\n const prefix = options?.path?.replace(/^\\//, ''); // Remove extra leading slash\n\n if (prefix) {\n // Make sure there is a trailing slash\n const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;\n\n // If the path doesn't start with the prefix, it's not a match\n if (!remaining.startsWith(normalizedPrefix)) {\n return undefined;\n }\n\n // Remove the prefix from the path\n remaining = remaining.replace(normalizedPrefix, '');\n }\n\n if (screens === undefined) {\n // When no config is specified, use the path segments as route names\n const routes = remaining\n .split('/')\n .filter(Boolean)\n .map((segment) => {\n const name = decodeURIComponent(segment);\n return { name };\n });\n\n if (routes.length) {\n return createNestedStateObject(expoPath, routes, initialRoutes, [], expoPath.url.hash);\n }\n\n return undefined;\n }\n\n if (remaining === '/') {\n // We need to add special handling of empty path so navigation to empty path also works\n // When handling empty path, we should only look at the root level config\n // START FORK\n const match = expo.matchForEmptyPath(configWithRegexes);\n // const match = configs.find(\n // (config) =>\n // config.path === '' &&\n // config.routeNames.every(\n // // Make sure that none of the parent configs have a non-empty path defined\n // (name) => !configs.find((c) => c.screen === name)?.path\n // )\n // );\n // END FORK\n\n if (match) {\n return createNestedStateObject(\n expoPath,\n match.routeNames.map((name) => ({ name })),\n initialRoutes,\n configs,\n expoPath.url.hash\n );\n }\n\n return undefined;\n }\n\n let result: PartialState<NavigationState> | undefined;\n let current: PartialState<NavigationState> | undefined;\n\n // We match the whole path against the regex instead of segments\n // This makes sure matches such as wildcard will catch any unmatched routes, even if nested\n const { routes, remainingPath } = matchAgainstConfigs(remaining, configWithRegexes);\n\n if (routes !== undefined) {\n // This will always be empty if full path matched\n current = createNestedStateObject(expoPath, routes, initialRoutes, configs, expoPath.url.hash);\n remaining = remainingPath;\n result = current;\n }\n\n if (current == null || result == null) {\n return undefined;\n }\n\n return result;\n}\n\n/**\n * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same.\n */\nlet cachedConfigResources: [Options<object> | undefined, ConfigResources] = [\n undefined,\n prepareConfigResources(),\n];\n\nfunction getConfigResources<ParamList extends object>(\n options: Options<ParamList> | undefined,\n // START FORK\n previousSegments?: string[]\n // END FORK\n) {\n // START FORK - We need to disable this caching as our configs can change based upon the current state\n // if (cachedConfigResources[0] !== options) {\n cachedConfigResources = [options, prepareConfigResources(options, previousSegments)];\n // }\n // END FORK FORK\n\n return cachedConfigResources[1];\n}\n\nfunction prepareConfigResources(options?: Options<object>, previousSegments?: string[]) {\n if (options) {\n validatePathConfig(options);\n }\n\n const initialRoutes = getInitialRoutes(options);\n\n const configs = getNormalizedConfigs(initialRoutes, options?.screens, previousSegments);\n\n checkForDuplicatedConfigs(configs);\n\n const configWithRegexes = getConfigsWithRegexes(configs);\n\n return {\n initialRoutes,\n configs,\n configWithRegexes,\n };\n}\n\nfunction getInitialRoutes(options?: Options<object>) {\n const initialRoutes: InitialRouteConfig[] = [];\n\n if (options?.initialRouteName) {\n initialRoutes.push({\n initialRouteName: options.initialRouteName,\n parentScreens: [],\n });\n }\n\n return initialRoutes;\n}\n\nfunction getNormalizedConfigs(\n initialRoutes: InitialRouteConfig[],\n screens: PathConfigMap<object> = {},\n // START FORK\n previousSegments?: string[]\n // END FORK\n) {\n // Create a normalized configs array which will be easier to use\n return ([] as RouteConfig[])\n .concat(\n ...Object.keys(screens).map((key) =>\n createNormalizedConfigs(key, screens as PathConfigMap<object>, [], initialRoutes, [])\n )\n )\n .map(expo.appendIsInitial(initialRoutes))\n .sort(expo.getRouteConfigSorter(previousSegments));\n // .sort((a, b) => {\n // // Sort config so that:\n // // - the most exhaustive ones are always at the beginning\n // // - patterns with wildcard are always at the end\n\n // // If 2 patterns are same, move the one with less route names up\n // // This is an error state, so it's only useful for consistent error messages\n // if (a.pattern === b.pattern) {\n // return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));\n // }\n\n // // If one of the patterns starts with the other, it's more exhaustive\n // // So move it up\n // if (a.pattern.startsWith(b.pattern)) {\n // return -1;\n // }\n\n // if (b.pattern.startsWith(a.pattern)) {\n // return 1;\n // }\n\n // const aParts = a.pattern.split('/');\n // const bParts = b.pattern.split('/');\n\n // for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n // // if b is longer, b get higher priority\n // if (aParts[i] == null) {\n // return 1;\n // }\n // // if a is longer, a get higher priority\n // if (bParts[i] == null) {\n // return -1;\n // }\n // const aWildCard = aParts[i] === '*' || aParts[i].startsWith(':');\n // const bWildCard = bParts[i] === '*' || bParts[i].startsWith(':');\n // // if both are wildcard we compare next component\n // if (aWildCard && bWildCard) {\n // continue;\n // }\n // // if only a is wild card, b get higher priority\n // if (aWildCard) {\n // return 1;\n // }\n // // if only b is wild card, a get higher priority\n // if (bWildCard) {\n // return -1;\n // }\n // }\n // return bParts.length - aParts.length;\n // });\n}\n\nfunction checkForDuplicatedConfigs(configs: RouteConfig[]) {\n // Check for duplicate patterns in the config\n configs.reduce<Record<string, RouteConfig>>((acc, config) => {\n if (acc[config.pattern]) {\n const a = acc[config.pattern].routeNames;\n const b = config.routeNames;\n\n // It's not a problem if the path string omitted from a inner most screen\n // For example, it's ok if a path resolves to `A > B > C` or `A > B`\n const intersects =\n a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);\n\n if (!intersects) {\n throw new Error(\n `Found conflicting screens with the same pattern. The pattern '${\n config.pattern\n }' resolves to both '${a.join(' > ')}' and '${b.join(\n ' > '\n )}'. Patterns must be unique and cannot resolve to more than one screen.`\n );\n }\n }\n\n return Object.assign(acc, {\n [config.pattern]: config,\n });\n }, {});\n}\n\nfunction getConfigsWithRegexes(configs: RouteConfig[]) {\n return configs.map((c) => ({\n ...c,\n // Add `$` to the regex to make sure it matches till end of the path and not just beginning\n // START FORK\n // regex: c.regex ? new RegExp(c.regex.source + '$') : undefined,\n regex: expo.configRegExp(c),\n // END FORK\n }));\n}\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst matchAgainstConfigs = (remaining: string, configs: RouteConfig[]) => {\n let routes: ParsedRoute[] | undefined;\n let remainingPath = remaining;\n\n // START FORK\n const allParams = Object.create(null);\n // END FORK\n\n // Go through all configs, and see if the next path segment matches our regex\n for (const config of configs) {\n if (!config.regex) {\n continue;\n }\n\n const match = remainingPath.match(config.regex);\n\n // If our regex matches, we need to extract params from the path\n if (match) {\n const matchResult = config.pattern?.split('/').reduce<{\n pos: number; // Position of the current path param segment in the path (e.g in pattern `a/:b/:c`, `:a` is 0 and `:b` is 1)\n matchedParams: Record<string, Record<string, string>>; // The extracted params\n }>(\n (acc, p, index) => {\n if (!expo.isDynamicPart(p)) {\n return acc;\n }\n\n acc.pos += 1;\n\n // START FORK\n const decodedParamSegment = expo.safelyDecodeURIComponent(\n // const decodedParamSegment = decodeURIComponent(\n // The param segments appear every second item starting from 2 in the regex match result\n match![(acc.pos + 1) * 2]\n // Remove trailing slash\n .replace(/\\/$/, '')\n );\n // END FORK\n\n Object.assign(acc.matchedParams, {\n [p]: Object.assign(acc.matchedParams[p] || {}, {\n [index]: decodedParamSegment,\n }),\n });\n\n return acc;\n },\n { pos: -1, matchedParams: {} }\n );\n\n const matchedParams = matchResult.matchedParams || {};\n\n routes = config.routeNames.map((name) => {\n const routeConfig = configs.find((c) => {\n // Check matching name AND pattern in case same screen is used at different levels in config\n return c.screen === name && config.pattern.startsWith(c.pattern);\n });\n\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n const normalizedPath = routeConfig?.path.split('/').filter(Boolean).join('/');\n\n // Get the number of segments in the initial pattern\n const numInitialSegments = routeConfig?.pattern\n // Extract the prefix from the pattern by removing the ending path pattern (e.g pattern=`a/b/c/d` and normalizedPath=`c/d` becomes `a/b`)\n .replace(new RegExp(`${escape(normalizedPath!)}$`), '')\n ?.split('/').length;\n\n const params = normalizedPath\n ?.split('/')\n .reduce<Record<string, unknown>>((acc, p, index) => {\n if (!expo.isDynamicPart(p)) {\n return acc;\n }\n\n // Get the real index of the path parameter in the matched path\n // by offsetting by the number of segments in the initial pattern\n const offset = numInitialSegments ? numInitialSegments - 1 : 0;\n // START FORK\n // const value = matchedParams[p]?.[index + offset];\n const value = expo.getParamValue(p, matchedParams[p]?.[index + offset]);\n // END FORK\n\n if (value) {\n // START FORK\n // const key = p.replace(/^:/, '').replace(/\\?$/, '');\n const key = expo.replacePart(p);\n // END FORK\n acc[key] = routeConfig?.parse?.[key] ? routeConfig.parse[key](value as any) : value;\n }\n\n return acc;\n }, {});\n\n if (params && Object.keys(params).length) {\n Object.assign(allParams, params);\n return { name, params };\n }\n\n return { name };\n });\n\n remainingPath = remainingPath.replace(match[1], '');\n\n break;\n }\n }\n\n // START FORK\n expo.populateParams(routes, allParams);\n // END FORK\n\n return { routes, remainingPath };\n};\n\nconst createNormalizedConfigs = (\n screen: string,\n routeConfig: PathConfigMap<object>,\n routeNames: string[] = [],\n initials: InitialRouteConfig[],\n parentScreens: string[],\n parentPattern?: string\n): RouteConfig[] => {\n const configs: RouteConfig[] = [];\n\n routeNames.push(screen);\n\n parentScreens.push(screen);\n\n // @ts-expect-error: TODO(@kitten): This is entirely untyped. The index access just flags this, but we're not typing the config properly here\n const config = routeConfig[screen];\n\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 configs.push(createConfigItem(screen, routeNames, pattern, config));\n } else if (typeof config === 'object') {\n let pattern: string | undefined;\n\n // if an object is specified as the value (e.g. Foo: { ... }),\n // it can have `path` property and\n // it could have `screens` prop which has nested configs\n if (typeof config.path === 'string') {\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 pattern =\n config.exact !== true\n ? joinPaths(parentPattern || '', config.path || '')\n : config.path || '';\n\n if (screen !== INTERNAL_SLOT_NAME) {\n configs.push(\n createConfigItem(screen, routeNames, pattern!, config.path, config.parse, config)\n );\n }\n }\n\n if (config.screens) {\n // property `initialRouteName` without `screens` has no purpose\n if (config.initialRouteName) {\n initials.push({\n initialRouteName: config.initialRouteName,\n parentScreens,\n });\n }\n\n Object.keys(config.screens).forEach((nestedConfig) => {\n const result = createNormalizedConfigs(\n nestedConfig,\n config.screens as PathConfigMap<object>,\n routeNames,\n initials,\n [...parentScreens],\n pattern ?? parentPattern\n );\n\n configs.push(...result);\n });\n }\n }\n\n routeNames.pop();\n\n return configs;\n};\n\nconst createConfigItem = (\n screen: string,\n routeNames: string[],\n pattern: string,\n path: string,\n parse: ParseConfig | undefined = undefined,\n config: Record<string, any> = {}\n): RouteConfig => {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern = pattern.split('/').filter(Boolean).join('/');\n\n // START FORK\n const regex = pattern ? expo.routePatternToRegex(pattern) : undefined;\n // const regex = pattern\n // ? new RegExp(\n // `^(${pattern\n // .split('/')\n // .map((it) => {\n // if (it.startsWith(':')) {\n // return `(([^/]+\\\\/)${it.endsWith('?') ? '?' : ''})`;\n // }\n\n // return `${it === '*' ? '.*' : escape(it)}\\\\/`;\n // })\n // .join('')})`\n // )\n // : undefined;\n // END FORK\n\n return {\n screen,\n regex,\n pattern,\n path,\n // The routeNames array is mutated, so copy it to keep the current state\n routeNames: [...routeNames],\n parse,\n // START FORK\n ...expo.createConfig(screen, pattern, routeNames, config),\n // END FORK\n };\n};\n\nconst findParseConfigForRoute = (\n routeName: string,\n flatConfig: RouteConfig[]\n): ParseConfig | undefined => {\n for (const config of flatConfig) {\n if (routeName === config.routeNames[config.routeNames.length - 1]) {\n return config.parse;\n }\n }\n\n return undefined;\n};\n\n// Try to find an initial route connected with the one passed\nconst findInitialRoute = (\n routeName: string,\n parentScreens: string[],\n initialRoutes: InitialRouteConfig[]\n): string | undefined => {\n for (const config of initialRoutes) {\n if (parentScreens.length === config.parentScreens.length) {\n let sameParents = true;\n for (let i = 0; i < parentScreens.length; i++) {\n if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {\n sameParents = false;\n break;\n }\n }\n if (sameParents) {\n return routeName !== config.initialRouteName ? config.initialRouteName : undefined;\n }\n }\n }\n return undefined;\n};\n\n// returns state object with values depending on whether\n// it is the end of state and if there is initialRoute for this level\nconst createStateObject = (\n initialRoute: string | undefined,\n route: ParsedRoute,\n isEmpty: boolean\n): InitialState => {\n if (isEmpty) {\n if (initialRoute) {\n return {\n index: 1,\n routes: [{ name: initialRoute, params: route.params }, route],\n };\n } else {\n return {\n routes: [route],\n };\n }\n } else {\n if (initialRoute) {\n return {\n index: 1,\n routes: [\n { name: initialRoute, params: route.params },\n { ...route, state: { routes: [] } },\n ],\n };\n } else {\n return {\n routes: [{ ...route, state: { routes: [] } }],\n };\n }\n }\n};\n\nconst createNestedStateObject = (\n { path, ...expoURL }: ReturnType<typeof expo.getUrlWithReactNavigationConcessions>,\n routes: ParsedRoute[],\n initialRoutes: InitialRouteConfig[],\n flatConfig?: RouteConfig[],\n hash?: string\n) => {\n let route = routes.shift() as ParsedRoute;\n const parentScreens: string[] = [];\n\n let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n parentScreens.push(route.name);\n\n const state: InitialState = createStateObject(initialRoute, route, routes.length === 0);\n\n if (routes.length > 0) {\n let nestedState = state;\n\n while ((route = routes.shift() as ParsedRoute)) {\n initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n const nestedStateIndex = nestedState.index || nestedState.routes.length - 1;\n\n nestedState.routes[nestedStateIndex].state = createStateObject(\n initialRoute,\n route,\n routes.length === 0\n );\n\n if (routes.length > 0) {\n nestedState = nestedState.routes[nestedStateIndex].state as InitialState;\n }\n\n parentScreens.push(route.name);\n }\n }\n\n route = findFocusedRoute(state) as ParsedRoute;\n // START FORK\n route.path = expoURL.pathWithoutGroups;\n // route.path = path;\n // END FORK\n\n // START FORK\n // const params = parseQueryParams(\n const params = expo.parseQueryParams(\n path,\n route,\n flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined,\n hash\n );\n // END FORK\n\n // START FORK\n // expo.handleUrlParams(route, params, hash);\n if (params) {\n route.params = { ...route.params, ...params };\n }\n // END FORK\n\n return state;\n};\n\n// START FORK\n// const parseQueryParams = (path: string, parseConfig?: Record<string, (value: string) => any>) => {\n// const query = path.split('?')[1];\n// const params = queryString.parse(query);\n\n// if (parseConfig) {\n// Object.keys(params).forEach((name) => {\n// if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {\n// params[name] = parseConfig[name](params[name] as string);\n// }\n// });\n// }\n\n// return Object.keys(params).length ? params : undefined;\n// };\n// END FORK\n"]}
1
+ {"version":3,"file":"getStateFromPath.js","sourceRoot":"","sources":["../../src/fork/getStateFromPath.ts"],"names":[],"mappings":"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","sourcesContent":["import { PathConfigMap, validatePathConfig } from '@react-navigation/native';\nimport type { InitialState, NavigationState, PartialState } from '@react-navigation/routers';\nimport escape from 'escape-string-regexp';\n\nimport { findFocusedRoute } from './findFocusedRoute';\nimport type { ExpoOptions, ExpoRouteConfig } from './getStateFromPath-forks';\nimport * as expo from './getStateFromPath-forks';\nimport { INTERNAL_SLOT_NAME } from '../constants';\n\nexport type Options<ParamList extends object> = ExpoOptions & {\n path?: string;\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n\ntype ParseConfig = Record<string, (value: string) => any>;\n\nexport type RouteConfig = ExpoRouteConfig & {\n screen: string;\n regex?: RegExp;\n path: string;\n pattern: string;\n routeNames: string[];\n parse?: ParseConfig;\n};\n\nexport type InitialRouteConfig = {\n initialRouteName: string;\n parentScreens: string[];\n};\n\nexport type ResultState = PartialState<NavigationState> & {\n state?: ResultState;\n};\n\nexport type ParsedRoute = {\n name: string;\n path?: string;\n params?: Record<string, any> | undefined;\n};\n\ntype ConfigResources = {\n initialRoutes: InitialRouteConfig[];\n configs: RouteConfig[];\n configWithRegexes: RouteConfig[];\n};\n\n/**\n * Utility to parse a path string to initial state object accepted by the container.\n * This is useful for deep linking when we need to handle the incoming URL.\n *\n * @example\n * ```js\n * getStateFromPath(\n * '/chat/jane/42',\n * {\n * screens: {\n * Chat: {\n * path: 'chat/:author/:id',\n * parse: { id: Number }\n * }\n * }\n * }\n * )\n * ```\n * @param path Path string to parse and convert, e.g. /foo/bar?count=42.\n * @param options Extra options to fine-tune how to parse the path.\n */\nexport function getStateFromPath<ParamList extends object>(\n path: string,\n options?: Options<ParamList>,\n // START FORK\n segments: string[] = []\n // END FORK\n): ResultState | undefined {\n const { initialRoutes, configs, configWithRegexes } = getConfigResources(\n options,\n // START FORK\n segments\n // END FORK\n );\n\n const screens = options?.screens;\n\n // START FORK\n const expoPath = expo.getUrlWithReactNavigationConcessions(path);\n // END FORK\n\n // START FORK\n let remaining = expo.cleanPath(expoPath.nonstandardPathname);\n // let remaining = path\n // .replace(/\\/+/g, '/') // Replace multiple slash (//) with single ones\n // .replace(/^\\//, '') // Remove extra leading slash\n // .replace(/\\?.*$/, ''); // Remove query params which we will handle later\n\n // // Make sure there is a trailing slash\n // remaining = remaining.endsWith('/') ? remaining : `${remaining}/`;\n // END FORK\n\n const prefix = options?.path?.replace(/^\\//, ''); // Remove extra leading slash\n\n if (prefix) {\n // Make sure there is a trailing slash\n const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;\n\n // If the path doesn't start with the prefix, it's not a match\n if (!remaining.startsWith(normalizedPrefix)) {\n return undefined;\n }\n\n // Remove the prefix from the path\n remaining = remaining.replace(normalizedPrefix, '');\n }\n\n if (screens === undefined) {\n // When no config is specified, use the path segments as route names\n const routes = remaining\n .split('/')\n .filter(Boolean)\n .map((segment) => {\n const name = decodeURIComponent(segment);\n return { name };\n });\n\n if (routes.length) {\n return createNestedStateObject(expoPath, routes, initialRoutes, [], expoPath.url.hash);\n }\n\n return undefined;\n }\n\n if (remaining === '/') {\n // We need to add special handling of empty path so navigation to empty path also works\n // When handling empty path, we should only look at the root level config\n // START FORK\n const match = expo.matchForEmptyPath(configWithRegexes);\n // const match = configs.find(\n // (config) =>\n // config.path === '' &&\n // config.routeNames.every(\n // // Make sure that none of the parent configs have a non-empty path defined\n // (name) => !configs.find((c) => c.screen === name)?.path\n // )\n // );\n // END FORK\n\n if (match) {\n return createNestedStateObject(\n expoPath,\n match.routeNames.map((name) => ({ name })),\n initialRoutes,\n configs,\n expoPath.url.hash\n );\n }\n\n return undefined;\n }\n\n let result: PartialState<NavigationState> | undefined;\n let current: PartialState<NavigationState> | undefined;\n\n // We match the whole path against the regex instead of segments\n // This makes sure matches such as wildcard will catch any unmatched routes, even if nested\n const { routes, remainingPath } = matchAgainstConfigs(remaining, configWithRegexes);\n\n if (routes !== undefined) {\n // This will always be empty if full path matched\n current = createNestedStateObject(expoPath, routes, initialRoutes, configs, expoPath.url.hash);\n remaining = remainingPath;\n result = current;\n }\n\n if (current == null || result == null) {\n return undefined;\n }\n\n return result;\n}\n\n/**\n * Reference to the last used config resources. This is used to avoid recomputing the config resources when the options are the same.\n */\nlet cachedConfigResources: [Options<object> | undefined, ConfigResources] = [\n undefined,\n prepareConfigResources(),\n];\n\nfunction getConfigResources<ParamList extends object>(\n options: Options<ParamList> | undefined,\n // START FORK\n previousSegments?: string[]\n // END FORK\n) {\n // START FORK - We need to disable this caching as our configs can change based upon the current state\n // if (cachedConfigResources[0] !== options) {\n cachedConfigResources = [options, prepareConfigResources(options, previousSegments)];\n // }\n // END FORK FORK\n\n return cachedConfigResources[1];\n}\n\nfunction prepareConfigResources(options?: Options<object>, previousSegments?: string[]) {\n if (options) {\n validatePathConfig(options);\n }\n\n const initialRoutes = getInitialRoutes(options);\n\n const configs = getNormalizedConfigs(initialRoutes, options?.screens, previousSegments);\n\n checkForDuplicatedConfigs(configs);\n\n const configWithRegexes = getConfigsWithRegexes(configs);\n\n return {\n initialRoutes,\n configs,\n configWithRegexes,\n };\n}\n\nfunction getInitialRoutes(options?: Options<object>) {\n const initialRoutes: InitialRouteConfig[] = [];\n\n if (options?.initialRouteName) {\n initialRoutes.push({\n initialRouteName: options.initialRouteName,\n parentScreens: [],\n });\n }\n\n return initialRoutes;\n}\n\nfunction getNormalizedConfigs(\n initialRoutes: InitialRouteConfig[],\n screens: PathConfigMap<object> = {},\n // START FORK\n previousSegments?: string[]\n // END FORK\n) {\n // Create a normalized configs array which will be easier to use\n return ([] as RouteConfig[])\n .concat(\n ...Object.keys(screens).map((key) =>\n createNormalizedConfigs(key, screens as PathConfigMap<object>, [], initialRoutes, [])\n )\n )\n .map(expo.appendIsInitial(initialRoutes))\n .sort(expo.getRouteConfigSorter(previousSegments));\n // .sort((a, b) => {\n // // Sort config so that:\n // // - the most exhaustive ones are always at the beginning\n // // - patterns with wildcard are always at the end\n\n // // If 2 patterns are same, move the one with less route names up\n // // This is an error state, so it's only useful for consistent error messages\n // if (a.pattern === b.pattern) {\n // return b.routeNames.join('>').localeCompare(a.routeNames.join('>'));\n // }\n\n // // If one of the patterns starts with the other, it's more exhaustive\n // // So move it up\n // if (a.pattern.startsWith(b.pattern)) {\n // return -1;\n // }\n\n // if (b.pattern.startsWith(a.pattern)) {\n // return 1;\n // }\n\n // const aParts = a.pattern.split('/');\n // const bParts = b.pattern.split('/');\n\n // for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n // // if b is longer, b get higher priority\n // if (aParts[i] == null) {\n // return 1;\n // }\n // // if a is longer, a get higher priority\n // if (bParts[i] == null) {\n // return -1;\n // }\n // const aWildCard = aParts[i] === '*' || aParts[i].startsWith(':');\n // const bWildCard = bParts[i] === '*' || bParts[i].startsWith(':');\n // // if both are wildcard we compare next component\n // if (aWildCard && bWildCard) {\n // continue;\n // }\n // // if only a is wild card, b get higher priority\n // if (aWildCard) {\n // return 1;\n // }\n // // if only b is wild card, a get higher priority\n // if (bWildCard) {\n // return -1;\n // }\n // }\n // return bParts.length - aParts.length;\n // });\n}\n\nfunction checkForDuplicatedConfigs(configs: RouteConfig[]) {\n // Check for duplicate patterns in the config\n configs.reduce<Record<string, RouteConfig>>((acc, config) => {\n if (acc[config.pattern]) {\n const a = acc[config.pattern].routeNames;\n const b = config.routeNames;\n\n // It's not a problem if the path string omitted from a inner most screen\n // For example, it's ok if a path resolves to `A > B > C` or `A > B`\n const intersects =\n a.length > b.length ? b.every((it, i) => a[i] === it) : a.every((it, i) => b[i] === it);\n\n if (!intersects) {\n throw new Error(\n `Found conflicting screens with the same pattern. The pattern '${\n config.pattern\n }' resolves to both '${a.join(' > ')}' and '${b.join(\n ' > '\n )}'. Patterns must be unique and cannot resolve to more than one screen.`\n );\n }\n }\n\n return Object.assign(acc, {\n [config.pattern]: config,\n });\n }, {});\n}\n\nfunction getConfigsWithRegexes(configs: RouteConfig[]) {\n return configs.map((c) => ({\n ...c,\n // Add `$` to the regex to make sure it matches till end of the path and not just beginning\n // START FORK\n // regex: c.regex ? new RegExp(c.regex.source + '$') : undefined,\n regex: expo.configRegExp(c),\n // END FORK\n }));\n}\n\nconst joinPaths = (...paths: string[]): string =>\n ([] as string[])\n .concat(...paths.map((p) => p.split('/')))\n .filter(Boolean)\n .join('/');\n\nconst matchAgainstConfigs = (remaining: string, configs: RouteConfig[]) => {\n let routes: ParsedRoute[] | undefined;\n let remainingPath = remaining;\n\n // START FORK\n const allParams = Object.create(null);\n // END FORK\n\n // Go through all configs, and see if the next path segment matches our regex\n for (const config of configs) {\n if (!config.regex) {\n continue;\n }\n\n const match = remainingPath.match(config.regex);\n\n // If our regex matches, we need to extract params from the path\n if (match) {\n const matchResult = config.pattern?.split('/').reduce<{\n pos: number; // Position of the current path param segment in the path (e.g in pattern `a/:b/:c`, `:a` is 0 and `:b` is 1)\n matchedParams: Record<string, Record<string, string>>; // The extracted params\n }>(\n (acc, p, index) => {\n if (!expo.isDynamicPart(p)) {\n return acc;\n }\n\n acc.pos += 1;\n\n // START FORK\n const decodedParamSegment = expo.safelyDecodeURIComponent(\n // const decodedParamSegment = decodeURIComponent(\n // The param segments appear every second item starting from 2 in the regex match result\n match![(acc.pos + 1) * 2]\n // Remove trailing slash\n .replace(/\\/$/, '')\n );\n // END FORK\n\n Object.assign(acc.matchedParams, {\n [p]: Object.assign(acc.matchedParams[p] || {}, {\n [index]: decodedParamSegment,\n }),\n });\n\n return acc;\n },\n { pos: -1, matchedParams: {} }\n );\n\n const matchedParams = matchResult.matchedParams || {};\n\n routes = config.routeNames.map((name) => {\n const routeConfig = configs.find((c) => {\n // Check matching name AND pattern in case same screen is used at different levels in config\n return c.screen === name && config.pattern.startsWith(c.pattern);\n });\n\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n const normalizedPath = routeConfig?.path.split('/').filter(Boolean).join('/');\n\n // Get the number of segments in the initial pattern\n const numInitialSegments = routeConfig?.pattern\n // Extract the prefix from the pattern by removing the ending path pattern (e.g pattern=`a/b/c/d` and normalizedPath=`c/d` becomes `a/b`)\n .replace(new RegExp(`${escape(normalizedPath!)}$`), '')\n ?.split('/').length;\n\n const params = normalizedPath\n ?.split('/')\n .reduce<Record<string, unknown>>((acc, p, index) => {\n if (!expo.isDynamicPart(p)) {\n return acc;\n }\n\n // Get the real index of the path parameter in the matched path\n // by offsetting by the number of segments in the initial pattern\n const offset = numInitialSegments ? numInitialSegments - 1 : 0;\n // START FORK\n // const value = matchedParams[p]?.[index + offset];\n const value = expo.getParamValue(p, matchedParams[p]?.[index + offset]);\n // END FORK\n\n if (value) {\n // START FORK\n // const key = p.replace(/^:/, '').replace(/\\?$/, '');\n const key = expo.replacePart(p);\n // END FORK\n acc[key] = routeConfig?.parse?.[key] ? routeConfig.parse[key](value as any) : value;\n }\n\n return acc;\n }, {});\n\n if (params && Object.keys(params).length) {\n Object.assign(allParams, params);\n return { name, params };\n }\n\n return { name };\n });\n\n remainingPath = remainingPath.replace(match[1], '');\n\n break;\n }\n }\n\n // START FORK\n expo.populateParams(routes, allParams);\n // END FORK\n\n return { routes, remainingPath };\n};\n\nconst createNormalizedConfigs = (\n screen: string,\n routeConfig: PathConfigMap<object>,\n routeNames: string[] = [],\n initials: InitialRouteConfig[],\n parentScreens: string[],\n parentPattern?: string\n): RouteConfig[] => {\n const configs: RouteConfig[] = [];\n\n routeNames.push(screen);\n\n parentScreens.push(screen);\n\n // @ts-expect-error: TODO(@kitten): This is entirely untyped. The index access just flags this, but we're not typing the config properly here\n const config = routeConfig[screen];\n\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 configs.push(createConfigItem(screen, routeNames, pattern, config));\n } else if (typeof config === 'object') {\n let pattern: string | undefined;\n\n // if an object is specified as the value (e.g. Foo: { ... }),\n // it can have `path` property and\n // it could have `screens` prop which has nested configs\n if (typeof config.path === 'string') {\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 pattern =\n config.exact !== true\n ? joinPaths(parentPattern || '', config.path || '')\n : config.path || '';\n\n if (screen !== INTERNAL_SLOT_NAME) {\n configs.push(\n createConfigItem(screen, routeNames, pattern!, config.path, config.parse, config)\n );\n }\n }\n\n if (config.screens) {\n // property `initialRouteName` without `screens` has no purpose\n if (config.initialRouteName) {\n initials.push({\n initialRouteName: config.initialRouteName,\n parentScreens,\n });\n }\n\n Object.keys(config.screens).forEach((nestedConfig) => {\n const result = createNormalizedConfigs(\n nestedConfig,\n config.screens as PathConfigMap<object>,\n routeNames,\n initials,\n [...parentScreens],\n pattern ?? parentPattern\n );\n\n configs.push(...result);\n });\n }\n }\n\n routeNames.pop();\n\n return configs;\n};\n\nconst createConfigItem = (\n screen: string,\n routeNames: string[],\n pattern: string,\n path: string,\n parse: ParseConfig | undefined = undefined,\n config: Record<string, any> = {}\n): RouteConfig => {\n // Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.\n pattern = pattern.split('/').filter(Boolean).join('/');\n\n // START FORK\n const regex = pattern ? expo.routePatternToRegex(pattern) : undefined;\n // const regex = pattern\n // ? new RegExp(\n // `^(${pattern\n // .split('/')\n // .map((it) => {\n // if (it.startsWith(':')) {\n // return `(([^/]+\\\\/)${it.endsWith('?') ? '?' : ''})`;\n // }\n\n // return `${it === '*' ? '.*' : escape(it)}\\\\/`;\n // })\n // .join('')})`\n // )\n // : undefined;\n // END FORK\n\n return {\n screen,\n regex,\n pattern,\n path,\n // The routeNames array is mutated, so copy it to keep the current state\n routeNames: [...routeNames],\n parse,\n // START FORK\n ...expo.createConfig(screen, pattern, routeNames, config),\n // END FORK\n };\n};\n\nconst findParseConfigForRoute = (\n routeName: string,\n flatConfig: RouteConfig[]\n): ParseConfig | undefined => {\n for (const config of flatConfig) {\n if (routeName === config.routeNames[config.routeNames.length - 1]) {\n return config.parse;\n }\n }\n\n return undefined;\n};\n\n// Try to find an initial route connected with the one passed\nconst findInitialRoute = (\n routeName: string,\n parentScreens: string[],\n initialRoutes: InitialRouteConfig[]\n): string | undefined => {\n for (const config of initialRoutes) {\n if (parentScreens.length === config.parentScreens.length) {\n let sameParents = true;\n for (let i = 0; i < parentScreens.length; i++) {\n if (parentScreens[i].localeCompare(config.parentScreens[i]) !== 0) {\n sameParents = false;\n break;\n }\n }\n if (sameParents) {\n return routeName !== config.initialRouteName ? config.initialRouteName : undefined;\n }\n }\n }\n return undefined;\n};\n\n// returns state object with values depending on whether\n// it is the end of state and if there is initialRoute for this level\nconst createStateObject = (\n initialRoute: string | undefined,\n route: ParsedRoute,\n isEmpty: boolean\n): InitialState => {\n if (isEmpty) {\n if (initialRoute) {\n return {\n index: 1,\n routes: [{ name: initialRoute, params: route.params }, route],\n };\n } else {\n return {\n routes: [route],\n };\n }\n } else {\n if (initialRoute) {\n return {\n index: 1,\n routes: [\n { name: initialRoute, params: route.params },\n { ...route, state: { routes: [] } },\n ],\n };\n } else {\n return {\n routes: [{ ...route, state: { routes: [] } }],\n };\n }\n }\n};\n\nconst createNestedStateObject = (\n { path, ...expoURL }: ReturnType<typeof expo.getUrlWithReactNavigationConcessions>,\n routes: ParsedRoute[],\n initialRoutes: InitialRouteConfig[],\n flatConfig?: RouteConfig[],\n hash?: string\n) => {\n let route = routes.shift() as ParsedRoute;\n const parentScreens: string[] = [];\n\n let initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n parentScreens.push(route.name);\n\n const state: InitialState = createStateObject(initialRoute, route, routes.length === 0);\n\n if (routes.length > 0) {\n let nestedState = state;\n\n while ((route = routes.shift() as ParsedRoute)) {\n initialRoute = findInitialRoute(route.name, parentScreens, initialRoutes);\n\n const nestedStateIndex = nestedState.index || nestedState.routes.length - 1;\n\n nestedState.routes[nestedStateIndex].state = createStateObject(\n initialRoute,\n route,\n routes.length === 0\n );\n\n if (routes.length > 0) {\n nestedState = nestedState.routes[nestedStateIndex].state as InitialState;\n }\n\n parentScreens.push(route.name);\n }\n }\n\n route = findFocusedRoute(state) as ParsedRoute;\n // START FORK\n route.path = expoURL.pathWithoutGroups;\n // route.path = path;\n // END FORK\n\n // START FORK\n // const params = parseQueryParams(\n const params = expo.parseQueryParams(\n path,\n route,\n flatConfig ? findParseConfigForRoute(route.name, flatConfig) : undefined,\n hash\n );\n // END FORK\n\n // START FORK\n // expo.handleUrlParams(route, params, hash);\n if (params) {\n route.params = { ...route.params, ...params };\n }\n // END FORK\n\n return state;\n};\n\n// START FORK\n// const parseQueryParams = (path: string, parseConfig?: Record<string, (value: string) => any>) => {\n// const query = path.split('?')[1];\n// const params = queryString.parse(query);\n\n// if (parseConfig) {\n// Object.keys(params).forEach((name) => {\n// if (Object.hasOwnProperty.call(parseConfig, name) && typeof params[name] === 'string') {\n// params[name] = parseConfig[name](params[name] as string);\n// }\n// });\n// }\n\n// return Object.keys(params).length ? params : undefined;\n// };\n// END FORK\n"]}
@@ -1,10 +1,9 @@
1
1
  import { LinkingOptions } from '@react-navigation/native';
2
2
  import { RouteNode } from './Route';
3
- import { type RedirectConfig } from './getRoutesCore';
4
- import { RouterStore } from './global-state/router-store';
3
+ import { UrlObject } from './global-state/routeInfo';
4
+ import type { StoreRedirects } from './global-state/router-store';
5
5
  import { getInitialURL, getPathFromState, getStateFromPath } from './link/linking';
6
6
  import { RequireContext } from './types';
7
- export declare const INTERNAL_SLOT_NAME = "__root";
8
7
  export declare function getNavigationConfig(routes: RouteNode, metaOnly?: boolean): {
9
8
  screens: {
10
9
  __root: {
@@ -15,14 +14,14 @@ export declare function getNavigationConfig(routes: RouteNode, metaOnly?: boolea
15
14
  };
16
15
  };
17
16
  export type ExpoLinkingOptions<T extends object = Record<string, unknown>> = LinkingOptions<T> & {
18
- getPathFromState?: typeof getPathFromState;
19
- getStateFromPath?: typeof getStateFromPath;
17
+ getPathFromState: typeof getPathFromState;
18
+ getStateFromPath: typeof getStateFromPath;
20
19
  };
21
20
  export type LinkingConfigOptions = {
22
21
  metaOnly?: boolean;
23
22
  serverUrl?: string;
24
23
  getInitialURL?: typeof getInitialURL;
25
- redirects?: RedirectConfig[];
24
+ redirects?: StoreRedirects[];
26
25
  };
27
- export declare function getLinkingConfig(store: RouterStore, routes: RouteNode, context: RequireContext, { metaOnly, serverUrl, redirects }?: LinkingConfigOptions): ExpoLinkingOptions;
26
+ export declare function getLinkingConfig(routes: RouteNode, context: RequireContext, getRouteInfo: () => UrlObject, { metaOnly, serverUrl, redirects }?: LinkingConfigOptions): ExpoLinkingOptions;
28
27
  //# sourceMappingURL=getLinkingConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getLinkingConfig.d.ts","sourceRoot":"","sources":["../src/getLinkingConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAEL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAE,OAAc;;;;;;;;EAS9E;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAC/F,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,EAAE,QAAe,EAAE,SAAS,EAAE,SAAS,EAAE,GAAE,oBAAyB,GACnE,kBAAkB,CAkEpB"}
1
+ {"version":3,"file":"getLinkingConfig.d.ts","sourceRoot":"","sources":["../src/getLinkingConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKpC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAa,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAE,OAAc;;;;;;;;EAS9E;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;IAC/F,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,SAAS,EAC7B,EAAE,QAAe,EAAE,SAAS,EAAE,SAAS,EAAE,GAAE,oBAAyB,GACnE,kBAAkB,CAmEpB"}