one 1.2.5 → 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.
Files changed (142) hide show
  1. package/dist/cjs/ui/Slot.cjs +42 -0
  2. package/dist/cjs/ui/Slot.js +27 -0
  3. package/dist/cjs/ui/Slot.js.map +6 -0
  4. package/dist/cjs/ui/Slot.native.js +48 -0
  5. package/dist/cjs/ui/Slot.native.js.map +1 -0
  6. package/dist/cjs/ui/TabContext.cjs +44 -0
  7. package/dist/cjs/ui/TabContext.js +35 -0
  8. package/dist/cjs/ui/TabContext.js.map +6 -0
  9. package/dist/cjs/ui/TabContext.native.js +47 -0
  10. package/dist/cjs/ui/TabContext.native.js.map +1 -0
  11. package/dist/cjs/ui/TabList.cjs +52 -0
  12. package/dist/cjs/ui/TabList.js +38 -0
  13. package/dist/cjs/ui/TabList.js.map +6 -0
  14. package/dist/cjs/ui/TabList.native.js +57 -0
  15. package/dist/cjs/ui/TabList.native.js.map +1 -0
  16. package/dist/cjs/ui/TabRouter.cjs +47 -0
  17. package/dist/cjs/ui/TabRouter.js +41 -0
  18. package/dist/cjs/ui/TabRouter.js.map +6 -0
  19. package/dist/cjs/ui/TabRouter.native.js +57 -0
  20. package/dist/cjs/ui/TabRouter.native.js.map +1 -0
  21. package/dist/cjs/ui/TabSlot.cjs +115 -0
  22. package/dist/cjs/ui/TabSlot.js +91 -0
  23. package/dist/cjs/ui/TabSlot.js.map +6 -0
  24. package/dist/cjs/ui/TabSlot.native.js +120 -0
  25. package/dist/cjs/ui/TabSlot.native.js.map +1 -0
  26. package/dist/cjs/ui/TabTrigger.cjs +151 -0
  27. package/dist/cjs/ui/TabTrigger.js +120 -0
  28. package/dist/cjs/ui/TabTrigger.js.map +6 -0
  29. package/dist/cjs/ui/TabTrigger.native.js +153 -0
  30. package/dist/cjs/ui/TabTrigger.native.js.map +1 -0
  31. package/dist/cjs/ui/Tabs.cjs +175 -0
  32. package/dist/cjs/ui/Tabs.js +121 -0
  33. package/dist/cjs/ui/Tabs.js.map +6 -0
  34. package/dist/cjs/ui/Tabs.native.js +191 -0
  35. package/dist/cjs/ui/Tabs.native.js.map +1 -0
  36. package/dist/cjs/ui/common.cjs +160 -0
  37. package/dist/cjs/ui/common.js +146 -0
  38. package/dist/cjs/ui/common.js.map +6 -0
  39. package/dist/cjs/ui/common.native.js +223 -0
  40. package/dist/cjs/ui/common.native.js.map +1 -0
  41. package/dist/cjs/ui/index.cjs +18 -0
  42. package/dist/cjs/ui/index.js +15 -0
  43. package/dist/cjs/ui/index.js.map +6 -0
  44. package/dist/cjs/ui/index.native.js +21 -0
  45. package/dist/cjs/ui/index.native.js.map +1 -0
  46. package/dist/cjs/ui/useComponent.cjs +46 -0
  47. package/dist/cjs/ui/useComponent.js +37 -0
  48. package/dist/cjs/ui/useComponent.js.map +6 -0
  49. package/dist/cjs/ui/useComponent.native.js +53 -0
  50. package/dist/cjs/ui/useComponent.native.js.map +1 -0
  51. package/dist/esm/ui/Slot.js +17 -0
  52. package/dist/esm/ui/Slot.js.map +6 -0
  53. package/dist/esm/ui/Slot.mjs +19 -0
  54. package/dist/esm/ui/Slot.mjs.map +1 -0
  55. package/dist/esm/ui/Slot.native.js +22 -0
  56. package/dist/esm/ui/Slot.native.js.map +1 -0
  57. package/dist/esm/ui/TabContext.js +19 -0
  58. package/dist/esm/ui/TabContext.js.map +6 -0
  59. package/dist/esm/ui/TabContext.mjs +17 -0
  60. package/dist/esm/ui/TabContext.mjs.map +1 -0
  61. package/dist/esm/ui/TabContext.native.js +17 -0
  62. package/dist/esm/ui/TabContext.native.js.map +1 -0
  63. package/dist/esm/ui/TabList.js +24 -0
  64. package/dist/esm/ui/TabList.js.map +6 -0
  65. package/dist/esm/ui/TabList.mjs +28 -0
  66. package/dist/esm/ui/TabList.mjs.map +1 -0
  67. package/dist/esm/ui/TabList.native.js +30 -0
  68. package/dist/esm/ui/TabList.native.js.map +1 -0
  69. package/dist/esm/ui/TabRouter.js +27 -0
  70. package/dist/esm/ui/TabRouter.js.map +6 -0
  71. package/dist/esm/ui/TabRouter.mjs +24 -0
  72. package/dist/esm/ui/TabRouter.mjs.map +1 -0
  73. package/dist/esm/ui/TabRouter.native.js +31 -0
  74. package/dist/esm/ui/TabRouter.native.js.map +1 -0
  75. package/dist/esm/ui/TabSlot.js +80 -0
  76. package/dist/esm/ui/TabSlot.js.map +6 -0
  77. package/dist/esm/ui/TabSlot.mjs +89 -0
  78. package/dist/esm/ui/TabSlot.mjs.map +1 -0
  79. package/dist/esm/ui/TabSlot.native.js +91 -0
  80. package/dist/esm/ui/TabSlot.native.js.map +1 -0
  81. package/dist/esm/ui/TabTrigger.js +115 -0
  82. package/dist/esm/ui/TabTrigger.js.map +6 -0
  83. package/dist/esm/ui/TabTrigger.mjs +126 -0
  84. package/dist/esm/ui/TabTrigger.mjs.map +1 -0
  85. package/dist/esm/ui/TabTrigger.native.js +125 -0
  86. package/dist/esm/ui/TabTrigger.native.js.map +1 -0
  87. package/dist/esm/ui/Tabs.js +130 -0
  88. package/dist/esm/ui/Tabs.js.map +6 -0
  89. package/dist/esm/ui/Tabs.mjs +149 -0
  90. package/dist/esm/ui/Tabs.mjs.map +1 -0
  91. package/dist/esm/ui/Tabs.native.js +162 -0
  92. package/dist/esm/ui/Tabs.native.js.map +1 -0
  93. package/dist/esm/ui/common.js +133 -0
  94. package/dist/esm/ui/common.js.map +6 -0
  95. package/dist/esm/ui/common.mjs +135 -0
  96. package/dist/esm/ui/common.mjs.map +1 -0
  97. package/dist/esm/ui/common.native.js +195 -0
  98. package/dist/esm/ui/common.native.js.map +1 -0
  99. package/dist/esm/ui/index.js +2 -0
  100. package/dist/esm/ui/index.js.map +6 -0
  101. package/dist/esm/ui/index.mjs +2 -0
  102. package/dist/esm/ui/index.mjs.map +1 -0
  103. package/dist/esm/ui/index.native.js +2 -0
  104. package/dist/esm/ui/index.native.js.map +1 -0
  105. package/dist/esm/ui/useComponent.js +22 -0
  106. package/dist/esm/ui/useComponent.js.map +6 -0
  107. package/dist/esm/ui/useComponent.mjs +23 -0
  108. package/dist/esm/ui/useComponent.mjs.map +1 -0
  109. package/dist/esm/ui/useComponent.native.js +27 -0
  110. package/dist/esm/ui/useComponent.native.js.map +1 -0
  111. package/package.json +18 -9
  112. package/src/ui/README.md +121 -0
  113. package/src/ui/Slot.tsx +34 -0
  114. package/src/ui/TabContext.tsx +115 -0
  115. package/src/ui/TabList.tsx +47 -0
  116. package/src/ui/TabRouter.tsx +79 -0
  117. package/src/ui/TabSlot.tsx +170 -0
  118. package/src/ui/TabTrigger.tsx +282 -0
  119. package/src/ui/Tabs.tsx +313 -0
  120. package/src/ui/common.tsx +277 -0
  121. package/src/ui/index.ts +1 -0
  122. package/src/ui/useComponent.tsx +42 -0
  123. package/types/ui/Slot.d.ts +6 -0
  124. package/types/ui/Slot.d.ts.map +1 -0
  125. package/types/ui/TabContext.d.ts +190 -0
  126. package/types/ui/TabContext.d.ts.map +1 -0
  127. package/types/ui/TabList.d.ts +25 -0
  128. package/types/ui/TabList.d.ts.map +1 -0
  129. package/types/ui/TabRouter.d.ts +103 -0
  130. package/types/ui/TabRouter.d.ts.map +1 -0
  131. package/types/ui/TabSlot.d.ts +73 -0
  132. package/types/ui/TabSlot.d.ts.map +1 -0
  133. package/types/ui/TabTrigger.d.ts +88 -0
  134. package/types/ui/TabTrigger.d.ts.map +1 -0
  135. package/types/ui/Tabs.d.ts +255 -0
  136. package/types/ui/Tabs.d.ts.map +1 -0
  137. package/types/ui/common.d.ts +40 -0
  138. package/types/ui/common.d.ts.map +1 -0
  139. package/types/ui/index.d.ts +2 -0
  140. package/types/ui/index.d.ts.map +1 -0
  141. package/types/ui/useComponent.d.ts +10 -0
  142. 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":[]}