expo-router 4.0.0-preview.9 → 4.0.0
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/assets/error.png +0 -0
- package/assets/file.png +0 -0
- package/assets/forward.png +0 -0
- package/assets/logotype.png +0 -0
- package/assets/pkg.png +0 -0
- package/assets/sitemap.png +0 -0
- package/build/ExpoRoot.js +2 -2
- package/build/ExpoRoot.js.map +1 -1
- package/build/doctor/index.d.ts +16 -0
- package/build/doctor/index.d.ts.map +1 -0
- package/build/doctor/index.js +66 -0
- package/build/doctor/index.js.map +1 -0
- package/build/exports.d.ts +1 -1
- package/build/exports.d.ts.map +1 -1
- package/build/exports.js +24 -2
- package/build/exports.js.map +1 -1
- package/build/fast-refresh.d.ts.map +1 -1
- package/build/fast-refresh.js.map +1 -1
- package/build/getRoutesCore.d.ts +1 -0
- package/build/getRoutesCore.d.ts.map +1 -1
- package/build/getRoutesCore.js +3 -1
- package/build/getRoutesCore.js.map +1 -1
- package/build/global-state/router-store.d.ts.map +1 -1
- package/build/global-state/router-store.js +1 -2
- package/build/global-state/router-store.js.map +1 -1
- package/build/global-state/routing.d.ts.map +1 -1
- package/build/global-state/routing.js +4 -0
- package/build/global-state/routing.js.map +1 -1
- package/build/head/url.d.ts +1 -0
- package/build/head/url.d.ts.map +1 -1
- package/build/head/url.js +21 -4
- package/build/head/url.js.map +1 -1
- package/build/hooks.d.ts +90 -38
- package/build/hooks.d.ts.map +1 -1
- package/build/hooks.js +46 -39
- package/build/hooks.js.map +1 -1
- package/build/imperative-api.d.ts +58 -15
- package/build/imperative-api.d.ts.map +1 -1
- package/build/imperative-api.js.map +1 -1
- package/build/layouts/Drawer.d.ts +2 -142
- package/build/layouts/Drawer.d.ts.map +1 -1
- package/build/layouts/Drawer.js +8 -5
- package/build/layouts/Drawer.js.map +1 -1
- package/build/layouts/DrawerClient.d.ts +144 -0
- package/build/layouts/DrawerClient.d.ts.map +1 -0
- package/build/layouts/DrawerClient.js +10 -0
- package/build/layouts/DrawerClient.js.map +1 -0
- package/build/layouts/Stack.d.ts +2 -126
- package/build/layouts/Stack.d.ts.map +1 -1
- package/build/layouts/Stack.js +8 -6
- package/build/layouts/Stack.js.map +1 -1
- package/build/layouts/StackClient.d.ts +128 -0
- package/build/layouts/StackClient.d.ts.map +1 -0
- package/build/layouts/StackClient.js +10 -0
- package/build/layouts/StackClient.js.map +1 -0
- package/build/layouts/Tabs.d.ts +2 -134
- package/build/layouts/Tabs.d.ts.map +1 -1
- package/build/layouts/Tabs.js +5 -37
- package/build/layouts/Tabs.js.map +1 -1
- package/build/layouts/TabsClient.d.ts +136 -0
- package/build/layouts/TabsClient.d.ts.map +1 -0
- package/build/layouts/TabsClient.js +44 -0
- package/build/layouts/TabsClient.js.map +1 -0
- package/build/layouts/withLayoutContext.d.ts +4 -1
- package/build/layouts/withLayoutContext.d.ts.map +1 -1
- package/build/layouts/withLayoutContext.js +4 -1
- package/build/layouts/withLayoutContext.js.map +1 -1
- package/build/link/Link.d.ts +48 -4
- package/build/link/Link.d.ts.map +1 -1
- package/build/link/Link.js +47 -3
- package/build/link/Link.js.map +1 -1
- package/build/link/href.d.ts +1 -1
- package/build/link/href.d.ts.map +1 -1
- package/build/link/href.js.map +1 -1
- package/build/link/useLinkHooks.d.ts +122 -29
- package/build/link/useLinkHooks.d.ts.map +1 -1
- package/build/link/useLinkHooks.js.map +1 -1
- package/build/onboard/Tutorial.d.ts.map +1 -1
- package/build/onboard/Tutorial.js +140 -86
- package/build/onboard/Tutorial.js.map +1 -1
- package/build/renderRootComponent.d.ts.map +1 -1
- package/build/renderRootComponent.js +1 -2
- package/build/renderRootComponent.js.map +1 -1
- package/build/rsc/exports.d.ts +3 -1
- package/build/rsc/exports.d.ts.map +1 -1
- package/build/rsc/exports.js +3 -1
- package/build/rsc/exports.js.map +1 -1
- package/build/rsc/middleware.d.ts +1 -1
- package/build/rsc/middleware.d.ts.map +1 -1
- package/build/rsc/middleware.js +2 -1
- package/build/rsc/middleware.js.map +1 -1
- package/build/rsc/router/client.d.ts +2 -2
- package/build/rsc/router/client.d.ts.map +1 -1
- package/build/rsc/router/client.js.map +1 -1
- package/build/rsc/router/host.d.ts.map +1 -1
- package/build/rsc/router/host.js +20 -15
- package/build/rsc/router/host.js.map +1 -1
- package/build/rsc/rsc-renderer.d.ts +1 -1
- package/build/rsc/rsc-renderer.d.ts.map +1 -1
- package/build/rsc/rsc-renderer.js +1 -1
- package/build/rsc/rsc-renderer.js.map +1 -1
- package/build/rsc/server.d.ts +3 -0
- package/build/rsc/server.d.ts.map +1 -1
- package/build/rsc/server.js +19 -1
- package/build/rsc/server.js.map +1 -1
- package/build/testing-library/context-stubs.d.ts.map +1 -1
- package/build/testing-library/context-stubs.js +3 -1
- package/build/testing-library/context-stubs.js.map +1 -1
- package/build/testing-library/mocks.js +14 -13
- package/build/testing-library/mocks.js.map +1 -1
- package/build/typed-routes/generate.d.ts +5 -1
- package/build/typed-routes/generate.d.ts.map +1 -1
- package/build/typed-routes/generate.js +129 -64
- package/build/typed-routes/generate.js.map +1 -1
- package/build/typed-routes/index.d.ts +5 -0
- package/build/typed-routes/index.d.ts.map +1 -1
- package/build/typed-routes/index.js +8 -3
- package/build/typed-routes/index.js.map +1 -1
- package/build/typed-routes/testSetup.d.ts +1 -1
- package/build/typed-routes/testSetup.d.ts.map +1 -1
- package/build/typed-routes/testSetup.js +29 -17
- package/build/typed-routes/testSetup.js.map +1 -1
- package/build/typed-routes/types.d.ts +43 -145
- package/build/typed-routes/types.d.ts.map +1 -1
- package/build/typed-routes/types.js.map +1 -1
- package/build/types.d.ts +33 -0
- package/build/types.d.ts.map +1 -1
- package/build/types.js.map +1 -1
- package/build/ui/TabContext.d.ts +158 -1
- package/build/ui/TabContext.d.ts.map +1 -1
- package/build/ui/TabContext.js +25 -1
- package/build/ui/TabContext.js.map +1 -1
- package/build/ui/TabList.d.ts +17 -1
- package/build/ui/TabList.d.ts.map +1 -1
- package/build/ui/TabList.js +16 -0
- package/build/ui/TabList.js.map +1 -1
- package/build/ui/TabSlot.d.ts +55 -5
- package/build/ui/TabSlot.d.ts.map +1 -1
- package/build/ui/TabSlot.js +38 -14
- package/build/ui/TabSlot.js.map +1 -1
- package/build/ui/TabTrigger.d.ts +65 -70
- package/build/ui/TabTrigger.d.ts.map +1 -1
- package/build/ui/TabTrigger.js +25 -1
- package/build/ui/TabTrigger.js.map +1 -1
- package/build/ui/Tabs.d.ts +89 -132
- package/build/ui/Tabs.d.ts.map +1 -1
- package/build/ui/Tabs.js +53 -8
- package/build/ui/Tabs.js.map +1 -1
- package/build/ui/common.d.ts +3 -3
- package/build/ui/common.d.ts.map +1 -1
- package/build/ui/common.js.map +1 -1
- package/build/useFocusEffect.d.ts +15 -6
- package/build/useFocusEffect.d.ts.map +1 -1
- package/build/useFocusEffect.js +15 -6
- package/build/useFocusEffect.js.map +1 -1
- package/build/useNavigation.d.ts +11 -5
- package/build/useNavigation.d.ts.map +1 -1
- package/build/useNavigation.js +11 -5
- package/build/useNavigation.js.map +1 -1
- package/build/utils/splash.d.ts +6 -0
- package/build/utils/splash.d.ts.map +1 -0
- package/build/utils/splash.js +51 -0
- package/build/utils/splash.js.map +1 -0
- package/build/utils/url.js +2 -2
- package/build/utils/url.js.map +1 -1
- package/build/views/Navigator.d.ts +6 -5
- package/build/views/Navigator.d.ts.map +1 -1
- package/build/views/Navigator.js +6 -5
- package/build/views/Navigator.js.map +1 -1
- package/build/views/Sitemap.d.ts.map +1 -1
- package/build/views/Sitemap.js +93 -46
- package/build/views/Sitemap.js.map +1 -1
- package/build/views/Splash.d.ts +1 -1
- package/build/views/Splash.d.ts.map +1 -1
- package/build/views/Splash.js +3 -13
- package/build/views/Splash.js.map +1 -1
- package/build/views/Try.d.ts +1 -1
- package/build/views/Try.d.ts.map +1 -1
- package/build/views/Try.js +1 -1
- package/build/views/Try.js.map +1 -1
- package/doctor.js +1 -0
- package/entry-classic.js +0 -6
- package/package.json +23 -24
- package/plugin/build/index.d.ts +2 -0
- package/plugin/options.json +74 -73
- package/plugin/src/index.ts +64 -0
- package/rsc/entry.js +0 -6
- package/rsc/headers.d.ts +3 -0
- package/rsc/headers.js +5 -0
- package/build/rsc/runtime.d.ts +0 -9
- package/build/rsc/runtime.d.ts.map +0 -1
- package/build/rsc/runtime.js +0 -36
- package/build/rsc/runtime.js.map +0 -1
- package/virtual-client-boundaries.js +0 -1
package/build/ui/TabTrigger.d.ts
CHANGED
|
@@ -1,94 +1,89 @@
|
|
|
1
|
+
import { TabNavigationState } from '@react-navigation/native';
|
|
1
2
|
import { ReactNode, ReactElement, ComponentProps } from 'react';
|
|
2
3
|
import { View, PressableProps } from 'react-native';
|
|
3
4
|
import { ExpoTabsResetValue } from './TabRouter';
|
|
5
|
+
import type { TriggerMap } from './common';
|
|
4
6
|
import type { Href } from '../types';
|
|
5
7
|
type PressablePropsWithoutFunctionChildren = Omit<PressableProps, 'children'> & {
|
|
6
8
|
children?: ReactNode | undefined;
|
|
7
9
|
};
|
|
8
|
-
export type TabTriggerProps
|
|
10
|
+
export type TabTriggerProps = PressablePropsWithoutFunctionChildren & {
|
|
11
|
+
/**
|
|
12
|
+
* Name of tab. When used within a `TabList` this sets the name of the tab.
|
|
13
|
+
* Otherwise, this references the name.
|
|
14
|
+
*/
|
|
9
15
|
name: string;
|
|
10
|
-
|
|
11
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Name of tab. Required when used within a `TabList`.
|
|
18
|
+
*/
|
|
19
|
+
href?: Href;
|
|
20
|
+
/**
|
|
21
|
+
* Forward props to child component. Useful for custom wrappers.
|
|
22
|
+
*/
|
|
12
23
|
asChild?: boolean;
|
|
13
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Resets the route when switching to a tab.
|
|
26
|
+
*/
|
|
14
27
|
reset?: SwitchToOptions['reset'] | 'onLongPress';
|
|
15
28
|
};
|
|
16
|
-
export type TabTriggerOptions
|
|
29
|
+
export type TabTriggerOptions = {
|
|
17
30
|
name: string;
|
|
18
|
-
href: Href
|
|
31
|
+
href: Href;
|
|
19
32
|
};
|
|
20
33
|
export type TabTriggerSlotProps = PressablePropsWithoutFunctionChildren & React.RefAttributes<View> & {
|
|
21
34
|
isFocused?: boolean;
|
|
22
35
|
href?: string;
|
|
23
36
|
};
|
|
24
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Creates a trigger to navigate to a tab. When used as child of `TabList`, its
|
|
39
|
+
* functionality slightly changes since the `href` prop is required,
|
|
40
|
+
* and the trigger also defines what routes are present in the `Tabs`.
|
|
41
|
+
*
|
|
42
|
+
* When used outside of `TabList`, this component no longer requires an `href`.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* <Tabs>
|
|
47
|
+
* <TabSlot />
|
|
48
|
+
* <TabList>
|
|
49
|
+
* <TabTrigger name="home" href="/" />
|
|
50
|
+
* </TabList>
|
|
51
|
+
* </Tabs>
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function TabTrigger({ asChild, name, href, reset, ...props }: TabTriggerProps): import("react").JSX.Element;
|
|
55
|
+
/**
|
|
56
|
+
* @hidden
|
|
57
|
+
*/
|
|
25
58
|
export declare function isTabTrigger(child: ReactElement<any>): child is ReactElement<ComponentProps<typeof TabTrigger>>;
|
|
59
|
+
/**
|
|
60
|
+
* Options for `switchTab` function.
|
|
61
|
+
*/
|
|
26
62
|
export type SwitchToOptions = {
|
|
63
|
+
/**
|
|
64
|
+
* Navigate and reset the history.
|
|
65
|
+
*/
|
|
27
66
|
reset?: ExpoTabsResetValue;
|
|
28
67
|
};
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
name: string;
|
|
34
|
-
href: string;
|
|
35
|
-
routeNode: import("../Route").RouteNode;
|
|
36
|
-
action: import("@react-navigation/routers").TabActionType | {
|
|
37
|
-
type: "JUMP_TO";
|
|
38
|
-
source?: string | undefined;
|
|
39
|
-
target?: string | undefined;
|
|
40
|
-
payload: {
|
|
41
|
-
name: string;
|
|
42
|
-
reset?: ExpoTabsResetValue | undefined;
|
|
43
|
-
params?: object | undefined;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
index: number;
|
|
47
|
-
isFocused: boolean;
|
|
48
|
-
route: import("@react-navigation/routers").NavigationRoute<import("@react-navigation/routers").ParamListBase, string>;
|
|
49
|
-
resolvedHref: string;
|
|
50
|
-
} | {
|
|
51
|
-
type: "external";
|
|
52
|
-
name: string;
|
|
53
|
-
href: string;
|
|
54
|
-
index: number;
|
|
55
|
-
isFocused: boolean;
|
|
56
|
-
route: import("@react-navigation/routers").NavigationRoute<import("@react-navigation/routers").ParamListBase, string>;
|
|
57
|
-
resolvedHref: string;
|
|
58
|
-
} | undefined;
|
|
59
|
-
trigger: {
|
|
60
|
-
type: "internal";
|
|
61
|
-
name: string;
|
|
62
|
-
href: string;
|
|
63
|
-
routeNode: import("../Route").RouteNode;
|
|
64
|
-
action: import("@react-navigation/routers").TabActionType | {
|
|
65
|
-
type: "JUMP_TO";
|
|
66
|
-
source?: string | undefined;
|
|
67
|
-
target?: string | undefined;
|
|
68
|
-
payload: {
|
|
69
|
-
name: string;
|
|
70
|
-
reset?: ExpoTabsResetValue | undefined;
|
|
71
|
-
params?: object | undefined;
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
index: number;
|
|
75
|
-
isFocused: boolean;
|
|
76
|
-
route: import("@react-navigation/routers").NavigationRoute<import("@react-navigation/routers").ParamListBase, string>;
|
|
77
|
-
resolvedHref: string;
|
|
78
|
-
} | {
|
|
79
|
-
type: "external";
|
|
80
|
-
name: string;
|
|
81
|
-
href: string;
|
|
82
|
-
index: number;
|
|
83
|
-
isFocused: boolean;
|
|
84
|
-
route: import("@react-navigation/routers").NavigationRoute<import("@react-navigation/routers").ParamListBase, string>;
|
|
85
|
-
resolvedHref: string;
|
|
86
|
-
} | undefined;
|
|
87
|
-
triggerProps: {
|
|
88
|
-
isFocused: boolean;
|
|
89
|
-
onPress: (event: import("react-native").GestureResponderEvent) => void;
|
|
90
|
-
onLongPress: (event: import("react-native").GestureResponderEvent) => void;
|
|
91
|
-
};
|
|
68
|
+
export type Trigger = TriggerMap[string] & {
|
|
69
|
+
isFocused: boolean;
|
|
70
|
+
resolvedHref: string;
|
|
71
|
+
route: TabNavigationState<any>['routes'][number];
|
|
92
72
|
};
|
|
73
|
+
export type UseTabTriggerResult = {
|
|
74
|
+
switchTab: (name: string, options: SwitchToOptions) => void;
|
|
75
|
+
getTrigger: (name: string) => Trigger | undefined;
|
|
76
|
+
trigger?: Trigger;
|
|
77
|
+
triggerProps: TriggerProps;
|
|
78
|
+
};
|
|
79
|
+
export type TriggerProps = {
|
|
80
|
+
isFocused: boolean;
|
|
81
|
+
onPress: PressableProps['onPress'];
|
|
82
|
+
onLongPress: PressableProps['onLongPress'];
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Utility hook creating custom `TabTrigger`.
|
|
86
|
+
*/
|
|
87
|
+
export declare function useTabTrigger(options: TabTriggerProps): UseTabTriggerResult;
|
|
93
88
|
export {};
|
|
94
89
|
//# sourceMappingURL=TabTrigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabTrigger.d.ts","sourceRoot":"","sources":["../../src/ui/TabTrigger.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAc,YAAY,EAAE,cAAc,EAAe,MAAM,OAAO,CAAC;AACzF,OAAO,EAAE,IAAI,EAAyB,cAAc,EAAE,MAAM,cAAc,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TabTrigger.d.ts","sourceRoot":"","sources":["../../src/ui/TabTrigger.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAc,YAAY,EAAE,cAAc,EAAe,MAAM,OAAO,CAAC;AACzF,OAAO,EAAE,IAAI,EAAyB,cAAc,EAAE,MAAM,cAAc,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,KAAK,qCAAqC,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IAC9E,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,qCAAqC,GAAG;IACpE;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,qCAAqC,GACrE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAIJ;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAiB,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BA4B/F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC,CAE1D;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACnC,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;CAC5C,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,mBAAmB,CAwG3E"}
|
package/build/ui/TabTrigger.js
CHANGED
|
@@ -11,6 +11,23 @@ const useLinkToPathProps_1 = require("../link/useLinkToPathProps");
|
|
|
11
11
|
const matchers_1 = require("../matchers");
|
|
12
12
|
const Navigator_1 = require("../views/Navigator");
|
|
13
13
|
const TabTriggerSlot = react_slot_1.Slot;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a trigger to navigate to a tab. When used as child of `TabList`, its
|
|
16
|
+
* functionality slightly changes since the `href` prop is required,
|
|
17
|
+
* and the trigger also defines what routes are present in the `Tabs`.
|
|
18
|
+
*
|
|
19
|
+
* When used outside of `TabList`, this component no longer requires an `href`.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <Tabs>
|
|
24
|
+
* <TabSlot />
|
|
25
|
+
* <TabList>
|
|
26
|
+
* <TabTrigger name="home" href="/" />
|
|
27
|
+
* </TabList>
|
|
28
|
+
* </Tabs>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
14
31
|
function TabTrigger({ asChild, name, href, reset = 'onFocus', ...props }) {
|
|
15
32
|
const { trigger, triggerProps } = useTabTrigger({
|
|
16
33
|
name,
|
|
@@ -32,12 +49,19 @@ function TabTrigger({ asChild, name, href, reset = 'onFocus', ...props }) {
|
|
|
32
49
|
}
|
|
33
50
|
}
|
|
34
51
|
exports.TabTrigger = TabTrigger;
|
|
52
|
+
/**
|
|
53
|
+
* @hidden
|
|
54
|
+
*/
|
|
35
55
|
function isTabTrigger(child) {
|
|
36
56
|
return child.type === TabTrigger;
|
|
37
57
|
}
|
|
38
58
|
exports.isTabTrigger = isTabTrigger;
|
|
39
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Utility hook creating custom `TabTrigger`.
|
|
61
|
+
*/
|
|
62
|
+
function useTabTrigger(options) {
|
|
40
63
|
const { state, navigation } = (0, Navigator_1.useNavigatorContext)();
|
|
64
|
+
const { name, reset, onPress, onLongPress } = options;
|
|
41
65
|
const triggerMap = (0, react_1.useContext)(TabContext_1.TabTriggerMapContext);
|
|
42
66
|
const getTrigger = (0, react_1.useCallback)((name) => {
|
|
43
67
|
const config = triggerMap[name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabTrigger.js","sourceRoot":"","sources":["../../src/ui/TabTrigger.tsx"],"names":[],"mappings":";;;AAAA,qDAA4C;AAC5C,iCAAyF;AACzF,+CAA2E;AAE3E,6CAAoD;AAEpD,+DAAyD;AACzD,sDAA2C;AAC3C,mEAAoE;AACpE,0CAAyD;AAEzD,kDAAyD;AA0BzD,MAAM,cAAc,GAAG,iBAA4D,CAAC;AAEpF,SAAgB,UAAU,CAA4B,EACpD,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,GAAG,SAAS,EACjB,GAAG,KAAK,EACW;IACnB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;QAC9C,IAAI;QACJ,KAAK;QACL,GAAG,KAAK;KACT,CAAC,CAAC;IAEH,sFAAsF;IACtF,IAAI,OAAO,EAAE;QACX,OAAO,CACL,CAAC,cAAc,CACb,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CACzB,IAAI,KAAK,CAAC,CACV,IAAI,YAAY,CAAC,CACjB,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAC5B;QAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;MAAA,EAAE,cAAc,CAAC,CAClB,CAAC;KACH;SAAM;QACL,iEAAiE;QACjE,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAE5D,OAAO,CACL,CAAC,wBAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,CACxF;QAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;MAAA,EAAE,wBAAS,CAAC,CACb,CAAC;KACH;AACH,CAAC;AAlCD,gCAkCC;AAED,SAAgB,YAAY,CAC1B,KAAwB;IAExB,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;AACnC,CAAC;AAJD,oCAIC;AAID,SAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAwB;IACvF,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAA,+BAAmB,GAAE,CAAC;IACpD,MAAM,UAAU,GAAG,IAAA,kBAAU,EAAC,iCAAoB,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,IAAA,mBAAW,EAC5B,CAAC,IAAY,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;YACvC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YACjC,YAAY,EAAE,IAAA,qCAA0B,EAAC,IAAA,gCAAa,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpE,GAAG,MAAM;SACV,CAAC;IACJ,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,CAAC,IAAY,EAAE,OAAyB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC9B,OAAO,uBAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrC;iBAAM;gBACL,OAAO,UAAU,EAAE,QAAQ,CAAC;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP,IAAI;wBACJ,GAAG,OAAO;qBACX;iBACF,CAAC,CAAC;aACJ;SACF;aAAM;YACL,OAAO,UAAU,EAAE,QAAQ,CAAC;gBAC1B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACP,IAAI;iBACL;aACF,CAAC,CAAC;SACJ;IACH,CAAC,EACD,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,mBAAW,EAC/B,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,KAAK,EAAE,kBAAkB,EAAE;YAAE,OAAO;QAExC,UAAU,EAAE,IAAI,CAAC;YACf,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI;YACvE,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAA,2CAAsB,EAAC,KAAK,CAAC;YAAE,OAAO;QAE3C,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC,EACD,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAChC,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EACnC,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,KAAK,EAAE,kBAAkB,EAAE;YAAE,OAAO;QAExC,UAAU,EAAE,IAAI,CAAC;YACf,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI;SACxE,CAAC,CAAC;QAEH,IAAI,CAAC,IAAA,2CAAsB,EAAC,KAAK,CAAC;YAAE,OAAO;QAE3C,SAAS,CAAC,IAAI,EAAE;YACd,KAAK,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;SAClD,CAAC,CAAC;IACL,CAAC,EACD,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CACpC,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;QACtC,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,iBAAiB;KAC/B,CAAC;IAEF,OAAO;QACL,SAAS;QACT,UAAU;QACV,OAAO;QACP,YAAY;KACb,CAAC;AACJ,CAAC;AAvGD,sCAuGC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,UAAU,EAAE;QACV,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,eAAe;KAChC;CACF,CAAC,CAAC","sourcesContent":["import { Slot } from '@radix-ui/react-slot';\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 { 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<T extends string | object> = PressablePropsWithoutFunctionChildren & {\n name: string;\n href?: Href<T>;\n /** Forward props to child component. Useful for custom wrappers. */\n asChild?: boolean;\n /** Reset the route when switching to the tab */\n reset?: SwitchToOptions['reset'] | 'onLongPress';\n};\n\nexport type TabTriggerOptions<T extends string | object> = {\n name: string;\n href: Href<T>;\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\nexport function TabTrigger<T extends string | object>({\n asChild,\n name,\n href,\n reset = 'onFocus',\n ...props\n}: TabTriggerProps<T>) {\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\nexport function isTabTrigger(\n child: ReactElement<any>\n): child is ReactElement<ComponentProps<typeof TabTrigger>> {\n return child.type === TabTrigger;\n}\n\nexport type SwitchToOptions = { reset?: ExpoTabsResetValue };\n\nexport function useTabTrigger({ name, reset, onPress, onLongPress }: TabTriggerProps<any>) {\n const { state, navigation } = useNavigatorContext();\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"]}
|
package/build/ui/Tabs.d.ts
CHANGED
|
@@ -1,74 +1,60 @@
|
|
|
1
|
-
import { ParamListBase, TabActionHelpers, TabNavigationState } from '@react-navigation/native';
|
|
1
|
+
import { DefaultNavigatorOptions, ParamListBase, TabActionHelpers, TabNavigationState, TabRouterOptions } from '@react-navigation/native';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { ViewProps } from 'react-native';
|
|
4
|
-
import {
|
|
5
|
-
import { ExpoTabRouterOptions } from './TabRouter';
|
|
4
|
+
import { ExpoTabsScreenOptions, TabNavigationEventMap, TabsContextValue } from './TabContext';
|
|
6
5
|
import { ScreenTrigger } from './common';
|
|
7
6
|
export * from './TabContext';
|
|
8
7
|
export * from './TabList';
|
|
9
8
|
export * from './TabSlot';
|
|
10
9
|
export * from './TabTrigger';
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Options to provide to the Tab Router.
|
|
12
|
+
*/
|
|
13
|
+
export type UseTabsOptions = Omit<DefaultNavigatorOptions<ParamListBase, any, TabNavigationState<any>, ExpoTabsScreenOptions, TabNavigationEventMap, any>, 'children'> & {
|
|
14
|
+
backBehavior?: TabRouterOptions['backBehavior'];
|
|
15
|
+
};
|
|
12
16
|
export type TabsProps = ViewProps & {
|
|
17
|
+
/** Forward props to child component and removes the extra `<View>`. Useful for custom wrappers. */
|
|
13
18
|
asChild?: boolean;
|
|
14
19
|
options?: UseTabsOptions;
|
|
15
20
|
};
|
|
16
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Root component for the headless tabs.
|
|
23
|
+
*
|
|
24
|
+
* @see [`useTabsWithChildren`](#usetabswithchildrenoptions) for a hook version of this component.
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* <Tabs>
|
|
28
|
+
* <TabSlot />
|
|
29
|
+
* <TabList>
|
|
30
|
+
* <TabTrigger name="home" href="/" />
|
|
31
|
+
* </TabList>
|
|
32
|
+
* </Tabs>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function Tabs(props: TabsProps): import("react").JSX.Element;
|
|
17
36
|
export type UseTabsWithChildrenOptions = UseTabsOptions & {
|
|
18
37
|
children: ReactNode;
|
|
19
38
|
};
|
|
20
|
-
export type UseTabsWithTriggersOptions
|
|
21
|
-
triggers: ScreenTrigger
|
|
39
|
+
export type UseTabsWithTriggersOptions = UseTabsOptions & {
|
|
40
|
+
triggers: ScreenTrigger[];
|
|
22
41
|
};
|
|
23
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Hook version of `Tabs`. The returned NavigationContent component
|
|
44
|
+
* should be rendered.
|
|
45
|
+
*
|
|
46
|
+
* @see [`Tabs`](#tabs) for the component version of this hook.
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* export function MyTabs({ children }) {
|
|
50
|
+
* const { NavigationContent } = useTabsWithChildren({ children })
|
|
51
|
+
*
|
|
52
|
+
* return <NavigationContent />
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function useTabsWithChildren(options: UseTabsWithChildrenOptions): {
|
|
24
57
|
state: TabNavigationState<any>;
|
|
25
|
-
descriptors: Record<string, import("@react-navigation/native").Descriptor<ExpoTabsScreenOptions, Omit<{
|
|
26
|
-
dispatch(action: Readonly<{
|
|
27
|
-
type: string;
|
|
28
|
-
payload?: object | undefined;
|
|
29
|
-
source?: string | undefined;
|
|
30
|
-
target?: string | undefined;
|
|
31
|
-
}> | ((state: Readonly<TabNavigationState<any>>) => Readonly<{
|
|
32
|
-
type: string;
|
|
33
|
-
payload?: object | undefined;
|
|
34
|
-
source?: string | undefined;
|
|
35
|
-
target?: string | undefined;
|
|
36
|
-
}>)): void;
|
|
37
|
-
navigate<RouteName extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
38
|
-
navigate<RouteName_1 extends string>(options: {
|
|
39
|
-
name: string;
|
|
40
|
-
params: object | undefined;
|
|
41
|
-
path?: string | undefined;
|
|
42
|
-
merge?: boolean | undefined;
|
|
43
|
-
}): void;
|
|
44
|
-
navigateDeprecated<RouteName_2 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
45
|
-
navigateDeprecated<RouteName_3 extends string>(options: {
|
|
46
|
-
name: string;
|
|
47
|
-
params: object | undefined;
|
|
48
|
-
merge?: boolean | undefined;
|
|
49
|
-
}): void;
|
|
50
|
-
preload<RouteName_4 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
51
|
-
reset(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
52
|
-
goBack(): void;
|
|
53
|
-
isFocused(): boolean;
|
|
54
|
-
canGoBack(): boolean;
|
|
55
|
-
getId(): string | undefined;
|
|
56
|
-
getParent<T = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string | undefined): T;
|
|
57
|
-
getState(): TabNavigationState<any>;
|
|
58
|
-
setStateForNextRouteNamesChange(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
59
|
-
} & import("@react-navigation/native").PrivateValueStore<[ParamListBase, unknown, unknown]>, "getParent"> & {
|
|
60
|
-
getParent<T_1 = import("@react-navigation/native").NavigationProp<ParamListBase, string, undefined, Readonly<{
|
|
61
|
-
key: string;
|
|
62
|
-
index: number;
|
|
63
|
-
routeNames: string[];
|
|
64
|
-
history?: unknown[] | undefined;
|
|
65
|
-
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
66
|
-
type: string;
|
|
67
|
-
stale: false;
|
|
68
|
-
}>, {}, {}> | undefined>(id?: string | undefined): T_1;
|
|
69
|
-
setParams(params: Partial<object | undefined>): void;
|
|
70
|
-
setOptions(options: Partial<ExpoTabsScreenOptions>): void;
|
|
71
|
-
} & 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>>>;
|
|
72
58
|
navigation: {
|
|
73
59
|
dispatch(action: Readonly<{
|
|
74
60
|
type: string;
|
|
@@ -89,20 +75,20 @@ export declare function useTabsWithChildren({ children, ...options }: UseTabsWit
|
|
|
89
75
|
source?: string | undefined;
|
|
90
76
|
target?: string | undefined;
|
|
91
77
|
}>)): void;
|
|
92
|
-
navigate<
|
|
93
|
-
navigate<
|
|
78
|
+
navigate<RouteName extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
79
|
+
navigate<RouteName_1 extends string>(options: {
|
|
94
80
|
name: string;
|
|
95
81
|
params: object | undefined;
|
|
96
82
|
path?: string | undefined;
|
|
97
83
|
merge?: boolean | undefined;
|
|
98
84
|
}): void;
|
|
99
|
-
navigateDeprecated<
|
|
100
|
-
navigateDeprecated<
|
|
85
|
+
navigateDeprecated<RouteName_2 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
86
|
+
navigateDeprecated<RouteName_3 extends string>(options: {
|
|
101
87
|
name: string;
|
|
102
88
|
params: object | undefined;
|
|
103
89
|
merge?: boolean | undefined;
|
|
104
90
|
}): void;
|
|
105
|
-
preload<
|
|
91
|
+
preload<RouteName_4 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
106
92
|
reset(state: Readonly<{
|
|
107
93
|
key: string;
|
|
108
94
|
index: number;
|
|
@@ -124,7 +110,7 @@ export declare function useTabsWithChildren({ children, ...options }: UseTabsWit
|
|
|
124
110
|
isFocused(): boolean;
|
|
125
111
|
canGoBack(): boolean;
|
|
126
112
|
getId(): string | undefined;
|
|
127
|
-
getParent<
|
|
113
|
+
getParent<T = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string | undefined): T;
|
|
128
114
|
getState(): Readonly<{
|
|
129
115
|
key: string;
|
|
130
116
|
index: number;
|
|
@@ -152,15 +138,9 @@ export declare function useTabsWithChildren({ children, ...options }: UseTabsWit
|
|
|
152
138
|
stale: false;
|
|
153
139
|
}>>): void;
|
|
154
140
|
} & import("@react-navigation/native").PrivateValueStore<[ParamListBase, unknown, unknown]> & import("@react-navigation/native").EventEmitter<TabNavigationEventMap> & {
|
|
155
|
-
setParams<
|
|
141
|
+
setParams<RouteName_5 extends string>(params: Partial<object | undefined>): void;
|
|
156
142
|
} & TabActionHelpers<ParamListBase>;
|
|
157
|
-
|
|
158
|
-
children: ReactNode;
|
|
159
|
-
} & import("react").RefAttributes<unknown>>;
|
|
160
|
-
};
|
|
161
|
-
export declare function useTabsWithTriggers<T extends string | object>({ triggers, ...options }: UseTabsWithTriggersOptions<T>): {
|
|
162
|
-
state: TabNavigationState<any>;
|
|
163
|
-
descriptors: Record<string, import("@react-navigation/native").Descriptor<ExpoTabsScreenOptions, Omit<{
|
|
143
|
+
describe: (route: import("@react-navigation/native").RouteProp<ParamListBase, string>, placeholder: boolean) => import("@react-navigation/native").Descriptor<import("./TabContext").ExpoTabsNavigatorScreenOptions, Omit<{
|
|
164
144
|
dispatch(action: Readonly<{
|
|
165
145
|
type: string;
|
|
166
146
|
payload?: object | undefined;
|
|
@@ -172,20 +152,20 @@ export declare function useTabsWithTriggers<T extends string | object>({ trigger
|
|
|
172
152
|
source?: string | undefined;
|
|
173
153
|
target?: string | undefined;
|
|
174
154
|
}>)): void;
|
|
175
|
-
navigate<
|
|
176
|
-
navigate<
|
|
155
|
+
navigate<RouteName_6 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
156
|
+
navigate<RouteName_7 extends string>(options: {
|
|
177
157
|
name: string;
|
|
178
158
|
params: object | undefined;
|
|
179
159
|
path?: string | undefined;
|
|
180
160
|
merge?: boolean | undefined;
|
|
181
161
|
}): void;
|
|
182
|
-
navigateDeprecated<
|
|
183
|
-
navigateDeprecated<
|
|
162
|
+
navigateDeprecated<RouteName_8 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
163
|
+
navigateDeprecated<RouteName_9 extends string>(options: {
|
|
184
164
|
name: string;
|
|
185
165
|
params: object | undefined;
|
|
186
166
|
merge?: boolean | undefined;
|
|
187
167
|
}): void;
|
|
188
|
-
preload<
|
|
168
|
+
preload<RouteName_10 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
189
169
|
reset(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
190
170
|
goBack(): void;
|
|
191
171
|
isFocused(): boolean;
|
|
@@ -205,82 +185,44 @@ export declare function useTabsWithTriggers<T extends string | object>({ trigger
|
|
|
205
185
|
stale: false;
|
|
206
186
|
}>, {}, {}> | undefined>(id?: string | undefined): T_2;
|
|
207
187
|
setParams(params: Partial<object | undefined>): void;
|
|
208
|
-
setOptions(options: Partial<
|
|
209
|
-
} & 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
|
|
210
|
-
|
|
188
|
+
setOptions(options: Partial<import("./TabContext").ExpoTabsNavigatorScreenOptions>): void;
|
|
189
|
+
} & 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>>;
|
|
190
|
+
descriptors: Record<string, import("@react-navigation/native").Descriptor<import("./TabContext").ExpoTabsNavigatorScreenOptions, Omit<{
|
|
211
191
|
dispatch(action: Readonly<{
|
|
212
192
|
type: string;
|
|
213
193
|
payload?: object | undefined;
|
|
214
194
|
source?: string | undefined;
|
|
215
195
|
target?: string | undefined;
|
|
216
|
-
}> | ((state: Readonly<Readonly<{
|
|
217
|
-
key: string;
|
|
218
|
-
index: number;
|
|
219
|
-
routeNames: string[];
|
|
220
|
-
history?: unknown[] | undefined;
|
|
221
|
-
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
222
|
-
type: string;
|
|
223
|
-
stale: false;
|
|
224
|
-
}>>) => Readonly<{
|
|
196
|
+
}> | ((state: Readonly<TabNavigationState<any>>) => Readonly<{
|
|
225
197
|
type: string;
|
|
226
198
|
payload?: object | undefined;
|
|
227
199
|
source?: string | undefined;
|
|
228
200
|
target?: string | undefined;
|
|
229
201
|
}>)): void;
|
|
230
|
-
navigate<
|
|
231
|
-
navigate<
|
|
202
|
+
navigate<RouteName_11 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
203
|
+
navigate<RouteName_12 extends string>(options: {
|
|
232
204
|
name: string;
|
|
233
205
|
params: object | undefined;
|
|
234
206
|
path?: string | undefined;
|
|
235
207
|
merge?: boolean | undefined;
|
|
236
208
|
}): void;
|
|
237
|
-
navigateDeprecated<
|
|
238
|
-
navigateDeprecated<
|
|
209
|
+
navigateDeprecated<RouteName_13 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
210
|
+
navigateDeprecated<RouteName_14 extends string>(options: {
|
|
239
211
|
name: string;
|
|
240
212
|
params: object | undefined;
|
|
241
213
|
merge?: boolean | undefined;
|
|
242
214
|
}): void;
|
|
243
|
-
preload<
|
|
244
|
-
reset(state:
|
|
245
|
-
key: string;
|
|
246
|
-
index: number;
|
|
247
|
-
routeNames: string[];
|
|
248
|
-
history?: unknown[] | undefined;
|
|
249
|
-
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
250
|
-
type: string;
|
|
251
|
-
stale: false;
|
|
252
|
-
}> | import("@react-navigation/native").PartialState<Readonly<{
|
|
253
|
-
key: string;
|
|
254
|
-
index: number;
|
|
255
|
-
routeNames: string[];
|
|
256
|
-
history?: unknown[] | undefined;
|
|
257
|
-
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
258
|
-
type: string;
|
|
259
|
-
stale: false;
|
|
260
|
-
}>>): void;
|
|
215
|
+
preload<RouteName_15 extends string>(...args: [screen: string] | [screen: string, params: object | undefined]): void;
|
|
216
|
+
reset(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
261
217
|
goBack(): void;
|
|
262
218
|
isFocused(): boolean;
|
|
263
219
|
canGoBack(): boolean;
|
|
264
220
|
getId(): string | undefined;
|
|
265
221
|
getParent<T_3 = import("@react-navigation/native").NavigationHelpers<ParamListBase, {}> | undefined>(id?: string | undefined): T_3;
|
|
266
|
-
getState():
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
history?: unknown[] | undefined;
|
|
271
|
-
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
272
|
-
type: string;
|
|
273
|
-
stale: false;
|
|
274
|
-
}>;
|
|
275
|
-
setStateForNextRouteNamesChange(state: Readonly<{
|
|
276
|
-
key: string;
|
|
277
|
-
index: number;
|
|
278
|
-
routeNames: string[];
|
|
279
|
-
history?: unknown[] | undefined;
|
|
280
|
-
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
281
|
-
type: string;
|
|
282
|
-
stale: false;
|
|
283
|
-
}> | import("@react-navigation/native").PartialState<Readonly<{
|
|
222
|
+
getState(): TabNavigationState<any>;
|
|
223
|
+
setStateForNextRouteNamesChange(state: TabNavigationState<any> | import("@react-navigation/native").PartialState<TabNavigationState<any>>): void;
|
|
224
|
+
} & import("@react-navigation/native").PrivateValueStore<[ParamListBase, unknown, unknown]>, "getParent"> & {
|
|
225
|
+
getParent<T_4 = import("@react-navigation/native").NavigationProp<ParamListBase, string, undefined, Readonly<{
|
|
284
226
|
key: string;
|
|
285
227
|
index: number;
|
|
286
228
|
routeNames: string[];
|
|
@@ -288,12 +230,27 @@ export declare function useTabsWithTriggers<T extends string | object>({ trigger
|
|
|
288
230
|
routes: import("@react-navigation/native").NavigationRoute<ParamListBase, string>[];
|
|
289
231
|
type: string;
|
|
290
232
|
stale: false;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
} & TabActionHelpers<ParamListBase
|
|
295
|
-
NavigationContent:
|
|
233
|
+
}>, {}, {}> | undefined>(id?: string | undefined): T_4;
|
|
234
|
+
setParams(params: Partial<object | undefined>): void;
|
|
235
|
+
setOptions(options: Partial<import("./TabContext").ExpoTabsNavigatorScreenOptions>): void;
|
|
236
|
+
} & 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>>>;
|
|
237
|
+
NavigationContent: ({ children }: {
|
|
296
238
|
children: ReactNode;
|
|
297
|
-
}
|
|
239
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
298
240
|
};
|
|
241
|
+
/**
|
|
242
|
+
* Alternative hook version of `Tabs` that uses explicit triggers
|
|
243
|
+
* instead of `children`.
|
|
244
|
+
*
|
|
245
|
+
* @see [`Tabs`](#tabs) for the component version of this hook.
|
|
246
|
+
* @example
|
|
247
|
+
* ```tsx
|
|
248
|
+
* export function MyTabs({ children }) {
|
|
249
|
+
* const { NavigationContent } = useTabsWithChildren({ triggers: [] })
|
|
250
|
+
*
|
|
251
|
+
* return <NavigationContent />
|
|
252
|
+
* }
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
export declare function useTabsWithTriggers(options: UseTabsWithTriggersOptions): TabsContextValue;
|
|
299
256
|
//# sourceMappingURL=Tabs.d.ts.map
|
package/build/ui/Tabs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../src/ui/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../src/ui/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAEvB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAKL,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAc,SAAS,EAAQ,MAAM,cAAc,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAoB,aAAa,EAAqB,MAAM,UAAU,CAAC;AAQ9E,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,uBAAuB,CACrB,aAAa,EACb,GAAG,EACH,kBAAkB,CAAC,GAAG,CAAC,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,GAAG,CACJ,EACD,UAAU,CACX,GAAG;IACF,YAAY,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG;IAClC,mGAAmG;IACnG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,+BAepC;AAED,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IACxD,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IACxD,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,gBAAgB,CAiEzF"}
|