@react-navigation/bottom-tabs 7.0.0-alpha.2 → 7.0.0-alpha.3
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/commonjs/TransitionConfigs/SceneStyleInterpolators.js +47 -0
- package/lib/commonjs/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
- package/lib/commonjs/TransitionConfigs/TransitionPresets.js +19 -0
- package/lib/commonjs/TransitionConfigs/TransitionPresets.js.map +1 -0
- package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +24 -0
- package/lib/commonjs/TransitionConfigs/TransitionSpecs.js.map +1 -0
- package/lib/commonjs/index.js +9 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/useAnimatedHashMap.js +31 -0
- package/lib/commonjs/utils/useAnimatedHashMap.js.map +1 -0
- package/lib/commonjs/views/BottomTabView.js +74 -4
- package/lib/commonjs/views/BottomTabView.js.map +1 -1
- package/lib/commonjs/views/ScreenFallback.js +6 -8
- package/lib/commonjs/views/ScreenFallback.js.map +1 -1
- package/lib/module/TransitionConfigs/SceneStyleInterpolators.js +40 -0
- package/lib/module/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
- package/lib/module/TransitionConfigs/TransitionPresets.js +11 -0
- package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -0
- package/lib/module/TransitionConfigs/TransitionSpecs.js +16 -0
- package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/useAnimatedHashMap.js +23 -0
- package/lib/module/utils/useAnimatedHashMap.js.map +1 -0
- package/lib/module/views/BottomTabView.js +75 -5
- package/lib/module/views/BottomTabView.js.map +1 -1
- package/lib/module/views/ScreenFallback.js +6 -8
- package/lib/module/views/ScreenFallback.js.map +1 -1
- package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts +10 -0
- package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts.map +1 -0
- package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +4 -0
- package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -0
- package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +4 -0
- package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +50 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/useAnimatedHashMap.d.ts +4 -0
- package/lib/typescript/src/utils/useAnimatedHashMap.d.ts.map +1 -0
- package/lib/typescript/src/views/BottomTabView.d.ts.map +1 -1
- package/lib/typescript/src/views/ScreenFallback.d.ts +4 -4
- package/lib/typescript/src/views/ScreenFallback.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/TransitionConfigs/SceneStyleInterpolators.tsx +44 -0
- package/src/TransitionConfigs/TransitionPresets.tsx +13 -0
- package/src/TransitionConfigs/TransitionSpecs.tsx +19 -0
- package/src/index.tsx +9 -0
- package/src/types.tsx +70 -0
- package/src/utils/useAnimatedHashMap.tsx +25 -0
- package/src/views/BottomTabView.tsx +93 -6
- package/src/views/ScreenFallback.tsx +6 -13
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
import { getHeaderTitle, Header, SafeAreaProviderCompat, Screen } from '@react-navigation/elements';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import { Platform, StyleSheet } from 'react-native';
|
|
4
|
+
import { Animated, Platform, StyleSheet } from 'react-native';
|
|
5
5
|
import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
|
|
6
6
|
import { BottomTabBarHeightCallbackContext } from '../utils/BottomTabBarHeightCallbackContext';
|
|
7
7
|
import { BottomTabBarHeightContext } from '../utils/BottomTabBarHeightContext';
|
|
8
|
+
import { useAnimatedHashMap } from '../utils/useAnimatedHashMap';
|
|
8
9
|
import { BottomTabBar, getTabBarHeight } from './BottomTabBar';
|
|
9
10
|
import { MaybeScreen, MaybeScreenContainer } from './ScreenFallback';
|
|
11
|
+
var CompositeAnimation = Animated.CompositeAnimation;
|
|
12
|
+
const EPSILON = 1e-5;
|
|
13
|
+
const STATE_INACTIVE = 0;
|
|
14
|
+
const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
|
|
15
|
+
const STATE_ON_TOP = 2;
|
|
16
|
+
const hasAnimation = options => {
|
|
17
|
+
const {
|
|
18
|
+
animationEnabled,
|
|
19
|
+
transitionSpec
|
|
20
|
+
} = options;
|
|
21
|
+
if (animationEnabled === false || !transitionSpec) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
};
|
|
10
26
|
export function BottomTabView(props) {
|
|
11
27
|
const {
|
|
12
28
|
tabBar = props => /*#__PURE__*/React.createElement(BottomTabBar, props),
|
|
@@ -18,10 +34,43 @@ export function BottomTabView(props) {
|
|
|
18
34
|
sceneContainerStyle
|
|
19
35
|
} = props;
|
|
20
36
|
const focusedRouteKey = state.routes[state.index].key;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* List of loaded tabs, tabs will be loaded when navigated to.
|
|
40
|
+
*/
|
|
21
41
|
const [loaded, setLoaded] = React.useState([focusedRouteKey]);
|
|
22
42
|
if (!loaded.includes(focusedRouteKey)) {
|
|
43
|
+
// Set the current tab to be loaded if it was not loaded before
|
|
23
44
|
setLoaded([...loaded, focusedRouteKey]);
|
|
24
45
|
}
|
|
46
|
+
const tabAnims = useAnimatedHashMap(state);
|
|
47
|
+
React.useEffect(() => {
|
|
48
|
+
const animateToIndex = () => {
|
|
49
|
+
Animated.parallel(state.routes.map((route, index) => {
|
|
50
|
+
const {
|
|
51
|
+
options
|
|
52
|
+
} = descriptors[route.key];
|
|
53
|
+
const {
|
|
54
|
+
transitionSpec
|
|
55
|
+
} = options;
|
|
56
|
+
const animationEnabled = hasAnimation(options);
|
|
57
|
+
const toValue = index === state.index ? 0 : index >= state.index ? 1 : -1;
|
|
58
|
+
if (!animationEnabled || !transitionSpec) {
|
|
59
|
+
return Animated.timing(tabAnims[route.key], {
|
|
60
|
+
toValue,
|
|
61
|
+
duration: 0,
|
|
62
|
+
useNativeDriver: true
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return Animated[transitionSpec.animation](tabAnims[route.key], {
|
|
66
|
+
...transitionSpec.config,
|
|
67
|
+
toValue,
|
|
68
|
+
useNativeDriver: true
|
|
69
|
+
});
|
|
70
|
+
}).filter(Boolean)).start();
|
|
71
|
+
};
|
|
72
|
+
animateToIndex();
|
|
73
|
+
}, [descriptors, state.index, state.routes, tabAnims]);
|
|
25
74
|
const dimensions = SafeAreaProviderCompat.initialMetrics.frame;
|
|
26
75
|
const [tabBarHeight, setTabBarHeight] = React.useState(() => getTabBarHeight({
|
|
27
76
|
state,
|
|
@@ -53,15 +102,19 @@ export function BottomTabView(props) {
|
|
|
53
102
|
const {
|
|
54
103
|
routes
|
|
55
104
|
} = state;
|
|
105
|
+
|
|
106
|
+
// If there is no animation, we only have 2 states: visible and invisible
|
|
107
|
+
const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
|
|
56
108
|
return /*#__PURE__*/React.createElement(SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(MaybeScreenContainer, {
|
|
57
109
|
enabled: detachInactiveScreens,
|
|
58
|
-
hasTwoStates:
|
|
110
|
+
hasTwoStates: hasTwoStates,
|
|
59
111
|
style: styles.container
|
|
60
112
|
}, routes.map((route, index) => {
|
|
61
113
|
const descriptor = descriptors[route.key];
|
|
62
114
|
const {
|
|
63
115
|
lazy = true,
|
|
64
|
-
unmountOnBlur
|
|
116
|
+
unmountOnBlur,
|
|
117
|
+
sceneStyleInterpolator
|
|
65
118
|
} = descriptor.options;
|
|
66
119
|
const isFocused = state.index === index;
|
|
67
120
|
if (unmountOnBlur && !isFocused) {
|
|
@@ -87,12 +140,29 @@ export function BottomTabView(props) {
|
|
|
87
140
|
headerStatusBarHeight,
|
|
88
141
|
headerTransparent
|
|
89
142
|
} = descriptor.options;
|
|
143
|
+
const {
|
|
144
|
+
sceneStyle
|
|
145
|
+
} = (sceneStyleInterpolator === null || sceneStyleInterpolator === void 0 ? void 0 : sceneStyleInterpolator({
|
|
146
|
+
current: tabAnims[route.key]
|
|
147
|
+
})) ?? {};
|
|
148
|
+
const animationEnabled = hasAnimation(descriptor.options);
|
|
149
|
+
const activityState = isFocused ? STATE_ON_TOP // the screen is on top after the transition
|
|
150
|
+
: animationEnabled // is animation is not enabled, immediately move to inactive state
|
|
151
|
+
? tabAnims[route.key].interpolate({
|
|
152
|
+
inputRange: [0, 1 - EPSILON, 1],
|
|
153
|
+
outputRange: [STATE_TRANSITIONING_OR_BELOW_TOP,
|
|
154
|
+
// screen visible during transition
|
|
155
|
+
STATE_TRANSITIONING_OR_BELOW_TOP, STATE_INACTIVE // the screen is detached after transition
|
|
156
|
+
],
|
|
157
|
+
|
|
158
|
+
extrapolate: 'extend'
|
|
159
|
+
}) : STATE_INACTIVE;
|
|
90
160
|
return /*#__PURE__*/React.createElement(MaybeScreen, {
|
|
91
161
|
key: route.key,
|
|
92
162
|
style: [StyleSheet.absoluteFill, {
|
|
93
163
|
zIndex: isFocused ? 0 : -1
|
|
94
164
|
}],
|
|
95
|
-
|
|
165
|
+
active: activityState,
|
|
96
166
|
enabled: detachInactiveScreens,
|
|
97
167
|
freezeOnBlur: freezeOnBlur
|
|
98
168
|
}, /*#__PURE__*/React.createElement(BottomTabBarHeightContext.Provider, {
|
|
@@ -110,7 +180,7 @@ export function BottomTabView(props) {
|
|
|
110
180
|
navigation: descriptor.navigation,
|
|
111
181
|
options: descriptor.options
|
|
112
182
|
}),
|
|
113
|
-
style: sceneContainerStyle
|
|
183
|
+
style: [sceneContainerStyle, animationEnabled && sceneStyle]
|
|
114
184
|
}, descriptor.render())));
|
|
115
185
|
})), /*#__PURE__*/React.createElement(BottomTabBarHeightCallbackContext.Provider, {
|
|
116
186
|
value: setTabBarHeight
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","React","Platform","StyleSheet","SafeAreaInsetsContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","BottomTabBar","getTabBarHeight","MaybeScreen","MaybeScreenContainer","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","useState","includes","dimensions","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","
|
|
1
|
+
{"version":3,"names":["getHeaderTitle","Header","SafeAreaProviderCompat","Screen","React","Animated","Platform","StyleSheet","SafeAreaInsetsContext","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useAnimatedHashMap","BottomTabBar","getTabBarHeight","MaybeScreen","MaybeScreenContainer","CompositeAnimation","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","hasAnimation","options","animationEnabled","transitionSpec","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","useState","includes","tabAnims","useEffect","animateToIndex","parallel","map","route","toValue","timing","duration","useNativeDriver","animation","config","filter","Boolean","start","dimensions","initialMetrics","frame","tabBarHeight","setTabBarHeight","layout","width","height","insets","style","tabBarStyle","renderTabBar","top","right","bottom","left","hasTwoStates","some","styles","container","descriptor","lazy","unmountOnBlur","sceneStyleInterpolator","isFocused","freezeOnBlur","header","name","headerShown","headerStatusBarHeight","headerTransparent","sceneStyle","current","activityState","interpolate","inputRange","outputRange","extrapolate","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabView.tsx"],"mappings":";AAAA,SACEA,cAAc,EACdC,MAAM,EACNC,sBAAsB,EACtBC,MAAM,QACD,4BAA4B;AAKnC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAC7D,SAASC,qBAAqB,QAAQ,gCAAgC;AAWtE,SAASC,iCAAiC,QAAQ,4CAA4C;AAC9F,SAASC,yBAAyB,QAAQ,oCAAoC;AAC9E,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,SAASC,YAAY,EAAEC,eAAe,QAAQ,gBAAgB;AAC9D,SAASC,WAAW,EAAEC,oBAAoB,QAAQ,kBAAkB;AAAC,IAC9DC,kBAAkB,GAAGX,QAAQ,CAACW,kBAAkB;AAQvD,MAAMC,OAAO,GAAG,IAAI;AACpB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,gCAAgC,GAAG,CAAC;AAC1C,MAAMC,YAAY,GAAG,CAAC;AAEtB,MAAMC,YAAY,GAAIC,OAAmC,IAAK;EAC5D,MAAM;IAAEC,gBAAgB;IAAEC;EAAe,CAAC,GAAGF,OAAO;EAEpD,IAAIC,gBAAgB,KAAK,KAAK,IAAI,CAACC,cAAc,EAAE;IACjD,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb,CAAC;AAED,OAAO,SAASC,aAAa,CAACC,KAAY,EAAE;EAC1C,MAAM;IACJC,MAAM,GAAID,KAAwB,iBAAK,oBAAC,YAAY,EAAKA,KAAK,CAAI;IAClEE,KAAK;IACLC,UAAU;IACVC,WAAW;IACXC,cAAc;IACdC,qBAAqB,GAAG1B,QAAQ,CAAC2B,EAAE,KAAK,KAAK,IAC3C3B,QAAQ,CAAC2B,EAAE,KAAK,SAAS,IACzB3B,QAAQ,CAAC2B,EAAE,KAAK,KAAK;IACvBC;EACF,CAAC,GAAGR,KAAK;EACT,MAAMS,eAAe,GAAGP,KAAK,CAACQ,MAAM,CAACR,KAAK,CAACS,KAAK,CAAC,CAACC,GAAG;;EAErD;AACF;AACA;EACE,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGpC,KAAK,CAACqC,QAAQ,CAAC,CAACN,eAAe,CAAC,CAAC;EAE7D,IAAI,CAACI,MAAM,CAACG,QAAQ,CAACP,eAAe,CAAC,EAAE;IACrC;IACAK,SAAS,CAAC,CAAC,GAAGD,MAAM,EAAEJ,eAAe,CAAC,CAAC;EACzC;EAEA,MAAMQ,QAAQ,GAAGhC,kBAAkB,CAACiB,KAAK,CAAC;EAE1CxB,KAAK,CAACwC,SAAS,CAAC,MAAM;IACpB,MAAMC,cAAc,GAAG,MAAM;MAC3BxC,QAAQ,CAACyC,QAAQ,CACflB,KAAK,CAACQ,MAAM,CACTW,GAAG,CAAC,CAACC,KAAK,EAAEX,KAAK,KAAK;QACrB,MAAM;UAAEf;QAAQ,CAAC,GAAGQ,WAAW,CAACkB,KAAK,CAACV,GAAG,CAAC;QAC1C,MAAM;UAAEd;QAAe,CAAC,GAAGF,OAAO;QAElC,MAAMC,gBAAgB,GAAGF,YAAY,CAACC,OAAO,CAAC;QAE9C,MAAM2B,OAAO,GACXZ,KAAK,KAAKT,KAAK,CAACS,KAAK,GAAG,CAAC,GAAGA,KAAK,IAAIT,KAAK,CAACS,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAE3D,IAAI,CAACd,gBAAgB,IAAI,CAACC,cAAc,EAAE;UACxC,OAAOnB,QAAQ,CAAC6C,MAAM,CAACP,QAAQ,CAACK,KAAK,CAACV,GAAG,CAAC,EAAE;YAC1CW,OAAO;YACPE,QAAQ,EAAE,CAAC;YACXC,eAAe,EAAE;UACnB,CAAC,CAAC;QACJ;QAEA,OAAO/C,QAAQ,CAACmB,cAAc,CAAC6B,SAAS,CAAC,CAACV,QAAQ,CAACK,KAAK,CAACV,GAAG,CAAC,EAAE;UAC7D,GAAGd,cAAc,CAAC8B,MAAM;UACxBL,OAAO;UACPG,eAAe,EAAE;QACnB,CAAC,CAAC;MACJ,CAAC,CAAC,CACDG,MAAM,CAACC,OAAO,CAAC,CACnB,CAACC,KAAK,EAAE;IACX,CAAC;IAEDZ,cAAc,EAAE;EAClB,CAAC,EAAE,CAACf,WAAW,EAAEF,KAAK,CAACS,KAAK,EAAET,KAAK,CAACQ,MAAM,EAAEO,QAAQ,CAAC,CAAC;EAEtD,MAAMe,UAAU,GAAGxD,sBAAsB,CAACyD,cAAc,CAACC,KAAK;EAC9D,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG1D,KAAK,CAACqC,QAAQ,CAAC,MACrD5B,eAAe,CAAC;IACde,KAAK;IACLE,WAAW;IACX4B,UAAU;IACVK,MAAM,EAAE;MAAEC,KAAK,EAAEN,UAAU,CAACM,KAAK;MAAEC,MAAM,EAAE;IAAE,CAAC;IAC9CC,MAAM,EAAE;MACN,GAAGhE,sBAAsB,CAACyD,cAAc,CAACO,MAAM;MAC/C,GAAGxC,KAAK,CAACK;IACX,CAAC;IACDoC,KAAK,EAAErC,WAAW,CAACF,KAAK,CAACQ,MAAM,CAACR,KAAK,CAACS,KAAK,CAAC,CAACC,GAAG,CAAC,CAAChB,OAAO,CAAC8C;EAC5D,CAAC,CAAC,CACH;EAED,MAAMC,YAAY,GAAG,MAAM;IACzB,oBACE,oBAAC,qBAAqB,CAAC,QAAQ,QAC3BH,MAAM,IACNvC,MAAM,CAAC;MACLC,KAAK,EAAEA,KAAK;MACZE,WAAW,EAAEA,WAAW;MACxBD,UAAU,EAAEA,UAAU;MACtBqC,MAAM,EAAE;QACNI,GAAG,EAAE,CAAAvC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEuC,GAAG,MAAIJ,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEI,GAAG,KAAI,CAAC;QAC5CC,KAAK,EAAE,CAAAxC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEwC,KAAK,MAAIL,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEK,KAAK,KAAI,CAAC;QAClDC,MAAM,EAAE,CAAAzC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEyC,MAAM,MAAIN,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEM,MAAM,KAAI,CAAC;QACrDC,IAAI,EAAE,CAAA1C,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAE0C,IAAI,MAAIP,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEO,IAAI,KAAI;MAChD;IACF,CAAC,CAAC,CAE2B;EAErC,CAAC;EAED,MAAM;IAAErC;EAAO,CAAC,GAAGR,KAAK;;EAExB;EACA,MAAM8C,YAAY,GAAG,CAACtC,MAAM,CAACuC,IAAI,CAAE3B,KAAK,IACtC3B,YAAY,CAACS,WAAW,CAACkB,KAAK,CAACV,GAAG,CAAC,CAAChB,OAAO,CAAC,CAC7C;EAED,oBACE,oBAAC,sBAAsB,qBACrB,oBAAC,oBAAoB;IACnB,OAAO,EAAEU,qBAAsB;IAC/B,YAAY,EAAE0C,YAAa;IAC3B,KAAK,EAAEE,MAAM,CAACC;EAAU,GAEvBzC,MAAM,CAACW,GAAG,CAAC,CAACC,KAAK,EAAEX,KAAK,KAAK;IAC5B,MAAMyC,UAAU,GAAGhD,WAAW,CAACkB,KAAK,CAACV,GAAG,CAAC;IACzC,MAAM;MACJyC,IAAI,GAAG,IAAI;MACXC,aAAa;MACbC;IACF,CAAC,GAAGH,UAAU,CAACxD,OAAO;IACtB,MAAM4D,SAAS,GAAGtD,KAAK,CAACS,KAAK,KAAKA,KAAK;IAEvC,IAAI2C,aAAa,IAAI,CAACE,SAAS,EAAE;MAC/B,OAAO,IAAI;IACb;IAEA,IAAIH,IAAI,IAAI,CAACxC,MAAM,CAACG,QAAQ,CAACM,KAAK,CAACV,GAAG,CAAC,IAAI,CAAC4C,SAAS,EAAE;MACrD;MACA,OAAO,IAAI;IACb;IAEA,MAAM;MACJC,YAAY;MACZC,MAAM,GAAG;QAAA,IAAC;UAAErB,MAAM;UAAEzC;QAA8B,CAAC;QAAA,oBACjD,oBAAC,MAAM,eACDA,OAAO;UACX,MAAM,EAAEyC,MAAO;UACf,KAAK,EAAE/D,cAAc,CAACsB,OAAO,EAAE0B,KAAK,CAACqC,IAAI;QAAE,GAC3C;MAAA,CACH;MACDC,WAAW;MACXC,qBAAqB;MACrBC;IACF,CAAC,GAAGV,UAAU,CAACxD,OAAO;IAEtB,MAAM;MAAEmE;IAAW,CAAC,GAClB,CAAAR,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,CAAG;MACvBS,OAAO,EAAE/C,QAAQ,CAACK,KAAK,CAACV,GAAG;IAC7B,CAAC,CAAC,KAAI,CAAC,CAAC;IAEV,MAAMf,gBAAgB,GAAGF,YAAY,CAACyD,UAAU,CAACxD,OAAO,CAAC;IACzD,MAAMqE,aAAa,GAAGT,SAAS,GAC3B9D,YAAY,CAAC;IAAA,EACbG,gBAAgB,CAAC;IAAA,EACjBoB,QAAQ,CAACK,KAAK,CAACV,GAAG,CAAC,CAACsD,WAAW,CAAC;MAC9BC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG5E,OAAO,EAAE,CAAC,CAAC;MAC/B6E,WAAW,EAAE,CACX3E,gCAAgC;MAAE;MAClCA,gCAAgC,EAChCD,cAAc,CAAE;MAAA,CACjB;;MACD6E,WAAW,EAAE;IACf,CAAC,CAAC,GACF7E,cAAc;IAElB,oBACE,oBAAC,WAAW;MACV,GAAG,EAAE8B,KAAK,CAACV,GAAI;MACf,KAAK,EAAE,CAAC/B,UAAU,CAACyF,YAAY,EAAE;QAAEC,MAAM,EAAEf,SAAS,GAAG,CAAC,GAAG,CAAC;MAAE,CAAC,CAAE;MACjE,MAAM,EAAES,aAAc;MACtB,OAAO,EAAE3D,qBAAsB;MAC/B,YAAY,EAAEmD;IAAa,gBAE3B,oBAAC,yBAAyB,CAAC,QAAQ;MAAC,KAAK,EAAEtB;IAAa,gBACtD,oBAAC,MAAM;MACL,OAAO,EAAEqB,SAAU;MACnB,KAAK,EAAEJ,UAAU,CAAC9B,KAAM;MACxB,UAAU,EAAE8B,UAAU,CAACjD,UAAW;MAClC,WAAW,EAAEyD,WAAY;MACzB,qBAAqB,EAAEC,qBAAsB;MAC7C,iBAAiB,EAAEC,iBAAkB;MACrC,MAAM,EAAEJ,MAAM,CAAC;QACbrB,MAAM,EAAEL,UAAU;QAClBV,KAAK,EAAE8B,UAAU,CAAC9B,KAAK;QACvBnB,UAAU,EACRiD,UAAU,CAACjD,UAAoD;QACjEP,OAAO,EAAEwD,UAAU,CAACxD;MACtB,CAAC,CAAE;MACH,KAAK,EAAE,CAACY,mBAAmB,EAAEX,gBAAgB,IAAIkE,UAAU;IAAE,GAE5DX,UAAU,CAACoB,MAAM,EAAE,CACb,CAC0B,CACzB;EAElB,CAAC,CAAC,CACmB,eACvB,oBAAC,iCAAiC,CAAC,QAAQ;IAAC,KAAK,EAAEpC;EAAgB,GAChEO,YAAY,EAAE,CAC4B,CACtB;AAE7B;AAEA,MAAMO,MAAM,GAAGrE,UAAU,CAAC4F,MAAM,CAAC;EAC/BtB,SAAS,EAAE;IACTuB,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
import { ResourceSavingView } from '@react-navigation/elements';
|
|
3
2
|
import * as React from 'react';
|
|
4
3
|
import { View } from 'react-native';
|
|
5
4
|
let Screens;
|
|
@@ -24,17 +23,16 @@ export const MaybeScreenContainer = _ref => {
|
|
|
24
23
|
export function MaybeScreen(_ref2) {
|
|
25
24
|
var _Screens2, _Screens2$screensEnab;
|
|
26
25
|
let {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
enabled,
|
|
27
|
+
active,
|
|
29
28
|
...rest
|
|
30
29
|
} = _ref2;
|
|
31
30
|
if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
|
|
32
31
|
return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
enabled: enabled,
|
|
33
|
+
activityState: active
|
|
34
|
+
}, rest));
|
|
35
35
|
}
|
|
36
|
-
return /*#__PURE__*/React.createElement(
|
|
37
|
-
visible: visible
|
|
38
|
-
}, rest), children);
|
|
36
|
+
return /*#__PURE__*/React.createElement(View, rest);
|
|
39
37
|
}
|
|
40
38
|
//# sourceMappingURL=ScreenFallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","active"],"sourceRoot":"../../../src","sources":["views/ScreenFallback.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAA8BC,IAAI,QAA8B,cAAc;AAU9E,IAAIC,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGF,OAAO,MAAMC,oBAAoB,GAAG,QAO9B;EAAA;EAAA,IAP+B;IACnCC,OAAO;IACP,GAAGC;EAKL,CAAC;EACC,gBAAIL,OAAO,8DAAP,SAASM,cAAc,kDAAvB,oCAA2B,EAAE;IAC/B,oBAAO,oBAAC,OAAO,CAAC,eAAe;MAAC,OAAO,EAAEF;IAAQ,GAAKC,IAAI,EAAI;EAChE;EAEA,oBAAO,oBAAC,IAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAED,OAAO,SAASE,WAAW,QAAkD;EAAA;EAAA,IAAjD;IAAEH,OAAO;IAAEI,MAAM;IAAE,GAAGH;EAAwB,CAAC;EACzE,iBAAIL,OAAO,+DAAP,UAASM,cAAc,kDAAvB,qCAA2B,EAAE;IAC/B,oBACE,oBAAC,OAAO,CAAC,MAAM;MAAC,OAAO,EAAEF,OAAQ;MAAC,aAAa,EAAEI;IAAO,GAAKH,IAAI,EAAI;EAEzE;EAEA,oBAAO,oBAAC,IAAI,EAAKA,IAAI,CAAI;AAC3B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BottomTabSceneInterpolatedStyle, BottomTabSceneInterpolationProps } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Simple cross fade animation
|
|
4
|
+
*/
|
|
5
|
+
export declare function forCrossFade({ current, }: BottomTabSceneInterpolationProps): BottomTabSceneInterpolatedStyle;
|
|
6
|
+
/**
|
|
7
|
+
* Animation where the screens slightly shift to left/right
|
|
8
|
+
*/
|
|
9
|
+
export declare function forShifting({ current, }: BottomTabSceneInterpolationProps): BottomTabSceneInterpolatedStyle;
|
|
10
|
+
//# sourceMappingURL=SceneStyleInterpolators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneStyleInterpolators.d.ts","sourceRoot":"","sources":["../../../../src/TransitionConfigs/SceneStyleInterpolators.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,+BAA+B,EAC/B,gCAAgC,EACjC,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,GACR,EAAE,gCAAgC,GAAG,+BAA+B,CASpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,GACR,EAAE,gCAAgC,GAAG,+BAA+B,CAiBpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransitionPresets.d.ts","sourceRoot":"","sources":["../../../../src/TransitionConfigs/TransitionPresets.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAI1D,eAAO,MAAM,cAAc,EAAE,yBAG5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,yBAGhC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransitionSpecs.d.ts","sourceRoot":"","sources":["../../../../src/TransitionConfigs/TransitionSpecs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,cAM3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAM1B,CAAC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import * as SceneStyleInterpolator from './TransitionConfigs/SceneStyleInterpolators';
|
|
2
|
+
import * as TransitionPresets from './TransitionConfigs/TransitionPresets';
|
|
3
|
+
import * as TransitionSpecs from './TransitionConfigs/TransitionSpecs';
|
|
4
|
+
/**
|
|
5
|
+
* Transition Presets
|
|
6
|
+
*/
|
|
7
|
+
export { SceneStyleInterpolator, TransitionPresets, TransitionSpecs };
|
|
1
8
|
/**
|
|
2
9
|
* Navigators
|
|
3
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEjF;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;GAEG;AACH,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,6CAA6C,CAAC;AACtF,OAAO,KAAK,iBAAiB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AAEvE;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAEtE;;GAEG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEjF;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;GAEG;AACH,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
|
|
@@ -181,9 +181,59 @@ export type BottomTabNavigationOptions = HeaderOptions & {
|
|
|
181
181
|
* Only supported on iOS and Android.
|
|
182
182
|
*/
|
|
183
183
|
freezeOnBlur?: boolean;
|
|
184
|
+
/**
|
|
185
|
+
* Whether transition animations should be enabled when switching tabs.
|
|
186
|
+
* Defaults to `false`.
|
|
187
|
+
*/
|
|
188
|
+
animationEnabled?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Function which specifies interpolated styles for bottom-tab scenes.
|
|
191
|
+
*/
|
|
192
|
+
sceneStyleInterpolator?: BottomTabSceneStyleInterpolator;
|
|
193
|
+
/**
|
|
194
|
+
* Object which specifies the animation type (timing or spring) and their options (such as duration for timing).
|
|
195
|
+
*/
|
|
196
|
+
transitionSpec?: TransitionSpec;
|
|
184
197
|
};
|
|
185
198
|
export type BottomTabDescriptor = Descriptor<BottomTabNavigationOptions, BottomTabNavigationProp<ParamListBase>, RouteProp<ParamListBase>>;
|
|
186
199
|
export type BottomTabDescriptorMap = Record<string, BottomTabDescriptor>;
|
|
200
|
+
export type BottomTabSceneInterpolationProps = {
|
|
201
|
+
/**
|
|
202
|
+
* Animated value for the current screen:
|
|
203
|
+
* - -1 if the index is lower than active tab,
|
|
204
|
+
* - 0 if they're active,
|
|
205
|
+
* - 1 if the index is higher than active tab
|
|
206
|
+
*/
|
|
207
|
+
current: Animated.Value;
|
|
208
|
+
};
|
|
209
|
+
export type BottomTabSceneInterpolatedStyle = {
|
|
210
|
+
/**
|
|
211
|
+
* Interpolated style for the view representing the scene containing screen content.
|
|
212
|
+
*/
|
|
213
|
+
sceneStyle: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;
|
|
214
|
+
};
|
|
215
|
+
export type BottomTabSceneStyleInterpolator = (props: BottomTabSceneInterpolationProps) => BottomTabSceneInterpolatedStyle;
|
|
216
|
+
export type TransitionSpec = {
|
|
217
|
+
animation: 'timing';
|
|
218
|
+
config: Omit<Animated.TimingAnimationConfig, 'toValue' | keyof Animated.AnimationConfig>;
|
|
219
|
+
} | {
|
|
220
|
+
animation: 'spring';
|
|
221
|
+
config: Omit<Animated.SpringAnimationConfig, 'toValue' | keyof Animated.AnimationConfig>;
|
|
222
|
+
};
|
|
223
|
+
export type BottomTabTransitionPreset = {
|
|
224
|
+
/**
|
|
225
|
+
* Whether transition animations should be enabled when switching tabs.
|
|
226
|
+
*/
|
|
227
|
+
animationEnabled?: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* Function which specifies interpolated styles for bottom-tab scenes.
|
|
230
|
+
*/
|
|
231
|
+
sceneStyleInterpolator?: BottomTabSceneStyleInterpolator;
|
|
232
|
+
/**
|
|
233
|
+
* Object which specifies the animation type (timing or spring) and their options (such as duration for timing).
|
|
234
|
+
*/
|
|
235
|
+
transitionSpec?: TransitionSpec;
|
|
236
|
+
};
|
|
187
237
|
export type BottomTabNavigationConfig = {
|
|
188
238
|
/**
|
|
189
239
|
* Function that returns a React element to display as the tab bar.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnimatedHashMap.d.ts","sourceRoot":"","sources":["../../../../src/utils/useAnimatedHashMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,eAAe,kCAoBpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomTabView.d.ts","sourceRoot":"","sources":["../../../../src/views/BottomTabView.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAEV,sBAAsB,EAEtB,yBAAyB,EACzB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"BottomTabView.d.ts","sourceRoot":"","sources":["../../../../src/views/BottomTabView.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAEV,sBAAsB,EAEtB,yBAAyB,EACzB,0BAA0B,EAG3B,MAAM,UAAU,CAAC;AAQlB,KAAK,KAAK,GAAG,yBAAyB,GAAG;IACvC,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,UAAU,EAAE,0BAA0B,CAAC;IACvC,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAiBF,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,eAsMzC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { StyleProp, ViewProps, ViewStyle } from 'react-native';
|
|
2
|
+
import { Animated, StyleProp, ViewProps, ViewStyle } from 'react-native';
|
|
3
3
|
type Props = {
|
|
4
|
-
visible: boolean;
|
|
5
|
-
children: React.ReactNode;
|
|
6
4
|
enabled: boolean;
|
|
5
|
+
active: 0 | 1 | 2 | Animated.AnimatedInterpolation<0 | 1>;
|
|
6
|
+
children: React.ReactNode;
|
|
7
7
|
freezeOnBlur?: boolean;
|
|
8
8
|
style?: StyleProp<ViewStyle>;
|
|
9
9
|
};
|
|
@@ -12,6 +12,6 @@ export declare const MaybeScreenContainer: ({ enabled, ...rest }: ViewProps & {
|
|
|
12
12
|
hasTwoStates: boolean;
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
}) => JSX.Element;
|
|
15
|
-
export declare function MaybeScreen({
|
|
15
|
+
export declare function MaybeScreen({ enabled, active, ...rest }: ViewProps & Props): JSX.Element;
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=ScreenFallback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenFallback.d.ts","sourceRoot":"","sources":["../../../../src/views/ScreenFallback.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ScreenFallback.d.ts","sourceRoot":"","sources":["../../../../src/views/ScreenFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/E,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAUF,eAAO,MAAM,oBAAoB;aAItB,OAAO;kBACF,OAAO;cACX,MAAM,SAAS;iBAO1B,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,GAAG,KAAK,eAQ1E"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/bottom-tabs",
|
|
3
3
|
"description": "Bottom tab navigator following iOS design guidelines",
|
|
4
|
-
"version": "7.0.0-alpha.
|
|
4
|
+
"version": "7.0.0-alpha.3",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"clean": "del lib"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@react-navigation/elements": "^
|
|
39
|
+
"@react-navigation/elements": "^2.0.0-alpha.0",
|
|
40
40
|
"color": "^4.2.3"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@react-navigation/native": "^7.0.0-alpha.
|
|
43
|
+
"@react-navigation/native": "^7.0.0-alpha.3",
|
|
44
44
|
"@testing-library/react-native": "^11.5.0",
|
|
45
45
|
"@types/color": "^3.0.3",
|
|
46
46
|
"@types/react": "~18.0.27",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"del-cli": "^5.0.0",
|
|
49
49
|
"react": "18.2.0",
|
|
50
50
|
"react-native": "0.71.8",
|
|
51
|
-
"react-native-builder-bob": "^0.
|
|
51
|
+
"react-native-builder-bob": "^0.21.0",
|
|
52
52
|
"react-native-safe-area-context": "4.5.0",
|
|
53
53
|
"react-native-screens": "~3.20.0",
|
|
54
54
|
"typescript": "^4.9.4"
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
]
|
|
75
75
|
]
|
|
76
76
|
},
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "ddc5705b979d62bb3a293f221ec954cbad3dfba4"
|
|
78
78
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
BottomTabSceneInterpolatedStyle,
|
|
3
|
+
BottomTabSceneInterpolationProps,
|
|
4
|
+
} from '../types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Simple cross fade animation
|
|
8
|
+
*/
|
|
9
|
+
export function forCrossFade({
|
|
10
|
+
current,
|
|
11
|
+
}: BottomTabSceneInterpolationProps): BottomTabSceneInterpolatedStyle {
|
|
12
|
+
return {
|
|
13
|
+
sceneStyle: {
|
|
14
|
+
opacity: current.interpolate({
|
|
15
|
+
inputRange: [-1, 0, 1],
|
|
16
|
+
outputRange: [0, 1, 0],
|
|
17
|
+
}),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Animation where the screens slightly shift to left/right
|
|
24
|
+
*/
|
|
25
|
+
export function forShifting({
|
|
26
|
+
current,
|
|
27
|
+
}: BottomTabSceneInterpolationProps): BottomTabSceneInterpolatedStyle {
|
|
28
|
+
return {
|
|
29
|
+
sceneStyle: {
|
|
30
|
+
opacity: current.interpolate({
|
|
31
|
+
inputRange: [-1, 0, 1],
|
|
32
|
+
outputRange: [0, 1, 0],
|
|
33
|
+
}),
|
|
34
|
+
transform: [
|
|
35
|
+
{
|
|
36
|
+
translateX: current.interpolate({
|
|
37
|
+
inputRange: [-1, 0, 1],
|
|
38
|
+
outputRange: [-50, 1, 50],
|
|
39
|
+
}),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BottomTabTransitionPreset } from '../types';
|
|
2
|
+
import { forCrossFade, forShifting } from './SceneStyleInterpolators';
|
|
3
|
+
import { CrossFadeSpec, ShiftingSpec } from './TransitionSpecs';
|
|
4
|
+
|
|
5
|
+
export const FadeTransition: BottomTabTransitionPreset = {
|
|
6
|
+
transitionSpec: CrossFadeSpec,
|
|
7
|
+
sceneStyleInterpolator: forCrossFade,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const ShiftingTransition: BottomTabTransitionPreset = {
|
|
11
|
+
transitionSpec: ShiftingSpec,
|
|
12
|
+
sceneStyleInterpolator: forShifting,
|
|
13
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Easing } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import type { TransitionSpec } from '../types';
|
|
4
|
+
|
|
5
|
+
export const CrossFadeSpec: TransitionSpec = {
|
|
6
|
+
animation: 'timing',
|
|
7
|
+
config: {
|
|
8
|
+
duration: 150,
|
|
9
|
+
easing: Easing.in(Easing.linear),
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const ShiftingSpec: TransitionSpec = {
|
|
14
|
+
animation: 'timing',
|
|
15
|
+
config: {
|
|
16
|
+
duration: 150,
|
|
17
|
+
easing: Easing.inOut(Easing.ease),
|
|
18
|
+
},
|
|
19
|
+
};
|
package/src/index.tsx
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import * as SceneStyleInterpolator from './TransitionConfigs/SceneStyleInterpolators';
|
|
2
|
+
import * as TransitionPresets from './TransitionConfigs/TransitionPresets';
|
|
3
|
+
import * as TransitionSpecs from './TransitionConfigs/TransitionSpecs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Transition Presets
|
|
7
|
+
*/
|
|
8
|
+
export { SceneStyleInterpolator, TransitionPresets, TransitionSpecs };
|
|
9
|
+
|
|
1
10
|
/**
|
|
2
11
|
* Navigators
|
|
3
12
|
*/
|
package/src/types.tsx
CHANGED
|
@@ -254,6 +254,22 @@ export type BottomTabNavigationOptions = HeaderOptions & {
|
|
|
254
254
|
* Only supported on iOS and Android.
|
|
255
255
|
*/
|
|
256
256
|
freezeOnBlur?: boolean;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Whether transition animations should be enabled when switching tabs.
|
|
260
|
+
* Defaults to `false`.
|
|
261
|
+
*/
|
|
262
|
+
animationEnabled?: boolean;
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Function which specifies interpolated styles for bottom-tab scenes.
|
|
266
|
+
*/
|
|
267
|
+
sceneStyleInterpolator?: BottomTabSceneStyleInterpolator;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Object which specifies the animation type (timing or spring) and their options (such as duration for timing).
|
|
271
|
+
*/
|
|
272
|
+
transitionSpec?: TransitionSpec;
|
|
257
273
|
};
|
|
258
274
|
|
|
259
275
|
export type BottomTabDescriptor = Descriptor<
|
|
@@ -264,6 +280,60 @@ export type BottomTabDescriptor = Descriptor<
|
|
|
264
280
|
|
|
265
281
|
export type BottomTabDescriptorMap = Record<string, BottomTabDescriptor>;
|
|
266
282
|
|
|
283
|
+
export type BottomTabSceneInterpolationProps = {
|
|
284
|
+
/**
|
|
285
|
+
* Animated value for the current screen:
|
|
286
|
+
* - -1 if the index is lower than active tab,
|
|
287
|
+
* - 0 if they're active,
|
|
288
|
+
* - 1 if the index is higher than active tab
|
|
289
|
+
*/
|
|
290
|
+
current: Animated.Value;
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
export type BottomTabSceneInterpolatedStyle = {
|
|
294
|
+
/**
|
|
295
|
+
* Interpolated style for the view representing the scene containing screen content.
|
|
296
|
+
*/
|
|
297
|
+
sceneStyle: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
export type BottomTabSceneStyleInterpolator = (
|
|
301
|
+
props: BottomTabSceneInterpolationProps
|
|
302
|
+
) => BottomTabSceneInterpolatedStyle;
|
|
303
|
+
|
|
304
|
+
export type TransitionSpec =
|
|
305
|
+
| {
|
|
306
|
+
animation: 'timing';
|
|
307
|
+
config: Omit<
|
|
308
|
+
Animated.TimingAnimationConfig,
|
|
309
|
+
'toValue' | keyof Animated.AnimationConfig
|
|
310
|
+
>;
|
|
311
|
+
}
|
|
312
|
+
| {
|
|
313
|
+
animation: 'spring';
|
|
314
|
+
config: Omit<
|
|
315
|
+
Animated.SpringAnimationConfig,
|
|
316
|
+
'toValue' | keyof Animated.AnimationConfig
|
|
317
|
+
>;
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
export type BottomTabTransitionPreset = {
|
|
321
|
+
/**
|
|
322
|
+
* Whether transition animations should be enabled when switching tabs.
|
|
323
|
+
*/
|
|
324
|
+
animationEnabled?: boolean;
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Function which specifies interpolated styles for bottom-tab scenes.
|
|
328
|
+
*/
|
|
329
|
+
sceneStyleInterpolator?: BottomTabSceneStyleInterpolator;
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Object which specifies the animation type (timing or spring) and their options (such as duration for timing).
|
|
333
|
+
*/
|
|
334
|
+
transitionSpec?: TransitionSpec;
|
|
335
|
+
};
|
|
336
|
+
|
|
267
337
|
export type BottomTabNavigationConfig = {
|
|
268
338
|
/**
|
|
269
339
|
* Function that returns a React element to display as the tab bar.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { NavigationState } from '@react-navigation/routers';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Animated } from 'react-native';
|
|
4
|
+
|
|
5
|
+
export function useAnimatedHashMap({ routes, index }: NavigationState) {
|
|
6
|
+
const refs = React.useRef<Record<string, Animated.Value>>({});
|
|
7
|
+
const previous = refs.current;
|
|
8
|
+
const routeKeys = Object.keys(previous);
|
|
9
|
+
|
|
10
|
+
if (
|
|
11
|
+
routes.length === routeKeys.length &&
|
|
12
|
+
routes.every((route) => routeKeys.includes(route.key))
|
|
13
|
+
) {
|
|
14
|
+
return previous;
|
|
15
|
+
}
|
|
16
|
+
refs.current = {};
|
|
17
|
+
|
|
18
|
+
routes.forEach(({ key }, i) => {
|
|
19
|
+
refs.current[key] =
|
|
20
|
+
previous[key] ??
|
|
21
|
+
new Animated.Value(i === index ? 0 : i >= index ? 1 : -1);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return refs.current;
|
|
25
|
+
}
|