expo-router 5.0.2-preview.0 → 5.0.2-preview.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/ExpoRoot.js +18 -9
- package/build/ExpoRoot.js.map +1 -1
- package/build/LocationProvider.js +2 -3
- package/build/LocationProvider.js.map +1 -1
- package/build/Prefetch.d.ts +9 -0
- package/build/Prefetch.d.ts.map +1 -0
- package/build/Prefetch.js +19 -0
- package/build/Prefetch.js.map +1 -0
- package/build/Route.js +4 -4
- package/build/Route.js.map +1 -1
- package/build/doctor/index.js +1 -2
- package/build/doctor/index.js.map +1 -1
- package/build/exports.js +17 -7
- package/build/exports.js.map +1 -1
- package/build/fast-refresh.js.map +1 -1
- package/build/fork/NavigationContainer.d.ts +2 -7
- package/build/fork/NavigationContainer.d.ts.map +1 -1
- package/build/fork/NavigationContainer.js.map +1 -1
- package/build/fork/createMemoryHistory.d.ts.map +1 -1
- package/build/fork/createMemoryHistory.js +1 -2
- package/build/fork/createMemoryHistory.js.map +1 -1
- package/build/fork/extractPathFromURL.js +3 -4
- package/build/fork/extractPathFromURL.js.map +1 -1
- package/build/fork/findFocusedRoute.d.ts +1 -11
- package/build/fork/findFocusedRoute.d.ts.map +1 -1
- package/build/fork/findFocusedRoute.js +1 -2
- package/build/fork/findFocusedRoute.js.map +1 -1
- package/build/fork/getPathFromState-forks.d.ts.map +1 -1
- package/build/fork/getPathFromState-forks.js +24 -14
- package/build/fork/getPathFromState-forks.js.map +1 -1
- package/build/fork/getPathFromState.js +20 -11
- package/build/fork/getPathFromState.js.map +1 -1
- package/build/fork/getStateFromPath-forks.d.ts +4 -4
- package/build/fork/getStateFromPath-forks.d.ts.map +1 -1
- package/build/fork/getStateFromPath-forks.js +18 -19
- package/build/fork/getStateFromPath-forks.js.map +1 -1
- package/build/fork/getStateFromPath.js +18 -9
- package/build/fork/getStateFromPath.js.map +1 -1
- package/build/fork/native-stack/NativeStackView.js +1 -2
- package/build/fork/native-stack/NativeStackView.js.map +1 -1
- package/build/fork/native-stack/createNativeStackNavigator.js +18 -9
- package/build/fork/native-stack/createNativeStackNavigator.js.map +1 -1
- package/build/fork/useBackButton.d.ts +0 -1
- package/build/fork/useBackButton.d.ts.map +1 -1
- package/build/fork/useBackButton.js +1 -2
- package/build/fork/useBackButton.js.map +1 -1
- package/build/fork/useBackButton.native.js +18 -9
- package/build/fork/useBackButton.native.js.map +1 -1
- package/build/fork/useDocumentTitle.js +18 -9
- package/build/fork/useDocumentTitle.js.map +1 -1
- package/build/fork/useDocumentTitle.native.js +1 -2
- package/build/fork/useDocumentTitle.native.js.map +1 -1
- package/build/fork/useLinking.d.ts +3 -26
- package/build/fork/useLinking.d.ts.map +1 -1
- package/build/fork/useLinking.js +20 -10
- package/build/fork/useLinking.js.map +1 -1
- package/build/fork/useLinking.native.d.ts +6 -6
- package/build/fork/useLinking.native.js +19 -10
- package/build/fork/useLinking.native.js.map +1 -1
- package/build/fork/useThenable.js +18 -9
- package/build/fork/useThenable.js.map +1 -1
- package/build/fork/validatePathConfig.js +1 -1
- package/build/fork/validatePathConfig.js.map +1 -1
- package/build/getDevServer/index.js.map +1 -1
- package/build/getLinkingConfig.js +3 -3
- package/build/getLinkingConfig.js.map +1 -1
- package/build/getReactNavigationConfig.js +3 -4
- package/build/getReactNavigationConfig.js.map +1 -1
- package/build/getRoutes.js +3 -3
- package/build/getRoutes.js.map +1 -1
- package/build/getRoutesCore.js +6 -7
- package/build/getRoutesCore.js.map +1 -1
- package/build/getRoutesRedirects.d.ts +0 -1
- package/build/getRoutesRedirects.d.ts.map +1 -1
- package/build/getRoutesRedirects.js +3 -4
- package/build/getRoutesRedirects.js.map +1 -1
- package/build/getRoutesSSR.js +3 -3
- package/build/getRoutesSSR.js.map +1 -1
- package/build/getServerManifest.js +2 -3
- package/build/getServerManifest.js.map +1 -1
- package/build/global-state/routeInfo.js +18 -9
- package/build/global-state/routeInfo.js.map +1 -1
- package/build/global-state/router-store.d.ts +7 -6
- package/build/global-state/router-store.d.ts.map +1 -1
- package/build/global-state/router-store.js +24 -13
- package/build/global-state/router-store.js.map +1 -1
- package/build/global-state/routing.d.ts +1 -0
- package/build/global-state/routing.d.ts.map +1 -1
- package/build/global-state/routing.js +33 -20
- package/build/global-state/routing.js.map +1 -1
- package/build/global-state/serverLocationContext.d.ts +0 -1
- package/build/global-state/serverLocationContext.d.ts.map +1 -1
- package/build/global-state/sort-routes.js +1 -2
- package/build/global-state/sort-routes.js.map +1 -1
- package/build/head/ExpoHead.android.d.ts +1 -1
- package/build/head/ExpoHead.android.js +1 -2
- package/build/head/ExpoHead.android.js.map +1 -1
- package/build/head/ExpoHead.ios.js.map +1 -1
- package/build/head/ExpoHeadModule.js.map +1 -1
- package/build/head/url.js +2 -3
- package/build/head/url.js.map +1 -1
- package/build/hooks.d.ts.map +1 -1
- package/build/hooks.js +18 -18
- package/build/hooks.js.map +1 -1
- package/build/imperative-api.d.ts +4 -0
- package/build/imperative-api.d.ts.map +1 -1
- package/build/imperative-api.js +1 -0
- package/build/imperative-api.js.map +1 -1
- package/build/layouts/DrawerClient.d.ts +16 -17
- package/build/layouts/DrawerClient.d.ts.map +1 -1
- package/build/layouts/RootModal.d.ts +1 -2
- package/build/layouts/RootModal.d.ts.map +1 -1
- package/build/layouts/RootModal.js +2 -2
- package/build/layouts/RootModal.js.map +1 -1
- package/build/layouts/StackClient.d.ts +16 -16
- package/build/layouts/StackClient.d.ts.map +1 -1
- package/build/layouts/StackClient.js.map +1 -1
- package/build/layouts/TabsClient.d.ts +12 -12
- package/build/layouts/TabsClient.js.map +1 -1
- package/build/layouts/withLayoutContext.d.ts +2 -2
- package/build/layouts/withLayoutContext.d.ts.map +1 -1
- package/build/layouts/withLayoutContext.js +19 -10
- package/build/layouts/withLayoutContext.js.map +1 -1
- package/build/link/Link.d.ts.map +1 -1
- package/build/link/Link.js +10 -5
- package/build/link/Link.js.map +1 -1
- package/build/link/href.d.ts.map +1 -1
- package/build/link/href.js +2 -2
- package/build/link/href.js.map +1 -1
- package/build/link/linking.d.ts.map +1 -1
- package/build/link/linking.js +21 -11
- package/build/link/linking.js.map +1 -1
- package/build/link/useDomComponentNavigation.js +6 -7
- package/build/link/useDomComponentNavigation.js.map +1 -1
- package/build/link/useLinkHooks.d.ts +5 -0
- package/build/link/useLinkHooks.d.ts.map +1 -1
- package/build/link/useLinkHooks.js +2 -2
- package/build/link/useLinkHooks.js.map +1 -1
- package/build/link/useLinkToPathProps.d.ts.map +1 -1
- package/build/link/useLinkToPathProps.js +2 -3
- package/build/link/useLinkToPathProps.js.map +1 -1
- package/build/link/useLoadedNavigation.d.ts.map +1 -1
- package/build/link/useLoadedNavigation.js +2 -3
- package/build/link/useLoadedNavigation.js.map +1 -1
- package/build/loadStaticParamsAsync.js +3 -4
- package/build/loadStaticParamsAsync.js.map +1 -1
- package/build/matchers.js +14 -15
- package/build/matchers.js.map +1 -1
- package/build/onboard/Tutorial.js +1 -2
- package/build/onboard/Tutorial.js.map +1 -1
- package/build/onboard/createEntryFile.js +2 -3
- package/build/onboard/createEntryFile.js.map +1 -1
- package/build/qualified-entry.js +1 -2
- package/build/qualified-entry.js.map +1 -1
- package/build/renderRootComponent.js +18 -9
- package/build/renderRootComponent.js.map +1 -1
- package/build/routes-manifest.js +1 -2
- package/build/routes-manifest.js.map +1 -1
- package/build/rsc/entry.js +1 -2
- package/build/rsc/entry.js.map +1 -1
- package/build/rsc/exports.d.ts +0 -1
- package/build/rsc/exports.d.ts.map +1 -1
- package/build/rsc/exports.js +18 -18
- package/build/rsc/exports.js.map +1 -1
- package/build/rsc/middleware.js +2 -3
- package/build/rsc/middleware.js.map +1 -1
- package/build/rsc/path.d.ts.map +1 -1
- package/build/rsc/path.js.map +1 -1
- package/build/rsc/router/client.d.ts +7 -7
- package/build/rsc/router/client.d.ts.map +1 -1
- package/build/rsc/router/client.js +4 -4
- package/build/rsc/router/client.js.map +1 -1
- package/build/rsc/router/common.js +4 -4
- package/build/rsc/router/common.js.map +1 -1
- package/build/rsc/router/create-expo-pages.d.ts.map +1 -1
- package/build/rsc/router/create-expo-pages.js +1 -2
- package/build/rsc/router/create-expo-pages.js.map +1 -1
- package/build/rsc/router/create-pages.d.ts +1 -3
- package/build/rsc/router/create-pages.d.ts.map +1 -1
- package/build/rsc/router/create-pages.js +1 -2
- package/build/rsc/router/create-pages.js.map +1 -1
- package/build/rsc/router/defineRouter.js +2 -3
- package/build/rsc/router/defineRouter.js.map +1 -1
- package/build/rsc/router/errors.js.map +1 -1
- package/build/rsc/router/expo-definedRouter.d.ts +1 -1
- package/build/rsc/router/expo-definedRouter.js.map +1 -1
- package/build/rsc/router/fetch.js +1 -2
- package/build/rsc/router/fetch.js.map +1 -1
- package/build/rsc/router/host.d.ts +3 -3
- package/build/rsc/router/host.d.ts.map +1 -1
- package/build/rsc/router/host.js.map +1 -1
- package/build/rsc/router/noopRouter.d.ts +1 -1
- package/build/rsc/router/utils.d.ts.map +1 -1
- package/build/rsc/router/utils.js.map +1 -1
- package/build/rsc/rsc-renderer.js +1 -2
- package/build/rsc/rsc-renderer.js.map +1 -1
- package/build/rsc/server.d.ts.map +1 -1
- package/build/rsc/server.js +5 -5
- package/build/rsc/server.js.map +1 -1
- package/build/sortRoutes.d.ts.map +1 -1
- package/build/sortRoutes.js +2 -3
- package/build/sortRoutes.js.map +1 -1
- package/build/static/getRootComponent.js +1 -2
- package/build/static/getRootComponent.js.map +1 -1
- package/build/static/getServerManifest.js +2 -3
- package/build/static/getServerManifest.js.map +1 -1
- package/build/static/html.js +2 -3
- package/build/static/html.js.map +1 -1
- package/build/static/renderStaticContent.js +19 -9
- package/build/static/renderStaticContent.js.map +1 -1
- package/build/testing-library/context-stubs.d.ts +1 -2
- package/build/testing-library/context-stubs.d.ts.map +1 -1
- package/build/testing-library/context-stubs.js +3 -3
- package/build/testing-library/context-stubs.js.map +1 -1
- package/build/testing-library/index.d.ts.map +1 -1
- package/build/testing-library/index.js +2 -2
- package/build/testing-library/index.js.map +1 -1
- package/build/testing-library/mock-config.js +2 -3
- package/build/testing-library/mock-config.js.map +1 -1
- package/build/testing-library/mocks.js.map +1 -1
- package/build/testing-library/require-context-ponyfill.js +1 -1
- package/build/testing-library/require-context-ponyfill.js.map +1 -1
- package/build/typed-routes/generate.js +4 -5
- package/build/typed-routes/generate.js.map +1 -1
- package/build/typed-routes/index.d.ts.map +1 -1
- package/build/typed-routes/index.js +2 -2
- package/build/typed-routes/index.js.map +1 -1
- package/build/ui/Slot.d.ts +0 -1
- package/build/ui/Slot.d.ts.map +1 -1
- package/build/ui/TabContext.d.ts +47 -55
- package/build/ui/TabContext.d.ts.map +1 -1
- package/build/ui/TabList.js +2 -3
- package/build/ui/TabList.js.map +1 -1
- package/build/ui/TabRouter.d.ts +27 -27
- package/build/ui/TabRouter.d.ts.map +1 -1
- package/build/ui/TabRouter.js +18 -9
- package/build/ui/TabRouter.js.map +1 -1
- package/build/ui/TabSlot.js +4 -5
- package/build/ui/TabSlot.js.map +1 -1
- package/build/ui/TabTrigger.js +3 -4
- package/build/ui/TabTrigger.js.map +1 -1
- package/build/ui/Tabs.d.ts +73 -78
- package/build/ui/Tabs.d.ts.map +1 -1
- package/build/ui/Tabs.js +3 -4
- package/build/ui/Tabs.js.map +1 -1
- package/build/ui/common.d.ts +2 -3
- package/build/ui/common.d.ts.map +1 -1
- package/build/ui/common.js +3 -3
- package/build/ui/common.js.map +1 -1
- package/build/ui/useComponent.d.ts.map +1 -1
- package/build/ui/useComponent.js +1 -2
- package/build/ui/useComponent.js.map +1 -1
- package/build/useDeprecated.js +2 -3
- package/build/useDeprecated.js.map +1 -1
- package/build/useFocusEffect.js +18 -9
- package/build/useFocusEffect.js.map +1 -1
- package/build/useNavigation.js +1 -2
- package/build/useNavigation.js.map +1 -1
- package/build/useScreens.js +5 -6
- package/build/useScreens.js.map +1 -1
- package/build/utils/splash.js +5 -6
- package/build/utils/splash.js.map +1 -1
- package/build/utils/url.js +3 -4
- package/build/utils/url.js.map +1 -1
- package/build/views/EmptyRoute.js +1 -2
- package/build/views/EmptyRoute.js.map +1 -1
- package/build/views/ErrorBoundary.d.ts +0 -1
- package/build/views/ErrorBoundary.d.ts.map +1 -1
- package/build/views/ErrorBoundary.js +1 -2
- package/build/views/ErrorBoundary.js.map +1 -1
- package/build/views/Navigator.js +22 -12
- package/build/views/Navigator.js.map +1 -1
- package/build/views/Pressable.d.ts.map +1 -1
- package/build/views/Screen.js +1 -2
- package/build/views/Screen.js.map +1 -1
- package/build/views/Sitemap.js +2 -3
- package/build/views/Sitemap.js.map +1 -1
- package/build/views/SuspenseFallback.js +1 -2
- package/build/views/SuspenseFallback.js.map +1 -1
- package/build/views/Toast.js +3 -3
- package/build/views/Toast.js.map +1 -1
- package/build/views/Try.js +17 -7
- package/build/views/Try.js.map +1 -1
- package/build/views/Unmatched.js +1 -2
- package/build/views/Unmatched.js.map +1 -1
- package/package.json +4 -4
package/build/ui/TabContext.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { BottomTabNavigationOptions } from '@react-navigation/bottom-tabs';
|
|
3
2
|
import { DefaultNavigatorOptions, NavigationAction, NavigationProp, ParamListBase, TabActionHelpers, TabNavigationState, TabRouterOptions, useNavigationBuilder } from '@react-navigation/native';
|
|
4
3
|
import { TriggerMap } from './common';
|
|
@@ -49,51 +48,51 @@ export declare const TabTriggerMapContext: import("react").Context<TriggerMap>;
|
|
|
49
48
|
export declare const TabsDescriptorsContext: import("react").Context<Record<string, import("@react-navigation/native").Descriptor<ExpoTabsNavigatorScreenOptions, Omit<{
|
|
50
49
|
dispatch(action: Readonly<{
|
|
51
50
|
type: string;
|
|
52
|
-
payload?: object
|
|
53
|
-
source?: string
|
|
54
|
-
target?: string
|
|
51
|
+
payload?: object;
|
|
52
|
+
source?: string;
|
|
53
|
+
target?: string;
|
|
55
54
|
}> | ((state: Readonly<TabNavigationState<any>>) => Readonly<{
|
|
56
55
|
type: string;
|
|
57
|
-
payload?: object
|
|
58
|
-
source?: string
|
|
59
|
-
target?: string
|
|
56
|
+
payload?: object;
|
|
57
|
+
source?: string;
|
|
58
|
+
target?: string;
|
|
60
59
|
}>)): void;
|
|
61
60
|
navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined, options?: {
|
|
62
|
-
merge?: boolean
|
|
63
|
-
pop?: boolean
|
|
61
|
+
merge?: boolean;
|
|
62
|
+
pop?: boolean;
|
|
64
63
|
} | undefined] : never): void;
|
|
65
|
-
navigate<
|
|
66
|
-
name:
|
|
64
|
+
navigate<RouteName extends string>(options: RouteName extends unknown ? {
|
|
65
|
+
name: RouteName;
|
|
67
66
|
params: object | undefined;
|
|
68
|
-
path?: string
|
|
69
|
-
merge?: boolean
|
|
70
|
-
pop?: boolean
|
|
67
|
+
path?: string;
|
|
68
|
+
merge?: boolean;
|
|
69
|
+
pop?: boolean;
|
|
71
70
|
} : never): void;
|
|
72
|
-
navigateDeprecated<
|
|
73
|
-
navigateDeprecated<
|
|
74
|
-
name:
|
|
71
|
+
navigateDeprecated<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
|
|
72
|
+
navigateDeprecated<RouteName extends string>(options: RouteName extends unknown ? {
|
|
73
|
+
name: RouteName;
|
|
75
74
|
params: object | undefined;
|
|
76
|
-
merge?: boolean
|
|
75
|
+
merge?: boolean;
|
|
77
76
|
} : never): void;
|
|
78
|
-
preload<
|
|
77
|
+
preload<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
|
|
79
78
|
reset(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
80
79
|
goBack(): void;
|
|
81
80
|
isFocused(): boolean;
|
|
82
81
|
canGoBack(): boolean;
|
|
83
82
|
getId(): string | undefined;
|
|
84
|
-
getParent<T = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string
|
|
83
|
+
getParent<T = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string): T;
|
|
85
84
|
getState(): TabNavigationState<any>;
|
|
86
85
|
setStateForNextRouteNamesChange(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
87
86
|
} & import("@react-navigation/native").PrivateValueStore<[ParamListBase, unknown, unknown]>, "getParent"> & {
|
|
88
|
-
getParent<
|
|
87
|
+
getParent<T = NavigationProp<ParamListBase, string, undefined, Readonly<{
|
|
89
88
|
key: string;
|
|
90
89
|
index: number;
|
|
91
90
|
routeNames: string[];
|
|
92
|
-
history?: unknown[]
|
|
91
|
+
history?: unknown[];
|
|
93
92
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
94
93
|
type: string;
|
|
95
94
|
stale: false;
|
|
96
|
-
}>, {}, {}> | undefined>(id?: string | undefined):
|
|
95
|
+
}>, {}, {}> | undefined>(id?: string | undefined): T;
|
|
97
96
|
setParams(params: Partial<object | undefined>): void;
|
|
98
97
|
setOptions(options: Partial<ExpoTabsNavigatorScreenOptions>): void;
|
|
99
98
|
} & import("@react-navigation/native").EventConsumer<TabNavigationEventMap & import("@react-navigation/native").EventMapCore<TabNavigationState<any>>> & import("@react-navigation/native").PrivateValueStore<[ParamListBase, string, TabNavigationEventMap]> & TabActionHelpers<ParamListBase>, import("@react-navigation/native").RouteProp<ParamListBase, string>>>>;
|
|
@@ -103,48 +102,41 @@ export declare const TabsDescriptorsContext: import("react").Context<Record<stri
|
|
|
103
102
|
export declare const TabsNavigatorContext: import("react").Context<({
|
|
104
103
|
dispatch(action: Readonly<{
|
|
105
104
|
type: string;
|
|
106
|
-
payload?: object
|
|
107
|
-
source?: string
|
|
108
|
-
target?: string
|
|
105
|
+
payload?: object;
|
|
106
|
+
source?: string;
|
|
107
|
+
target?: string;
|
|
109
108
|
}> | ((state: Readonly<Readonly<{
|
|
110
109
|
key: string;
|
|
111
110
|
index: number;
|
|
112
111
|
routeNames: string[];
|
|
113
|
-
history?: unknown[]
|
|
112
|
+
history?: unknown[];
|
|
114
113
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
115
|
-
type: string; /**
|
|
116
|
-
* Event which fires on tapping on the tab in the tab bar.
|
|
117
|
-
*/
|
|
118
|
-
stale: false;
|
|
119
|
-
}>>) => Readonly<{
|
|
120
114
|
type: string;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
target?: string | undefined;
|
|
124
|
-
}>)): void;
|
|
115
|
+
stale: false;
|
|
116
|
+
}>>) => NavigationAction)): void;
|
|
125
117
|
navigate<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined, options?: {
|
|
126
|
-
merge?: boolean
|
|
127
|
-
pop?: boolean
|
|
118
|
+
merge?: boolean;
|
|
119
|
+
pop?: boolean;
|
|
128
120
|
} | undefined] : never): void;
|
|
129
|
-
navigate<
|
|
130
|
-
name:
|
|
121
|
+
navigate<RouteName extends string>(options: RouteName extends unknown ? {
|
|
122
|
+
name: RouteName;
|
|
131
123
|
params: object | undefined;
|
|
132
|
-
path?: string
|
|
133
|
-
merge?: boolean
|
|
134
|
-
pop?: boolean
|
|
124
|
+
path?: string;
|
|
125
|
+
merge?: boolean;
|
|
126
|
+
pop?: boolean;
|
|
135
127
|
} : never): void;
|
|
136
|
-
navigateDeprecated<
|
|
137
|
-
navigateDeprecated<
|
|
138
|
-
name:
|
|
128
|
+
navigateDeprecated<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
|
|
129
|
+
navigateDeprecated<RouteName extends string>(options: RouteName extends unknown ? {
|
|
130
|
+
name: RouteName;
|
|
139
131
|
params: object | undefined;
|
|
140
|
-
merge?: boolean
|
|
132
|
+
merge?: boolean;
|
|
141
133
|
} : never): void;
|
|
142
|
-
preload<
|
|
134
|
+
preload<RouteName extends string>(...args: RouteName extends unknown ? [screen: RouteName, params?: object | undefined] : never): void;
|
|
143
135
|
reset(state: Readonly<{
|
|
144
136
|
key: string;
|
|
145
137
|
index: number;
|
|
146
138
|
routeNames: string[];
|
|
147
|
-
history?: unknown[]
|
|
139
|
+
history?: unknown[];
|
|
148
140
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
149
141
|
type: string;
|
|
150
142
|
stale: false;
|
|
@@ -152,7 +144,7 @@ export declare const TabsNavigatorContext: import("react").Context<({
|
|
|
152
144
|
key: string;
|
|
153
145
|
index: number;
|
|
154
146
|
routeNames: string[];
|
|
155
|
-
history?: unknown[]
|
|
147
|
+
history?: unknown[];
|
|
156
148
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
157
149
|
type: string;
|
|
158
150
|
stale: false;
|
|
@@ -161,12 +153,12 @@ export declare const TabsNavigatorContext: import("react").Context<({
|
|
|
161
153
|
isFocused(): boolean;
|
|
162
154
|
canGoBack(): boolean;
|
|
163
155
|
getId(): string | undefined;
|
|
164
|
-
getParent<T = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string
|
|
156
|
+
getParent<T = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string): T;
|
|
165
157
|
getState(): Readonly<{
|
|
166
158
|
key: string;
|
|
167
159
|
index: number;
|
|
168
160
|
routeNames: string[];
|
|
169
|
-
history?: unknown[]
|
|
161
|
+
history?: unknown[];
|
|
170
162
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
171
163
|
type: string;
|
|
172
164
|
stale: false;
|
|
@@ -175,7 +167,7 @@ export declare const TabsNavigatorContext: import("react").Context<({
|
|
|
175
167
|
key: string;
|
|
176
168
|
index: number;
|
|
177
169
|
routeNames: string[];
|
|
178
|
-
history?: unknown[]
|
|
170
|
+
history?: unknown[];
|
|
179
171
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
180
172
|
type: string;
|
|
181
173
|
stale: false;
|
|
@@ -183,13 +175,13 @@ export declare const TabsNavigatorContext: import("react").Context<({
|
|
|
183
175
|
key: string;
|
|
184
176
|
index: number;
|
|
185
177
|
routeNames: string[];
|
|
186
|
-
history?: unknown[]
|
|
178
|
+
history?: unknown[];
|
|
187
179
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
188
180
|
type: string;
|
|
189
181
|
stale: false;
|
|
190
182
|
}>>): void;
|
|
191
183
|
} & import("@react-navigation/native").PrivateValueStore<[ParamListBase, unknown, unknown]> & import("@react-navigation/native").EventEmitter<TabNavigationEventMap> & {
|
|
192
|
-
setParams<
|
|
184
|
+
setParams<RouteName extends string>(params: Partial<object | undefined>): void;
|
|
193
185
|
} & TabActionHelpers<ParamListBase>) | null>;
|
|
194
186
|
/**
|
|
195
187
|
* @hidden
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabContext.d.ts","sourceRoot":"","sources":["../../src/ui/TabContext.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TabContext.d.ts","sourceRoot":"","sources":["../../src/ui/TabContext.tsx"],"names":[],"mappings":"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"}
|
package/build/ui/TabList.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TabList = TabList;
|
|
4
|
+
exports.isTabList = isTabList;
|
|
4
5
|
const react_native_1 = require("react-native");
|
|
5
6
|
const common_1 = require("./common");
|
|
6
7
|
/**
|
|
@@ -20,14 +21,12 @@ function TabList({ asChild, style, ...props }) {
|
|
|
20
21
|
const Comp = asChild ? common_1.ViewSlot : react_native_1.View;
|
|
21
22
|
return <Comp style={[styles.tabList, style]} {...props}/>;
|
|
22
23
|
}
|
|
23
|
-
exports.TabList = TabList;
|
|
24
24
|
/**
|
|
25
25
|
* @hidden
|
|
26
26
|
*/
|
|
27
27
|
function isTabList(child) {
|
|
28
28
|
return child.type === TabList;
|
|
29
29
|
}
|
|
30
|
-
exports.isTabList = isTabList;
|
|
31
30
|
const styles = react_native_1.StyleSheet.create({
|
|
32
31
|
tabList: {
|
|
33
32
|
flexDirection: 'row',
|
package/build/ui/TabList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabList.js","sourceRoot":"","sources":["../../src/ui/TabList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TabList.js","sourceRoot":"","sources":["../../src/ui/TabList.tsx"],"names":[],"mappings":";;AAuBA,0BAGC;AAKD,8BAIC;AAlCD,+CAA2D;AAE3D,qCAAoC;AAOpC;;;;;;;;;;;;GAYG;AACH,SAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgB;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,iBAAQ,CAAC,CAAC,CAAC,mBAAI,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CACvB,KAAwB;IAExB,OAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAChC,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE;QACP,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,eAAe;KAChC;IACD,UAAU,EAAE;QACV,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,eAAe;KAChC;CACF,CAAC,CAAC","sourcesContent":["import { ReactElement, ComponentProps } from 'react';\nimport { View, StyleSheet, ViewProps } from 'react-native';\n\nimport { ViewSlot } from './common';\n\nexport type TabListProps = ViewProps & {\n /** Forward props to child component and removes the extra `<View>`. Useful for custom wrappers. */\n asChild?: boolean;\n};\n\n/**\n * Wrapper component for `TabTriggers`. `TabTriggers` within the `TabList` define the tabs.\n *\n * @example\n * ```tsx\n * <Tabs>\n * <TabSlot />\n * <TabList>\n * <TabTrigger name=\"home\" href=\"/\" />\n * </TabList>\n * </Tabs>\n * ```\n */\nexport function TabList({ asChild, style, ...props }: TabListProps) {\n const Comp = asChild ? ViewSlot : View;\n return <Comp style={[styles.tabList, style]} {...props} />;\n}\n\n/**\n * @hidden\n */\nexport function isTabList(\n child: ReactElement<any>\n): child is ReactElement<ComponentProps<typeof TabList>> {\n return child.type === TabList;\n}\n\nconst styles = StyleSheet.create({\n tabList: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n tabTrigger: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n});\n"]}
|
package/build/ui/TabRouter.d.ts
CHANGED
|
@@ -16,35 +16,35 @@ export type ExpoTabActionType = RNTabActionType | CommonNavigationAction | {
|
|
|
16
16
|
};
|
|
17
17
|
export declare function ExpoTabRouter({ triggerMap, ...options }: ExpoTabRouterOptions): Router<TabNavigationState<ParamListBase>, {
|
|
18
18
|
type: "GO_BACK";
|
|
19
|
-
source?: string
|
|
20
|
-
target?: string
|
|
19
|
+
source?: string;
|
|
20
|
+
target?: string;
|
|
21
21
|
} | {
|
|
22
22
|
type: "NAVIGATE";
|
|
23
23
|
payload: {
|
|
24
24
|
name: string;
|
|
25
|
-
params?: object
|
|
26
|
-
path?: string
|
|
27
|
-
merge?: boolean
|
|
28
|
-
pop?: boolean
|
|
25
|
+
params?: object;
|
|
26
|
+
path?: string;
|
|
27
|
+
merge?: boolean;
|
|
28
|
+
pop?: boolean;
|
|
29
29
|
};
|
|
30
|
-
source?: string
|
|
31
|
-
target?: string
|
|
30
|
+
source?: string;
|
|
31
|
+
target?: string;
|
|
32
32
|
} | {
|
|
33
33
|
type: "NAVIGATE_DEPRECATED";
|
|
34
34
|
payload: {
|
|
35
35
|
name: string;
|
|
36
|
-
params?: object
|
|
37
|
-
merge?: boolean
|
|
36
|
+
params?: object;
|
|
37
|
+
merge?: boolean;
|
|
38
38
|
};
|
|
39
|
-
source?: string
|
|
40
|
-
target?: string
|
|
39
|
+
source?: string;
|
|
40
|
+
target?: string;
|
|
41
41
|
} | {
|
|
42
42
|
type: "RESET";
|
|
43
43
|
payload: (Readonly<{
|
|
44
44
|
key: string;
|
|
45
45
|
index: number;
|
|
46
46
|
routeNames: string[];
|
|
47
|
-
history?: unknown[]
|
|
47
|
+
history?: unknown[];
|
|
48
48
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
49
49
|
type: string;
|
|
50
50
|
stale: false;
|
|
@@ -52,7 +52,7 @@ export declare function ExpoTabRouter({ triggerMap, ...options }: ExpoTabRouterO
|
|
|
52
52
|
key: string;
|
|
53
53
|
index: number;
|
|
54
54
|
routeNames: string[];
|
|
55
|
-
history?: unknown[]
|
|
55
|
+
history?: unknown[];
|
|
56
56
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
57
57
|
type: string;
|
|
58
58
|
stale: false;
|
|
@@ -60,38 +60,38 @@ export declare function ExpoTabRouter({ triggerMap, ...options }: ExpoTabRouterO
|
|
|
60
60
|
key: string;
|
|
61
61
|
index: number;
|
|
62
62
|
routeNames: string[];
|
|
63
|
-
history?: unknown[]
|
|
63
|
+
history?: unknown[];
|
|
64
64
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
65
65
|
type: string;
|
|
66
66
|
stale: false;
|
|
67
67
|
}>, "routes"> & {
|
|
68
68
|
routes: Omit<import("@react-navigation/native").Route<string>, "key">[];
|
|
69
69
|
})) | undefined;
|
|
70
|
-
source?: string
|
|
71
|
-
target?: string
|
|
70
|
+
source?: string;
|
|
71
|
+
target?: string;
|
|
72
72
|
} | {
|
|
73
73
|
type: "SET_PARAMS";
|
|
74
74
|
payload: {
|
|
75
|
-
params?: object
|
|
75
|
+
params?: object;
|
|
76
76
|
};
|
|
77
|
-
source?: string
|
|
78
|
-
target?: string
|
|
77
|
+
source?: string;
|
|
78
|
+
target?: string;
|
|
79
79
|
} | {
|
|
80
80
|
type: "PRELOAD";
|
|
81
81
|
payload: {
|
|
82
82
|
name: string;
|
|
83
|
-
params?: object
|
|
83
|
+
params?: object;
|
|
84
84
|
};
|
|
85
|
-
source?: string
|
|
86
|
-
target?: string
|
|
85
|
+
source?: string;
|
|
86
|
+
target?: string;
|
|
87
87
|
} | RNTabActionType | {
|
|
88
88
|
type: "JUMP_TO";
|
|
89
|
-
source?: string
|
|
90
|
-
target?: string
|
|
89
|
+
source?: string;
|
|
90
|
+
target?: string;
|
|
91
91
|
payload: {
|
|
92
92
|
name: string;
|
|
93
|
-
reset?: ExpoTabsResetValue
|
|
94
|
-
params?: object
|
|
93
|
+
reset?: ExpoTabsResetValue;
|
|
94
|
+
params?: object;
|
|
95
95
|
};
|
|
96
96
|
}>;
|
|
97
97
|
//# sourceMappingURL=TabRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabRouter.d.ts","sourceRoot":"","sources":["../../src/ui/TabRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,aAAa,EAEb,MAAM,EACN,aAAa,IAAI,eAAe,EAChC,kBAAkB,EAClB,gBAAgB,IAAI,kBAAkB,EACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,sBAAsB,GACtB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEN,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,EAAE,oBAAoB
|
|
1
|
+
{"version":3,"file":"TabRouter.d.ts","sourceRoot":"","sources":["../../src/ui/TabRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,aAAa,EAEb,MAAM,EACN,aAAa,IAAI,eAAe,EAChC,kBAAkB,EAClB,gBAAgB,IAAI,kBAAkB,EACvC,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,sBAAsB,GACtB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEN,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,EAAE,oBAAoB;;;;;;;;cAhBpE,CAAC;YAAsB,CAAC;aAAuB,CAAC;WAE5C,CAAC;;;;;;;;cASP,CAAJ;aAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAUJ,CAAA;;;;;;;;cAKL,CAAC;;;;;UApBR,SAAS;aACN,MAAM;aACN,MAAM;aACN;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;GAuEN"}
|
package/build/ui/TabRouter.js
CHANGED
|
@@ -15,15 +15,25 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.ExpoTabRouter =
|
|
36
|
+
exports.ExpoTabRouter = ExpoTabRouter;
|
|
27
37
|
const native_1 = require("@react-navigation/native");
|
|
28
38
|
const Linking = __importStar(require("expo-linking"));
|
|
29
39
|
function ExpoTabRouter({ triggerMap, ...options }) {
|
|
@@ -85,5 +95,4 @@ function ExpoTabRouter({ triggerMap, ...options }) {
|
|
|
85
95
|
};
|
|
86
96
|
return router;
|
|
87
97
|
}
|
|
88
|
-
exports.ExpoTabRouter = ExpoTabRouter;
|
|
89
98
|
//# sourceMappingURL=TabRouter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabRouter.js","sourceRoot":"","sources":["../../src/ui/TabRouter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TabRouter.js","sourceRoot":"","sources":["../../src/ui/TabRouter.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonNavigationAction,\n ParamListBase,\n TabRouter as RNTabRouter,\n Router,\n TabActionType as RNTabActionType,\n TabNavigationState,\n TabRouterOptions as RNTabRouterOptions,\n} from '@react-navigation/native';\nimport * as Linking from 'expo-linking';\n\nimport { TriggerMap } from './common';\n\nexport type ExpoTabRouterOptions = RNTabRouterOptions & {\n triggerMap: TriggerMap;\n};\n\nexport type ExpoTabsResetValue = 'always' | 'onFocus' | 'never';\n\nexport type ExpoTabActionType =\n | RNTabActionType\n | CommonNavigationAction\n | {\n type: 'JUMP_TO';\n source?: string;\n target?: string;\n payload: {\n name: string;\n reset?: ExpoTabsResetValue;\n params?: object;\n };\n };\n\nexport function ExpoTabRouter({ triggerMap, ...options }: ExpoTabRouterOptions) {\n const rnTabRouter = RNTabRouter(options);\n\n const router: Router<\n TabNavigationState<ParamListBase>,\n ExpoTabActionType | CommonNavigationAction\n > = {\n ...rnTabRouter,\n getStateForAction(state, action, options) {\n if (action.type !== 'JUMP_TO') {\n return rnTabRouter.getStateForAction(state, action, options);\n }\n\n const name = action.payload.name;\n const trigger = triggerMap[name];\n\n if (!trigger) {\n // This is probably for a different navigator\n return null;\n } else if (trigger.type === 'external') {\n Linking.openURL(trigger.href);\n return state;\n }\n\n const route = state.routes.find((route) => route.name === trigger.routeNode.route);\n\n if (!route) {\n // This shouldn't occur, but lets just hand it off to the next navigator in case.\n return null;\n }\n\n // We should reset if this is the first time visiting the route\n let shouldReset = !state.history.some((item) => item.key === route?.key) && !route.state;\n\n if (!shouldReset && 'reset' in action.payload && action.payload.reset) {\n switch (action.payload.reset) {\n case 'never': {\n shouldReset = false;\n break;\n }\n case 'always': {\n shouldReset = true;\n break;\n }\n case 'onFocus': {\n shouldReset = state.routes[state.index].key === route.key;\n break;\n }\n default: {\n // TypeScript trick to ensure all use-cases are accounted for\n action.payload.reset satisfies never;\n }\n }\n }\n\n if (shouldReset) {\n options.routeParamList[route.name] = {\n ...options.routeParamList[route.name],\n ...trigger.action.payload.params,\n };\n return rnTabRouter.getStateForAction(state, trigger.action, options);\n } else {\n return rnTabRouter.getStateForRouteFocus(state, route.key);\n }\n },\n };\n\n return router;\n}\n"]}
|
package/build/ui/TabSlot.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.useTabSlot = useTabSlot;
|
|
4
|
+
exports.TabSlot = TabSlot;
|
|
5
|
+
exports.defaultTabsSlotRender = defaultTabsSlotRender;
|
|
6
|
+
exports.isTabSlot = isTabSlot;
|
|
4
7
|
const react_1 = require("react");
|
|
5
8
|
const react_native_1 = require("react-native");
|
|
6
9
|
const react_native_screens_1 = require("react-native-screens");
|
|
@@ -39,7 +42,6 @@ function useTabSlot({ detachInactiveScreens = ['android', 'ios', 'web'].includes
|
|
|
39
42
|
})}
|
|
40
43
|
</react_native_screens_1.ScreenContainer>);
|
|
41
44
|
}
|
|
42
|
-
exports.useTabSlot = useTabSlot;
|
|
43
45
|
/**
|
|
44
46
|
* Renders the current tab.
|
|
45
47
|
*
|
|
@@ -58,7 +60,6 @@ exports.useTabSlot = useTabSlot;
|
|
|
58
60
|
function TabSlot(props) {
|
|
59
61
|
return useTabSlot(props);
|
|
60
62
|
}
|
|
61
|
-
exports.TabSlot = TabSlot;
|
|
62
63
|
/**
|
|
63
64
|
* @hidden
|
|
64
65
|
*/
|
|
@@ -75,14 +76,12 @@ function defaultTabsSlotRender(descriptor, { isFocused, loaded, detachInactiveSc
|
|
|
75
76
|
{descriptor.render()}
|
|
76
77
|
</react_native_screens_1.Screen>);
|
|
77
78
|
}
|
|
78
|
-
exports.defaultTabsSlotRender = defaultTabsSlotRender;
|
|
79
79
|
/**
|
|
80
80
|
* @hidden
|
|
81
81
|
*/
|
|
82
82
|
function isTabSlot(child) {
|
|
83
83
|
return child.type === TabSlot;
|
|
84
84
|
}
|
|
85
|
-
exports.isTabSlot = isTabSlot;
|
|
86
85
|
const styles = react_native_1.StyleSheet.create({
|
|
87
86
|
screen: {
|
|
88
87
|
flex: 1,
|
package/build/ui/TabSlot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabSlot.js","sourceRoot":"","sources":["../../src/ui/TabSlot.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TabSlot.js","sourceRoot":"","sources":["../../src/ui/TabSlot.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ComponentProps, ReactElement, useState } from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { ScreenContainer, Screen } from 'react-native-screens';\n\nimport { TabContext, TabsDescriptor } from './TabContext';\nimport { TabListProps } from './TabList';\nimport { useNavigatorContext } from '../views/Navigator';\n\nexport type TabSlotProps = ComponentProps<typeof ScreenContainer> & {\n /**\n * Remove inactive screens.\n */\n detachInactiveScreens?: boolean;\n /**\n * Override how the `Screen` component is rendered.\n */\n renderFn?: typeof defaultTabsSlotRender;\n};\n\n/**\n * Options provided to the `UseTabSlotOptions`.\n */\nexport type TabsSlotRenderOptions = {\n /**\n * Index of screen.\n */\n index: number;\n /**\n * Whether the screen is focused.\n */\n isFocused: boolean;\n /**\n * Whether the screen has been loaded.\n */\n loaded: boolean;\n /**\n * Should the screen be unloaded when inactive.\n */\n detachInactiveScreens: boolean;\n};\n\n/**\n * Returns a `ReactElement` of the current tab.\n *\n * @example\n * ```tsx\n * function MyTabSlot() {\n * const slot = useTabSlot();\n *\n * return slot;\n * }\n * ```\n */\nexport function useTabSlot({\n detachInactiveScreens = ['android', 'ios', 'web'].includes(Platform.OS),\n style,\n renderFn = defaultTabsSlotRender,\n}: TabSlotProps = {}) {\n const { state, descriptors } = useNavigatorContext();\n const focusedRouteKey = state.routes[state.index].key;\n const [loaded, setLoaded] = useState({ [focusedRouteKey]: true });\n\n if (!loaded[focusedRouteKey]) {\n setLoaded({ ...loaded, [focusedRouteKey]: true });\n }\n\n return (\n <ScreenContainer\n enabled={detachInactiveScreens}\n hasTwoStates\n style={[styles.screenContainer, style]}>\n {state.routes.map((route, index) => {\n const descriptor = descriptors[route.key] as unknown as TabsDescriptor;\n\n return (\n <TabContext.Provider key={descriptor.route.key} value={descriptor.options}>\n {renderFn(descriptor, {\n index,\n isFocused: state.index === index,\n loaded: loaded[route.key],\n detachInactiveScreens,\n })}\n </TabContext.Provider>\n );\n })}\n </ScreenContainer>\n );\n}\n\n/**\n * Renders the current tab.\n *\n * @see [`useTabSlot`](#usetabslot) for a hook version of this component.\n *\n * @example\n * ```tsx\n * <Tabs>\n * <TabSlot />\n * <TabList>\n * <TabTrigger name=\"home\" href=\"/\" />\n * </TabList>\n * </Tabs>\n * ```\n */\nexport function TabSlot(props: TabSlotProps) {\n return useTabSlot(props);\n}\n\n/**\n * @hidden\n */\nexport function defaultTabsSlotRender(\n descriptor: TabsDescriptor,\n { isFocused, loaded, detachInactiveScreens }: TabsSlotRenderOptions\n) {\n const { lazy = true, unmountOnBlur, freezeOnBlur } = descriptor.options;\n\n if (unmountOnBlur && !isFocused) {\n return null;\n }\n\n if (lazy && !loaded && !isFocused) {\n // Don't render a lazy screen if we've never navigated to it\n return null;\n }\n\n return (\n <Screen\n key={descriptor.route.key}\n enabled={detachInactiveScreens}\n activityState={isFocused ? 2 : 0}\n freezeOnBlur={freezeOnBlur}\n style={[styles.screen, isFocused ? styles.focused : styles.unfocused]}>\n {descriptor.render()}\n </Screen>\n );\n}\n\n/**\n * @hidden\n */\nexport function isTabSlot(child: ReactElement<any>): child is ReactElement<TabListProps> {\n return child.type === TabSlot;\n}\n\nconst styles = StyleSheet.create({\n screen: {\n flex: 1,\n position: 'relative',\n height: '100%',\n },\n screenContainer: {\n flexShrink: 0,\n flexGrow: 1,\n },\n focused: {\n zIndex: 1,\n display: 'flex',\n flexShrink: 0,\n flexGrow: 1,\n },\n unfocused: {\n zIndex: -1,\n display: 'none',\n flexShrink: 1,\n flexGrow: 0,\n },\n});\n"]}
|
package/build/ui/TabTrigger.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TabTrigger = TabTrigger;
|
|
4
|
+
exports.isTabTrigger = isTabTrigger;
|
|
5
|
+
exports.useTabTrigger = useTabTrigger;
|
|
4
6
|
const react_slot_1 = require("@radix-ui/react-slot");
|
|
5
7
|
const react_1 = require("react");
|
|
6
8
|
const react_native_1 = require("react-native");
|
|
@@ -48,14 +50,12 @@ function TabTrigger({ asChild, name, href, reset = 'onFocus', ...props }) {
|
|
|
48
50
|
</react_native_1.Pressable>);
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
|
-
exports.TabTrigger = TabTrigger;
|
|
52
53
|
/**
|
|
53
54
|
* @hidden
|
|
54
55
|
*/
|
|
55
56
|
function isTabTrigger(child) {
|
|
56
57
|
return child.type === TabTrigger;
|
|
57
58
|
}
|
|
58
|
-
exports.isTabTrigger = isTabTrigger;
|
|
59
59
|
/**
|
|
60
60
|
* Utility hook creating custom `TabTrigger`.
|
|
61
61
|
*/
|
|
@@ -144,7 +144,6 @@ function useTabTrigger(options) {
|
|
|
144
144
|
triggerProps,
|
|
145
145
|
};
|
|
146
146
|
}
|
|
147
|
-
exports.useTabTrigger = useTabTrigger;
|
|
148
147
|
const styles = react_native_1.StyleSheet.create({
|
|
149
148
|
tabTrigger: {
|
|
150
149
|
flexDirection: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabTrigger.js","sourceRoot":"","sources":["../../src/ui/TabTrigger.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Slot } from '@radix-ui/react-slot';\nimport { TabNavigationState } from '@react-navigation/native';\nimport { ReactNode, useContext, ReactElement, ComponentProps, useCallback } from 'react';\nimport { View, StyleSheet, Pressable, PressableProps } from 'react-native';\n\nimport { TabTriggerMapContext } from './TabContext';\nimport { ExpoTabsResetValue } from './TabRouter';\nimport type { TriggerMap } from './common';\nimport { appendBaseUrl } from '../fork/getPathFromState';\nimport { router } from '../imperative-api';\nimport { shouldHandleMouseEvent } from '../link/useLinkToPathProps';\nimport { stripGroupSegmentsFromPath } from '../matchers';\nimport type { Href } from '../types';\nimport { useNavigatorContext } from '../views/Navigator';\n\ntype PressablePropsWithoutFunctionChildren = Omit<PressableProps, 'children'> & {\n children?: ReactNode | undefined;\n};\n\nexport type TabTriggerProps = PressablePropsWithoutFunctionChildren & {\n /**\n * Name of tab. When used within a `TabList` this sets the name of the tab.\n * Otherwise, this references the name.\n */\n name: string;\n /**\n * Name of tab. Required when used within a `TabList`.\n */\n href?: Href;\n /**\n * Forward props to child component. Useful for custom wrappers.\n */\n asChild?: boolean;\n /**\n * Resets the route when switching to a tab.\n */\n reset?: SwitchToOptions['reset'] | 'onLongPress';\n};\n\nexport type TabTriggerOptions = {\n name: string;\n href: Href;\n};\n\nexport type TabTriggerSlotProps = PressablePropsWithoutFunctionChildren &\n React.RefAttributes<View> & {\n isFocused?: boolean;\n href?: string;\n };\n\nconst TabTriggerSlot = Slot as React.ForwardRefExoticComponent<TabTriggerSlotProps>;\n\n/**\n * Creates a trigger to navigate to a tab. When used as child of `TabList`, its\n * functionality slightly changes since the `href` prop is required,\n * and the trigger also defines what routes are present in the `Tabs`.\n *\n * When used outside of `TabList`, this component no longer requires an `href`.\n *\n * @example\n * ```tsx\n * <Tabs>\n * <TabSlot />\n * <TabList>\n * <TabTrigger name=\"home\" href=\"/\" />\n * </TabList>\n * </Tabs>\n * ```\n */\nexport function TabTrigger({ asChild, name, href, reset = 'onFocus', ...props }: TabTriggerProps) {\n const { trigger, triggerProps } = useTabTrigger({\n name,\n reset,\n ...props,\n });\n\n // Pressable doesn't accept the extra props, so only pass them if we are using asChild\n if (asChild) {\n return (\n <TabTriggerSlot\n style={styles.tabTrigger}\n {...props}\n {...triggerProps}\n href={trigger?.resolvedHref}>\n {props.children}\n </TabTriggerSlot>\n );\n } else {\n // These props are not typed, but are allowed by React Native Web\n const reactNativeWebProps = { href: trigger?.resolvedHref };\n\n return (\n <Pressable style={styles.tabTrigger} {...reactNativeWebProps} {...props} {...triggerProps}>\n {props.children}\n </Pressable>\n );\n }\n}\n\n/**\n * @hidden\n */\nexport function isTabTrigger(\n child: ReactElement<any>\n): child is ReactElement<ComponentProps<typeof TabTrigger>> {\n return child.type === TabTrigger;\n}\n\n/**\n * Options for `switchTab` function.\n */\nexport type SwitchToOptions = {\n /**\n * Navigate and reset the history.\n */\n reset?: ExpoTabsResetValue;\n};\n\nexport type Trigger = TriggerMap[string] & {\n isFocused: boolean;\n resolvedHref: string;\n route: TabNavigationState<any>['routes'][number];\n};\n\nexport type UseTabTriggerResult = {\n switchTab: (name: string, options: SwitchToOptions) => void;\n getTrigger: (name: string) => Trigger | undefined;\n trigger?: Trigger;\n triggerProps: TriggerProps;\n};\n\nexport type TriggerProps = {\n isFocused: boolean;\n onPress: PressableProps['onPress'];\n onLongPress: PressableProps['onLongPress'];\n};\n\n/**\n * Utility hook creating custom `TabTrigger`.\n */\nexport function useTabTrigger(options: TabTriggerProps): UseTabTriggerResult {\n const { state, navigation } = useNavigatorContext();\n const { name, reset, onPress, onLongPress } = options;\n const triggerMap = useContext(TabTriggerMapContext);\n\n const getTrigger = useCallback(\n (name: string) => {\n const config = triggerMap[name];\n\n if (!config) {\n return;\n }\n\n return {\n isFocused: state.index === config.index,\n route: state.routes[config.index],\n resolvedHref: stripGroupSegmentsFromPath(appendBaseUrl(config.href)),\n ...config,\n };\n },\n [triggerMap]\n );\n\n const trigger = name !== undefined ? getTrigger(name) : undefined;\n\n const switchTab = useCallback(\n (name: string, options?: SwitchToOptions) => {\n const config = triggerMap[name];\n\n if (config) {\n if (config.type === 'external') {\n return router.navigate(config.href);\n } else {\n return navigation?.dispatch({\n type: 'JUMP_TO',\n payload: {\n name,\n ...options,\n },\n });\n }\n } else {\n return navigation?.dispatch({\n type: 'JUMP_TO',\n payload: {\n name,\n },\n });\n }\n },\n [navigation, triggerMap]\n );\n\n const handleOnPress = useCallback<NonNullable<PressableProps['onPress']>>(\n (event) => {\n onPress?.(event);\n if (!trigger) return;\n if (event?.isDefaultPrevented()) return;\n\n navigation?.emit({\n type: 'tabPress',\n target: trigger.type === 'internal' ? trigger.route.key : trigger?.href,\n canPreventDefault: true,\n });\n\n if (!shouldHandleMouseEvent(event)) return;\n\n switchTab(name, { reset: reset !== 'onLongPress' ? reset : undefined });\n },\n [onPress, name, reset, trigger]\n );\n\n const handleOnLongPress = useCallback<NonNullable<PressableProps['onPress']>>(\n (event) => {\n onPress?.(event);\n if (!trigger) return;\n if (event?.isDefaultPrevented()) return;\n\n navigation?.emit({\n type: 'tabLongPress',\n target: trigger.type === 'internal' ? trigger.route.key : trigger?.href,\n });\n\n if (!shouldHandleMouseEvent(event)) return;\n\n switchTab(name, {\n reset: reset === 'onLongPress' ? 'always' : reset,\n });\n },\n [onLongPress, name, reset, trigger]\n );\n\n const triggerProps = {\n isFocused: Boolean(trigger?.isFocused),\n onPress: handleOnPress,\n onLongPress: handleOnLongPress,\n };\n\n return {\n switchTab,\n getTrigger,\n trigger,\n triggerProps,\n };\n}\n\nconst styles = StyleSheet.create({\n tabTrigger: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"TabTrigger.js","sourceRoot":"","sources":["../../src/ui/TabTrigger.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Slot } from '@radix-ui/react-slot';\nimport { TabNavigationState } from '@react-navigation/native';\nimport { ReactNode, useContext, ReactElement, ComponentProps, useCallback } from 'react';\nimport { View, StyleSheet, Pressable, PressableProps } from 'react-native';\n\nimport { TabTriggerMapContext } from './TabContext';\nimport { ExpoTabsResetValue } from './TabRouter';\nimport type { TriggerMap } from './common';\nimport { appendBaseUrl } from '../fork/getPathFromState';\nimport { router } from '../imperative-api';\nimport { shouldHandleMouseEvent } from '../link/useLinkToPathProps';\nimport { stripGroupSegmentsFromPath } from '../matchers';\nimport type { Href } from '../types';\nimport { useNavigatorContext } from '../views/Navigator';\n\ntype PressablePropsWithoutFunctionChildren = Omit<PressableProps, 'children'> & {\n children?: ReactNode | undefined;\n};\n\nexport type TabTriggerProps = PressablePropsWithoutFunctionChildren & {\n /**\n * Name of tab. When used within a `TabList` this sets the name of the tab.\n * Otherwise, this references the name.\n */\n name: string;\n /**\n * Name of tab. Required when used within a `TabList`.\n */\n href?: Href;\n /**\n * Forward props to child component. Useful for custom wrappers.\n */\n asChild?: boolean;\n /**\n * Resets the route when switching to a tab.\n */\n reset?: SwitchToOptions['reset'] | 'onLongPress';\n};\n\nexport type TabTriggerOptions = {\n name: string;\n href: Href;\n};\n\nexport type TabTriggerSlotProps = PressablePropsWithoutFunctionChildren &\n React.RefAttributes<View> & {\n isFocused?: boolean;\n href?: string;\n };\n\nconst TabTriggerSlot = Slot as React.ForwardRefExoticComponent<TabTriggerSlotProps>;\n\n/**\n * Creates a trigger to navigate to a tab. When used as child of `TabList`, its\n * functionality slightly changes since the `href` prop is required,\n * and the trigger also defines what routes are present in the `Tabs`.\n *\n * When used outside of `TabList`, this component no longer requires an `href`.\n *\n * @example\n * ```tsx\n * <Tabs>\n * <TabSlot />\n * <TabList>\n * <TabTrigger name=\"home\" href=\"/\" />\n * </TabList>\n * </Tabs>\n * ```\n */\nexport function TabTrigger({ asChild, name, href, reset = 'onFocus', ...props }: TabTriggerProps) {\n const { trigger, triggerProps } = useTabTrigger({\n name,\n reset,\n ...props,\n });\n\n // Pressable doesn't accept the extra props, so only pass them if we are using asChild\n if (asChild) {\n return (\n <TabTriggerSlot\n style={styles.tabTrigger}\n {...props}\n {...triggerProps}\n href={trigger?.resolvedHref}>\n {props.children}\n </TabTriggerSlot>\n );\n } else {\n // These props are not typed, but are allowed by React Native Web\n const reactNativeWebProps = { href: trigger?.resolvedHref };\n\n return (\n <Pressable style={styles.tabTrigger} {...reactNativeWebProps} {...props} {...triggerProps}>\n {props.children}\n </Pressable>\n );\n }\n}\n\n/**\n * @hidden\n */\nexport function isTabTrigger(\n child: ReactElement<any>\n): child is ReactElement<ComponentProps<typeof TabTrigger>> {\n return child.type === TabTrigger;\n}\n\n/**\n * Options for `switchTab` function.\n */\nexport type SwitchToOptions = {\n /**\n * Navigate and reset the history.\n */\n reset?: ExpoTabsResetValue;\n};\n\nexport type Trigger = TriggerMap[string] & {\n isFocused: boolean;\n resolvedHref: string;\n route: TabNavigationState<any>['routes'][number];\n};\n\nexport type UseTabTriggerResult = {\n switchTab: (name: string, options: SwitchToOptions) => void;\n getTrigger: (name: string) => Trigger | undefined;\n trigger?: Trigger;\n triggerProps: TriggerProps;\n};\n\nexport type TriggerProps = {\n isFocused: boolean;\n onPress: PressableProps['onPress'];\n onLongPress: PressableProps['onLongPress'];\n};\n\n/**\n * Utility hook creating custom `TabTrigger`.\n */\nexport function useTabTrigger(options: TabTriggerProps): UseTabTriggerResult {\n const { state, navigation } = useNavigatorContext();\n const { name, reset, onPress, onLongPress } = options;\n const triggerMap = useContext(TabTriggerMapContext);\n\n const getTrigger = useCallback(\n (name: string) => {\n const config = triggerMap[name];\n\n if (!config) {\n return;\n }\n\n return {\n isFocused: state.index === config.index,\n route: state.routes[config.index],\n resolvedHref: stripGroupSegmentsFromPath(appendBaseUrl(config.href)),\n ...config,\n };\n },\n [triggerMap]\n );\n\n const trigger = name !== undefined ? getTrigger(name) : undefined;\n\n const switchTab = useCallback(\n (name: string, options?: SwitchToOptions) => {\n const config = triggerMap[name];\n\n if (config) {\n if (config.type === 'external') {\n return router.navigate(config.href);\n } else {\n return navigation?.dispatch({\n type: 'JUMP_TO',\n payload: {\n name,\n ...options,\n },\n });\n }\n } else {\n return navigation?.dispatch({\n type: 'JUMP_TO',\n payload: {\n name,\n },\n });\n }\n },\n [navigation, triggerMap]\n );\n\n const handleOnPress = useCallback<NonNullable<PressableProps['onPress']>>(\n (event) => {\n onPress?.(event);\n if (!trigger) return;\n if (event?.isDefaultPrevented()) return;\n\n navigation?.emit({\n type: 'tabPress',\n target: trigger.type === 'internal' ? trigger.route.key : trigger?.href,\n canPreventDefault: true,\n });\n\n if (!shouldHandleMouseEvent(event)) return;\n\n switchTab(name, { reset: reset !== 'onLongPress' ? reset : undefined });\n },\n [onPress, name, reset, trigger]\n );\n\n const handleOnLongPress = useCallback<NonNullable<PressableProps['onPress']>>(\n (event) => {\n onPress?.(event);\n if (!trigger) return;\n if (event?.isDefaultPrevented()) return;\n\n navigation?.emit({\n type: 'tabLongPress',\n target: trigger.type === 'internal' ? trigger.route.key : trigger?.href,\n });\n\n if (!shouldHandleMouseEvent(event)) return;\n\n switchTab(name, {\n reset: reset === 'onLongPress' ? 'always' : reset,\n });\n },\n [onLongPress, name, reset, trigger]\n );\n\n const triggerProps = {\n isFocused: Boolean(trigger?.isFocused),\n onPress: handleOnPress,\n onLongPress: handleOnLongPress,\n };\n\n return {\n switchTab,\n getTrigger,\n trigger,\n triggerProps,\n };\n}\n\nconst styles = StyleSheet.create({\n tabTrigger: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n});\n"]}
|