@react-navigation/bottom-tabs 7.8.12 → 8.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/lib/module/index.js +3 -2
  2. package/lib/module/index.js.map +1 -1
  3. package/lib/module/navigators/createBottomTabNavigator.js +27 -9
  4. package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
  5. package/lib/module/utils/BottomTabAnimationContext.js +5 -0
  6. package/lib/module/utils/BottomTabAnimationContext.js.map +1 -0
  7. package/lib/module/utils/useBottomTabAnimation.js +12 -0
  8. package/lib/module/utils/useBottomTabAnimation.js.map +1 -0
  9. package/lib/module/utils/useTabBarPosition.js +34 -0
  10. package/lib/module/utils/useTabBarPosition.js.map +1 -0
  11. package/lib/module/views/BottomTabBar.js +46 -49
  12. package/lib/module/views/BottomTabBar.js.map +1 -1
  13. package/lib/module/views/BottomTabItem.js +17 -15
  14. package/lib/module/views/BottomTabItem.js.map +1 -1
  15. package/lib/module/views/BottomTabViewCommon.js +16 -0
  16. package/lib/module/views/BottomTabViewCommon.js.map +1 -0
  17. package/lib/module/views/{BottomTabView.js → BottomTabViewCustom.js} +107 -106
  18. package/lib/module/views/BottomTabViewCustom.js.map +1 -0
  19. package/lib/module/views/BottomTabViewNative.android.js +4 -0
  20. package/lib/module/views/BottomTabViewNative.android.js.map +1 -0
  21. package/lib/module/views/BottomTabViewNative.ios.js +4 -0
  22. package/lib/module/views/BottomTabViewNative.ios.js.map +1 -0
  23. package/lib/module/views/BottomTabViewNative.js +5 -0
  24. package/lib/module/views/BottomTabViewNative.js.map +1 -0
  25. package/lib/module/{unstable/NativeBottomTabView.native.js → views/BottomTabViewNativeImpl.js} +100 -77
  26. package/lib/module/views/BottomTabViewNativeImpl.js.map +1 -0
  27. package/lib/module/views/ScreenContent.js +39 -0
  28. package/lib/module/views/ScreenContent.js.map +1 -0
  29. package/lib/module/views/TabBarIcon.js +40 -4
  30. package/lib/module/views/TabBarIcon.js.map +1 -1
  31. package/lib/typescript/src/index.d.ts +4 -3
  32. package/lib/typescript/src/index.d.ts.map +1 -1
  33. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts +10 -6
  34. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts.map +1 -1
  35. package/lib/typescript/src/types.d.ts +383 -115
  36. package/lib/typescript/src/types.d.ts.map +1 -1
  37. package/lib/typescript/src/utils/BottomTabAnimationContext.d.ts +4 -0
  38. package/lib/typescript/src/utils/BottomTabAnimationContext.d.ts.map +1 -0
  39. package/lib/typescript/src/utils/useBottomTabAnimation.d.ts +2 -0
  40. package/lib/typescript/src/utils/useBottomTabAnimation.d.ts.map +1 -0
  41. package/lib/typescript/src/utils/useTabBarPosition.d.ts +3 -0
  42. package/lib/typescript/src/utils/useTabBarPosition.d.ts.map +1 -0
  43. package/lib/typescript/src/views/BottomTabBar.d.ts +4 -4
  44. package/lib/typescript/src/views/BottomTabBar.d.ts.map +1 -1
  45. package/lib/typescript/src/views/BottomTabItem.d.ts +16 -14
  46. package/lib/typescript/src/views/BottomTabItem.d.ts.map +1 -1
  47. package/lib/typescript/src/views/{BottomTabView.d.ts → BottomTabViewCommon.d.ts} +2 -2
  48. package/lib/typescript/src/views/BottomTabViewCommon.d.ts.map +1 -0
  49. package/lib/typescript/src/views/BottomTabViewCustom.d.ts +10 -0
  50. package/lib/typescript/src/views/BottomTabViewCustom.d.ts.map +1 -0
  51. package/lib/typescript/src/views/BottomTabViewNative.android.d.ts +2 -0
  52. package/lib/typescript/src/views/BottomTabViewNative.android.d.ts.map +1 -0
  53. package/lib/typescript/src/views/BottomTabViewNative.d.ts +3 -0
  54. package/lib/typescript/src/views/BottomTabViewNative.d.ts.map +1 -0
  55. package/lib/typescript/src/views/BottomTabViewNative.ios.d.ts +2 -0
  56. package/lib/typescript/src/views/BottomTabViewNative.ios.d.ts.map +1 -0
  57. package/lib/typescript/src/views/BottomTabViewNativeImpl.d.ts +10 -0
  58. package/lib/typescript/src/views/BottomTabViewNativeImpl.d.ts.map +1 -0
  59. package/lib/typescript/src/views/ScreenContent.d.ts +13 -0
  60. package/lib/typescript/src/views/ScreenContent.d.ts.map +1 -0
  61. package/lib/typescript/src/views/TabBarIcon.d.ts +9 -9
  62. package/lib/typescript/src/views/TabBarIcon.d.ts.map +1 -1
  63. package/package.json +16 -21
  64. package/src/index.tsx +7 -2
  65. package/src/navigators/createBottomTabNavigator.tsx +78 -27
  66. package/src/types.tsx +417 -122
  67. package/src/utils/BottomTabAnimationContext.tsx +7 -0
  68. package/src/utils/useBottomTabAnimation.tsx +15 -0
  69. package/src/utils/useTabBarPosition.tsx +41 -0
  70. package/src/views/BottomTabBar.tsx +68 -67
  71. package/src/views/BottomTabItem.tsx +39 -34
  72. package/src/views/BottomTabViewCommon.tsx +26 -0
  73. package/src/views/{BottomTabView.tsx → BottomTabViewCustom.tsx} +142 -129
  74. package/src/views/BottomTabViewNative.android.tsx +1 -0
  75. package/src/views/BottomTabViewNative.ios.tsx +1 -0
  76. package/src/views/BottomTabViewNative.tsx +3 -0
  77. package/src/{unstable/NativeBottomTabView.native.tsx → views/BottomTabViewNativeImpl.tsx} +147 -116
  78. package/src/views/ScreenContent.tsx +58 -0
  79. package/src/views/TabBarIcon.tsx +63 -10
  80. package/lib/module/unstable/NativeBottomTabView.js +0 -6
  81. package/lib/module/unstable/NativeBottomTabView.js.map +0 -1
  82. package/lib/module/unstable/NativeBottomTabView.native.js.map +0 -1
  83. package/lib/module/unstable/NativeScreen/NativeScreen.js +0 -169
  84. package/lib/module/unstable/NativeScreen/NativeScreen.js.map +0 -1
  85. package/lib/module/unstable/NativeScreen/debounce.js +0 -12
  86. package/lib/module/unstable/NativeScreen/debounce.js.map +0 -1
  87. package/lib/module/unstable/NativeScreen/types.js +0 -4
  88. package/lib/module/unstable/NativeScreen/types.js.map +0 -1
  89. package/lib/module/unstable/NativeScreen/useAnimatedHeaderHeight.js +0 -12
  90. package/lib/module/unstable/NativeScreen/useAnimatedHeaderHeight.js.map +0 -1
  91. package/lib/module/unstable/NativeScreen/useHeaderConfig.js +0 -283
  92. package/lib/module/unstable/NativeScreen/useHeaderConfig.js.map +0 -1
  93. package/lib/module/unstable/createNativeBottomTabNavigator.js +0 -6
  94. package/lib/module/unstable/createNativeBottomTabNavigator.js.map +0 -1
  95. package/lib/module/unstable/createNativeBottomTabNavigator.native.js +0 -65
  96. package/lib/module/unstable/createNativeBottomTabNavigator.native.js.map +0 -1
  97. package/lib/module/unstable/index.js +0 -16
  98. package/lib/module/unstable/index.js.map +0 -1
  99. package/lib/module/unstable/types.js +0 -4
  100. package/lib/module/unstable/types.js.map +0 -1
  101. package/lib/module/views/BottomTabView.js.map +0 -1
  102. package/lib/module/views/ScreenFallback.js +0 -42
  103. package/lib/module/views/ScreenFallback.js.map +0 -1
  104. package/lib/typescript/src/unstable/NativeBottomTabView.d.ts +0 -10
  105. package/lib/typescript/src/unstable/NativeBottomTabView.d.ts.map +0 -1
  106. package/lib/typescript/src/unstable/NativeBottomTabView.native.d.ts +0 -10
  107. package/lib/typescript/src/unstable/NativeBottomTabView.native.d.ts.map +0 -1
  108. package/lib/typescript/src/unstable/NativeScreen/NativeScreen.d.ts +0 -8
  109. package/lib/typescript/src/unstable/NativeScreen/NativeScreen.d.ts.map +0 -1
  110. package/lib/typescript/src/unstable/NativeScreen/debounce.d.ts +0 -2
  111. package/lib/typescript/src/unstable/NativeScreen/debounce.d.ts.map +0 -1
  112. package/lib/typescript/src/unstable/NativeScreen/types.d.ts +0 -467
  113. package/lib/typescript/src/unstable/NativeScreen/types.d.ts.map +0 -1
  114. package/lib/typescript/src/unstable/NativeScreen/useAnimatedHeaderHeight.d.ts +0 -5
  115. package/lib/typescript/src/unstable/NativeScreen/useAnimatedHeaderHeight.d.ts.map +0 -1
  116. package/lib/typescript/src/unstable/NativeScreen/useHeaderConfig.d.ts +0 -11
  117. package/lib/typescript/src/unstable/NativeScreen/useHeaderConfig.d.ts.map +0 -1
  118. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.d.ts +0 -2
  119. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.d.ts.map +0 -1
  120. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.native.d.ts +0 -16
  121. package/lib/typescript/src/unstable/createNativeBottomTabNavigator.native.d.ts.map +0 -1
  122. package/lib/typescript/src/unstable/index.d.ts +0 -13
  123. package/lib/typescript/src/unstable/index.d.ts.map +0 -1
  124. package/lib/typescript/src/unstable/types.d.ts +0 -302
  125. package/lib/typescript/src/unstable/types.d.ts.map +0 -1
  126. package/lib/typescript/src/views/BottomTabView.d.ts.map +0 -1
  127. package/lib/typescript/src/views/ScreenFallback.d.ts +0 -18
  128. package/lib/typescript/src/views/ScreenFallback.d.ts.map +0 -1
  129. package/src/unstable/NativeBottomTabView.tsx +0 -20
  130. package/src/unstable/NativeScreen/NativeScreen.tsx +0 -244
  131. package/src/unstable/NativeScreen/debounce.tsx +0 -14
  132. package/src/unstable/NativeScreen/types.ts +0 -517
  133. package/src/unstable/NativeScreen/useAnimatedHeaderHeight.tsx +0 -18
  134. package/src/unstable/NativeScreen/useHeaderConfig.tsx +0 -423
  135. package/src/unstable/createNativeBottomTabNavigator.native.tsx +0 -116
  136. package/src/unstable/createNativeBottomTabNavigator.tsx +0 -4
  137. package/src/unstable/index.tsx +0 -22
  138. package/src/unstable/types.tsx +0 -385
  139. package/src/views/ScreenFallback.tsx +0 -50
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
- import { getHeaderTitle, Header, SafeAreaProviderCompat, Screen } from '@react-navigation/elements';
3
+ import { Container, Lazy, SafeAreaProviderCompat } from '@react-navigation/elements/internal';
4
4
  import { StackActions } from '@react-navigation/native';
