@react-navigation/bottom-tabs 7.9.0 → 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.
- package/lib/module/index.js +3 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createBottomTabNavigator.js +27 -9
- package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
- package/lib/module/utils/BottomTabAnimationContext.js +5 -0
- package/lib/module/utils/BottomTabAnimationContext.js.map +1 -0
- package/lib/module/utils/useBottomTabAnimation.js +12 -0
- package/lib/module/utils/useBottomTabAnimation.js.map +1 -0
- package/lib/module/utils/useTabBarPosition.js +34 -0
- package/lib/module/utils/useTabBarPosition.js.map +1 -0
- package/lib/module/views/BottomTabBar.js +46 -49
- package/lib/module/views/BottomTabBar.js.map +1 -1
- package/lib/module/views/BottomTabItem.js +17 -15
- package/lib/module/views/BottomTabItem.js.map +1 -1
- package/lib/module/views/BottomTabViewCommon.js +16 -0
- package/lib/module/views/BottomTabViewCommon.js.map +1 -0
- package/lib/module/views/{BottomTabView.js → BottomTabViewCustom.js} +107 -106
- package/lib/module/views/BottomTabViewCustom.js.map +1 -0
- package/lib/module/views/BottomTabViewNative.android.js +4 -0
- package/lib/module/views/BottomTabViewNative.android.js.map +1 -0
- package/lib/module/views/BottomTabViewNative.ios.js +4 -0
- package/lib/module/views/BottomTabViewNative.ios.js.map +1 -0
- package/lib/module/views/BottomTabViewNative.js +5 -0
- package/lib/module/views/BottomTabViewNative.js.map +1 -0
- package/lib/module/{unstable/NativeBottomTabView.native.js → views/BottomTabViewNativeImpl.js} +95 -77
- package/lib/module/views/BottomTabViewNativeImpl.js.map +1 -0
- package/lib/module/views/ScreenContent.js +39 -0
- package/lib/module/views/ScreenContent.js.map +1 -0
- package/lib/module/views/TabBarIcon.js +40 -4
- package/lib/module/views/TabBarIcon.js.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts +10 -6
- package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +383 -115
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/BottomTabAnimationContext.d.ts +4 -0
- package/lib/typescript/src/utils/BottomTabAnimationContext.d.ts.map +1 -0
- package/lib/typescript/src/utils/useBottomTabAnimation.d.ts +2 -0
- package/lib/typescript/src/utils/useBottomTabAnimation.d.ts.map +1 -0
- package/lib/typescript/src/utils/useTabBarPosition.d.ts +3 -0
- package/lib/typescript/src/utils/useTabBarPosition.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabBar.d.ts +4 -4
- package/lib/typescript/src/views/BottomTabBar.d.ts.map +1 -1
- package/lib/typescript/src/views/BottomTabItem.d.ts +16 -14
- package/lib/typescript/src/views/BottomTabItem.d.ts.map +1 -1
- package/lib/typescript/src/views/{BottomTabView.d.ts → BottomTabViewCommon.d.ts} +2 -2
- package/lib/typescript/src/views/BottomTabViewCommon.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabViewCustom.d.ts +10 -0
- package/lib/typescript/src/views/BottomTabViewCustom.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabViewNative.android.d.ts +2 -0
- package/lib/typescript/src/views/BottomTabViewNative.android.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabViewNative.d.ts +3 -0
- package/lib/typescript/src/views/BottomTabViewNative.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabViewNative.ios.d.ts +2 -0
- package/lib/typescript/src/views/BottomTabViewNative.ios.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabViewNativeImpl.d.ts +10 -0
- package/lib/typescript/src/views/BottomTabViewNativeImpl.d.ts.map +1 -0
- package/lib/typescript/src/views/ScreenContent.d.ts +13 -0
- package/lib/typescript/src/views/ScreenContent.d.ts.map +1 -0
- package/lib/typescript/src/views/TabBarIcon.d.ts +9 -9
- package/lib/typescript/src/views/TabBarIcon.d.ts.map +1 -1
- package/package.json +11 -16
- package/src/index.tsx +7 -2
- package/src/navigators/createBottomTabNavigator.tsx +78 -27
- package/src/types.tsx +417 -122
- package/src/utils/BottomTabAnimationContext.tsx +7 -0
- package/src/utils/useBottomTabAnimation.tsx +15 -0
- package/src/utils/useTabBarPosition.tsx +41 -0
- package/src/views/BottomTabBar.tsx +68 -67
- package/src/views/BottomTabItem.tsx +39 -34
- package/src/views/BottomTabViewCommon.tsx +26 -0
- package/src/views/{BottomTabView.tsx → BottomTabViewCustom.tsx} +142 -129
- package/src/views/BottomTabViewNative.android.tsx +1 -0
- package/src/views/BottomTabViewNative.ios.tsx +1 -0
- package/src/views/BottomTabViewNative.tsx +3 -0
- package/src/{unstable/NativeBottomTabView.native.tsx → views/BottomTabViewNativeImpl.tsx} +139 -116
- package/src/views/ScreenContent.tsx +58 -0
- package/src/views/TabBarIcon.tsx +63 -10
- package/lib/module/unstable/NativeBottomTabView.js +0 -6
- package/lib/module/unstable/NativeBottomTabView.js.map +0 -1
- package/lib/module/unstable/NativeBottomTabView.native.js.map +0 -1
- package/lib/module/unstable/NativeScreen/NativeScreen.js +0 -152
- package/lib/module/unstable/NativeScreen/NativeScreen.js.map +0 -1
- package/lib/module/unstable/NativeScreen/debounce.js +0 -12
- package/lib/module/unstable/NativeScreen/debounce.js.map +0 -1
- package/lib/module/unstable/NativeScreen/types.js +0 -4
- package/lib/module/unstable/NativeScreen/types.js.map +0 -1
- package/lib/module/unstable/NativeScreen/useAnimatedHeaderHeight.js +0 -12
- package/lib/module/unstable/NativeScreen/useAnimatedHeaderHeight.js.map +0 -1
- package/lib/module/unstable/NativeScreen/useHeaderConfig.js +0 -304
- package/lib/module/unstable/NativeScreen/useHeaderConfig.js.map +0 -1
- package/lib/module/unstable/createNativeBottomTabNavigator.js +0 -6
- package/lib/module/unstable/createNativeBottomTabNavigator.js.map +0 -1
- package/lib/module/unstable/createNativeBottomTabNavigator.native.js +0 -65
- package/lib/module/unstable/createNativeBottomTabNavigator.native.js.map +0 -1
- package/lib/module/unstable/index.js +0 -16
- package/lib/module/unstable/index.js.map +0 -1
- package/lib/module/unstable/types.js +0 -4
- package/lib/module/unstable/types.js.map +0 -1
- package/lib/module/views/BottomTabView.js.map +0 -1
- package/lib/module/views/ScreenFallback.js +0 -42
- package/lib/module/views/ScreenFallback.js.map +0 -1
- package/lib/typescript/src/unstable/NativeBottomTabView.d.ts +0 -10
- package/lib/typescript/src/unstable/NativeBottomTabView.d.ts.map +0 -1
- package/lib/typescript/src/unstable/NativeBottomTabView.native.d.ts +0 -10
- package/lib/typescript/src/unstable/NativeBottomTabView.native.d.ts.map +0 -1
- package/lib/typescript/src/unstable/NativeScreen/NativeScreen.d.ts +0 -8
- package/lib/typescript/src/unstable/NativeScreen/NativeScreen.d.ts.map +0 -1
- package/lib/typescript/src/unstable/NativeScreen/debounce.d.ts +0 -2
- package/lib/typescript/src/unstable/NativeScreen/debounce.d.ts.map +0 -1
- package/lib/typescript/src/unstable/NativeScreen/types.d.ts +0 -523
- package/lib/typescript/src/unstable/NativeScreen/types.d.ts.map +0 -1
- package/lib/typescript/src/unstable/NativeScreen/useAnimatedHeaderHeight.d.ts +0 -5
- package/lib/typescript/src/unstable/NativeScreen/useAnimatedHeaderHeight.d.ts.map +0 -1
- package/lib/typescript/src/unstable/NativeScreen/useHeaderConfig.d.ts +0 -11
- package/lib/typescript/src/unstable/NativeScreen/useHeaderConfig.d.ts.map +0 -1
- package/lib/typescript/src/unstable/createNativeBottomTabNavigator.d.ts +0 -2
- package/lib/typescript/src/unstable/createNativeBottomTabNavigator.d.ts.map +0 -1
- package/lib/typescript/src/unstable/createNativeBottomTabNavigator.native.d.ts +0 -16
- package/lib/typescript/src/unstable/createNativeBottomTabNavigator.native.d.ts.map +0 -1
- package/lib/typescript/src/unstable/index.d.ts +0 -13
- package/lib/typescript/src/unstable/index.d.ts.map +0 -1
- package/lib/typescript/src/unstable/types.d.ts +0 -319
- package/lib/typescript/src/unstable/types.d.ts.map +0 -1
- package/lib/typescript/src/views/BottomTabView.d.ts.map +0 -1
- package/lib/typescript/src/views/ScreenFallback.d.ts +0 -18
- package/lib/typescript/src/views/ScreenFallback.d.ts.map +0 -1
- package/src/unstable/NativeBottomTabView.tsx +0 -20
- package/src/unstable/NativeScreen/NativeScreen.tsx +0 -212
- package/src/unstable/NativeScreen/debounce.tsx +0 -14
- package/src/unstable/NativeScreen/types.ts +0 -573
- package/src/unstable/NativeScreen/useAnimatedHeaderHeight.tsx +0 -18
- package/src/unstable/NativeScreen/useHeaderConfig.tsx +0 -434
- package/src/unstable/createNativeBottomTabNavigator.native.tsx +0 -116
- package/src/unstable/createNativeBottomTabNavigator.tsx +0 -4
- package/src/unstable/index.tsx +0 -23
- package/src/unstable/types.tsx +0 -405
- package/src/views/ScreenFallback.tsx +0 -50
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
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 {
|
|
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 {
|
|
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
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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:
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
212
|
+
activityState: activityState,
|
|
222
213
|
enabled: detachInactiveScreens,
|
|
223
|
-
freezeOnBlur: freezeOnBlur,
|
|
224
214
|
shouldFreeze: activityState === STATE_INACTIVE && !isPreloaded,
|
|
225
|
-
children:
|
|
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=
|
|
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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.android.tsx"],"mappings":";;AAAA,cAAc,8BAA2B","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["views/BottomTabViewNative.ios.tsx"],"mappings":";;AAAA,cAAc,8BAA2B","ignoreList":[]}
|
|
@@ -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":[]}
|
package/lib/module/{unstable/NativeBottomTabView.native.js → views/BottomTabViewNativeImpl.js}
RENAMED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { getLabel
|
|
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 {
|
|
10
|
-
import {
|
|
11
|
-
|
|
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,34 +60,37 @@ export function NativeBottomTabView({
|
|
|
52
60
|
ios: PlatformColor('label'),
|
|
53
61
|
default: colors.text
|
|
54
62
|
});
|
|
55
|
-
const activeIndicatorColor = currentOptions?.tabBarActiveIndicatorColor ??
|
|
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
|
+
const tabBarPosition = useTabBarPosition(currentOptions);
|
|
81
|
+
const hasCustomTabBar = tabBar != null;
|
|
82
|
+
const tabBarElement = tabBar ? tabBar({
|
|
83
|
+
state,
|
|
84
|
+
descriptors,
|
|
85
|
+
navigation
|
|
86
|
+
}) : null;
|
|
80
87
|
const bottomAccessory = currentOptions.bottomAccessory;
|
|
81
|
-
return /*#__PURE__*/
|
|
82
|
-
|
|
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,
|
|
83
94
|
bottomAccessory: bottomAccessory ? environment => bottomAccessory({
|
|
84
95
|
placement: environment
|
|
85
96
|
}) : undefined,
|
|
@@ -104,10 +115,14 @@ export function NativeBottomTabView({
|
|
|
104
115
|
onNativeFocusChange: e => {
|
|
105
116
|
const route = state.routes.find(route => route.key === e.nativeEvent.tabKey);
|
|
106
117
|
if (route) {
|
|
107
|
-
navigation.emit({
|
|
118
|
+
const event = navigation.emit({
|
|
108
119
|
type: 'tabPress',
|
|
109
|
-
target: route.key
|
|
120
|
+
target: route.key,
|
|
121
|
+
canPreventDefault: true
|
|
110
122
|
});
|
|
123
|
+
if (event.defaultPrevented) {
|
|
124
|
+
throw new Error("Preventing default for 'tabPress' is not supported with native tab bar.");
|
|
125
|
+
}
|
|
111
126
|
const isFocused = state.index === state.routes.findIndex(r => r.key === route.key);
|
|
112
127
|
if (!isFocused) {
|
|
113
128
|
navigation.dispatch({
|
|
@@ -134,7 +149,9 @@ export function NativeBottomTabView({
|
|
|
134
149
|
tabBarBadge,
|
|
135
150
|
tabBarSystemItem,
|
|
136
151
|
tabBarBlurEffect = dark ? 'systemMaterialDark' : 'systemMaterial',
|
|
137
|
-
tabBarStyle
|
|
152
|
+
tabBarStyle,
|
|
153
|
+
sceneStyle,
|
|
154
|
+
scrollEdgeEffects
|
|
138
155
|
} = options;
|
|
139
156
|
const {
|
|
140
157
|
backgroundColor: tabBarBackgroundColor,
|
|
@@ -154,28 +171,33 @@ export function NativeBottomTabView({
|
|
|
154
171
|
tabBarItemTitleFontStyle: fontStyle
|
|
155
172
|
};
|
|
156
173
|
const badgeBackgroundColor = tabBarBadgeStyle?.backgroundColor ?? colors.notification;
|
|
157
|
-
const badgeTextColor = tabBarBadgeStyle?.color ?? (
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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);
|
|
164
196
|
return /*#__PURE__*/_jsx(BottomTabsScreen, {
|
|
165
|
-
onWillDisappear: () => onTransitionStart({
|
|
166
|
-
closing: true,
|
|
167
|
-
route
|
|
168
|
-
}),
|
|
169
197
|
onWillAppear: () => onTransitionStart({
|
|
170
|
-
closing: false,
|
|
171
198
|
route
|
|
172
199
|
}),
|
|
173
200
|
onDidAppear: () => onTransitionEnd({
|
|
174
|
-
closing: false,
|
|
175
|
-
route
|
|
176
|
-
}),
|
|
177
|
-
onDidDisappear: () => onTransitionEnd({
|
|
178
|
-
closing: true,
|
|
179
201
|
route
|
|
180
202
|
}),
|
|
181
203
|
tabKey: route.key,
|
|
@@ -187,6 +209,11 @@ export function NativeBottomTabView({
|
|
|
187
209
|
systemItem: tabBarSystemItem,
|
|
188
210
|
isFocused: isFocused,
|
|
189
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: {},
|
|
190
217
|
standardAppearance: {
|
|
191
218
|
tabBarBackgroundColor,
|
|
192
219
|
tabBarShadowColor,
|
|
@@ -205,57 +232,48 @@ export function NativeBottomTabView({
|
|
|
205
232
|
children: /*#__PURE__*/_jsx(Lazy, {
|
|
206
233
|
enabled: lazy,
|
|
207
234
|
visible: isFocused || isPreloaded,
|
|
208
|
-
children: /*#__PURE__*/_jsx(
|
|
235
|
+
children: /*#__PURE__*/_jsx(ScreenContent, {
|
|
209
236
|
isFocused: isFocused,
|
|
210
237
|
route: route,
|
|
211
238
|
navigation: navigation,
|
|
212
239
|
options: options,
|
|
213
|
-
|
|
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
|
+
})
|
|
214
248
|
})
|
|
215
249
|
})
|
|
216
250
|
}, route.key);
|
|
217
251
|
})
|
|
218
|
-
})
|
|
252
|
+
}), tabBarPosition === 'bottom' || tabBarPosition === 'right' ? tabBarElement : null]
|
|
219
253
|
});
|
|
220
254
|
}
|
|
221
|
-
function
|
|
255
|
+
function AnimatedScreenContent({
|
|
222
256
|
isFocused,
|
|
223
|
-
route,
|
|
224
|
-
navigation,
|
|
225
|
-
options,
|
|
226
257
|
children
|
|
227
258
|
}) {
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
return /*#__PURE__*/_jsx(ScreenContent, {
|
|
249
|
-
focused: isFocused,
|
|
250
|
-
route: route,
|
|
251
|
-
navigation: navigation,
|
|
252
|
-
headerShown: headerShown,
|
|
253
|
-
headerTransparent: headerTransparent,
|
|
254
|
-
header: renderCustomHeader?.({
|
|
255
|
-
route,
|
|
256
|
-
navigation,
|
|
257
|
-
options
|
|
258
|
-
}),
|
|
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,
|
|
259
277
|
children: children
|
|
260
278
|
});
|
|
261
279
|
}
|
|
@@ -272,4 +290,4 @@ function getPlatformIcon(icon) {
|
|
|
272
290
|
} : undefined
|
|
273
291
|
};
|
|
274
292
|
}
|
|
275
|
-
//# sourceMappingURL=
|
|
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":[]}
|