expo-router 0.0.25 → 0.0.26
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/ContextNavigationContainer.d.ts +2 -1
- package/build/ContextNavigationContainer.d.ts.map +1 -1
- package/build/ContextNavigationContainer.js +4 -3
- package/build/ContextNavigationContainer.js.map +1 -1
- package/build/ContextNavigator.d.ts.map +1 -1
- package/build/ContextNavigator.js +2 -2
- package/build/ContextNavigator.js.map +1 -1
- package/build/fork/getPathFromState.d.ts +1 -1
- package/build/fork/getPathFromState.d.ts.map +1 -1
- package/build/fork/getPathFromState.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/index.js.map +1 -1
- package/build/layouts/Stack.d.ts +72 -96
- package/build/layouts/Stack.d.ts.map +1 -1
- package/build/layouts/Stack.js +3 -4
- package/build/layouts/Stack.js.map +1 -1
- package/build/link/href.d.ts +2 -0
- package/build/link/href.d.ts.map +1 -1
- package/build/link/href.js.map +1 -1
- package/build/link/useHref.d.ts +13 -0
- package/build/link/useHref.d.ts.map +1 -0
- package/build/link/useHref.js +102 -0
- package/build/link/useHref.js.map +1 -0
- package/build/link/useLink.js +1 -1
- package/build/link/useLink.js.map +1 -1
- package/build/{useCurrentRoute.d.ts → useRootNavigation.d.ts} +3 -1
- package/build/useRootNavigation.d.ts.map +1 -0
- package/build/useRootNavigation.js +30 -0
- package/build/useRootNavigation.js.map +1 -0
- package/build/views/Layout.d.ts +0 -8
- package/build/views/Layout.d.ts.map +1 -1
- package/build/views/Layout.js +1 -52
- package/build/views/Layout.js.map +1 -1
- package/build/views/Splash.d.ts +26 -0
- package/build/views/Splash.d.ts.map +1 -0
- package/build/views/Splash.js +87 -0
- package/build/views/Splash.js.map +1 -0
- package/build/views/Try.d.ts.map +1 -1
- package/build/views/Try.js +3 -0
- package/build/views/Try.js.map +1 -1
- package/entry.js +3 -9
- package/package.json +1 -2
- package/build/layouts/NativeStack.d.ts +0 -126
- package/build/layouts/NativeStack.d.ts.map +0 -1
- package/build/layouts/NativeStack.js +0 -5
- package/build/layouts/NativeStack.js.map +0 -1
- package/build/splash.d.ts +0 -3
- package/build/splash.d.ts.map +0 -1
- package/build/splash.js +0 -12
- package/build/splash.js.map +0 -1
- package/build/useCurrentRoute.d.ts.map +0 -1
- package/build/useCurrentRoute.js +0 -13
- package/build/useCurrentRoute.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NavigationContainer } from "@react-navigation/native";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { useRootNavigation } from "./
|
|
3
|
+
import { useRootNavigation, useRootNavigationState } from "./useRootNavigation";
|
|
4
4
|
declare type NavigationContainerProps = React.ComponentProps<typeof NavigationContainer>;
|
|
5
5
|
export declare function useNavigationContainerContext(): [Partial<import("@react-navigation/native").NavigationContainerProps & {
|
|
6
6
|
theme?: import("@react-navigation/native").Theme | undefined;
|
|
@@ -24,6 +24,7 @@ export declare function ContextNavigationContainer(props: NavigationContainerPro
|
|
|
24
24
|
export declare function RootContainer({ documentTitle, fallback, onReady, initialState, onStateChange, onUnhandledAction, theme, }: Omit<NavigationContainerProps, "independent" | "ref" | "children" | "linking">): null;
|
|
25
25
|
export declare namespace RootContainer {
|
|
26
26
|
var useRef: typeof useRootNavigation;
|
|
27
|
+
var useState: typeof useRootNavigationState;
|
|
27
28
|
var getRef: () => import("@react-navigation/native").NavigationContainerRefWithCurrent<ReactNavigation.RootParamList>;
|
|
28
29
|
}
|
|
29
30
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextNavigationContainer.d.ts","sourceRoot":"","sources":["../src/ContextNavigationContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ContextNavigationContainer.d.ts","sourceRoot":"","sources":["../src/ContextNavigationContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAEL,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAK7B,aAAK,wBAAwB,GAAG,KAAK,CAAC,cAAc,CAClD,OAAO,mBAAmB,CAC3B,CAAC;AASF,wBAAgB,6BAA6B;;;;;;;;;;;;;;;;aAQ5C;AAED,8GAA8G;AAC9G,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,wBAAwB,eAsBzE;AAyBD,wBAAgB,aAAa,CAAC,EAC5B,aAAa,EACb,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,GACN,EAAE,IAAI,CACL,wBAAwB,EACxB,aAAa,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAC/C,QAwBA;yBAnCe,aAAa"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createNavigationContainerRef, NavigationContainer, } from "@react-navigation/native";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { useLinkingConfig } from "./getLinkingConfig";
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
4
|
+
import { RootNavigationRef, useRootNavigation, useRootNavigationState, } from "./useRootNavigation";
|
|
5
|
+
import { SplashScreen } from "./views/Splash";
|
|
6
6
|
const navigationRef = createNavigationContainerRef();
|
|
7
7
|
const NavigationContainerContext = React.createContext([{}, function () { }]);
|
|
8
8
|
export function useNavigationContainerContext() {
|
|
@@ -32,9 +32,9 @@ function InternalContextNavigationContainer(props) {
|
|
|
32
32
|
const [isReady, setReady] = React.useState(false);
|
|
33
33
|
const ref = React.useMemo(() => (isReady ? navigationRef : null), [isReady]);
|
|
34
34
|
return (React.createElement(RootNavigationRef.Provider, { value: { ref } },
|
|
35
|
+
!isReady && React.createElement(SplashScreen, null),
|
|
35
36
|
React.createElement(NavigationContainer, { ...props, ...contextProps, ref: navigationRef, onReady: () => {
|
|
36
37
|
contextProps.onReady?.();
|
|
37
|
-
SplashModule?.hideAsync();
|
|
38
38
|
setReady(true);
|
|
39
39
|
} })));
|
|
40
40
|
}
|
|
@@ -62,6 +62,7 @@ export function RootContainer({ documentTitle, fallback, onReady, initialState,
|
|
|
62
62
|
return null;
|
|
63
63
|
}
|
|
64
64
|
RootContainer.useRef = useRootNavigation;
|
|
65
|
+
RootContainer.useState = useRootNavigationState;
|
|
65
66
|
/** Get the root navigation container ref. */
|
|
66
67
|
RootContainer.getRef = () => {
|
|
67
68
|
return navigationRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextNavigationContainer.js","sourceRoot":"","sources":["../src/ContextNavigationContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"ContextNavigationContainer.js","sourceRoot":"","sources":["../src/ContextNavigationContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createNavigationContainerRef,\n NavigationContainer,\n} from \"@react-navigation/native\";\nimport React from \"react\";\n\nimport { useLinkingConfig } from \"./getLinkingConfig\";\nimport {\n RootNavigationRef,\n useRootNavigation,\n useRootNavigationState,\n} from \"./useRootNavigation\";\nimport { SplashScreen } from \"./views/Splash\";\n\nconst navigationRef = createNavigationContainerRef();\n\ntype NavigationContainerProps = React.ComponentProps<\n typeof NavigationContainer\n>;\n\nconst NavigationContainerContext = React.createContext<\n [\n Partial<NavigationContainerProps>,\n (props: Partial<NavigationContainerProps>) => void\n ]\n>([{}, function () {}]);\n\nexport function useNavigationContainerContext() {\n const context = React.useContext(NavigationContainerContext);\n if (!context) {\n throw new Error(\n \"useNavigationContainerContext must be used within a NavigationContainerContext\"\n );\n }\n return context;\n}\n\n/** react-navigation `NavigationContainer` with automatic `linking` prop generated from the routes context. */\nexport function ContextNavigationContainer(props: NavigationContainerProps) {\n const [state, setState] = React.useState<Partial<NavigationContainerProps>>(\n {}\n );\n\n const linking = useLinkingConfig();\n console.log(\"linking\", linking);\n\n return (\n <NavigationContainerContext.Provider\n value={[\n {\n ...props,\n linking,\n ...state,\n },\n setState,\n ]}\n >\n <InternalContextNavigationContainer />\n </NavigationContainerContext.Provider>\n );\n}\n\nfunction InternalContextNavigationContainer(props: object) {\n const [contextProps] = useNavigationContainerContext();\n const [isReady, setReady] = React.useState(false);\n\n const ref = React.useMemo(() => (isReady ? navigationRef : null), [isReady]);\n\n return (\n <RootNavigationRef.Provider value={{ ref }}>\n {!isReady && <SplashScreen />}\n {/* @ts-expect-error: children are required */}\n <NavigationContainer\n {...props}\n {...contextProps}\n ref={navigationRef}\n onReady={() => {\n contextProps.onReady?.();\n setReady(true);\n }}\n />\n </RootNavigationRef.Provider>\n );\n}\n\nexport function RootContainer({\n documentTitle,\n fallback,\n onReady,\n initialState,\n onStateChange,\n onUnhandledAction,\n theme,\n}: Omit<\n NavigationContainerProps,\n \"independent\" | \"ref\" | \"children\" | \"linking\"\n>) {\n const [, setProps] = useNavigationContainerContext();\n\n React.useEffect(() => {\n setProps({\n documentTitle,\n fallback,\n onReady,\n initialState,\n onStateChange,\n onUnhandledAction,\n theme,\n });\n }, [\n documentTitle,\n fallback,\n onReady,\n initialState,\n onStateChange,\n onUnhandledAction,\n theme,\n ]);\n\n return null;\n}\n\nRootContainer.useRef = useRootNavigation;\nRootContainer.useState = useRootNavigationState;\n\n/** Get the root navigation container ref. */\nRootContainer.getRef = () => {\n return navigationRef;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextNavigator.d.ts","sourceRoot":"","sources":["../src/ContextNavigator.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA2DzC,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"ContextNavigator.d.ts","sourceRoot":"","sources":["../src/ContextNavigator.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA2DzC,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,eAgBxE"}
|
|
@@ -3,7 +3,7 @@ import { ContextNavigationContainer } from "./ContextNavigationContainer";
|
|
|
3
3
|
import { Route } from "./Route";
|
|
4
4
|
import { RoutesContext } from "./context";
|
|
5
5
|
import { getRoutes } from "./getRoutes";
|
|
6
|
-
import {
|
|
6
|
+
import { Stack } from "./layouts/Stack";
|
|
7
7
|
function useContextModuleAsRoutes(context) {
|
|
8
8
|
// TODO: Is this an optimal hook dependency?
|
|
9
9
|
const keys = useMemo(() => context.keys(), [context]);
|
|
@@ -50,6 +50,6 @@ export function ContextNavigator({ context }) {
|
|
|
50
50
|
return (React.createElement(RoutesContextProvider, { context: context },
|
|
51
51
|
React.createElement(Route, { filename: "./" },
|
|
52
52
|
React.createElement(ContextNavigationContainer, null,
|
|
53
|
-
React.createElement(
|
|
53
|
+
React.createElement(Stack, { screenOptions: { animation: "none", headerShown: false } })))));
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=ContextNavigator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextNavigator.js","sourceRoot":"","sources":["../src/ContextNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ContextNavigator.js","sourceRoot":"","sources":["../src/ContextNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,SAAS,wBAAwB,CAAC,OAAuB;IACvD,4CAA4C;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC7B,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,CACL,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAG,QAAQ,CAA0B,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,SAAc;IAEd,OAAO,CACL,CAAC,CAAC,SAAS;QACX,CAAC,OAAO,SAAS,KAAK,UAAU;YAC9B,SAAS,EAAE,SAAS,EAAE,gBAAgB;YACtC,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,yIAAyI;AACzI,SAAS,WAAW,CAAC,OAAuB;IAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,OAAO,IAAI,CAAC;KACb;IAED,sDAAsD;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,sDAAsD;IACtD,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE;QACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,2FAA2F;YAC3F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;YACxC,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE;gBACzC,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,oBAAoB,EAAE;QACxB,OAAO,IAAI,CAAC;KACb;IAED,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAA+B;IACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,QAAQ,EAAE;QACZ,OAAO,oBAAC,QAAQ,OAAG,CAAC;KACrB;IAED,OAAO,CACL,oBAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO;QACrC,oBAAC,KAAK,IAAC,QAAQ,EAAC,IAAI;YAClB,oBAAC,0BAA0B;gBAEzB,oBAAC,KAAK,IAAC,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAI,CACxC,CACvB,CACc,CACzB,CAAC;AACJ,CAAC","sourcesContent":["import React, { useMemo } from \"react\";\n\nimport { ContextNavigationContainer } from \"./ContextNavigationContainer\";\nimport { Route } from \"./Route\";\nimport { RoutesContext } from \"./context\";\nimport { getRoutes } from \"./getRoutes\";\nimport { Stack } from \"./layouts/Stack\";\nimport { RequireContext } from \"./types\";\n\nfunction useContextModuleAsRoutes(context: RequireContext) {\n // TODO: Is this an optimal hook dependency?\n const keys = useMemo(() => context.keys(), [context]);\n return useMemo(() => getRoutes(context), [keys]);\n}\n\nfunction RoutesContextProvider({\n context,\n children,\n}: {\n context: RequireContext;\n children: React.ReactNode;\n}) {\n const routes = useContextModuleAsRoutes(context);\n return (\n <RoutesContext.Provider value={routes}>{children}</RoutesContext.Provider>\n );\n}\n\nfunction isFunctionOrReactComponent(\n Component: any\n): Component is React.ComponentType {\n return (\n !!Component &&\n (typeof Component === \"function\" ||\n Component?.prototype?.isReactComponent ||\n Component.$$typeof === Symbol.for(\"react.forward_ref\"))\n );\n}\n\n/** Returns the Tutorial component if there are no React components exported as default from any files in the provided context module. */\nfunction useTutorial(context: RequireContext) {\n if (process.env.NODE_ENV === \"production\") {\n return null;\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const keys = useMemo(() => context.keys(), [context]);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasAnyValidComponent = useMemo(() => {\n for (const key of keys) {\n // NOTE(EvanBacon): This should only ever occur in development as it breaks lazily loading.\n const component = context(key)?.default;\n if (isFunctionOrReactComponent(component)) {\n return true;\n }\n }\n return false;\n }, [keys]);\n\n if (hasAnyValidComponent) {\n return null;\n }\n\n return require(\"./onboard/Tutorial\").Tutorial;\n}\n\nexport function ContextNavigator({ context }: { context: RequireContext }) {\n const Tutorial = useTutorial(context);\n if (Tutorial) {\n return <Tutorial />;\n }\n\n return (\n <RoutesContextProvider context={context}>\n <Route filename=\"./\">\n <ContextNavigationContainer>\n {/* Using a switch navigator at the root to host all pages. */}\n <Stack screenOptions={{ animation: \"none\", headerShown: false }} />\n </ContextNavigationContainer>\n </Route>\n </RoutesContextProvider>\n );\n}\n"]}
|
|
@@ -4,7 +4,7 @@ declare type Options<ParamList extends object> = {
|
|
|
4
4
|
initialRouteName?: string;
|
|
5
5
|
screens: PathConfigMap<ParamList>;
|
|
6
6
|
};
|
|
7
|
-
declare type State = NavigationState | Omit<PartialState<NavigationState>, "stale">;
|
|
7
|
+
export declare type State = NavigationState | Omit<PartialState<NavigationState>, "stale">;
|
|
8
8
|
/**
|
|
9
9
|
* Utility to serialize a navigation state object to a path string.
|
|
10
10
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathFromState.d.ts","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EAEb,MAAM,2BAA2B,CAAC;AAKnC,aAAK,OAAO,CAAC,SAAS,SAAS,MAAM,IAAI;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"getPathFromState.d.ts","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EAEb,MAAM,2BAA2B,CAAC;AAKnC,aAAK,OAAO,CAAC,SAAS,SAAS,MAAM,IAAI;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACnC,CAAC;AAEF,oBAAY,KAAK,GACb,eAAe,GACf,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AA6CjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,SAAS,SAAS,MAAM,EAC/D,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC3B,MAAM,CA0LR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathFromState.js","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n validatePathConfig,\n PathConfig,\n PathConfigMap,\n} from \"@react-navigation/core\";\nimport type {\n NavigationState,\n PartialState,\n Route,\n} from \"@react-navigation/routers\";\nimport * as queryString from \"query-string\";\n\nimport { matchDeepDynamicRouteName } from \"../matchers\";\n\ntype Options<ParamList extends object> = {\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n\ntype State = NavigationState | Omit<PartialState<NavigationState>, \"stale\">;\n\ntype StringifyConfig = Record<string, (value: any) => string>;\n\ntype ConfigItem = {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\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 if (route && isInvalidParams(route.params)) {\n return getActiveRoute(createFakeState(route.params));\n }\n\n return route;\n};\n\nfunction createFakeState(params: StateAsParams) {\n return {\n stale: false,\n type: \"UNKNOWN\",\n key: \"UNKNOWN\",\n index: 0,\n routeNames: [],\n routes: [\n {\n key: \"UNKNOWN\",\n name: params.screen,\n params: params.params,\n path: params.path,\n },\n ],\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 default function getPathFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n): string {\n if (state == null) {\n throw Error(\n \"Got 'undefined' for the navigation state. You must pass a valid state object.\"\n );\n }\n\n if (options) {\n validatePathConfig(options);\n }\n\n // Create a normalized configs object which will be easier to use\n const configs: Record<string, ConfigItem> = options?.screens\n ? createNormalizedConfigs(options?.screens)\n : {};\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 // NOTE(EvanBacon): Fill in current route using state that was passed as params.\n if (!route.state && isInvalidParams(route.params)) {\n route.state = createFakeState(route.params);\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 // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n // @ts-expect-error\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.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\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) => p.startsWith(\":\") || p === \"*\")\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n let name: string;\n if (p === \"*\") {\n // NOTE(EvanBacon): Drop the param name matching the wildcard route name -- this is specific to Expo Router.\n name = matchDeepDynamicRouteName(route.name) ?? route.name;\n } else {\n name = getParamName(p);\n }\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 hasNext = false;\n } else {\n index =\n typeof route.state.index === \"number\"\n ? route.state.index\n : 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 path += pattern\n .split(\"/\")\n .map((p, i) => {\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 if (i === 0) {\n // This can occur when a wildcard matches all routes and the given path was `/`.\n return route.path ?? \"\";\n }\n // remove existing segments from route.path and return it\n // this is used for nested wildcard routes. Without this, the path would add\n // all nested segments to the beginning of the wildcard route.\n const path = route.path\n ?.split(\"/\")\n .slice(i + 1)\n .join(\"/\");\n return path ?? \"\";\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 == null) {\n // Optional params without value assigned in route.params should be ignored\n return \"\";\n }\n return value;\n }\n\n return encodeURIComponent(p);\n })\n .join(\"/\");\n } else {\n path += encodeURIComponent(route.name);\n }\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 const query = queryString.stringify(focusedParams, { sort: false });\n\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 return path;\n}\n\ntype StateAsParams = {\n initial: boolean;\n path: string;\n screen: string;\n params: Record<string, any>;\n};\n\n// TODO: Make StackRouter not do this...\n// Detect if the params came from StackRouter using `params` to pass around internal state.\nfunction isInvalidParams(\n params?: Record<string, any>\n): params is StateAsParams {\n return (\n !!params &&\n \"initial\" in params &&\n \"path\" in params &&\n \"screen\" in params &&\n \"params\" in params &&\n typeof params.params === \"object\" &&\n !!params.params\n );\n}\n\nconst getParamName = (pattern: string) =>\n 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\n ? joinPaths(parentPattern || \"\", config.path || \"\")\n : config.path || \"\";\n\n const screens = config.screens\n ? createNormalizedConfigs(config.screens, pattern)\n : 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"]}
|
|
1
|
+
{"version":3,"file":"getPathFromState.js","sourceRoot":"","sources":["../../src/fork/getPathFromState.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n validatePathConfig,\n PathConfig,\n PathConfigMap,\n} from \"@react-navigation/core\";\nimport type {\n NavigationState,\n PartialState,\n Route,\n} from \"@react-navigation/routers\";\nimport * as queryString from \"query-string\";\n\nimport { matchDeepDynamicRouteName } from \"../matchers\";\n\ntype Options<ParamList extends object> = {\n initialRouteName?: string;\n screens: PathConfigMap<ParamList>;\n};\n\nexport type State =\n | NavigationState\n | Omit<PartialState<NavigationState>, \"stale\">;\n\ntype StringifyConfig = Record<string, (value: any) => string>;\n\ntype ConfigItem = {\n pattern?: string;\n stringify?: StringifyConfig;\n screens?: Record<string, ConfigItem>;\n};\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 if (route && isInvalidParams(route.params)) {\n return getActiveRoute(createFakeState(route.params));\n }\n\n return route;\n};\n\nfunction createFakeState(params: StateAsParams) {\n return {\n stale: false,\n type: \"UNKNOWN\",\n key: \"UNKNOWN\",\n index: 0,\n routeNames: [],\n routes: [\n {\n key: \"UNKNOWN\",\n name: params.screen,\n params: params.params,\n path: params.path,\n },\n ],\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 default function getPathFromState<ParamList extends object>(\n state: State,\n options?: Options<ParamList>\n): string {\n if (state == null) {\n throw Error(\n \"Got 'undefined' for the navigation state. You must pass a valid state object.\"\n );\n }\n\n if (options) {\n validatePathConfig(options);\n }\n\n // Create a normalized configs object which will be easier to use\n const configs: Record<string, ConfigItem> = options?.screens\n ? createNormalizedConfigs(options?.screens)\n : {};\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 // NOTE(EvanBacon): Fill in current route using state that was passed as params.\n if (!route.state && isInvalidParams(route.params)) {\n route.state = createFakeState(route.params);\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 // Keep all the route names that appeared during going deeper in config in case the pattern is resolved to undefined\n const nestedRouteNames = [];\n\n let hasNext = true;\n\n while (route.name in currentOptions && hasNext) {\n pattern = currentOptions[route.name].pattern;\n\n // @ts-expect-error\n nestedRouteNames.push(route.name);\n\n if (route.params) {\n const stringify = currentOptions[route.name]?.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\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) => p.startsWith(\":\") || p === \"*\")\n // eslint-disable-next-line no-loop-func\n .forEach((p) => {\n let name: string;\n if (p === \"*\") {\n // NOTE(EvanBacon): Drop the param name matching the wildcard route name -- this is specific to Expo Router.\n name = matchDeepDynamicRouteName(route.name) ?? route.name;\n } else {\n name = getParamName(p);\n }\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 hasNext = false;\n } else {\n index =\n typeof route.state.index === \"number\"\n ? route.state.index\n : 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 path += pattern\n .split(\"/\")\n .map((p, i) => {\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 if (i === 0) {\n // This can occur when a wildcard matches all routes and the given path was `/`.\n return route.path ?? \"\";\n }\n // remove existing segments from route.path and return it\n // this is used for nested wildcard routes. Without this, the path would add\n // all nested segments to the beginning of the wildcard route.\n const path = route.path\n ?.split(\"/\")\n .slice(i + 1)\n .join(\"/\");\n return path ?? \"\";\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 == null) {\n // Optional params without value assigned in route.params should be ignored\n return \"\";\n }\n return value;\n }\n\n return encodeURIComponent(p);\n })\n .join(\"/\");\n } else {\n path += encodeURIComponent(route.name);\n }\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 const query = queryString.stringify(focusedParams, { sort: false });\n\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 return path;\n}\n\ntype StateAsParams = {\n initial: boolean;\n path: string;\n screen: string;\n params: Record<string, any>;\n};\n\n// TODO: Make StackRouter not do this...\n// Detect if the params came from StackRouter using `params` to pass around internal state.\nfunction isInvalidParams(\n params?: Record<string, any>\n): params is StateAsParams {\n return (\n !!params &&\n \"initial\" in params &&\n \"path\" in params &&\n \"screen\" in params &&\n \"params\" in params &&\n typeof params.params === \"object\" &&\n !!params.params\n );\n}\n\nconst getParamName = (pattern: string) =>\n 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\n ? joinPaths(parentPattern || \"\", config.path || \"\")\n : config.path || \"\";\n\n const screens = config.screens\n ? createNormalizedConfigs(config.screens, pattern)\n : 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"]}
|
package/build/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
export { SplashScreen } from "./views/Splash";
|
|
1
2
|
export { useFocusEffect } from "@react-navigation/native";
|
|
2
3
|
export { ErrorBoundaryProps } from "./views/Try";
|
|
3
4
|
export { Stack } from "./layouts/Stack";
|
|
4
|
-
export { NativeStack } from "./layouts/NativeStack";
|
|
5
5
|
export { Tabs } from "./layouts/Tabs";
|
|
6
6
|
export { Drawer } from "./layouts/Drawer";
|
|
7
7
|
export { withLayoutContext } from "./layouts/withLayoutContext";
|
|
@@ -11,6 +11,7 @@ export { ErrorBoundary } from "./views/ErrorBoundary";
|
|
|
11
11
|
export { Layout, Children } from "./views/Layout";
|
|
12
12
|
export { Link, Redirect } from "./link/Link";
|
|
13
13
|
export { useLink } from "./link/useLink";
|
|
14
|
+
export { useHref } from "./link/useHref";
|
|
14
15
|
export { RootContainer } from "./ContextNavigationContainer";
|
|
15
16
|
export * as Linking from "./link/linking";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// export { useRoutes } from "./Route";
|
|
2
2
|
// export { useScreens } from "./useScreens";
|
|
3
|
+
export { SplashScreen } from "./views/Splash";
|
|
3
4
|
export { useFocusEffect } from "@react-navigation/native";
|
|
4
5
|
export { Stack } from "./layouts/Stack";
|
|
5
|
-
export { NativeStack } from "./layouts/NativeStack";
|
|
6
6
|
export { Tabs } from "./layouts/Tabs";
|
|
7
7
|
export { Drawer } from "./layouts/Drawer";
|
|
8
8
|
export { withLayoutContext } from "./layouts/withLayoutContext";
|
|
@@ -12,6 +12,7 @@ export { ErrorBoundary } from "./views/ErrorBoundary";
|
|
|
12
12
|
export { Layout, Children } from "./views/Layout";
|
|
13
13
|
export { Link, Redirect } from "./link/Link";
|
|
14
14
|
export { useLink } from "./link/useLink";
|
|
15
|
+
export { useHref } from "./link/useHref";
|
|
15
16
|
export { RootContainer } from "./ContextNavigationContainer";
|
|
16
17
|
import * as Linking_1 from "./link/linking";
|
|
17
18
|
export { Linking_1 as Linking };
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,6CAA6C;AAE7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,6CAA6C;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;2BAEpC,gBAAgB;sBAA7B,OAAO","sourcesContent":["// export { useRoutes } from \"./Route\";\n// export { useScreens } from \"./useScreens\";\n\nexport { SplashScreen } from \"./views/Splash\";\nexport { useFocusEffect } from \"@react-navigation/native\";\nexport { ErrorBoundaryProps } from \"./views/Try\";\n\nexport { Stack } from \"./layouts/Stack\";\nexport { Tabs } from \"./layouts/Tabs\";\nexport { Drawer } from \"./layouts/Drawer\";\nexport { withLayoutContext } from \"./layouts/withLayoutContext\";\n\nexport { ExpoRoot } from \"./views/Root\";\nexport { Unmatched } from \"./views/Unmatched\";\nexport { ErrorBoundary } from \"./views/ErrorBoundary\";\n\nexport { Layout, Children } from \"./views/Layout\";\nexport { Link, Redirect } from \"./link/Link\";\nexport { useLink } from \"./link/useLink\";\nexport { useHref } from \"./link/useHref\";\nexport { RootContainer } from \"./ContextNavigationContainer\";\n\nexport * as Linking from \"./link/linking\";\n"]}
|
package/build/layouts/Stack.d.ts
CHANGED
|
@@ -1,150 +1,126 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { NativeStackNavigationOptions } from "@react-navigation/native-stack";
|
|
3
3
|
export declare const Stack: import("react").ForwardRefExoticComponent<Omit<Omit<import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
4
4
|
id?: string | undefined;
|
|
5
5
|
children: import("react").ReactNode;
|
|
6
6
|
screenListeners?: Partial<{
|
|
7
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
8
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
14
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
15
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
7
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
8
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
9
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
10
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
11
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
12
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
16
13
|
}> | ((props: {
|
|
17
14
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
18
15
|
navigation: any;
|
|
19
16
|
}) => Partial<{
|
|
20
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
21
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
27
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
28
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
17
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
18
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
19
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
20
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
21
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
22
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
29
23
|
}>) | undefined;
|
|
30
|
-
screenOptions?:
|
|
24
|
+
screenOptions?: NativeStackNavigationOptions | ((props: {
|
|
31
25
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
32
26
|
navigation: any;
|
|
33
|
-
}) =>
|
|
34
|
-
defaultScreenOptions?:
|
|
27
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
28
|
+
defaultScreenOptions?: NativeStackNavigationOptions | ((props: {
|
|
35
29
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
36
30
|
navigation: any;
|
|
37
|
-
options:
|
|
38
|
-
}) =>
|
|
39
|
-
} & import("@react-navigation/routers").StackRouterOptions
|
|
31
|
+
options: NativeStackNavigationOptions;
|
|
32
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
33
|
+
} & import("@react-navigation/routers").StackRouterOptions, "children" | "initialRouteName" | "screenOptions" | "id" | "screenListeners" | "defaultScreenOptions"> & import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
40
34
|
id?: string | undefined;
|
|
41
35
|
children: import("react").ReactNode;
|
|
42
36
|
screenListeners?: Partial<{
|
|
43
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
44
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
50
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
51
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
37
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
38
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
39
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
40
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
41
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
42
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
52
43
|
}> | ((props: {
|
|
53
44
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
54
45
|
navigation: any;
|
|
55
46
|
}) => Partial<{
|
|
56
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
57
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
63
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
64
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
47
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
48
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
49
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
50
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
51
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
52
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
65
53
|
}>) | undefined;
|
|
66
|
-
screenOptions?:
|
|
54
|
+
screenOptions?: NativeStackNavigationOptions | ((props: {
|
|
67
55
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
68
56
|
navigation: any;
|
|
69
|
-
}) =>
|
|
70
|
-
defaultScreenOptions?:
|
|
57
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
58
|
+
defaultScreenOptions?: NativeStackNavigationOptions | ((props: {
|
|
71
59
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
72
60
|
navigation: any;
|
|
73
|
-
options:
|
|
74
|
-
}) =>
|
|
61
|
+
options: NativeStackNavigationOptions;
|
|
62
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
75
63
|
}, "children"> & Partial<Pick<Omit<import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
76
64
|
id?: string | undefined;
|
|
77
65
|
children: import("react").ReactNode;
|
|
78
66
|
screenListeners?: Partial<{
|
|
79
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
80
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
86
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
87
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
67
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
68
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
69
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
70
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
71
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
72
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
88
73
|
}> | ((props: {
|
|
89
74
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
90
75
|
navigation: any;
|
|
91
76
|
}) => Partial<{
|
|
92
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
93
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
99
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
100
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
77
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
78
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
79
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
80
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
81
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
82
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
101
83
|
}>) | undefined;
|
|
102
|
-
screenOptions?:
|
|
84
|
+
screenOptions?: NativeStackNavigationOptions | ((props: {
|
|
103
85
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
104
86
|
navigation: any;
|
|
105
|
-
}) =>
|
|
106
|
-
defaultScreenOptions?:
|
|
87
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
88
|
+
defaultScreenOptions?: NativeStackNavigationOptions | ((props: {
|
|
107
89
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
108
90
|
navigation: any;
|
|
109
|
-
options:
|
|
110
|
-
}) =>
|
|
111
|
-
} & import("@react-navigation/routers").StackRouterOptions
|
|
91
|
+
options: NativeStackNavigationOptions;
|
|
92
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
93
|
+
} & import("@react-navigation/routers").StackRouterOptions, "children" | "initialRouteName" | "screenOptions" | "id" | "screenListeners" | "defaultScreenOptions"> & import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
112
94
|
id?: string | undefined;
|
|
113
95
|
children: import("react").ReactNode;
|
|
114
96
|
screenListeners?: Partial<{
|
|
115
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
116
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
122
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
123
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
97
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
98
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
99
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
100
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
101
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
102
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
124
103
|
}> | ((props: {
|
|
125
104
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
126
105
|
navigation: any;
|
|
127
106
|
}) => Partial<{
|
|
128
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
129
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "blur">;
|
|
135
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "state">;
|
|
136
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/stack").StackNavigationEventMap, "beforeRemove">;
|
|
107
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionStart">;
|
|
108
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "transitionEnd">;
|
|
109
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "focus">;
|
|
110
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "blur">;
|
|
111
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "state">;
|
|
112
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap, "beforeRemove">;
|
|
137
113
|
}>) | undefined;
|
|
138
|
-
screenOptions?:
|
|
114
|
+
screenOptions?: NativeStackNavigationOptions | ((props: {
|
|
139
115
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
140
116
|
navigation: any;
|
|
141
|
-
}) =>
|
|
142
|
-
defaultScreenOptions?:
|
|
117
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
118
|
+
defaultScreenOptions?: NativeStackNavigationOptions | ((props: {
|
|
143
119
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
144
120
|
navigation: any;
|
|
145
|
-
options:
|
|
146
|
-
}) =>
|
|
121
|
+
options: NativeStackNavigationOptions;
|
|
122
|
+
}) => NativeStackNavigationOptions) | undefined;
|
|
147
123
|
}, "children">> & import("react").RefAttributes<unknown>> & {
|
|
148
|
-
Screen: (props: import("../useScreens").ScreenProps<
|
|
124
|
+
Screen: (props: import("../useScreens").ScreenProps<NativeStackNavigationOptions>) => null;
|
|
149
125
|
};
|
|
150
126
|
//# sourceMappingURL=Stack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/layouts/Stack.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../src/layouts/Stack.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,4BAA4B,EAC7B,MAAM,gCAAgC,CAAC;AAMxC,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGK,CAAC"}
|
package/build/layouts/Stack.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createNativeStackNavigator, } from "@react-navigation/native-stack";
|
|
2
2
|
import { withLayoutContext } from "./withLayoutContext";
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
export const Stack = withLayoutContext(StackNavigator);
|
|
3
|
+
const NativeStackNavigator = createNativeStackNavigator().Navigator;
|
|
4
|
+
export const Stack = withLayoutContext(NativeStackNavigator);
|
|
6
5
|
//# sourceMappingURL=Stack.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../src/layouts/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../src/layouts/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,GAE3B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,oBAAoB,GAAG,0BAA0B,EAAE,CAAC,SAAS,CAAC;AAEpE,MAAM,CAAC,MAAM,KAAK,GAAG,iBAAiB,CAGpC,oBAAoB,CAAC,CAAC","sourcesContent":["import {\n createNativeStackNavigator,\n NativeStackNavigationOptions,\n} from \"@react-navigation/native-stack\";\n\nimport { withLayoutContext } from \"./withLayoutContext\";\n\nconst NativeStackNavigator = createNativeStackNavigator().Navigator;\n\nexport const Stack = withLayoutContext<\n NativeStackNavigationOptions,\n typeof NativeStackNavigator\n>(NativeStackNavigator);\n"]}
|
package/build/link/href.d.ts
CHANGED