one 1.2.6 → 1.2.8
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,89 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { Platform, StyleSheet } from "react-native-web";
|
|
3
|
+
import { ScreenContainer, Screen } from "react-native-screens";
|
|
4
|
+
import { TabContext } from "./TabContext.mjs";
|
|
5
|
+
import { useNavigatorContext } from "../views/Navigator.mjs";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
function useTabSlot({
|
|
8
|
+
detachInactiveScreens = ["android", "ios", "web"].includes(Platform.OS),
|
|
9
|
+
style,
|
|
10
|
+
renderFn = defaultTabsSlotRender
|
|
11
|
+
} = {}) {
|
|
12
|
+
const {
|
|
13
|
+
state,
|
|
14
|
+
descriptors
|
|
15
|
+
} = useNavigatorContext(),
|
|
16
|
+
focusedRouteKey = state.routes[state.index].key,
|
|
17
|
+
[loaded, setLoaded] = useState({
|
|
18
|
+
[focusedRouteKey]: !0
|
|
19
|
+
});
|
|
20
|
+
return loaded[focusedRouteKey] || setLoaded({
|
|
21
|
+
...loaded,
|
|
22
|
+
[focusedRouteKey]: !0
|
|
23
|
+
}), /* @__PURE__ */jsx(ScreenContainer, {
|
|
24
|
+
enabled: detachInactiveScreens,
|
|
25
|
+
hasTwoStates: !0,
|
|
26
|
+
style: [styles.screenContainer, style],
|
|
27
|
+
children: state.routes.map((route, index) => {
|
|
28
|
+
const descriptor = descriptors[route.key];
|
|
29
|
+
return /* @__PURE__ */jsx(TabContext.Provider, {
|
|
30
|
+
value: descriptor.options,
|
|
31
|
+
children: renderFn(descriptor, {
|
|
32
|
+
index,
|
|
33
|
+
isFocused: state.index === index,
|
|
34
|
+
loaded: loaded[route.key],
|
|
35
|
+
detachInactiveScreens
|
|
36
|
+
})
|
|
37
|
+
}, descriptor.route.key);
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function TabSlot(props) {
|
|
42
|
+
return useTabSlot(props);
|
|
43
|
+
}
|
|
44
|
+
function defaultTabsSlotRender(descriptor, {
|
|
45
|
+
isFocused,
|
|
46
|
+
loaded,
|
|
47
|
+
detachInactiveScreens
|
|
48
|
+
}) {
|
|
49
|
+
const {
|
|
50
|
+
lazy = !0,
|
|
51
|
+
unmountOnBlur,
|
|
52
|
+
freezeOnBlur
|
|
53
|
+
} = descriptor.options;
|
|
54
|
+
return unmountOnBlur && !isFocused || lazy && !loaded && !isFocused ? null : /* @__PURE__ */jsx(Screen, {
|
|
55
|
+
enabled: detachInactiveScreens,
|
|
56
|
+
activityState: isFocused ? 2 : 0,
|
|
57
|
+
freezeOnBlur,
|
|
58
|
+
style: [styles.screen, isFocused ? styles.focused : styles.unfocused],
|
|
59
|
+
children: descriptor.render()
|
|
60
|
+
}, descriptor.route.key);
|
|
61
|
+
}
|
|
62
|
+
function isTabSlot(child) {
|
|
63
|
+
return child.type === TabSlot;
|
|
64
|
+
}
|
|
65
|
+
const styles = StyleSheet.create({
|
|
66
|
+
screen: {
|
|
67
|
+
flex: 1,
|
|
68
|
+
position: "relative",
|
|
69
|
+
height: "100%"
|
|
70
|
+
},
|
|
71
|
+
screenContainer: {
|
|
72
|
+
flexShrink: 0,
|
|
73
|
+
flexGrow: 1
|
|
74
|
+
},
|
|
75
|
+
focused: {
|
|
76
|
+
zIndex: 1,
|
|
77
|
+
display: "flex",
|
|
78
|
+
flexShrink: 0,
|
|
79
|
+
flexGrow: 1
|
|
80
|
+
},
|
|
81
|
+
unfocused: {
|
|
82
|
+
zIndex: -1,
|
|
83
|
+
display: "none",
|
|
84
|
+
flexShrink: 1,
|
|
85
|
+
flexGrow: 0
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
export { TabSlot, defaultTabsSlotRender, isTabSlot, useTabSlot };
|
|
89
|
+
//# sourceMappingURL=TabSlot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","Platform","StyleSheet","ScreenContainer","Screen","TabContext","useNavigatorContext","jsx","useTabSlot","detachInactiveScreens","includes","OS","style","renderFn","defaultTabsSlotRender","state","descriptors","focusedRouteKey","routes","index","key","loaded","setLoaded","enabled","hasTwoStates","styles","screenContainer","children","map","route","descriptor","Provider","value","options","isFocused","TabSlot","props","lazy","unmountOnBlur","freezeOnBlur","activityState","screen","focused","unfocused","render","isTabSlot","child","type","create","flex","position","height","flexShrink","flexGrow","zIndex","display"],"sources":["../../../src/ui/TabSlot.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Platform, StyleSheet } from "react-native";
|
|
4
|
+
import { ScreenContainer, Screen } from "react-native-screens";
|
|
5
|
+
import { TabContext } from "./TabContext.native.js";
|
|
6
|
+
import { useNavigatorContext } from "../views/Navigator.native.js";
|
|
7
|
+
function useTabSlot() {
|
|
8
|
+
var {
|
|
9
|
+
detachInactiveScreens = ["android", "ios", "web"].includes(Platform.OS),
|
|
10
|
+
style,
|
|
11
|
+
renderFn = defaultTabsSlotRender
|
|
12
|
+
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
|
|
13
|
+
{
|
|
14
|
+
state,
|
|
15
|
+
descriptors
|
|
16
|
+
} = useNavigatorContext(),
|
|
17
|
+
focusedRouteKey = state.routes[state.index].key,
|
|
18
|
+
[loaded, setLoaded] = useState({
|
|
19
|
+
[focusedRouteKey]: !0
|
|
20
|
+
});
|
|
21
|
+
return loaded[focusedRouteKey] || setLoaded({
|
|
22
|
+
...loaded,
|
|
23
|
+
[focusedRouteKey]: !0
|
|
24
|
+
}), /* @__PURE__ */_jsx(ScreenContainer, {
|
|
25
|
+
enabled: detachInactiveScreens,
|
|
26
|
+
hasTwoStates: !0,
|
|
27
|
+
style: [styles.screenContainer, style],
|
|
28
|
+
children: state.routes.map(function (route, index) {
|
|
29
|
+
var descriptor = descriptors[route.key];
|
|
30
|
+
return /* @__PURE__ */_jsx(TabContext.Provider, {
|
|
31
|
+
value: descriptor.options,
|
|
32
|
+
children: renderFn(descriptor, {
|
|
33
|
+
index,
|
|
34
|
+
isFocused: state.index === index,
|
|
35
|
+
loaded: loaded[route.key],
|
|
36
|
+
detachInactiveScreens
|
|
37
|
+
})
|
|
38
|
+
}, descriptor.route.key);
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function TabSlot(props) {
|
|
43
|
+
return useTabSlot(props);
|
|
44
|
+
}
|
|
45
|
+
function defaultTabsSlotRender(descriptor, param) {
|
|
46
|
+
var {
|
|
47
|
+
isFocused,
|
|
48
|
+
loaded,
|
|
49
|
+
detachInactiveScreens
|
|
50
|
+
} = param,
|
|
51
|
+
{
|
|
52
|
+
lazy = !0,
|
|
53
|
+
unmountOnBlur,
|
|
54
|
+
freezeOnBlur
|
|
55
|
+
} = descriptor.options;
|
|
56
|
+
return unmountOnBlur && !isFocused || lazy && !loaded && !isFocused ? null : /* @__PURE__ */_jsx(Screen, {
|
|
57
|
+
enabled: detachInactiveScreens,
|
|
58
|
+
activityState: isFocused ? 2 : 0,
|
|
59
|
+
freezeOnBlur,
|
|
60
|
+
style: [styles.screen, isFocused ? styles.focused : styles.unfocused],
|
|
61
|
+
children: descriptor.render()
|
|
62
|
+
}, descriptor.route.key);
|
|
63
|
+
}
|
|
64
|
+
function isTabSlot(child) {
|
|
65
|
+
return child.type === TabSlot;
|
|
66
|
+
}
|
|
67
|
+
var styles = StyleSheet.create({
|
|
68
|
+
screen: {
|
|
69
|
+
flex: 1,
|
|
70
|
+
position: "relative",
|
|
71
|
+
height: "100%"
|
|
72
|
+
},
|
|
73
|
+
screenContainer: {
|
|
74
|
+
flexShrink: 0,
|
|
75
|
+
flexGrow: 1
|
|
76
|
+
},
|
|
77
|
+
focused: {
|
|
78
|
+
zIndex: 1,
|
|
79
|
+
display: "flex",
|
|
80
|
+
flexShrink: 0,
|
|
81
|
+
flexGrow: 1
|
|
82
|
+
},
|
|
83
|
+
unfocused: {
|
|
84
|
+
zIndex: -1,
|
|
85
|
+
display: "none",
|
|
86
|
+
flexShrink: 1,
|
|
87
|
+
flexGrow: 0
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
export { TabSlot, defaultTabsSlotRender, isTabSlot, useTabSlot };
|
|
91
|
+
//# sourceMappingURL=TabSlot.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","useState","Platform","StyleSheet","ScreenContainer","Screen","TabContext","useNavigatorContext","useTabSlot","detachInactiveScreens","includes","OS","style","renderFn","defaultTabsSlotRender","arguments","length","state","descriptors","focusedRouteKey","routes","index","key","loaded","setLoaded","enabled","hasTwoStates","styles","screenContainer","children","map","route","descriptor","Provider","value","options","isFocused","TabSlot","props","param","lazy","unmountOnBlur","freezeOnBlur","activityState","screen","focused","unfocused","render","isTabSlot","child","type","create","flex","position","height","flexShrink","flexGrow","zIndex","display"],"sources":["../../../src/ui/TabSlot.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAiDA,GAAA,IAAAC,IAAA,QAAgB;AACjE,SAASC,QAAA,QAAU;AACnB,SAASC,QAAA,EAAAC,UAAiB,sBAAc;AAExC,SAASC,eAAA,EAAAC,MAAuC;AAEhD,SAASC,UAAA,gCAA2B;AAsE1B,SAAAC,mBAAA;AAvBH,SAASC,WAAA,EAAW;EACzB;MAAAC,qBAAyB,IACzB,WACA,OACgB,KAAI,CACpB,CAAAC,QAAQ,CAAAR,QAAO,CAAAS,EAAA;MAAAC,KAAY;MAAIC,QAAA,GAAAC;IACzB,IAAAC,SAAwB,CAAAC,MAAO,QAAMD,SAAO,CAC5C,CAAC,WAAQ,IAAAA,SAAa,MAAS,EAAE;IAAC;MAAAE,KAAA;MAAAC;IAAwB,IAAAX,mBAAA;IAAAY,eAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAH,KAAA,CAAAI,KAAA,EAAAC,GAAA;IAAA,CAAAC,MAAA,EAAAC,SAAA,IAAAvB,QAAA;MAEhE,CAAAkB,eAAY;IAKV,EAAC;EAAA,OAAAI,MAAA,CAAAJ,eAAA,KAAAK,SAAA;IAAA,GACCD,MAAA;IAAS,CAAAJ,eACG;EAAA,IACZ,eAAenB,IAAA,CAAAI,eAAiB,EAAK;IAAAqB,OAEpC,EAAAhB,qBAAkB;IACjBiB,YAAM;IAENd,KAAA,GAE0Be,MACpB,CAAAC,eAAA,EAAAhB,KACA,CAA2B;IACHiB,QACxB,EAAAZ,KAAA,CAAAG,MAAA,CAAAU,GAAA,WAAAC,KAAA,EAAAV,KAAA;MAAA,IACDW,UANuB,GAAAd,WAO1B,CAAAa,KAAA,CAAAT,GAAA;MAEJ,OAAC,eAAAtB,IAAA,CAAAM,UAAA,CAAA2B,QAAA;QAAAC,KAAA,EAAAF,UAAA,CAAAG,OAAA;QACHN,QAAA,EAAAhB,QAAA,CAAAmB,UAAA;UAEJX,KAAA;UAiBgBe,SAAQ,EAAAnB,KAAqB,CAAAI,KAAA,KAAAA,KAAA;UACpCE,MAAA,EAAAA,MAAW,CAAKQ,KAAA,CAAAT,GAAA;UACzBb;QAKO,CAAS;MAId,GAAMuB,UAAS,CAAAD,KAAM,CAAAT,GAAA;IAMrB;EAME,EAAC;AAAA;AAAA,SAECe,OAASA,CAAAC,KAAA;EAAA,OACT9B,UAAA,CAAA8B,KAAe;AAAgB;AAC/B,SACAxB,qBAAuBA,CAAAkB,UAAY,EAAAO,KAAO;EAA0B,IAEnE;MAAAH,SAAA;MAAAb,MAAA;MAAWd;IAAO,IAAA8B,KAAA;IAAA;MAAAC,IAAA;MAAAC,aAAA;MAAAC;IAAA,IAAAV,UAAA,CAAAG,OAAA;EAAA,OAAAM,aAAA,KAAAL,SAAA,IAAAI,IAAA,KAAAjB,MAAA,KAAAa,SAAA,yBAAApC,IAAA,CAAAK,MAAA;IANdoB,OAAA,EAAAhB,qBAAiB;IAOxBkC,aAAA,EAAAP,SAAA;IAEJM,YAAA;IAKO9B,KAAS,GACde,MAAO,CAAAiB,MAAM,EACfR,SAAA,GAAAT,MAAA,CAAAkB,OAAA,GAAAlB,MAAA,CAAAmB,SAAA,CAEA;IACEjB,QAAQ,EAAAG,UAAA,CAAAe,MAAA;EAAA,GACNf,UAAM,CAAAD,KAAA,CAAAT,GAAA;AAAA;AACI,SACV0B,SAAQA,CAAAC,KAAA;EACV,OAAAA,KAAA,CAAAC,IAAA,KAAAb,OAAA;AAAA;AACiB,IACfV,MAAA,GAAAxB,UAAY,CAAAgD,MAAA;EAAAP,MACZ;IACFQ,IAAA;IACAC,QAAS;IACPC,MAAA,EAAQ;EAAA;EACC1B,eACG;IACZ2B,UAAU;IACZC,QAAA;EACA;EAAWX,OACT;IACAY,MAAA,GAAS;IACTC,OAAA,QAAY;IACZH,UAAU;IACZC,QAAA;EACD","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
2
|
+
import { use, useCallback } from "react";
|
|
3
|
+
import {
|
|
4
|
+
StyleSheet,
|
|
5
|
+
Pressable
|
|
6
|
+
} from "react-native-web";
|
|
7
|
+
import { TabTriggerMapContext } from "./TabContext";
|
|
8
|
+
import { appendBaseUrl } from "../fork/getPathFromState-mods";
|
|
9
|
+
import { router } from "../router/imperative-api";
|
|
10
|
+
import { stripGroupSegmentsFromPath } from "../router/matchers";
|
|
11
|
+
import { useNavigatorContext } from "../views/Navigator";
|
|
12
|
+
import { jsx } from "react/jsx-runtime";
|
|
13
|
+
const TabTriggerSlot = Slot;
|
|
14
|
+
function shouldHandleMouseEvent(e) {
|
|
15
|
+
return e && "button" in e ? !e.metaKey && !e.altKey && !e.ctrlKey && !e.shiftKey && (e.button == null || e.button === 0) && [void 0, null, "", "self"].includes(e.currentTarget.target) : !0;
|
|
16
|
+
}
|
|
17
|
+
function TabTrigger({ asChild, name, href, resetOnFocus, ...props }) {
|
|
18
|
+
const { trigger, triggerProps } = useTabTrigger({
|
|
19
|
+
name,
|
|
20
|
+
resetOnFocus,
|
|
21
|
+
...props
|
|
22
|
+
});
|
|
23
|
+
if (asChild)
|
|
24
|
+
return /* @__PURE__ */ jsx(
|
|
25
|
+
TabTriggerSlot,
|
|
26
|
+
{
|
|
27
|
+
style: styles.tabTrigger,
|
|
28
|
+
...props,
|
|
29
|
+
...triggerProps,
|
|
30
|
+
href: trigger?.resolvedHref,
|
|
31
|
+
children: props.children
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
{
|
|
35
|
+
const reactNativeWebProps = { href: trigger?.resolvedHref };
|
|
36
|
+
return /* @__PURE__ */ jsx(Pressable, { style: styles.tabTrigger, ...reactNativeWebProps, ...props, ...triggerProps, children: props.children });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function isTabTrigger(child) {
|
|
40
|
+
return child.type === TabTrigger;
|
|
41
|
+
}
|
|
42
|
+
function useTabTrigger(options) {
|
|
43
|
+
const { state, navigation } = useNavigatorContext(), { name, resetOnFocus, onPress, onLongPress } = options, triggerMap = use(TabTriggerMapContext), getTrigger = useCallback(
|
|
44
|
+
(name2) => {
|
|
45
|
+
const config = triggerMap[name2];
|
|
46
|
+
if (config)
|
|
47
|
+
return {
|
|
48
|
+
isFocused: state.index === config.index,
|
|
49
|
+
route: state.routes[config.index],
|
|
50
|
+
resolvedHref: stripGroupSegmentsFromPath(appendBaseUrl(config.href)),
|
|
51
|
+
...config
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
[triggerMap, state]
|
|
55
|
+
), trigger = name !== void 0 ? getTrigger(name) : void 0, switchTab = useCallback(
|
|
56
|
+
(name2, options2) => {
|
|
57
|
+
const config = triggerMap[name2];
|
|
58
|
+
return config ? config.type === "external" ? router.navigate(config.href) : navigation?.dispatch({
|
|
59
|
+
...config.action,
|
|
60
|
+
type: "JUMP_TO",
|
|
61
|
+
payload: {
|
|
62
|
+
...config.action.payload,
|
|
63
|
+
...options2
|
|
64
|
+
}
|
|
65
|
+
}) : navigation?.dispatch({
|
|
66
|
+
type: "JUMP_TO",
|
|
67
|
+
payload: {
|
|
68
|
+
name: name2
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
[navigation, triggerMap]
|
|
73
|
+
), handleOnPress = useCallback(
|
|
74
|
+
(event) => {
|
|
75
|
+
onPress?.(event), trigger && (event?.isDefaultPrevented() || (navigation?.emit({
|
|
76
|
+
type: "tabPress",
|
|
77
|
+
target: trigger.type === "internal" ? trigger.route.key : trigger?.href,
|
|
78
|
+
canPreventDefault: !0
|
|
79
|
+
}), shouldHandleMouseEvent(event) && switchTab(name, { resetOnFocus })));
|
|
80
|
+
},
|
|
81
|
+
[onPress, name, resetOnFocus, trigger, navigation, switchTab]
|
|
82
|
+
), handleOnLongPress = useCallback(
|
|
83
|
+
(event) => {
|
|
84
|
+
onLongPress?.(event), trigger && (event?.isDefaultPrevented() || (navigation?.emit({
|
|
85
|
+
type: "tabLongPress",
|
|
86
|
+
target: trigger.type === "internal" ? trigger.route.key : trigger?.href
|
|
87
|
+
}), shouldHandleMouseEvent(event) && switchTab(name, {
|
|
88
|
+
resetOnFocus
|
|
89
|
+
})));
|
|
90
|
+
},
|
|
91
|
+
[onLongPress, name, resetOnFocus, trigger, navigation, switchTab]
|
|
92
|
+
), triggerProps = {
|
|
93
|
+
isFocused: !!trigger?.isFocused,
|
|
94
|
+
onPress: handleOnPress,
|
|
95
|
+
onLongPress: handleOnLongPress
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
switchTab,
|
|
99
|
+
getTrigger,
|
|
100
|
+
trigger,
|
|
101
|
+
triggerProps
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const styles = StyleSheet.create({
|
|
105
|
+
tabTrigger: {
|
|
106
|
+
flexDirection: "row",
|
|
107
|
+
justifyContent: "space-between"
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
export {
|
|
111
|
+
TabTrigger,
|
|
112
|
+
isTabTrigger,
|
|
113
|
+
useTabTrigger
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=TabTrigger.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ui/TabTrigger.tsx"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["name", "options"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
2
|
+
import { use, useCallback } from "react";
|
|
3
|
+
import { StyleSheet, Pressable } from "react-native-web";
|
|
4
|
+
import { TabTriggerMapContext } from "./TabContext.mjs";
|
|
5
|
+
import { appendBaseUrl } from "../fork/getPathFromState-mods.mjs";
|
|
6
|
+
import { router } from "../router/imperative-api.mjs";
|
|
7
|
+
import { stripGroupSegmentsFromPath } from "../router/matchers.mjs";
|
|
8
|
+
import { useNavigatorContext } from "../views/Navigator.mjs";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
const TabTriggerSlot = Slot;
|
|
11
|
+
function shouldHandleMouseEvent(e) {
|
|
12
|
+
return e && "button" in e ? !e.metaKey && !e.altKey && !e.ctrlKey && !e.shiftKey && (e.button == null || e.button === 0) && [void 0, null, "", "self"].includes(e.currentTarget.target) : !0;
|
|
13
|
+
}
|
|
14
|
+
function TabTrigger({
|
|
15
|
+
asChild,
|
|
16
|
+
name,
|
|
17
|
+
href,
|
|
18
|
+
resetOnFocus,
|
|
19
|
+
...props
|
|
20
|
+
}) {
|
|
21
|
+
const {
|
|
22
|
+
trigger,
|
|
23
|
+
triggerProps
|
|
24
|
+
} = useTabTrigger({
|
|
25
|
+
name,
|
|
26
|
+
resetOnFocus,
|
|
27
|
+
...props
|
|
28
|
+
});
|
|
29
|
+
if (asChild) return /* @__PURE__ */jsx(TabTriggerSlot, {
|
|
30
|
+
style: styles.tabTrigger,
|
|
31
|
+
...props,
|
|
32
|
+
...triggerProps,
|
|
33
|
+
href: trigger?.resolvedHref,
|
|
34
|
+
children: props.children
|
|
35
|
+
});
|
|
36
|
+
{
|
|
37
|
+
const reactNativeWebProps = {
|
|
38
|
+
href: trigger?.resolvedHref
|
|
39
|
+
};
|
|
40
|
+
return /* @__PURE__ */jsx(Pressable, {
|
|
41
|
+
style: styles.tabTrigger,
|
|
42
|
+
...reactNativeWebProps,
|
|
43
|
+
...props,
|
|
44
|
+
...triggerProps,
|
|
45
|
+
children: props.children
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function isTabTrigger(child) {
|
|
50
|
+
return child.type === TabTrigger;
|
|
51
|
+
}
|
|
52
|
+
function useTabTrigger(options) {
|
|
53
|
+
const {
|
|
54
|
+
state,
|
|
55
|
+
navigation
|
|
56
|
+
} = useNavigatorContext(),
|
|
57
|
+
{
|
|
58
|
+
name,
|
|
59
|
+
resetOnFocus,
|
|
60
|
+
onPress,
|
|
61
|
+
onLongPress
|
|
62
|
+
} = options,
|
|
63
|
+
triggerMap = use(TabTriggerMapContext),
|
|
64
|
+
getTrigger = useCallback(name2 => {
|
|
65
|
+
const config = triggerMap[name2];
|
|
66
|
+
if (config) return {
|
|
67
|
+
isFocused: state.index === config.index,
|
|
68
|
+
route: state.routes[config.index],
|
|
69
|
+
resolvedHref: stripGroupSegmentsFromPath(appendBaseUrl(config.href)),
|
|
70
|
+
...config
|
|
71
|
+
};
|
|
72
|
+
}, [triggerMap, state]),
|
|
73
|
+
trigger = name !== void 0 ? getTrigger(name) : void 0,
|
|
74
|
+
switchTab = useCallback((name2, options2) => {
|
|
75
|
+
const config = triggerMap[name2];
|
|
76
|
+
return config ? config.type === "external" ? router.navigate(config.href) : navigation?.dispatch({
|
|
77
|
+
...config.action,
|
|
78
|
+
type: "JUMP_TO",
|
|
79
|
+
payload: {
|
|
80
|
+
...config.action.payload,
|
|
81
|
+
...options2
|
|
82
|
+
}
|
|
83
|
+
}) : navigation?.dispatch({
|
|
84
|
+
type: "JUMP_TO",
|
|
85
|
+
payload: {
|
|
86
|
+
name: name2
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}, [navigation, triggerMap]),
|
|
90
|
+
handleOnPress = useCallback(event => {
|
|
91
|
+
onPress?.(event), trigger && (event?.isDefaultPrevented() || (navigation?.emit({
|
|
92
|
+
type: "tabPress",
|
|
93
|
+
target: trigger.type === "internal" ? trigger.route.key : trigger?.href,
|
|
94
|
+
canPreventDefault: !0
|
|
95
|
+
}), shouldHandleMouseEvent(event) && switchTab(name, {
|
|
96
|
+
resetOnFocus
|
|
97
|
+
})));
|
|
98
|
+
}, [onPress, name, resetOnFocus, trigger, navigation, switchTab]),
|
|
99
|
+
handleOnLongPress = useCallback(event => {
|
|
100
|
+
onLongPress?.(event), trigger && (event?.isDefaultPrevented() || (navigation?.emit({
|
|
101
|
+
type: "tabLongPress",
|
|
102
|
+
target: trigger.type === "internal" ? trigger.route.key : trigger?.href
|
|
103
|
+
}), shouldHandleMouseEvent(event) && switchTab(name, {
|
|
104
|
+
resetOnFocus
|
|
105
|
+
})));
|
|
106
|
+
}, [onLongPress, name, resetOnFocus, trigger, navigation, switchTab]),
|
|
107
|
+
triggerProps = {
|
|
108
|
+
isFocused: !!trigger?.isFocused,
|
|
109
|
+
onPress: handleOnPress,
|
|
110
|
+
onLongPress: handleOnLongPress
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
switchTab,
|
|
114
|
+
getTrigger,
|
|
115
|
+
trigger,
|
|
116
|
+
triggerProps
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const styles = StyleSheet.create({
|
|
120
|
+
tabTrigger: {
|
|
121
|
+
flexDirection: "row",
|
|
122
|
+
justifyContent: "space-between"
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
export { TabTrigger, isTabTrigger, useTabTrigger };
|
|
126
|
+
//# sourceMappingURL=TabTrigger.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Slot","use","useCallback","StyleSheet","Pressable","TabTriggerMapContext","appendBaseUrl","router","stripGroupSegmentsFromPath","useNavigatorContext","jsx","TabTriggerSlot","shouldHandleMouseEvent","e","metaKey","altKey","ctrlKey","shiftKey","button","includes","currentTarget","target","TabTrigger","asChild","name","href","resetOnFocus","props","trigger","triggerProps","useTabTrigger","style","styles","tabTrigger","resolvedHref","children","reactNativeWebProps","isTabTrigger","child","type","options","state","navigation","onPress","onLongPress","triggerMap","getTrigger","name2","config","isFocused","index","route","routes","switchTab","options2","navigate","dispatch","action","payload","handleOnPress","event","isDefaultPrevented","emit","key","canPreventDefault","handleOnLongPress","create","flexDirection","justifyContent"],"sources":["../../../src/ui/TabTrigger.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import { use, useCallback } from "react";
|
|
4
|
+
import { StyleSheet, Pressable } from "react-native";
|
|
5
|
+
import { TabTriggerMapContext } from "./TabContext.native.js";
|
|
6
|
+
import { appendBaseUrl } from "../fork/getPathFromState-mods.native.js";
|
|
7
|
+
import { router } from "../router/imperative-api.native.js";
|
|
8
|
+
import { stripGroupSegmentsFromPath } from "../router/matchers.native.js";
|
|
9
|
+
import { useNavigatorContext } from "../views/Navigator.native.js";
|
|
10
|
+
var TabTriggerSlot = Slot;
|
|
11
|
+
function shouldHandleMouseEvent(e) {
|
|
12
|
+
return e && "button" in e ? !e.metaKey && !e.altKey && !e.ctrlKey && !e.shiftKey && (e.button == null || e.button === 0) && [void 0, null, "", "self"].includes(e.currentTarget.target) : !0;
|
|
13
|
+
}
|
|
14
|
+
function TabTrigger(param) {
|
|
15
|
+
var {
|
|
16
|
+
asChild,
|
|
17
|
+
name,
|
|
18
|
+
href,
|
|
19
|
+
resetOnFocus,
|
|
20
|
+
...props
|
|
21
|
+
} = param,
|
|
22
|
+
{
|
|
23
|
+
trigger,
|
|
24
|
+
triggerProps
|
|
25
|
+
} = useTabTrigger({
|
|
26
|
+
name,
|
|
27
|
+
resetOnFocus,
|
|
28
|
+
...props
|
|
29
|
+
});
|
|
30
|
+
if (asChild) return /* @__PURE__ */_jsx(TabTriggerSlot, {
|
|
31
|
+
style: styles.tabTrigger,
|
|
32
|
+
...props,
|
|
33
|
+
...triggerProps,
|
|
34
|
+
href: trigger?.resolvedHref,
|
|
35
|
+
children: props.children
|
|
36
|
+
});
|
|
37
|
+
var reactNativeWebProps = {
|
|
38
|
+
href: trigger?.resolvedHref
|
|
39
|
+
};
|
|
40
|
+
return /* @__PURE__ */_jsx(Pressable, {
|
|
41
|
+
style: styles.tabTrigger,
|
|
42
|
+
...reactNativeWebProps,
|
|
43
|
+
...props,
|
|
44
|
+
...triggerProps,
|
|
45
|
+
children: props.children
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function isTabTrigger(child) {
|
|
49
|
+
return child.type === TabTrigger;
|
|
50
|
+
}
|
|
51
|
+
function useTabTrigger(options) {
|
|
52
|
+
var {
|
|
53
|
+
state,
|
|
54
|
+
navigation
|
|
55
|
+
} = useNavigatorContext(),
|
|
56
|
+
{
|
|
57
|
+
name,
|
|
58
|
+
resetOnFocus,
|
|
59
|
+
onPress,
|
|
60
|
+
onLongPress
|
|
61
|
+
} = options,
|
|
62
|
+
triggerMap = use(TabTriggerMapContext),
|
|
63
|
+
getTrigger = useCallback(function (name2) {
|
|
64
|
+
var config = triggerMap[name2];
|
|
65
|
+
if (config) return {
|
|
66
|
+
isFocused: state.index === config.index,
|
|
67
|
+
route: state.routes[config.index],
|
|
68
|
+
resolvedHref: stripGroupSegmentsFromPath(appendBaseUrl(config.href)),
|
|
69
|
+
...config
|
|
70
|
+
};
|
|
71
|
+
}, [triggerMap, state]),
|
|
72
|
+
trigger = name !== void 0 ? getTrigger(name) : void 0,
|
|
73
|
+
switchTab = useCallback(function (name2, options2) {
|
|
74
|
+
var config = triggerMap[name2];
|
|
75
|
+
return config ? config.type === "external" ? router.navigate(config.href) : navigation?.dispatch({
|
|
76
|
+
...config.action,
|
|
77
|
+
type: "JUMP_TO",
|
|
78
|
+
payload: {
|
|
79
|
+
...config.action.payload,
|
|
80
|
+
...options2
|
|
81
|
+
}
|
|
82
|
+
}) : navigation?.dispatch({
|
|
83
|
+
type: "JUMP_TO",
|
|
84
|
+
payload: {
|
|
85
|
+
name: name2
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}, [navigation, triggerMap]),
|
|
89
|
+
handleOnPress = useCallback(function (event) {
|
|
90
|
+
onPress?.(event), trigger && (event?.isDefaultPrevented() || (navigation?.emit({
|
|
91
|
+
type: "tabPress",
|
|
92
|
+
target: trigger.type === "internal" ? trigger.route.key : trigger?.href,
|
|
93
|
+
canPreventDefault: !0
|
|
94
|
+
}), shouldHandleMouseEvent(event) && switchTab(name, {
|
|
95
|
+
resetOnFocus
|
|
96
|
+
})));
|
|
97
|
+
}, [onPress, name, resetOnFocus, trigger, navigation, switchTab]),
|
|
98
|
+
handleOnLongPress = useCallback(function (event) {
|
|
99
|
+
onLongPress?.(event), trigger && (event?.isDefaultPrevented() || (navigation?.emit({
|
|
100
|
+
type: "tabLongPress",
|
|
101
|
+
target: trigger.type === "internal" ? trigger.route.key : trigger?.href
|
|
102
|
+
}), shouldHandleMouseEvent(event) && switchTab(name, {
|
|
103
|
+
resetOnFocus
|
|
104
|
+
})));
|
|
105
|
+
}, [onLongPress, name, resetOnFocus, trigger, navigation, switchTab]),
|
|
106
|
+
triggerProps = {
|
|
107
|
+
isFocused: !!trigger?.isFocused,
|
|
108
|
+
onPress: handleOnPress,
|
|
109
|
+
onLongPress: handleOnLongPress
|
|
110
|
+
};
|
|
111
|
+
return {
|
|
112
|
+
switchTab,
|
|
113
|
+
getTrigger,
|
|
114
|
+
trigger,
|
|
115
|
+
triggerProps
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
var styles = StyleSheet.create({
|
|
119
|
+
tabTrigger: {
|
|
120
|
+
flexDirection: "row",
|
|
121
|
+
justifyContent: "space-between"
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
export { TabTrigger, isTabTrigger, useTabTrigger };
|
|
125
|
+
//# sourceMappingURL=TabTrigger.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","Slot","use","useCallback","StyleSheet","Pressable","TabTriggerMapContext","appendBaseUrl","router","stripGroupSegmentsFromPath","useNavigatorContext","TabTriggerSlot","shouldHandleMouseEvent","e","metaKey","altKey","ctrlKey","shiftKey","button","includes","currentTarget","target","TabTrigger","param","asChild","name","href","resetOnFocus","props","trigger","triggerProps","useTabTrigger","style","styles","tabTrigger","resolvedHref","children","reactNativeWebProps","isTabTrigger","child","type","options","state","navigation","onPress","onLongPress","triggerMap","getTrigger","name2","config","isFocused","index","route","routes","switchTab","options2","navigate","dispatch","action","payload","handleOnPress","event","isDefaultPrevented","emit","key","canPreventDefault","handleOnLongPress"],"sources":["../../../src/ui/TabTrigger.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|