5
5
  import * as React from 'react';
6
6
  import { Animated, Platform, StyleSheet } from 'react-native';
7
- import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
7
+ import { Screen, ScreenContainer } from 'react-native-screens';
8
8
  import { FadeTransition, ShiftTransition } from "../TransitionConfigs/TransitionPresets.js";
9
+ import { BottomTabAnimationContext } from "../utils/BottomTabAnimationContext.js";
9
10
  import { BottomTabBarHeightCallbackContext } from "../utils/BottomTabBarHeightCallbackContext.js";
10
11
  import { BottomTabBarHeightContext } from "../utils/BottomTabBarHeightContext.js";
11
12
  import { useAnimatedHashMap } from "../utils/useAnimatedHashMap.js";
13
+ import { useTabBarPosition } from "../utils/useTabBarPosition.js";
12
14
  import { BottomTabBar, getTabBarHeight } from "./BottomTabBar.js";
13
- import { MaybeScreen, MaybeScreenContainer } from "./ScreenFallback.js";
15
+ import { ScreenContent } from "./ScreenContent.js";
14
16
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
17
  const EPSILON = 1e-5;
16
18
  const STATE_INACTIVE = 0;
@@ -43,25 +45,17 @@ const hasAnimation = options => {
43
45
  const renderTabBarDefault = props => /*#__PURE__*/_jsx(BottomTabBar, {
44
46
  ...props
45
47
  });
46
- export function BottomTabView(props) {
48
+ export function BottomTabViewCustom({
49
+ tabBar = renderTabBarDefault,
50
+ state,
51
+ navigation,
52
+ descriptors,
53
+ detachInactiveScreens = Platform.OS === 'web' || Platform.OS === 'android' || Platform.OS === 'ios'
54
+ }) {
47
55
  const {
48
- tabBar = renderTabBarDefault,
49
- state,
50
- navigation,
51
- descriptors,
52
- safeAreaInsets,
53
- detachInactiveScreens = Platform.OS === 'web' || Platform.OS === 'android' || Platform.OS === 'ios'
54
- } = props;
55
- const focusedRouteKey = state.routes[state.index].key;
56
-
57
- /**
58
- * List of loaded tabs, tabs will be loaded when navigated to.
59
- */
60
- const [loaded, setLoaded] = React.useState([focusedRouteKey]);
61
- if (!loaded.includes(focusedRouteKey)) {
62
- // Set the current tab to be loaded if it was not loaded before
63
- setLoaded([...loaded, focusedRouteKey]);
64
- }
56
+ routes
57
+ } = state;
58
+ const focusedRouteKey = routes[state.index].key;
65
59
  const previousRouteKeyRef = React.useRef(focusedRouteKey);
66
60
  const tabAnims = useAnimatedHashMap(state);
67
61
  React.useEffect(() => {
@@ -121,89 +115,85 @@ export function BottomTabView(props) {
121
115
  animateToIndex();
122
116
  previousRouteKeyRef.current = focusedRouteKey;
123
117
  }, [descriptors, focusedRouteKey, navigation, state.index, state.routes, tabAnims]);
124
- const dimensions = SafeAreaProviderCompat.initialMetrics.frame;
125
118
  const [tabBarHeight, setTabBarHeight] = React.useState(() => getTabBarHeight({
126
119
  state,
127
120
  descriptors,
128
- dimensions,
129
- insets: {
130
- ...SafeAreaProviderCompat.initialMetrics.insets,
131
- ...props.safeAreaInsets
132
- },
133
- style: descriptors[state.routes[state.index].key].options.tabBarStyle
121
+ dimensions: SafeAreaProviderCompat.initialMetrics.frame,
122
+ insets: SafeAreaProviderCompat.initialMetrics.insets,
123
+ style: descriptors[focusedRouteKey].options.tabBarStyle
134
124
  }));
135
- const renderTabBar = () => {
136
- return /*#__PURE__*/_jsx(SafeAreaInsetsContext.Consumer, {
137
- children: insets => tabBar({
138
- state: state,
139
- descriptors: descriptors,
140
- navigation: navigation,
141
- insets: {
142
- top: safeAreaInsets?.top ?? insets?.top ?? 0,
143
- right: safeAreaInsets?.right ?? insets?.right ?? 0,
144
- bottom: safeAreaInsets?.bottom ?? insets?.bottom ?? 0,
145
- left: safeAreaInsets?.left ?? insets?.left ?? 0
146
- }
147
- })
148
- });
149
- };
150
- const {
151
- routes
152
- } = state;
153
-
154
- // If there is no animation, we only have 2 states: visible and invisible
155
- const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
156
- const {
157
- tabBarPosition = 'bottom'
158
- } = descriptors[focusedRouteKey].options;
159
125
  const tabBarElement = /*#__PURE__*/_jsx(BottomTabBarHeightCallbackContext.Provider, {
160
126
  value: setTabBarHeight,
161
- children: renderTabBar()
127
+ children: tabBar({
128
+ state: state,
129
+ descriptors: descriptors,
130
+ navigation: navigation
131
+ })
162
132
  }, "tabbar");
133
+
134
+ // If there is no animation, we only have 2 states: visible and invisible
135
+ const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
136
+ const tabBarPosition = useTabBarPosition(descriptors[focusedRouteKey].options);
163
137
  return /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
164
138
  style: {
165
139
  flexDirection: tabBarPosition === 'left' || tabBarPosition === 'right' ? 'row' : 'column'
166
140
  },
167
- children: [tabBarPosition === 'top' || tabBarPosition === 'left' ? tabBarElement : null, /*#__PURE__*/_jsx(MaybeScreenContainer, {
141
+ children: [tabBarPosition === 'top' || tabBarPosition === 'left' ? tabBarElement : null, /*#__PURE__*/_jsx(ScreenContainer, {
168
142
  enabled: detachInactiveScreens,
169
143
  hasTwoStates: hasTwoStates,
170
144
  style: styles.screens,
171
145
  children: routes.map((route, index) => {
172
146
  const descriptor = descriptors[route.key];
147
+ const {
148
+ navigation,
149
+ options,
150
+ render
151
+ } = descriptor;
173
152
  const {
174
153
  lazy = true,
175
154
  animation = 'none',
176
- sceneStyleInterpolator = NAMED_TRANSITIONS_PRESETS[animation].sceneStyleInterpolator
177
- } = descriptor.options;
155
+ sceneStyleInterpolator = NAMED_TRANSITIONS_PRESETS[animation].sceneStyleInterpolator,
156
+ sceneStyle: customSceneStyle
157
+ } = options;
178
158
  const isFocused = state.index === index;
179
159
  const isPreloaded = state.preloadedRouteKeys.includes(route.key);
180
- if (lazy && !loaded.includes(route.key) && !isFocused && !isPreloaded) {
181
- // Don't render a lazy screen if we've never navigated to it or it wasn't preloaded
182
- return null;
183
- }
184
- const {
185
- freezeOnBlur,
186
- header = ({
187
- layout,
188
- options
189
- }) => /*#__PURE__*/_jsx(Header, {
190
- ...options,
191
- layout: layout,
192
- title: getHeaderTitle(options, route.name)
193
- }),
194
- headerShown,
195
- headerStatusBarHeight,
196
- headerTransparent,
197
- sceneStyle: customSceneStyle
198
- } = descriptor.options;
199
- const {
200
- sceneStyle
201
- } = sceneStyleInterpolator?.({
202
- current: {
203
- progress: tabAnims[route.key]
204
- }
205
- }) ?? {};
206
160
  const animationEnabled = hasAnimation(descriptor.options);
161
+ const content = /*#__PURE__*/_jsx(AnimatedScreenContent, {
162
+ progress: tabAnims[route.key],
163
+ animationEnabled: animationEnabled,
164
+ sceneStyleInterpolator: sceneStyleInterpolator,
165
+ style: customSceneStyle,
166
+ children: /*#__PURE__*/_jsx(Lazy, {
167
+ enabled: lazy,
168
+ visible: isFocused || isPreloaded,
169
+ children: /*#__PURE__*/_jsx(ScreenContent, {
170
+ isFocused: isFocused,
171
+ route: route,
172
+ navigation: navigation,
173
+ options: options,
174
+ children: /*#__PURE__*/_jsx(BottomTabBarHeightContext.Provider, {
175
+ value: tabBarPosition === 'bottom' ? tabBarHeight : 0,
176
+ children: render()
177
+ })
178
+ })
179
+ })
180
+ });
181
+ if (Platform.OS === 'web') {
182
+ /**
183
+ * Don't use react-native-screens on web:
184
+ * - It applies display: none as fallback, which triggers `onLayout` events
185
+ * - We still need to hide the view when screens is not enabled
186
+ * - We can use `inert` to handle a11y better for unfocused screens
187
+ */
188
+ return /*#__PURE__*/_jsx(Container, {
189
+ inert: !isFocused,
190
+ style: {
191
+ ...StyleSheet.absoluteFillObject,
192
+ visibility: isFocused ? 'visible' : 'hidden'
193
+ },
194
+ children: content
195
+ }, route.key);
196
+ }
207
197
  const activityState = isFocused ? STATE_ON_TOP // the screen is on top after the transition
208
198
  : animationEnabled // is animation is not enabled, immediately move to inactive state
209
199
  ? tabAnims[route.key].interpolate({
@@ -214,42 +204,53 @@ export function BottomTabView(props) {
214
204
  ],
215
205
  extrapolate: 'extend'
216
206
  }) : STATE_INACTIVE;
217
- return /*#__PURE__*/_jsx(MaybeScreen, {
207
+ return /*#__PURE__*/_jsx(Screen, {
218
208
  style: [StyleSheet.absoluteFill, {
219
- zIndex: isFocused ? 0 : -1
209
+ zIndex: isFocused ? 0 : -1,
210
+ pointerEvents: isFocused ? 'auto' : 'none'
220
211
  }],
221
- active: activityState,
212
+ activityState: activityState,
222
213
  enabled: detachInactiveScreens,
223
- freezeOnBlur: freezeOnBlur,
224
214
  shouldFreeze: activityState === STATE_INACTIVE && !isPreloaded,
225
- children: /*#__PURE__*/_jsx(BottomTabBarHeightContext.Provider, {
226
- value: tabBarPosition === 'bottom' ? tabBarHeight : 0,
227
- children: /*#__PURE__*/_jsx(Screen, {
228
- focused: isFocused,
229
- route: descriptor.route,
230
- navigation: descriptor.navigation,
231
- headerShown: headerShown,
232
- headerStatusBarHeight: headerStatusBarHeight,
233
- headerTransparent: headerTransparent,
234
- header: header({
235
- layout: dimensions,
236
- route: descriptor.route,
237
- navigation: descriptor.navigation,
238
- options: descriptor.options
239
- }),
240
- style: [customSceneStyle, animationEnabled && sceneStyle],
241
- children: descriptor.render()
242
- })
243
- })
215
+ children: content
244
216
  }, route.key);
245
217
  })
246
218
  }, "screens"), tabBarPosition === 'bottom' || tabBarPosition === 'right' ? tabBarElement : null]
247
219
  });
248
220
  }
221
+ function AnimatedScreenContent({
222
+ progress,
223
+ animationEnabled,
224
+ sceneStyleInterpolator,
225
+ children,
226
+ style
227
+ }) {
228
+ const interpolationProps = React.useMemo(() => {
229
+ return {
230
+ current: {
231
+ progress
232
+ }
233
+ };
234
+ }, [progress]);
235
+ const {
236
+ sceneStyle
237
+ } = sceneStyleInterpolator?.(interpolationProps) ?? {};
238
+ return /*#__PURE__*/_jsx(Animated.View, {
239
+ style: [styles.scene, style, animationEnabled && sceneStyle],
240
+ children: /*#__PURE__*/_jsx(BottomTabAnimationContext.Provider, {
241
+ value: interpolationProps,
242
+ children: children
243
+ })
244
+ });
245
+ }
249
246
  const styles = StyleSheet.create({
250
247
  screens: {
251
248
  flex: 1,
252
249
  overflow: 'hidden'
250
+ },
251
+ scene: {
252
+ flex: 1,
253
+ pointerEvents: 'box-none'
253
254
  }
254
255
  });
255
- //# sourceMappingURL=BottomTabView.js.map
256
+ //# sourceMappingURL=BottomTabViewCustom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Container","Lazy","SafeAreaProviderCompat","StackActions","React","Animated","Platform","StyleSheet","Screen","ScreenContainer","FadeTransition","ShiftTransition","BottomTabAnimationContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useAnimatedHashMap","useTabBarPosition","BottomTabBar","getTabBarHeight","ScreenContent","jsx","_jsx","jsxs","_jsxs","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","NAMED_TRANSITIONS_PRESETS","fade","shift","none","sceneStyleInterpolator","undefined","transitionSpec","animation","config","duration","useNativeDriver","OS","hasAnimation","options","Boolean","renderTabBarDefault","props","BottomTabViewCustom","tabBar","state","navigation","descriptors","detachInactiveScreens","routes","focusedRouteKey","index","key","previousRouteKeyRef","useRef","tabAnims","useEffect","previousRouteKey","current","popToTopAction","popToTopOnBlur","prevRoute","find","route","type","popToTop","target","animateToIndex","emit","parallel","map","spec","toValue","filter","start","finished","dispatch","tabBarHeight","setTabBarHeight","useState","dimensions","initialMetrics","frame","insets","style","tabBarStyle","tabBarElement","Provider","value","children","hasTwoStates","some","tabBarPosition","flexDirection","enabled","styles","screens","descriptor","render","lazy","sceneStyle","customSceneStyle","isFocused","isPreloaded","preloadedRouteKeys","includes","animationEnabled","content","AnimatedScreenContent","progress","visible","inert","absoluteFillObject","visibility","activityState","interpolate","inputRange","outputRange","extrapolate","absoluteFill","zIndex","pointerEvents","shouldFreeze","interpolationProps","useMemo","View","scene","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabViewCustom.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export * from "./BottomTabViewNativeImpl.js";
4
+ //# sourceMappingURL=BottomTabViewNative.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.android.tsx"],"mappings":";;AAAA,cAAc,8BAA2B","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export * from "./BottomTabViewNativeImpl.js";
4
+ //# sourceMappingURL=BottomTabViewNative.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.ios.tsx"],"mappings":";;AAAA,cAAc,8BAA2B","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { BottomTabViewCustom } from "./BottomTabViewCustom.js";
4
+ export { BottomTabViewCustom as BottomTabViewNative };
5
+ //# sourceMappingURL=BottomTabViewNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BottomTabViewCustom","BottomTabViewNative"],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.tsx"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,0BAAuB;AAE3D,SAASA,mBAAmB,IAAIC,mBAAmB","ignoreList":[]}
@@ -1,17 +1,25 @@
1
1
  "use strict";
2
2
 
3
- import { getLabel, Lazy, SafeAreaProviderCompat, Screen as ScreenContent } from '@react-navigation/elements';
3
+ import { getLabel } from '@react-navigation/elements';
4
+ import { Color, Lazy, SafeAreaProviderCompat } from '@react-navigation/elements/internal';
4
5
  import { CommonActions, StackActions, useTheme } from '@react-navigation/native';
5
- import Color from 'color';
6
6
  import * as React from 'react';
7
- import { Platform, PlatformColor } from 'react-native';
7
+ import { Animated, Platform, PlatformColor } from 'react-native';
8
8
  import { BottomTabs, BottomTabsScreen } from 'react-native-screens';
9
- import { NativeScreen } from "./NativeScreen/NativeScreen.js";
10
- import { jsx as _jsx } from "react/jsx-runtime";
11
- export function NativeBottomTabView({
9
+ import { BottomTabAnimationContext } from "../utils/BottomTabAnimationContext.js";
10
+ import { BottomTabBarHeightContext } from "../utils/BottomTabBarHeightContext.js";
11
+ import { useTabBarPosition } from "../utils/useTabBarPosition.js";
12
+ import { ScreenContent } from "./ScreenContent.js";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ const ICON_SIZE = Platform.select({
15
+ ios: 25,
16
+ default: 24
17
+ });
18
+ export function BottomTabViewNative({
12
19
  state,
13
20
  navigation,
14
- descriptors
21
+ descriptors,
22
+ tabBar
15
23
  }) {
16
24
  const {
17
25
  dark,
@@ -52,33 +60,40 @@ export function NativeBottomTabView({
52
60
  ios: PlatformColor('label'),
53
61
  default: colors.text
54
62
  });
55
- const activeIndicatorColor = currentOptions?.tabBarActiveIndicatorColor ?? typeof activeTintColor === 'string' ? Color(activeTintColor)?.alpha(0.1).string() : undefined;
63
+ const activeIndicatorColor = currentOptions?.tabBarActiveIndicatorColor ?? Color(activeTintColor)?.alpha(0.1).string();
56
64
  const onTransitionStart = ({
57
- closing,
58
65
  route
59
66
  }) => {
60
67
  navigation.emit({
61
68
  type: 'transitionStart',
62
- data: {
63
- closing
64
- },
65
69
  target: route.key
66
70
  });
67
71
  };
68
72
  const onTransitionEnd = ({
69
- closing,
70
73
  route
71
74
  }) => {
72
75
  navigation.emit({
73
76
  type: 'transitionEnd',
74
- data: {
75
- closing
76
- },
77
77
  target: route.key
78
78
  });
79
79
  };
80
- return /*#__PURE__*/_jsx(SafeAreaProviderCompat, {
81
- children: /*#__PURE__*/_jsx(BottomTabs, {
80
+ const tabBarPosition = useTabBarPosition(currentOptions);
81
+ const hasCustomTabBar = tabBar != null;
82
+ const tabBarElement = tabBar ? tabBar({
83
+ state,
84
+ descriptors,
85
+ navigation
86
+ }) : null;
87
+ const bottomAccessory = currentOptions.bottomAccessory;
88
+ return /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
89
+ style: {
90
+ flexDirection: tabBarPosition === 'left' || tabBarPosition === 'right' ? 'row' : 'column'
91
+ },
92
+ children: [tabBarPosition === 'top' || tabBarPosition === 'left' ? tabBarElement : null, /*#__PURE__*/_jsx(BottomTabs, {
93
+ tabBarHidden: hasCustomTabBar,
94
+ bottomAccessory: bottomAccessory ? environment => bottomAccessory({
95
+ placement: environment
96
+ }) : undefined,
82
97
  tabBarItemLabelVisibilityMode: currentOptions?.tabBarLabelVisibilityMode,
83
98
  tabBarControllerMode: currentOptions?.tabBarControllerMode,
84
99
  tabBarMinimizeBehavior: currentOptions?.tabBarMinimizeBehavior,
@@ -100,10 +115,14 @@ export function NativeBottomTabView({
100
115
  onNativeFocusChange: e => {
101
116
  const route = state.routes.find(route => route.key === e.nativeEvent.tabKey);
102
117
  if (route) {
103
- navigation.emit({
118
+ const event = navigation.emit({
104
119
  type: 'tabPress',
105
- target: route.key
120
+ target: route.key,
121
+ canPreventDefault: true
106
122
  });
123
+ if (event.defaultPrevented) {
124
+ throw new Error("Preventing default for 'tabPress' is not supported with native tab bar.");
125
+ }
107
126
  const isFocused = state.index === state.routes.findIndex(r => r.key === route.key);
108
127
  if (!isFocused) {
109
128
  navigation.dispatch({
@@ -130,7 +149,9 @@ export function NativeBottomTabView({
130
149
  tabBarBadge,
131
150
  tabBarSystemItem,
132
151
  tabBarBlurEffect = dark ? 'systemMaterialDark' : 'systemMaterial',
133
- tabBarStyle
152
+ tabBarStyle,
153
+ sceneStyle,
154
+ scrollEdgeEffects
134
155
  } = options;
135
156
  const {
136
157
  backgroundColor: tabBarBackgroundColor,
@@ -150,28 +171,33 @@ export function NativeBottomTabView({
150
171
  tabBarItemTitleFontStyle: fontStyle
151
172
  };
152
173
  const badgeBackgroundColor = tabBarBadgeStyle?.backgroundColor ?? colors.notification;
153
- const badgeTextColor = tabBarBadgeStyle?.color ?? (typeof badgeBackgroundColor === 'string' ? Color(badgeBackgroundColor).isLight() ? 'black' : 'white' : undefined);
154
- const icon = typeof tabBarIcon === 'function' ? getPlatformIcon(tabBarIcon({
155
- focused: false
156
- })) : tabBarIcon != null ? getPlatformIcon(tabBarIcon) : undefined;
157
- const selectedIcon = typeof tabBarIcon === 'function' ? getPlatformIcon(tabBarIcon({
158
- focused: true
159
- })) : undefined;
174
+ const badgeTextColor = tabBarBadgeStyle?.color ?? (Color(badgeBackgroundColor)?.isLight() ? 'black' : 'white');
175
+ const getIcon = selected => {
176
+ if (typeof tabBarIcon === 'function') {
177
+ const result = tabBarIcon({
178
+ focused: selected,
179
+ size: ICON_SIZE,
180
+ color: selected ? activeTintColor : inactiveTintColor
181
+ });
182
+ if (/*#__PURE__*/React.isValidElement(result)) {
183
+ throw new Error(`Returning a React element from 'tabBarIcon' is not supported with native tab bar.`);
184
+ } else if (result && typeof result === 'object' && 'type' in result) {
185
+ return getPlatformIcon(result);
186
+ } else {
187
+ throw new Error(`The 'tabBarIcon' function must return an icon object (got ${typeof result}).`);
188
+ }
189
+ } else if (tabBarIcon != null) {
190
+ return getPlatformIcon(tabBarIcon);
191
+ }
192
+ return undefined;
193
+ };
194
+ const icon = getIcon(false);
195
+ const selectedIcon = getIcon(true);
160
196
  return /*#__PURE__*/_jsx(BottomTabsScreen, {
161
- onWillDisappear: () => onTransitionStart({
162
- closing: true,
163
- route
164
- }),
165
197
  onWillAppear: () => onTransitionStart({
166
- closing: false,
167
198
  route
168
199
  }),
169
200
  onDidAppear: () => onTransitionEnd({
170
- closing: false,
171
- route
172
- }),
173
- onDidDisappear: () => onTransitionEnd({
174
- closing: true,
175
201
  route
176
202
  }),
177
203
  tabKey: route.key,
@@ -183,6 +209,11 @@ export function NativeBottomTabView({
183
209
  systemItem: tabBarSystemItem,
184
210
  isFocused: isFocused,
185
211
  title: tabTitle,
212
+ scrollEdgeEffects: scrollEdgeEffects
213
+ // FIXME: if this is not provided, ScrollView on lazy tabs glitches on iOS 18
214
+ // For now we provide an empty object before adding proper support
215
+ ,
216
+ scrollEdgeAppearance: {},
186
217
  standardAppearance: {
187
218
  tabBarBackgroundColor,
188
219
  tabBarShadowColor,
@@ -197,60 +228,52 @@ export function NativeBottomTabView({
197
228
  normal: tabItemAppearance
198
229
  }
199
230
  },
231
+ experimental_userInterfaceStyle: dark ? 'dark' : 'light',
200
232
  children: /*#__PURE__*/_jsx(Lazy, {
201
233
  enabled: lazy,
202
234
  visible: isFocused || isPreloaded,
203
- children: /*#__PURE__*/_jsx(ScreenWithHeader, {
235
+ children: /*#__PURE__*/_jsx(ScreenContent, {
204
236
  isFocused: isFocused,
205
237
  route: route,
206
238
  navigation: navigation,
207
239
  options: options,
208
- children: render()
240
+ style: sceneStyle,
241
+ children: /*#__PURE__*/_jsx(AnimatedScreenContent, {
242
+ isFocused: isFocused,
243
+ children: /*#__PURE__*/_jsx(BottomTabBarHeightContext.Provider, {
244
+ value: 0,
245
+ children: render()
246
+ })
247
+ })
209
248
  })
210
249
  })
211
250
  }, route.key);
212
251
  })
213
- })
252
+ }), tabBarPosition === 'bottom' || tabBarPosition === 'right' ? tabBarElement : null]
214
253
  });
215
254
  }
216
- function ScreenWithHeader({
255
+ function AnimatedScreenContent({
217
256
  isFocused,
218
- route,
219
- navigation,
220
- options,
221
257
  children
222
258
  }) {
223
- const {
224
- headerTransparent,
225
- header: renderCustomHeader,
226
- headerShown = renderCustomHeader != null
227
- } = options;
228
- const hasNativeHeader = headerShown && renderCustomHeader == null;
229
- const [wasNativeHeaderShown] = React.useState(hasNativeHeader);
230
- React.useEffect(() => {
231
- if (wasNativeHeaderShown !== hasNativeHeader) {
232
- throw new Error(`Changing 'headerShown' or 'header' options dynamically is not supported when using native header.`);
233
- }
234
- }, [wasNativeHeaderShown, hasNativeHeader]);
235
- if (hasNativeHeader) {
236
- return /*#__PURE__*/_jsx(NativeScreen, {
237
- route: route,
238
- navigation: navigation,
239
- options: options,
240
- children: children
241
- });
242
- }
243
- return /*#__PURE__*/_jsx(ScreenContent, {
244
- focused: isFocused,
245
- route: route,
246
- navigation: navigation,
247
- headerShown: headerShown,
248
- headerTransparent: headerTransparent,
249
- header: renderCustomHeader?.({
250
- route,
251
- navigation,
252
- options
253
- }),
259
+ const [progress] = React.useState(() => new Animated.Value(isFocused ? 1 : 0));
260
+ React.useLayoutEffect(() => {
261
+ /**
262
+ * We don't have animation progress from native,
263
+ * So we expose a static value (0 or 1) based on focus state.
264
+ * Otherwise code using the `useTabAnimation` hook will crash
265
+ */
266
+ progress.setValue(isFocused ? 1 : 0);
267
+ }, [isFocused, progress]);
268
+ const interpolationProps = React.useMemo(() => {
269
+ return {
270
+ current: {
271
+ progress
272
+ }
273
+ };
274
+ }, [progress]);
275
+ return /*#__PURE__*/_jsx(BottomTabAnimationContext.Provider, {
276
+ value: interpolationProps,
254
277
  children: children
255
278
  });
256
279
  }
@@ -267,4 +290,4 @@ function getPlatformIcon(icon) {
267
290
  } : undefined
268
291
  };
269
292
  }
270
- //# sourceMappingURL=NativeBottomTabView.native.js.map
293
+ //# sourceMappingURL=BottomTabViewNativeImpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getLabel","Color","Lazy","SafeAreaProviderCompat","CommonActions","StackActions","useTheme","React","Animated","Platform","PlatformColor","BottomTabs","BottomTabsScreen","BottomTabAnimationContext","BottomTabBarHeightContext","useTabBarPosition","ScreenContent","jsx","_jsx","jsxs","_jsxs","ICON_SIZE","select","ios","default","BottomTabViewNative","state","navigation","descriptors","tabBar","dark","colors","fonts","focusedRouteKey","routes","index","key","previousRouteKeyRef","useRef","useEffect","previousRouteKey","current","options","popToTopOnBlur","prevRoute","find","route","type","popToTopAction","popToTop","target","dispatch","currentOptions","fontFamily","medium","regular","fontWeight","fontSize","fontStyle","tabBarLabelStyle","activeTintColor","tabBarActiveTintColor","primary","inactiveTintColor","tabBarInactiveTintColor","text","activeIndicatorColor","tabBarActiveIndicatorColor","alpha","string","onTransitionStart","emit","onTransitionEnd","tabBarPosition","hasCustomTabBar","tabBarElement","bottomAccessory","style","flexDirection","children","tabBarHidden","environment","placement","undefined","tabBarItemLabelVisibilityMode","tabBarLabelVisibilityMode","tabBarControllerMode","tabBarMinimizeBehavior","tabBarTintColor","tabBarItemIconColor","tabBarItemIconColorActive","tabBarItemTitleFontColor","tabBarItemTitleFontColorActive","tabBarItemTitleFontFamily","tabBarItemTitleFontWeight","tabBarItemTitleFontSize","tabBarItemTitleFontSizeActive","tabBarItemTitleFontStyle","tabBarBackgroundColor","tabBarStyle","backgroundColor","card","tabBarItemActiveIndicatorColor","tabBarItemActiveIndicatorEnabled","tabBarActiveIndicatorEnabled","tabBarItemRippleColor","tabBarRippleColor","experimentalControlNavigationStateInJS","onNativeFocusChange","e","nativeEvent","tabKey","event","canPreventDefault","defaultPrevented","Error","isFocused","findIndex","r","navigate","name","params","map","render","isPreloaded","preloadedRouteKeys","includes","title","lazy","tabBarLabel","tabBarBadgeStyle","tabBarIcon","tabBarBadge","tabBarSystemItem","tabBarBlurEffect","sceneStyle","scrollEdgeEffects","shadowColor","tabBarShadowColor","tabTitle","OS","label","tabItemAppearance","badgeBackgroundColor","notification","badgeTextColor","color","isLight","getIcon","selected","result","focused","size","isValidElement","getPlatformIcon","icon","selectedIcon","onWillAppear","onDidAppear","shared","tabBarItemBadgeBackgroundColor","tabBarItemBadgeTextColor","badgeValue","toString","systemItem","scrollEdgeAppearance","standardAppearance","stacked","normal","inline","compactInline","experimental_userInterfaceStyle","enabled","visible","AnimatedScreenContent","Provider","value","progress","useState","Value","useLayoutEffect","setValue","interpolationProps","useMemo","tinted","templateSource","source","android","imageSource"],"sourceRoot":"../../../src","sources":["views/BottomTabViewNativeImpl.tsx"],"mappings":"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","ignoreList":[]}