one 1.2.6 → 1.2.7
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/dist/cjs/ui/Slot.cjs +42 -0
- package/dist/cjs/ui/Slot.js +27 -0
- package/dist/cjs/ui/Slot.js.map +6 -0
- package/dist/cjs/ui/Slot.native.js +48 -0
- package/dist/cjs/ui/Slot.native.js.map +1 -0
- package/dist/cjs/ui/TabContext.cjs +44 -0
- package/dist/cjs/ui/TabContext.js +35 -0
- package/dist/cjs/ui/TabContext.js.map +6 -0
- package/dist/cjs/ui/TabContext.native.js +47 -0
- package/dist/cjs/ui/TabContext.native.js.map +1 -0
- package/dist/cjs/ui/TabList.cjs +52 -0
- package/dist/cjs/ui/TabList.js +38 -0
- package/dist/cjs/ui/TabList.js.map +6 -0
- package/dist/cjs/ui/TabList.native.js +57 -0
- package/dist/cjs/ui/TabList.native.js.map +1 -0
- package/dist/cjs/ui/TabRouter.cjs +47 -0
- package/dist/cjs/ui/TabRouter.js +41 -0
- package/dist/cjs/ui/TabRouter.js.map +6 -0
- package/dist/cjs/ui/TabRouter.native.js +57 -0
- package/dist/cjs/ui/TabRouter.native.js.map +1 -0
- package/dist/cjs/ui/TabSlot.cjs +115 -0
- package/dist/cjs/ui/TabSlot.js +91 -0
- package/dist/cjs/ui/TabSlot.js.map +6 -0
- package/dist/cjs/ui/TabSlot.native.js +120 -0
- package/dist/cjs/ui/TabSlot.native.js.map +1 -0
- package/dist/cjs/ui/TabTrigger.cjs +151 -0
- package/dist/cjs/ui/TabTrigger.js +120 -0
- package/dist/cjs/ui/TabTrigger.js.map +6 -0
- package/dist/cjs/ui/TabTrigger.native.js +153 -0
- package/dist/cjs/ui/TabTrigger.native.js.map +1 -0
- package/dist/cjs/ui/Tabs.cjs +175 -0
- package/dist/cjs/ui/Tabs.js +121 -0
- package/dist/cjs/ui/Tabs.js.map +6 -0
- package/dist/cjs/ui/Tabs.native.js +191 -0
- package/dist/cjs/ui/Tabs.native.js.map +1 -0
- package/dist/cjs/ui/common.cjs +160 -0
- package/dist/cjs/ui/common.js +146 -0
- package/dist/cjs/ui/common.js.map +6 -0
- package/dist/cjs/ui/common.native.js +223 -0
- package/dist/cjs/ui/common.native.js.map +1 -0
- package/dist/cjs/ui/index.cjs +18 -0
- package/dist/cjs/ui/index.js +15 -0
- package/dist/cjs/ui/index.js.map +6 -0
- package/dist/cjs/ui/index.native.js +21 -0
- package/dist/cjs/ui/index.native.js.map +1 -0
- package/dist/cjs/ui/useComponent.cjs +46 -0
- package/dist/cjs/ui/useComponent.js +37 -0
- package/dist/cjs/ui/useComponent.js.map +6 -0
- package/dist/cjs/ui/useComponent.native.js +53 -0
- package/dist/cjs/ui/useComponent.native.js.map +1 -0
- package/dist/esm/ui/Slot.js +17 -0
- package/dist/esm/ui/Slot.js.map +6 -0
- package/dist/esm/ui/Slot.mjs +19 -0
- package/dist/esm/ui/Slot.mjs.map +1 -0
- package/dist/esm/ui/Slot.native.js +22 -0
- package/dist/esm/ui/Slot.native.js.map +1 -0
- package/dist/esm/ui/TabContext.js +19 -0
- package/dist/esm/ui/TabContext.js.map +6 -0
- package/dist/esm/ui/TabContext.mjs +17 -0
- package/dist/esm/ui/TabContext.mjs.map +1 -0
- package/dist/esm/ui/TabContext.native.js +17 -0
- package/dist/esm/ui/TabContext.native.js.map +1 -0
- package/dist/esm/ui/TabList.js +24 -0
- package/dist/esm/ui/TabList.js.map +6 -0
- package/dist/esm/ui/TabList.mjs +28 -0
- package/dist/esm/ui/TabList.mjs.map +1 -0
- package/dist/esm/ui/TabList.native.js +30 -0
- package/dist/esm/ui/TabList.native.js.map +1 -0
- package/dist/esm/ui/TabRouter.js +27 -0
- package/dist/esm/ui/TabRouter.js.map +6 -0
- package/dist/esm/ui/TabRouter.mjs +24 -0
- package/dist/esm/ui/TabRouter.mjs.map +1 -0
- package/dist/esm/ui/TabRouter.native.js +31 -0
- package/dist/esm/ui/TabRouter.native.js.map +1 -0
- package/dist/esm/ui/TabSlot.js +80 -0
- package/dist/esm/ui/TabSlot.js.map +6 -0
- package/dist/esm/ui/TabSlot.mjs +89 -0
- package/dist/esm/ui/TabSlot.mjs.map +1 -0
- package/dist/esm/ui/TabSlot.native.js +91 -0
- package/dist/esm/ui/TabSlot.native.js.map +1 -0
- package/dist/esm/ui/TabTrigger.js +115 -0
- package/dist/esm/ui/TabTrigger.js.map +6 -0
- package/dist/esm/ui/TabTrigger.mjs +126 -0
- package/dist/esm/ui/TabTrigger.mjs.map +1 -0
- package/dist/esm/ui/TabTrigger.native.js +125 -0
- package/dist/esm/ui/TabTrigger.native.js.map +1 -0
- package/dist/esm/ui/Tabs.js +130 -0
- package/dist/esm/ui/Tabs.js.map +6 -0
- package/dist/esm/ui/Tabs.mjs +149 -0
- package/dist/esm/ui/Tabs.mjs.map +1 -0
- package/dist/esm/ui/Tabs.native.js +162 -0
- package/dist/esm/ui/Tabs.native.js.map +1 -0
- package/dist/esm/ui/common.js +133 -0
- package/dist/esm/ui/common.js.map +6 -0
- package/dist/esm/ui/common.mjs +135 -0
- package/dist/esm/ui/common.mjs.map +1 -0
- package/dist/esm/ui/common.native.js +195 -0
- package/dist/esm/ui/common.native.js.map +1 -0
- package/dist/esm/ui/index.js +2 -0
- package/dist/esm/ui/index.js.map +6 -0
- package/dist/esm/ui/index.mjs +2 -0
- package/dist/esm/ui/index.mjs.map +1 -0
- package/dist/esm/ui/index.native.js +2 -0
- package/dist/esm/ui/index.native.js.map +1 -0
- package/dist/esm/ui/useComponent.js +22 -0
- package/dist/esm/ui/useComponent.js.map +6 -0
- package/dist/esm/ui/useComponent.mjs +23 -0
- package/dist/esm/ui/useComponent.mjs.map +1 -0
- package/dist/esm/ui/useComponent.native.js +27 -0
- package/dist/esm/ui/useComponent.native.js.map +1 -0
- package/package.json +18 -9
- package/src/ui/README.md +121 -0
- package/src/ui/Slot.tsx +34 -0
- package/src/ui/TabContext.tsx +115 -0
- package/src/ui/TabList.tsx +47 -0
- package/src/ui/TabRouter.tsx +79 -0
- package/src/ui/TabSlot.tsx +170 -0
- package/src/ui/TabTrigger.tsx +282 -0
- package/src/ui/Tabs.tsx +313 -0
- package/src/ui/common.tsx +277 -0
- package/src/ui/index.ts +1 -0
- package/src/ui/useComponent.tsx +42 -0
- package/types/ui/Slot.d.ts +6 -0
- package/types/ui/Slot.d.ts.map +1 -0
- package/types/ui/TabContext.d.ts +190 -0
- package/types/ui/TabContext.d.ts.map +1 -0
- package/types/ui/TabList.d.ts +25 -0
- package/types/ui/TabList.d.ts.map +1 -0
- package/types/ui/TabRouter.d.ts +103 -0
- package/types/ui/TabRouter.d.ts.map +1 -0
- package/types/ui/TabSlot.d.ts +73 -0
- package/types/ui/TabSlot.d.ts.map +1 -0
- package/types/ui/TabTrigger.d.ts +88 -0
- package/types/ui/TabTrigger.d.ts.map +1 -0
- package/types/ui/Tabs.d.ts +255 -0
- package/types/ui/Tabs.d.ts.map +1 -0
- package/types/ui/common.d.ts +40 -0
- package/types/ui/common.d.ts.map +1 -0
- package/types/ui/index.d.ts +2 -0
- package/types/ui/index.d.ts.map +1 -0
- package/types/ui/useComponent.d.ts +10 -0
- package/types/ui/useComponent.d.ts.map +1 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LinkingContext,
|
|
3
|
+
useNavigationBuilder
|
|
4
|
+
} from "@react-navigation/native";
|
|
5
|
+
import {
|
|
6
|
+
Children,
|
|
7
|
+
Fragment,
|
|
8
|
+
isValidElement,
|
|
9
|
+
use,
|
|
10
|
+
useMemo
|
|
11
|
+
} from "react";
|
|
12
|
+
import { StyleSheet, View } from "react-native-web";
|
|
13
|
+
import {
|
|
14
|
+
TabTriggerMapContext
|
|
15
|
+
} from "./TabContext";
|
|
16
|
+
import { isTabList } from "./TabList";
|
|
17
|
+
import { ExpoTabRouter } from "./TabRouter";
|
|
18
|
+
import { isTabSlot } from "./TabSlot";
|
|
19
|
+
import { isTabTrigger } from "./TabTrigger";
|
|
20
|
+
import { ViewSlot, triggersToScreens } from "./common";
|
|
21
|
+
import { useComponent } from "./useComponent";
|
|
22
|
+
import { useRouteNode, useContextKey } from "../router/Route";
|
|
23
|
+
import { useRouteInfo } from "../hooks";
|
|
24
|
+
import { resolveHref } from "../link/href";
|
|
25
|
+
import { shouldLinkExternally } from "../utils/url";
|
|
26
|
+
import { NavigatorContext } from "../views/Navigator";
|
|
27
|
+
export * from "./TabContext";
|
|
28
|
+
export * from "./TabList";
|
|
29
|
+
export * from "./TabSlot";
|
|
30
|
+
export * from "./TabTrigger";
|
|
31
|
+
import { jsx } from "react/jsx-runtime";
|
|
32
|
+
function Tabs(props) {
|
|
33
|
+
const { children, asChild, options, ...rest } = props, Comp = asChild ? ViewSlot : View, { NavigationContent } = useTabsWithChildren({
|
|
34
|
+
// asChild adds an extra layer, so we need to process the child's children
|
|
35
|
+
children: asChild && isValidElement(children) && children.props && typeof children.props == "object" && "children" in children.props ? children.props.children : children,
|
|
36
|
+
...options
|
|
37
|
+
});
|
|
38
|
+
return /* @__PURE__ */ jsx(Comp, { style: styles.tabsRoot, ...rest, children: /* @__PURE__ */ jsx(NavigationContent, { children }) });
|
|
39
|
+
}
|
|
40
|
+
function useTabsWithChildren(options) {
|
|
41
|
+
const { children, ...rest } = options;
|
|
42
|
+
return useTabsWithTriggers({ triggers: parseTriggersFromChildren(children), ...rest });
|
|
43
|
+
}
|
|
44
|
+
function useTabsWithTriggers(options) {
|
|
45
|
+
const { triggers, ...rest } = options, parentTriggerMap = use(TabTriggerMapContext), routeNode = useRouteNode(), contextKey = useContextKey(), linking = use(LinkingContext).options, routeInfo = useRouteInfo();
|
|
46
|
+
if (!routeNode || !linking)
|
|
47
|
+
throw new Error("No RouteNode. This is likely a bug in one router.");
|
|
48
|
+
const initialRouteName = routeNode.initialRouteName, { children, triggerMap } = triggersToScreens(
|
|
49
|
+
triggers,
|
|
50
|
+
routeNode,
|
|
51
|
+
linking,
|
|
52
|
+
initialRouteName,
|
|
53
|
+
parentTriggerMap,
|
|
54
|
+
routeInfo,
|
|
55
|
+
contextKey
|
|
56
|
+
), navigatorContext = useNavigationBuilder(ExpoTabRouter, {
|
|
57
|
+
children,
|
|
58
|
+
...rest,
|
|
59
|
+
triggerMap,
|
|
60
|
+
id: contextKey,
|
|
61
|
+
initialRouteName
|
|
62
|
+
}), {
|
|
63
|
+
state,
|
|
64
|
+
descriptors,
|
|
65
|
+
navigation,
|
|
66
|
+
describe,
|
|
67
|
+
NavigationContent: RNNavigationContent
|
|
68
|
+
} = navigatorContext, navigatorContextValue = useMemo(
|
|
69
|
+
() => ({
|
|
70
|
+
...navigatorContext,
|
|
71
|
+
contextKey,
|
|
72
|
+
router: ExpoTabRouter
|
|
73
|
+
}),
|
|
74
|
+
[navigatorContext, contextKey, ExpoTabRouter]
|
|
75
|
+
), NavigationContent = useComponent((children2) => /* @__PURE__ */ jsx(TabTriggerMapContext.Provider, { value: triggerMap, children: /* @__PURE__ */ jsx(NavigatorContext.Provider, { value: navigatorContextValue, children: /* @__PURE__ */ jsx(RNNavigationContent, { children: children2 }) }) }));
|
|
76
|
+
return { state, descriptors, navigation, NavigationContent, describe };
|
|
77
|
+
}
|
|
78
|
+
function parseTriggersFromChildren(children, screenTriggers = [], isInTabList = !1) {
|
|
79
|
+
return Children.forEach(children, (child) => {
|
|
80
|
+
if (!child || !isValidElement(child) || isTabSlot(child))
|
|
81
|
+
return;
|
|
82
|
+
if (isFragment(child) && typeof child.props.children != "function")
|
|
83
|
+
return parseTriggersFromChildren(
|
|
84
|
+
child.props.children,
|
|
85
|
+
screenTriggers,
|
|
86
|
+
isInTabList || isTabList(child)
|
|
87
|
+
);
|
|
88
|
+
if (isTabList(child) && typeof child.props.children != "function") {
|
|
89
|
+
let children2 = child.props.children;
|
|
90
|
+
return child.props.asChild && isValidElement(children2) && children2.props && typeof children2.props == "object" && "children" in children2.props && (children2 = children2.props.children), parseTriggersFromChildren(children2, screenTriggers, isInTabList || isTabList(child));
|
|
91
|
+
}
|
|
92
|
+
if (!isInTabList || !isTabTrigger(child))
|
|
93
|
+
return;
|
|
94
|
+
const { href, name } = child.props;
|
|
95
|
+
if (!href) {
|
|
96
|
+
process.env.NODE_ENV === "development" && console.warn(
|
|
97
|
+
`<TabTrigger name={${name}}> does not have a 'href' prop. TabTriggers within a <TabList /> are required to have an href.`
|
|
98
|
+
);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const resolvedHref = resolveHref(href);
|
|
102
|
+
if (shouldLinkExternally(resolvedHref))
|
|
103
|
+
return screenTriggers.push({
|
|
104
|
+
type: "external",
|
|
105
|
+
name,
|
|
106
|
+
href: resolvedHref
|
|
107
|
+
});
|
|
108
|
+
if (!name) {
|
|
109
|
+
process.env.NODE_ENV === "development" && console.warn(
|
|
110
|
+
"<TabTrigger> does not have a 'name' prop. TabTriggers within a <TabList /> are required to have a name."
|
|
111
|
+
);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
return screenTriggers.push({ type: "internal", href: resolvedHref, name });
|
|
115
|
+
}), screenTriggers;
|
|
116
|
+
}
|
|
117
|
+
function isFragment(child) {
|
|
118
|
+
return child.type === Fragment;
|
|
119
|
+
}
|
|
120
|
+
const styles = StyleSheet.create({
|
|
121
|
+
tabsRoot: {
|
|
122
|
+
flex: 1
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
export {
|
|
126
|
+
Tabs,
|
|
127
|
+
useTabsWithChildren,
|
|
128
|
+
useTabsWithTriggers
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ui/Tabs.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["children"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { LinkingContext, useNavigationBuilder } from "@react-navigation/native";
|
|
2
|
+
import { Children, Fragment, isValidElement, use, useMemo } from "react";
|
|
3
|
+
import { StyleSheet, View } from "react-native-web";
|
|
4
|
+
import { TabTriggerMapContext } from "./TabContext.mjs";
|
|
5
|
+
import { isTabList } from "./TabList.mjs";
|
|
6
|
+
import { ExpoTabRouter } from "./TabRouter.mjs";
|
|
7
|
+
import { isTabSlot } from "./TabSlot.mjs";
|
|
8
|
+
import { isTabTrigger } from "./TabTrigger.mjs";
|
|
9
|
+
import { ViewSlot, triggersToScreens } from "./common.mjs";
|
|
10
|
+
import { useComponent } from "./useComponent.mjs";
|
|
11
|
+
import { useRouteNode, useContextKey } from "../router/Route.mjs";
|
|
12
|
+
import { useRouteInfo } from "../hooks.mjs";
|
|
13
|
+
import { resolveHref } from "../link/href.mjs";
|
|
14
|
+
import { shouldLinkExternally } from "../utils/url.mjs";
|
|
15
|
+
import { NavigatorContext } from "../views/Navigator.mjs";
|
|
16
|
+
export * from "./TabContext.mjs";
|
|
17
|
+
export * from "./TabList.mjs";
|
|
18
|
+
export * from "./TabSlot.mjs";
|
|
19
|
+
export * from "./TabTrigger.mjs";
|
|
20
|
+
import { jsx } from "react/jsx-runtime";
|
|
21
|
+
function Tabs(props) {
|
|
22
|
+
const {
|
|
23
|
+
children,
|
|
24
|
+
asChild,
|
|
25
|
+
options,
|
|
26
|
+
...rest
|
|
27
|
+
} = props,
|
|
28
|
+
Comp = asChild ? ViewSlot : View,
|
|
29
|
+
{
|
|
30
|
+
NavigationContent
|
|
31
|
+
} = useTabsWithChildren({
|
|
32
|
+
// asChild adds an extra layer, so we need to process the child's children
|
|
33
|
+
children: asChild && isValidElement(children) && children.props && typeof children.props == "object" && "children" in children.props ? children.props.children : children,
|
|
34
|
+
...options
|
|
35
|
+
});
|
|
36
|
+
return /* @__PURE__ */jsx(Comp, {
|
|
37
|
+
style: styles.tabsRoot,
|
|
38
|
+
...rest,
|
|
39
|
+
children: /* @__PURE__ */jsx(NavigationContent, {
|
|
40
|
+
children
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function useTabsWithChildren(options) {
|
|
45
|
+
const {
|
|
46
|
+
children,
|
|
47
|
+
...rest
|
|
48
|
+
} = options;
|
|
49
|
+
return useTabsWithTriggers({
|
|
50
|
+
triggers: parseTriggersFromChildren(children),
|
|
51
|
+
...rest
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function useTabsWithTriggers(options) {
|
|
55
|
+
const {
|
|
56
|
+
triggers,
|
|
57
|
+
...rest
|
|
58
|
+
} = options,
|
|
59
|
+
parentTriggerMap = use(TabTriggerMapContext),
|
|
60
|
+
routeNode = useRouteNode(),
|
|
61
|
+
contextKey = useContextKey(),
|
|
62
|
+
linking = use(LinkingContext).options,
|
|
63
|
+
routeInfo = useRouteInfo();
|
|
64
|
+
if (!routeNode || !linking) throw new Error("No RouteNode. This is likely a bug in one router.");
|
|
65
|
+
const initialRouteName = routeNode.initialRouteName,
|
|
66
|
+
{
|
|
67
|
+
children,
|
|
68
|
+
triggerMap
|
|
69
|
+
} = triggersToScreens(triggers, routeNode, linking, initialRouteName, parentTriggerMap, routeInfo, contextKey),
|
|
70
|
+
navigatorContext = useNavigationBuilder(ExpoTabRouter, {
|
|
71
|
+
children,
|
|
72
|
+
...rest,
|
|
73
|
+
triggerMap,
|
|
74
|
+
id: contextKey,
|
|
75
|
+
initialRouteName
|
|
76
|
+
}),
|
|
77
|
+
{
|
|
78
|
+
state,
|
|
79
|
+
descriptors,
|
|
80
|
+
navigation,
|
|
81
|
+
describe,
|
|
82
|
+
NavigationContent: RNNavigationContent
|
|
83
|
+
} = navigatorContext,
|
|
84
|
+
navigatorContextValue = useMemo(() => ({
|
|
85
|
+
...navigatorContext,
|
|
86
|
+
contextKey,
|
|
87
|
+
router: ExpoTabRouter
|
|
88
|
+
}), [navigatorContext, contextKey, ExpoTabRouter]),
|
|
89
|
+
NavigationContent = useComponent(children2 => /* @__PURE__ */jsx(TabTriggerMapContext.Provider, {
|
|
90
|
+
value: triggerMap,
|
|
91
|
+
children: /* @__PURE__ */jsx(NavigatorContext.Provider, {
|
|
92
|
+
value: navigatorContextValue,
|
|
93
|
+
children: /* @__PURE__ */jsx(RNNavigationContent, {
|
|
94
|
+
children: children2
|
|
95
|
+
})
|
|
96
|
+
})
|
|
97
|
+
}));
|
|
98
|
+
return {
|
|
99
|
+
state,
|
|
100
|
+
descriptors,
|
|
101
|
+
navigation,
|
|
102
|
+
NavigationContent,
|
|
103
|
+
describe
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function parseTriggersFromChildren(children, screenTriggers = [], isInTabList = !1) {
|
|
107
|
+
return Children.forEach(children, child => {
|
|
108
|
+
if (!child || !isValidElement(child) || isTabSlot(child)) return;
|
|
109
|
+
if (isFragment(child) && typeof child.props.children != "function") return parseTriggersFromChildren(child.props.children, screenTriggers, isInTabList || isTabList(child));
|
|
110
|
+
if (isTabList(child) && typeof child.props.children != "function") {
|
|
111
|
+
let children2 = child.props.children;
|
|
112
|
+
return child.props.asChild && isValidElement(children2) && children2.props && typeof children2.props == "object" && "children" in children2.props && (children2 = children2.props.children), parseTriggersFromChildren(children2, screenTriggers, isInTabList || isTabList(child));
|
|
113
|
+
}
|
|
114
|
+
if (!isInTabList || !isTabTrigger(child)) return;
|
|
115
|
+
const {
|
|
116
|
+
href,
|
|
117
|
+
name
|
|
118
|
+
} = child.props;
|
|
119
|
+
if (!href) {
|
|
120
|
+
process.env.NODE_ENV === "development" && console.warn(`<TabTrigger name={${name}}> does not have a 'href' prop. TabTriggers within a <TabList /> are required to have an href.`);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const resolvedHref = resolveHref(href);
|
|
124
|
+
if (shouldLinkExternally(resolvedHref)) return screenTriggers.push({
|
|
125
|
+
type: "external",
|
|
126
|
+
name,
|
|
127
|
+
href: resolvedHref
|
|
128
|
+
});
|
|
129
|
+
if (!name) {
|
|
130
|
+
process.env.NODE_ENV === "development" && console.warn("<TabTrigger> does not have a 'name' prop. TabTriggers within a <TabList /> are required to have a name.");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
return screenTriggers.push({
|
|
134
|
+
type: "internal",
|
|
135
|
+
href: resolvedHref,
|
|
136
|
+
name
|
|
137
|
+
});
|
|
138
|
+
}), screenTriggers;
|
|
139
|
+
}
|
|
140
|
+
function isFragment(child) {
|
|
141
|
+
return child.type === Fragment;
|
|
142
|
+
}
|
|
143
|
+
const styles = StyleSheet.create({
|
|
144
|
+
tabsRoot: {
|
|
145
|
+
flex: 1
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
export { Tabs, useTabsWithChildren, useTabsWithTriggers };
|
|
149
|
+
//# sourceMappingURL=Tabs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LinkingContext","useNavigationBuilder","Children","Fragment","isValidElement","use","useMemo","StyleSheet","View","TabTriggerMapContext","isTabList","ExpoTabRouter","isTabSlot","isTabTrigger","ViewSlot","triggersToScreens","useComponent","useRouteNode","useContextKey","useRouteInfo","resolveHref","shouldLinkExternally","NavigatorContext","jsx","Tabs","props","children","asChild","options","rest","Comp","NavigationContent","useTabsWithChildren","style","styles","tabsRoot","useTabsWithTriggers","triggers","parseTriggersFromChildren","parentTriggerMap","routeNode","contextKey","linking","routeInfo","Error","initialRouteName","triggerMap","navigatorContext","id","state","descriptors","navigation","describe","RNNavigationContent","navigatorContextValue","router","children2","Provider","value","screenTriggers","isInTabList","forEach","child","isFragment","href","name","process","env","NODE_ENV","console","warn","resolvedHref","push","type","create","flex"],"sources":["../../../src/ui/Tabs.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { LinkingContext, useNavigationBuilder } from "@react-navigation/native";
|
|
3
|
+
import { Children, Fragment, isValidElement, use, useMemo } from "react";
|
|
4
|
+
import { StyleSheet, View } from "react-native";
|
|
5
|
+
import { TabTriggerMapContext } from "./TabContext.native.js";
|
|
6
|
+
import { isTabList } from "./TabList.native.js";
|
|
7
|
+
import { ExpoTabRouter } from "./TabRouter.native.js";
|
|
8
|
+
import { isTabSlot } from "./TabSlot.native.js";
|
|
9
|
+
import { isTabTrigger } from "./TabTrigger.native.js";
|
|
10
|
+
import { ViewSlot, triggersToScreens } from "./common.native.js";
|
|
11
|
+
import { useComponent } from "./useComponent.native.js";
|
|
12
|
+
import { useRouteNode, useContextKey } from "../router/Route.native.js";
|
|
13
|
+
import { useRouteInfo } from "../hooks.native.js";
|
|
14
|
+
import { resolveHref } from "../link/href.native.js";
|
|
15
|
+
import { shouldLinkExternally } from "../utils/url.native.js";
|
|
16
|
+
import { NavigatorContext } from "../views/Navigator.native.js";
|
|
17
|
+
export * from "./TabContext.native.js";
|
|
18
|
+
export * from "./TabList.native.js";
|
|
19
|
+
export * from "./TabSlot.native.js";
|
|
20
|
+
export * from "./TabTrigger.native.js";
|
|
21
|
+
function _type_of(obj) {
|
|
22
|
+
"@swc/helpers - typeof";
|
|
23
|
+
|
|
24
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
25
|
+
}
|
|
26
|
+
function Tabs(props) {
|
|
27
|
+
var {
|
|
28
|
+
children,
|
|
29
|
+
asChild,
|
|
30
|
+
options,
|
|
31
|
+
...rest
|
|
32
|
+
} = props,
|
|
33
|
+
Comp = asChild ? ViewSlot : View,
|
|
34
|
+
{
|
|
35
|
+
NavigationContent
|
|
36
|
+
} = useTabsWithChildren({
|
|
37
|
+
// asChild adds an extra layer, so we need to process the child's children
|
|
38
|
+
children: asChild && /* @__PURE__ */isValidElement(children) && children.props && _type_of(children.props) === "object" && "children" in children.props ? children.props.children : children,
|
|
39
|
+
...options
|
|
40
|
+
});
|
|
41
|
+
return /* @__PURE__ */_jsx(Comp, {
|
|
42
|
+
style: styles.tabsRoot,
|
|
43
|
+
...rest,
|
|
44
|
+
children: /* @__PURE__ */_jsx(NavigationContent, {
|
|
45
|
+
children
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function useTabsWithChildren(options) {
|
|
50
|
+
var {
|
|
51
|
+
children,
|
|
52
|
+
...rest
|
|
53
|
+
} = options;
|
|
54
|
+
return useTabsWithTriggers({
|
|
55
|
+
triggers: parseTriggersFromChildren(children),
|
|
56
|
+
...rest
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function useTabsWithTriggers(options) {
|
|
60
|
+
var {
|
|
61
|
+
triggers,
|
|
62
|
+
...rest
|
|
63
|
+
} = options,
|
|
64
|
+
parentTriggerMap = use(TabTriggerMapContext),
|
|
65
|
+
routeNode = useRouteNode(),
|
|
66
|
+
contextKey = useContextKey(),
|
|
67
|
+
linking = use(LinkingContext).options,
|
|
68
|
+
routeInfo = useRouteInfo();
|
|
69
|
+
if (!routeNode || !linking) throw new Error("No RouteNode. This is likely a bug in one router.");
|
|
70
|
+
var initialRouteName = routeNode.initialRouteName,
|
|
71
|
+
{
|
|
72
|
+
children,
|
|
73
|
+
triggerMap
|
|
74
|
+
} = triggersToScreens(triggers, routeNode, linking, initialRouteName, parentTriggerMap, routeInfo, contextKey),
|
|
75
|
+
navigatorContext = useNavigationBuilder(ExpoTabRouter, {
|
|
76
|
+
children,
|
|
77
|
+
...rest,
|
|
78
|
+
triggerMap,
|
|
79
|
+
id: contextKey,
|
|
80
|
+
initialRouteName
|
|
81
|
+
}),
|
|
82
|
+
{
|
|
83
|
+
state,
|
|
84
|
+
descriptors,
|
|
85
|
+
navigation,
|
|
86
|
+
describe,
|
|
87
|
+
NavigationContent: RNNavigationContent
|
|
88
|
+
} = navigatorContext,
|
|
89
|
+
navigatorContextValue = useMemo(function () {
|
|
90
|
+
return {
|
|
91
|
+
...navigatorContext,
|
|
92
|
+
contextKey,
|
|
93
|
+
router: ExpoTabRouter
|
|
94
|
+
};
|
|
95
|
+
}, [navigatorContext, contextKey, ExpoTabRouter]),
|
|
96
|
+
NavigationContent = useComponent(function (children2) {
|
|
97
|
+
return /* @__PURE__ */_jsx(TabTriggerMapContext.Provider, {
|
|
98
|
+
value: triggerMap,
|
|
99
|
+
children: /* @__PURE__ */_jsx(NavigatorContext.Provider, {
|
|
100
|
+
value: navigatorContextValue,
|
|
101
|
+
children: /* @__PURE__ */_jsx(RNNavigationContent, {
|
|
102
|
+
children: children2
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
state,
|
|
109
|
+
descriptors,
|
|
110
|
+
navigation,
|
|
111
|
+
NavigationContent,
|
|
112
|
+
describe
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function parseTriggersFromChildren(children) {
|
|
116
|
+
var screenTriggers = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [],
|
|
117
|
+
isInTabList = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1;
|
|
118
|
+
return Children.forEach(children, function (child) {
|
|
119
|
+
if (!(!child || ! /* @__PURE__ */isValidElement(child) || isTabSlot(child))) {
|
|
120
|
+
if (isFragment(child) && typeof child.props.children != "function") return parseTriggersFromChildren(child.props.children, screenTriggers, isInTabList || isTabList(child));
|
|
121
|
+
if (isTabList(child) && typeof child.props.children != "function") {
|
|
122
|
+
var _$children = child.props.children;
|
|
123
|
+
return child.props.asChild && /* @__PURE__ */isValidElement(_$children) && _$children.props && _type_of(_$children.props) === "object" && "children" in _$children.props && (_$children = _$children.props.children), parseTriggersFromChildren(_$children, screenTriggers, isInTabList || isTabList(child));
|
|
124
|
+
}
|
|
125
|
+
if (!(!isInTabList || !isTabTrigger(child))) {
|
|
126
|
+
var {
|
|
127
|
+
href,
|
|
128
|
+
name
|
|
129
|
+
} = child.props;
|
|
130
|
+
if (!href) {
|
|
131
|
+
process.env.NODE_ENV === "development" && console.warn(`<TabTrigger name={${name}}> does not have a 'href' prop. TabTriggers within a <TabList /> are required to have an href.`);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
var resolvedHref = resolveHref(href);
|
|
135
|
+
if (shouldLinkExternally(resolvedHref)) return screenTriggers.push({
|
|
136
|
+
type: "external",
|
|
137
|
+
name,
|
|
138
|
+
href: resolvedHref
|
|
139
|
+
});
|
|
140
|
+
if (!name) {
|
|
141
|
+
process.env.NODE_ENV === "development" && console.warn("<TabTrigger> does not have a 'name' prop. TabTriggers within a <TabList /> are required to have a name.");
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
return screenTriggers.push({
|
|
145
|
+
type: "internal",
|
|
146
|
+
href: resolvedHref,
|
|
147
|
+
name
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}), screenTriggers;
|
|
152
|
+
}
|
|
153
|
+
function isFragment(child) {
|
|
154
|
+
return child.type === Fragment;
|
|
155
|
+
}
|
|
156
|
+
var styles = StyleSheet.create({
|
|
157
|
+
tabsRoot: {
|
|
158
|
+
flex: 1
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
export { Tabs, useTabsWithChildren, useTabsWithTriggers };
|
|
162
|
+
//# sourceMappingURL=Tabs.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","LinkingContext","useNavigationBuilder","Children","Fragment","isValidElement","use","useMemo","StyleSheet","View","TabTriggerMapContext","isTabList","ExpoTabRouter","isTabSlot","isTabTrigger","ViewSlot","triggersToScreens","useComponent","useRouteNode","useContextKey","useRouteInfo","resolveHref","shouldLinkExternally","NavigatorContext","_type_of","obj","Symbol","constructor","Tabs","props","children","asChild","options","rest","Comp","NavigationContent","useTabsWithChildren","style","styles","tabsRoot","useTabsWithTriggers","triggers","parseTriggersFromChildren","parentTriggerMap","routeNode","contextKey","linking","routeInfo","Error","initialRouteName","triggerMap","navigatorContext","id","state","descriptors","navigation","describe","RNNavigationContent","navigatorContextValue","router","children2","Provider","value","screenTriggers","arguments","length","isInTabList","forEach","child","isFragment","_$children","href","name","process","env","NODE_ENV","console","warn","resolvedHref","push","type","create"],"sources":["../../../src/ui/Tabs.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { resolveHref } from "../link/href";
|
|
2
|
+
import { sortRoutesWithInitial } from "../router/sortRoutes";
|
|
3
|
+
import { Slot } from "./Slot";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
const ViewSlot = Slot;
|
|
6
|
+
function resolveHrefWithSegments(href, routeInfo, segmentsWithoutGroups) {
|
|
7
|
+
if (href.startsWith("./") || href.startsWith("../")) {
|
|
8
|
+
const parts = ((("/" + segmentsWithoutGroups.join("/")).replace(/\/[^/]*$/, "") || "/") + "/" + href).split("/"), resolved = [];
|
|
9
|
+
for (const part of parts)
|
|
10
|
+
part === "." || part === "" || (part === ".." ? resolved.pop() : resolved.push(part));
|
|
11
|
+
return "/" + resolved.join("/");
|
|
12
|
+
}
|
|
13
|
+
return href;
|
|
14
|
+
}
|
|
15
|
+
function triggersToScreens(triggers, layoutRouteNode, linking, initialRouteName, parentTriggerMap, routeInfo, contextKey) {
|
|
16
|
+
const configs = [];
|
|
17
|
+
for (const trigger of triggers) {
|
|
18
|
+
if (trigger.name in parentTriggerMap) {
|
|
19
|
+
const parentTrigger = parentTriggerMap[trigger.name];
|
|
20
|
+
throw new Error(
|
|
21
|
+
`Trigger ${JSON.stringify({
|
|
22
|
+
name: trigger.name,
|
|
23
|
+
href: trigger.href
|
|
24
|
+
})} has the same name as parent trigger ${JSON.stringify({
|
|
25
|
+
name: parentTrigger.name,
|
|
26
|
+
href: parentTrigger.href
|
|
27
|
+
})}. Triggers must have unique names.`
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
if (trigger.type === "external") {
|
|
31
|
+
configs.push(trigger);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
let resolvedHref = resolveHref(trigger.href);
|
|
35
|
+
if (resolvedHref.startsWith("../"))
|
|
36
|
+
throw new Error("Trigger href cannot link to a parent directory");
|
|
37
|
+
const segmentsWithoutGroups = contextKey.split("/").filter((segment) => !(segment.startsWith("(") && segment.endsWith(")")));
|
|
38
|
+
resolvedHref = resolveHrefWithSegments(resolvedHref, routeInfo, segmentsWithoutGroups);
|
|
39
|
+
let state = linking.getStateFromPath?.(resolvedHref, linking.config)?.routes[0];
|
|
40
|
+
if (!state) {
|
|
41
|
+
console.warn(
|
|
42
|
+
`Unable to find screen for trigger ${JSON.stringify(trigger)}. Does this point to a valid screen?`
|
|
43
|
+
);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
let routeState = state;
|
|
47
|
+
if (routeState.name === "+not-found") {
|
|
48
|
+
process.env.NODE_ENV !== "production" && console.warn(
|
|
49
|
+
`Tab trigger '${trigger.name}' has the href '${trigger.href}' which points to a +not-found route.`
|
|
50
|
+
);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const targetStateName = layoutRouteNode.route || "__root";
|
|
54
|
+
for (; state?.state && state.name !== targetStateName; )
|
|
55
|
+
state = state.state.routes[state.state.index ?? state.state.routes.length - 1];
|
|
56
|
+
routeState = state.state?.routes[state.state.index ?? state.state.routes.length - 1] || state;
|
|
57
|
+
const routeNode = layoutRouteNode.children.find((child) => child.route === routeState?.name);
|
|
58
|
+
if (!routeNode) {
|
|
59
|
+
console.warn(
|
|
60
|
+
`Unable to find routeNode for trigger ${JSON.stringify(trigger)}. This might be a bug in One router`
|
|
61
|
+
);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const duplicateTrigger = trigger.type === "internal" && configs.find((config) => config.type === "external" ? !1 : config.routeNode.route === routeNode.route);
|
|
65
|
+
if (duplicateTrigger) {
|
|
66
|
+
const duplicateTriggerText = `${JSON.stringify({ name: duplicateTrigger.name, href: duplicateTrigger.href })} and ${JSON.stringify({ name: trigger.name, href: trigger.href })}`;
|
|
67
|
+
throw new Error(
|
|
68
|
+
`A navigator cannot contain multiple trigger components that map to the same sub-segment. Consider adding a shared group and assigning a group to each trigger. Conflicting triggers:
|
|
69
|
+
${duplicateTriggerText}.
|
|
70
|
+
Both triggers map to route ${routeNode.route}.`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
configs.push({
|
|
74
|
+
...trigger,
|
|
75
|
+
href: resolvedHref,
|
|
76
|
+
routeNode,
|
|
77
|
+
action: stateToAction(state, layoutRouteNode.route)
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const sortFn = sortRoutesWithInitial(initialRouteName), sortedConfigs = configs.sort((a, b) => a.type === "external" && b.type === "external" ? 0 : a.type === "external" ? 1 : b.type === "external" ? -1 : sortFn(a.routeNode, b.routeNode)), children = [], triggerMap = { ...parentTriggerMap }, { Screen } = require("../router/useScreens"), { createGetIdForRoute } = require("../router/useScreens");
|
|
81
|
+
for (const [index, config] of sortedConfigs.entries())
|
|
82
|
+
if (triggerMap[config.name] = { ...config, index }, config.type === "internal") {
|
|
83
|
+
const route = config.routeNode;
|
|
84
|
+
children.push(
|
|
85
|
+
/* @__PURE__ */ jsx(
|
|
86
|
+
Screen,
|
|
87
|
+
{
|
|
88
|
+
getId: createGetIdForRoute(route),
|
|
89
|
+
name: route.route,
|
|
90
|
+
options: (args) => {
|
|
91
|
+
const staticOptions = route.generated ? route.loadRoute()?.getNavOptions : null, output = {
|
|
92
|
+
...typeof staticOptions == "function" ? staticOptions(args) : staticOptions
|
|
93
|
+
};
|
|
94
|
+
return route.generated && (output.tabBarButton = () => null, output.drawerItemStyle = { height: 0, display: "none" }), output;
|
|
95
|
+
},
|
|
96
|
+
getComponent: () => {
|
|
97
|
+
const { getQualifiedRouteComponent } = require("../router/useScreens");
|
|
98
|
+
return getQualifiedRouteComponent(route);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
route.route
|
|
102
|
+
)
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
children,
|
|
107
|
+
triggerMap
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function stateToAction(state, startAtRoute) {
|
|
111
|
+
const rootPayload = {};
|
|
112
|
+
let payload = rootPayload;
|
|
113
|
+
startAtRoute = startAtRoute === "" ? "__root" : startAtRoute;
|
|
114
|
+
let foundStartingPoint = startAtRoute === void 0 || !state?.state;
|
|
115
|
+
for (; state; )
|
|
116
|
+
if (foundStartingPoint)
|
|
117
|
+
payload === rootPayload ? payload.name = state.name : payload.screen = state.name, payload.params = state.params ? { ...state.params } : {}, state = state.state?.routes[state.state?.routes.length - 1], state && (payload.params ??= {}, payload = payload.params);
|
|
118
|
+
else {
|
|
119
|
+
state.name === startAtRoute && (foundStartingPoint = !0);
|
|
120
|
+
const nextState = state.state?.routes[state.state?.routes.length - 1];
|
|
121
|
+
nextState && (state = nextState);
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
type: "JUMP_TO",
|
|
125
|
+
payload: rootPayload
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export {
|
|
129
|
+
ViewSlot,
|
|
130
|
+
stateToAction,
|
|
131
|
+
triggersToScreens
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ui/common.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|