@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.
Files changed (52) hide show
  1. package/lib/commonjs/TransitionConfigs/SceneStyleInterpolators.js +47 -0
  2. package/lib/commonjs/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
  3. package/lib/commonjs/TransitionConfigs/TransitionPresets.js +19 -0
  4. package/lib/commonjs/TransitionConfigs/TransitionPresets.js.map +1 -0
  5. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +24 -0
  6. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js.map +1 -0
  7. package/lib/commonjs/index.js +9 -0
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/utils/useAnimatedHashMap.js +31 -0
  10. package/lib/commonjs/utils/useAnimatedHashMap.js.map +1 -0
  11. package/lib/commonjs/views/BottomTabView.js +74 -4
  12. package/lib/commonjs/views/BottomTabView.js.map +1 -1
  13. package/lib/commonjs/views/ScreenFallback.js +6 -8
  14. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  15. package/lib/module/TransitionConfigs/SceneStyleInterpolators.js +40 -0
  16. package/lib/module/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
  17. package/lib/module/TransitionConfigs/TransitionPresets.js +11 -0
  18. package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -0
  19. package/lib/module/TransitionConfigs/TransitionSpecs.js +16 -0
  20. package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -0
  21. package/lib/module/index.js +9 -0
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/utils/useAnimatedHashMap.js +23 -0
  24. package/lib/module/utils/useAnimatedHashMap.js.map +1 -0
  25. package/lib/module/views/BottomTabView.js +75 -5
  26. package/lib/module/views/BottomTabView.js.map +1 -1
  27. package/lib/module/views/ScreenFallback.js +6 -8
  28. package/lib/module/views/ScreenFallback.js.map +1 -1
  29. package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts +10 -0
  30. package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts.map +1 -0
  31. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +4 -0
  32. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -0
  33. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +4 -0
  34. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -0
  35. package/lib/typescript/src/index.d.ts +7 -0
  36. package/lib/typescript/src/index.d.ts.map +1 -1
  37. package/lib/typescript/src/types.d.ts +50 -0
  38. package/lib/typescript/src/types.d.ts.map +1 -1
  39. package/lib/typescript/src/utils/useAnimatedHashMap.d.ts +4 -0
  40. package/lib/typescript/src/utils/useAnimatedHashMap.d.ts.map +1 -0
  41. package/lib/typescript/src/views/BottomTabView.d.ts.map +1 -1
  42. package/lib/typescript/src/views/ScreenFallback.d.ts +4 -4
  43. package/lib/typescript/src/views/ScreenFallback.d.ts.map +1 -1
  44. package/package.json +5 -5
  45. package/src/TransitionConfigs/SceneStyleInterpolators.tsx +44 -0
  46. package/src/TransitionConfigs/TransitionPresets.tsx +13 -0
  47. package/src/TransitionConfigs/TransitionSpecs.tsx +19 -0
  48. package/src/index.tsx +9 -0
  49. package/src/types.tsx +70 -0
  50. package/src/utils/useAnimatedHashMap.tsx +25 -0
  51. package/src/views/BottomTabView.tsx +93 -6
  52. 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: true,
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
- visible: isFocused,
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","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","freezeOnBlur","header","name","headerShown","headerStatusBarHeight","headerTransparent","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabView.tsx"],"mappings":"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"}
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":"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"}
@@ -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
- visible,
28
- children,
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
- activityState: visible ? 2 : 0
34
- }, rest), children);
32
+ enabled: enabled,
33
+ activityState: active
34
+ }, rest));
35
35
  }
36
- return /*#__PURE__*/React.createElement(ResourceSavingView, _extends({
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":["ResourceSavingView","React","View","Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"sourceRoot":"../../../src","sources":["views/ScreenFallback.tsx"],"mappings":";AAAA,SAASA,kBAAkB,QAAQ,4BAA4B;AAC/D,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAAoBC,IAAI,QAA8B,cAAc;AAUpE,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,QAAwC;EAAA;EAAA,IAAvC;IAAEC,OAAO;IAAEC,QAAQ;IAAE,GAAGJ;EAAY,CAAC;EAC/D,iBAAIL,OAAO,+DAAP,UAASM,cAAc,kDAAvB,qCAA2B,EAAE;IAC/B,oBACE,oBAAC,OAAO,CAAC,MAAM;MAAC,aAAa,EAAEE,OAAO,GAAG,CAAC,GAAG;IAAE,GAAKH,IAAI,GACrDI,QAAQ,CACM;EAErB;EAEA,oBACE,oBAAC,kBAAkB;IAAC,OAAO,EAAED;EAAQ,GAAKH,IAAI,GAC3CI,QAAQ,CACU;AAEzB"}
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,4 @@
1
+ import type { BottomTabTransitionPreset } from '../types';
2
+ export declare const FadeTransition: BottomTabTransitionPreset;
3
+ export declare const ShiftingTransition: BottomTabTransitionPreset;
4
+ //# sourceMappingURL=TransitionPresets.d.ts.map
@@ -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,4 @@
1
+ import type { TransitionSpec } from '../types';
2
+ export declare const CrossFadeSpec: TransitionSpec;
3
+ export declare const ShiftingSpec: TransitionSpec;
4
+ //# sourceMappingURL=TransitionSpecs.d.ts.map
@@ -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,4 @@
1
+ import type { NavigationState } from '@react-navigation/routers';
2
+ import { Animated } from 'react-native';
3
+ export declare function useAnimatedHashMap({ routes, index }: NavigationState): Record<string, Animated.Value>;
4
+ //# sourceMappingURL=useAnimatedHashMap.d.ts.map
@@ -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,EAE3B,MAAM,UAAU,CAAC;AAMlB,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;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,eAiIzC"}
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({ visible, children, ...rest }: Props): JSX.Element;
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":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAQ,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAErE,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,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,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,eAchE"}
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.2",
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": "^1.4.0-alpha.1",
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.2",
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.20.4",
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": "36c8f091556157dab74d3483651bbcbd340762ff"
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
+ }