@react-navigation/bottom-tabs 7.0.0-alpha.2 → 7.0.0-alpha.4

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 (71) 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/BottomTabBar.js +53 -13
  12. package/lib/commonjs/views/BottomTabBar.js.map +1 -1
  13. package/lib/commonjs/views/BottomTabItem.js +21 -27
  14. package/lib/commonjs/views/BottomTabItem.js.map +1 -1
  15. package/lib/commonjs/views/BottomTabView.js +89 -8
  16. package/lib/commonjs/views/BottomTabView.js.map +1 -1
  17. package/lib/commonjs/views/ScreenFallback.js +6 -8
  18. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  19. package/lib/commonjs/views/TabBarIcon.js +12 -17
  20. package/lib/commonjs/views/TabBarIcon.js.map +1 -1
  21. package/lib/module/TransitionConfigs/SceneStyleInterpolators.js +40 -0
  22. package/lib/module/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
  23. package/lib/module/TransitionConfigs/TransitionPresets.js +11 -0
  24. package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -0
  25. package/lib/module/TransitionConfigs/TransitionSpecs.js +16 -0
  26. package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -0
  27. package/lib/module/index.js +9 -0
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/utils/useAnimatedHashMap.js +23 -0
  30. package/lib/module/utils/useAnimatedHashMap.js.map +1 -0
  31. package/lib/module/views/BottomTabBar.js +55 -15
  32. package/lib/module/views/BottomTabBar.js.map +1 -1
  33. package/lib/module/views/BottomTabItem.js +22 -28
  34. package/lib/module/views/BottomTabItem.js.map +1 -1
  35. package/lib/module/views/BottomTabView.js +90 -9
  36. package/lib/module/views/BottomTabView.js.map +1 -1
  37. package/lib/module/views/ScreenFallback.js +6 -8
  38. package/lib/module/views/ScreenFallback.js.map +1 -1
  39. package/lib/module/views/TabBarIcon.js +12 -17
  40. package/lib/module/views/TabBarIcon.js.map +1 -1
  41. package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts +10 -0
  42. package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts.map +1 -0
  43. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +4 -0
  44. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -0
  45. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +4 -0
  46. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -0
  47. package/lib/typescript/src/index.d.ts +7 -0
  48. package/lib/typescript/src/index.d.ts.map +1 -1
  49. package/lib/typescript/src/types.d.ts +54 -0
  50. package/lib/typescript/src/types.d.ts.map +1 -1
  51. package/lib/typescript/src/utils/useAnimatedHashMap.d.ts +4 -0
  52. package/lib/typescript/src/utils/useAnimatedHashMap.d.ts.map +1 -0
  53. package/lib/typescript/src/views/BottomTabBar.d.ts +1 -1
  54. package/lib/typescript/src/views/BottomTabBar.d.ts.map +1 -1
  55. package/lib/typescript/src/views/BottomTabItem.d.ts.map +1 -1
  56. package/lib/typescript/src/views/BottomTabView.d.ts.map +1 -1
  57. package/lib/typescript/src/views/ScreenFallback.d.ts +4 -4
  58. package/lib/typescript/src/views/ScreenFallback.d.ts.map +1 -1
  59. package/lib/typescript/src/views/TabBarIcon.d.ts.map +1 -1
  60. package/package.json +5 -5
  61. package/src/TransitionConfigs/SceneStyleInterpolators.tsx +44 -0
  62. package/src/TransitionConfigs/TransitionPresets.tsx +13 -0
  63. package/src/TransitionConfigs/TransitionSpecs.tsx +19 -0
  64. package/src/index.tsx +9 -0
  65. package/src/types.tsx +75 -0
  66. package/src/utils/useAnimatedHashMap.tsx +25 -0
  67. package/src/views/BottomTabBar.tsx +109 -34
  68. package/src/views/BottomTabItem.tsx +31 -37
  69. package/src/views/BottomTabView.tsx +115 -10
  70. package/src/views/ScreenFallback.tsx +6 -13
  71. package/src/views/TabBarIcon.tsx +13 -21
@@ -10,11 +10,27 @@ var _reactNative = require("react-native");
10
10
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
11
11
  var _BottomTabBarHeightCallbackContext = require("../utils/BottomTabBarHeightCallbackContext");
12
12
  var _BottomTabBarHeightContext = require("../utils/BottomTabBarHeightContext");
13
+ var _useAnimatedHashMap = require("../utils/useAnimatedHashMap");
13
14
  var _BottomTabBar = require("./BottomTabBar");
14
15
  var _ScreenFallback = require("./ScreenFallback");
15
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
18
  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); }
19
+ var CompositeAnimation = _reactNative.Animated.CompositeAnimation;
20
+ const EPSILON = 1e-5;
21
+ const STATE_INACTIVE = 0;
22
+ const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
23
+ const STATE_ON_TOP = 2;
24
+ const hasAnimation = options => {
25
+ const {
26
+ animationEnabled,
27
+ transitionSpec
28
+ } = options;
29
+ if (animationEnabled === false || !transitionSpec) {
30
+ return false;
31
+ }
32
+ return true;
33
+ };
18
34
  function BottomTabView(props) {
19
35
  const {
20
36
  tabBar = props => /*#__PURE__*/React.createElement(_BottomTabBar.BottomTabBar, props),
@@ -26,10 +42,43 @@ function BottomTabView(props) {
26
42
  sceneContainerStyle
27
43
  } = props;
28
44
  const focusedRouteKey = state.routes[state.index].key;
45
+
46
+ /**
47
+ * List of loaded tabs, tabs will be loaded when navigated to.
48
+ */
29
49
  const [loaded, setLoaded] = React.useState([focusedRouteKey]);
30
50
  if (!loaded.includes(focusedRouteKey)) {
51
+ // Set the current tab to be loaded if it was not loaded before
31
52
  setLoaded([...loaded, focusedRouteKey]);
32
53
  }
54
+ const tabAnims = (0, _useAnimatedHashMap.useAnimatedHashMap)(state);
55
+ React.useEffect(() => {
56
+ const animateToIndex = () => {
57
+ _reactNative.Animated.parallel(state.routes.map((route, index) => {
58
+ const {
59
+ options
60
+ } = descriptors[route.key];
61
+ const {
62
+ transitionSpec
63
+ } = options;
64
+ const animationEnabled = hasAnimation(options);
65
+ const toValue = index === state.index ? 0 : index >= state.index ? 1 : -1;
66
+ if (!animationEnabled || !transitionSpec) {
67
+ return _reactNative.Animated.timing(tabAnims[route.key], {
68
+ toValue,
69
+ duration: 0,
70
+ useNativeDriver: true
71
+ });
72
+ }
73
+ return _reactNative.Animated[transitionSpec.animation](tabAnims[route.key], {
74
+ ...transitionSpec.config,
75
+ toValue,
76
+ useNativeDriver: true
77
+ });
78
+ }).filter(Boolean)).start();
79
+ };
80
+ animateToIndex();
81
+ }, [descriptors, state.index, state.routes, tabAnims]);
33
82
  const dimensions = _elements.SafeAreaProviderCompat.initialMetrics.frame;
34
83
  const [tabBarHeight, setTabBarHeight] = React.useState(() => (0, _BottomTabBar.getTabBarHeight)({
35
84
  state,
@@ -61,15 +110,24 @@ function BottomTabView(props) {
61
110
  const {
62
111
  routes
63
112
  } = state;
64
- return /*#__PURE__*/React.createElement(_elements.SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreenContainer, {
113
+
114
+ // If there is no animation, we only have 2 states: visible and invisible
115
+ const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
116
+ const {
117
+ tabBarPosition = 'bottom'
118
+ } = descriptors[focusedRouteKey].options;
119
+ return /*#__PURE__*/React.createElement(_elements.SafeAreaProviderCompat, {
120
+ style: tabBarPosition === 'left' ? styles.left : tabBarPosition === 'right' ? styles.right : null
121
+ }, /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreenContainer, {
65
122
  enabled: detachInactiveScreens,
66
- hasTwoStates: true,
67
- style: styles.container
123
+ hasTwoStates: hasTwoStates,
124
+ style: styles.screens
68
125
  }, routes.map((route, index) => {
69
126
  const descriptor = descriptors[route.key];
70
127
  const {
71
128
  lazy = true,
72
- unmountOnBlur
129
+ unmountOnBlur,
130
+ sceneStyleInterpolator
73
131
  } = descriptor.options;
74
132
  const isFocused = state.index === index;
75
133
  if (unmountOnBlur && !isFocused) {
@@ -95,16 +153,33 @@ function BottomTabView(props) {
95
153
  headerStatusBarHeight,
96
154
  headerTransparent
97
155
  } = descriptor.options;
156
+ const {
157
+ sceneStyle
158
+ } = (sceneStyleInterpolator === null || sceneStyleInterpolator === void 0 ? void 0 : sceneStyleInterpolator({
159
+ current: tabAnims[route.key]
160
+ })) ?? {};
161
+ const animationEnabled = hasAnimation(descriptor.options);
162
+ const activityState = isFocused ? STATE_ON_TOP // the screen is on top after the transition
163
+ : animationEnabled // is animation is not enabled, immediately move to inactive state
164
+ ? tabAnims[route.key].interpolate({
165
+ inputRange: [0, 1 - EPSILON, 1],
166
+ outputRange: [STATE_TRANSITIONING_OR_BELOW_TOP,
167
+ // screen visible during transition
168
+ STATE_TRANSITIONING_OR_BELOW_TOP, STATE_INACTIVE // the screen is detached after transition
169
+ ],
170
+
171
+ extrapolate: 'extend'
172
+ }) : STATE_INACTIVE;
98
173
  return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreen, {
99
174
  key: route.key,
100
175
  style: [_reactNative.StyleSheet.absoluteFill, {
101
176
  zIndex: isFocused ? 0 : -1
102
177
  }],
103
- visible: isFocused,
178
+ active: activityState,
104
179
  enabled: detachInactiveScreens,
105
180
  freezeOnBlur: freezeOnBlur
106
181
  }, /*#__PURE__*/React.createElement(_BottomTabBarHeightContext.BottomTabBarHeightContext.Provider, {
107
- value: tabBarHeight
182
+ value: tabBarPosition === 'bottom' ? tabBarHeight : 0
108
183
  }, /*#__PURE__*/React.createElement(_elements.Screen, {
109
184
  focused: isFocused,
110
185
  route: descriptor.route,
@@ -118,14 +193,20 @@ function BottomTabView(props) {
118
193
  navigation: descriptor.navigation,
119
194
  options: descriptor.options
120
195
  }),
121
- style: sceneContainerStyle
196
+ style: [sceneContainerStyle, animationEnabled && sceneStyle]
122
197
  }, descriptor.render())));
123
198
  })), /*#__PURE__*/React.createElement(_BottomTabBarHeightCallbackContext.BottomTabBarHeightCallbackContext.Provider, {
124
199
  value: setTabBarHeight
125
200
  }, renderTabBar()));
126
201
  }
127
202
  const styles = _reactNative.StyleSheet.create({
128
- container: {
203
+ left: {
204
+ flexDirection: 'row-reverse'
205
+ },
206
+ right: {
207
+ flexDirection: 'row'
208
+ },
209
+ screens: {
129
210
  flex: 1,
130
211
  overflow: 'hidden'
131
212
  }
@@ -1 +1 @@
1
- {"version":3,"names":["BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","getTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","freezeOnBlur","header","getHeaderTitle","name","headerShown","headerStatusBarHeight","headerTransparent","StyleSheet","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabView.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["CompositeAnimation","Animated","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","hasAnimation","options","animationEnabled","transitionSpec","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","tabAnims","useAnimatedHashMap","useEffect","animateToIndex","parallel","map","route","toValue","timing","duration","useNativeDriver","animation","config","filter","Boolean","start","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","getTabBarHeight","layout","width","height","insets","style","tabBarStyle","renderTabBar","top","right","bottom","left","hasTwoStates","some","tabBarPosition","styles","screens","descriptor","lazy","unmountOnBlur","sceneStyleInterpolator","isFocused","freezeOnBlur","header","getHeaderTitle","name","headerShown","headerStatusBarHeight","headerTransparent","sceneStyle","current","activityState","interpolate","inputRange","outputRange","extrapolate","StyleSheet","absoluteFill","zIndex","render","create","flexDirection","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabView.tsx"],"mappings":"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"}
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.MaybeScreen = MaybeScreen;
7
7
  exports.MaybeScreenContainer = void 0;
8
- var _elements = require("@react-navigation/elements");
9
8
  var React = _interopRequireWildcard(require("react"));
10
9
  var _reactNative = require("react-native");
11
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -34,17 +33,16 @@ exports.MaybeScreenContainer = MaybeScreenContainer;
34
33
  function MaybeScreen(_ref2) {
35
34
  var _Screens2, _Screens2$screensEnab;
36
35
  let {
37
- visible,
38
- children,
36
+ enabled,
37
+ active,
39
38
  ...rest
40
39
  } = _ref2;
41
40
  if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
42
41
  return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
43
- activityState: visible ? 2 : 0
44
- }, rest), children);
42
+ enabled: enabled,
43
+ activityState: active
44
+ }, rest));
45
45
  }
46
- return /*#__PURE__*/React.createElement(_elements.ResourceSavingView, _extends({
47
- visible: visible
48
- }, rest), children);
46
+ return /*#__PURE__*/React.createElement(_reactNative.View, rest);
49
47
  }
50
48
  //# sourceMappingURL=ScreenFallback.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"sourceRoot":"../../../src","sources":["views/ScreenFallback.tsx"],"mappings":";;;;;;;AAAA;AACA;AACA;AAAqE;AAAA;AAAA;AAUrE,IAAIA,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGK,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,iBAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAAC;AAEK,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,4BAAkB;IAAC,OAAO,EAAED;EAAQ,GAAKH,IAAI,GAC3CI,QAAQ,CACU;AAEzB"}
1
+ {"version":3,"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","active"],"sourceRoot":"../../../src","sources":["views/ScreenFallback.tsx"],"mappings":";;;;;;;AAAA;AACA;AAA+E;AAAA;AAAA;AAU/E,IAAIA,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGK,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,iBAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAAC;AAEK,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,iBAAI,EAAKA,IAAI,CAAI;AAC3B"}
@@ -8,6 +8,7 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _Badge = require("./Badge");
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const ICON_SIZE = 25;
11
12
  function TabBarIcon(_ref) {
12
13
  let {
13
14
  route: _,
@@ -21,8 +22,6 @@ function TabBarIcon(_ref) {
21
22
  renderIcon,
22
23
  style
23
24
  } = _ref;
24
- const size = 25;
25
-
26
25
  // We render the icon twice at the same position on top of each other:
27
26
  // active and inactive one, so we can fade between them.
28
27
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
@@ -33,7 +32,7 @@ function TabBarIcon(_ref) {
33
32
  }]
34
33
  }, renderIcon({
35
34
  focused: true,
36
- size,
35
+ size: ICON_SIZE,
37
36
  color: activeTintColor
38
37
  })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
39
38
  style: [styles.icon, {
@@ -41,12 +40,12 @@ function TabBarIcon(_ref) {
41
40
  }]
42
41
  }, renderIcon({
43
42
  focused: false,
44
- size,
43
+ size: ICON_SIZE,
45
44
  color: inactiveTintColor
46
45
  })), /*#__PURE__*/_react.default.createElement(_Badge.Badge, {
47
46
  visible: badge != null,
48
- style: [styles.badge, horizontal ? styles.badgeHorizontal : styles.badgeVertical, badgeStyle],
49
- size: size * 3 / 4
47
+ style: [styles.badge, badgeStyle],
48
+ size: ICON_SIZE * 0.75
50
49
  }, badge));
51
50
  }
52
51
  const styles = _reactNative.StyleSheet.create({
@@ -61,24 +60,20 @@ const styles = _reactNative.StyleSheet.create({
61
60
  height: '100%',
62
61
  width: '100%',
63
62
  // Workaround for react-native >= 0.54 layout bug
64
- minWidth: 25
63
+ minWidth: ICON_SIZE
65
64
  },
66
65
  iconVertical: {
67
- flex: 1
66
+ width: ICON_SIZE,
67
+ height: ICON_SIZE
68
68
  },
69
69
  iconHorizontal: {
70
- height: '100%',
71
- marginTop: 3
70
+ width: ICON_SIZE,
71
+ height: ICON_SIZE
72
72
  },
73
73
  badge: {
74
74
  position: 'absolute',
75
- left: 3
76
- },
77
- badgeVertical: {
78
- top: 3
79
- },
80
- badgeHorizontal: {
81
- top: 7
75
+ right: -5,
76
+ top: -5
82
77
  }
83
78
  });
84
79
  //# sourceMappingURL=TabBarIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TabBarIcon","route","_","horizontal","badge","badgeStyle","activeOpacity","inactiveOpacity","activeTintColor","inactiveTintColor","renderIcon","style","size","styles","iconHorizontal","iconVertical","icon","opacity","focused","color","badgeHorizontal","badgeVertical","StyleSheet","create","position","alignSelf","alignItems","justifyContent","height","width","minWidth","flex","marginTop","left","top"],"sourceRoot":"../../../src","sources":["views/TabBarIcon.tsx"],"mappings":";;;;;;AACA;AACA;AAQA;AAAgC;AAmBzB,SAASA,UAAU,OAWhB;EAAA,IAXiB;IACzBC,KAAK,EAAEC,CAAC;IACRC,UAAU;IACVC,KAAK;IACLC,UAAU;IACVC,aAAa;IACbC,eAAe;IACfC,eAAe;IACfC,iBAAiB;IACjBC,UAAU;IACVC;EACK,CAAC;EACN,MAAMC,IAAI,GAAG,EAAE;;EAEf;EACA;EACA,oBACE,6BAAC,iBAAI;IACH,KAAK,EAAE,CAACT,UAAU,GAAGU,MAAM,CAACC,cAAc,GAAGD,MAAM,CAACE,YAAY,EAAEJ,KAAK;EAAE,gBAEzE,6BAAC,iBAAI;IAAC,KAAK,EAAE,CAACE,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEX;IAAc,CAAC;EAAE,GACpDI,UAAU,CAAC;IACVQ,OAAO,EAAE,IAAI;IACbN,IAAI;IACJO,KAAK,EAAEX;EACT,CAAC,CAAC,CACG,eACP,6BAAC,iBAAI;IAAC,KAAK,EAAE,CAACK,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEV;IAAgB,CAAC;EAAE,GACtDG,UAAU,CAAC;IACVQ,OAAO,EAAE,KAAK;IACdN,IAAI;IACJO,KAAK,EAAEV;EACT,CAAC,CAAC,CACG,eACP,6BAAC,YAAK;IACJ,OAAO,EAAEL,KAAK,IAAI,IAAK;IACvB,KAAK,EAAE,CACLS,MAAM,CAACT,KAAK,EACZD,UAAU,GAAGU,MAAM,CAACO,eAAe,GAAGP,MAAM,CAACQ,aAAa,EAC1DhB,UAAU,CACV;IACF,IAAI,EAAGO,IAAI,GAAG,CAAC,GAAI;EAAE,GAEpBR,KAAK,CACA,CACH;AAEX;AAEA,MAAMS,MAAM,GAAGS,uBAAU,CAACC,MAAM,CAAC;EAC/BP,IAAI,EAAE;IACJ;IACA;IACA;IACAQ,QAAQ,EAAE,UAAU;IACpBC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE,MAAM;IACb;IACAC,QAAQ,EAAE;EACZ,CAAC;EACDf,YAAY,EAAE;IACZgB,IAAI,EAAE;EACR,CAAC;EACDjB,cAAc,EAAE;IACdc,MAAM,EAAE,MAAM;IACdI,SAAS,EAAE;EACb,CAAC;EACD5B,KAAK,EAAE;IACLoB,QAAQ,EAAE,UAAU;IACpBS,IAAI,EAAE;EACR,CAAC;EACDZ,aAAa,EAAE;IACba,GAAG,EAAE;EACP,CAAC;EACDd,eAAe,EAAE;IACfc,GAAG,EAAE;EACP;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["ICON_SIZE","TabBarIcon","route","_","horizontal","badge","badgeStyle","activeOpacity","inactiveOpacity","activeTintColor","inactiveTintColor","renderIcon","style","styles","iconHorizontal","iconVertical","icon","opacity","focused","size","color","StyleSheet","create","position","alignSelf","alignItems","justifyContent","height","width","minWidth","right","top"],"sourceRoot":"../../../src","sources":["views/TabBarIcon.tsx"],"mappings":";;;;;;AACA;AACA;AAQA;AAAgC;AAmBhC,MAAMA,SAAS,GAAG,EAAE;AAEb,SAASC,UAAU,OAWhB;EAAA,IAXiB;IACzBC,KAAK,EAAEC,CAAC;IACRC,UAAU;IACVC,KAAK;IACLC,UAAU;IACVC,aAAa;IACbC,eAAe;IACfC,eAAe;IACfC,iBAAiB;IACjBC,UAAU;IACVC;EACK,CAAC;EACN;EACA;EACA,oBACE,6BAAC,iBAAI;IACH,KAAK,EAAE,CAACR,UAAU,GAAGS,MAAM,CAACC,cAAc,GAAGD,MAAM,CAACE,YAAY,EAAEH,KAAK;EAAE,gBAEzE,6BAAC,iBAAI;IAAC,KAAK,EAAE,CAACC,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAEV;IAAc,CAAC;EAAE,GACpDI,UAAU,CAAC;IACVO,OAAO,EAAE,IAAI;IACbC,IAAI,EAAEnB,SAAS;IACfoB,KAAK,EAAEX;EACT,CAAC,CAAC,CACG,eACP,6BAAC,iBAAI;IAAC,KAAK,EAAE,CAACI,MAAM,CAACG,IAAI,EAAE;MAAEC,OAAO,EAAET;IAAgB,CAAC;EAAE,GACtDG,UAAU,CAAC;IACVO,OAAO,EAAE,KAAK;IACdC,IAAI,EAAEnB,SAAS;IACfoB,KAAK,EAAEV;EACT,CAAC,CAAC,CACG,eACP,6BAAC,YAAK;IACJ,OAAO,EAAEL,KAAK,IAAI,IAAK;IACvB,KAAK,EAAE,CAACQ,MAAM,CAACR,KAAK,EAAEC,UAAU,CAAE;IAClC,IAAI,EAAEN,SAAS,GAAG;EAAK,GAEtBK,KAAK,CACA,CACH;AAEX;AAEA,MAAMQ,MAAM,GAAGQ,uBAAU,CAACC,MAAM,CAAC;EAC/BN,IAAI,EAAE;IACJ;IACA;IACA;IACAO,QAAQ,EAAE,UAAU;IACpBC,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,MAAM,EAAE,MAAM;IACdC,KAAK,EAAE,MAAM;IACb;IACAC,QAAQ,EAAE7B;EACZ,CAAC;EACDe,YAAY,EAAE;IACZa,KAAK,EAAE5B,SAAS;IAChB2B,MAAM,EAAE3B;EACV,CAAC;EACDc,cAAc,EAAE;IACdc,KAAK,EAAE5B,SAAS;IAChB2B,MAAM,EAAE3B;EACV,CAAC;EACDK,KAAK,EAAE;IACLkB,QAAQ,EAAE,UAAU;IACpBO,KAAK,EAAE,CAAC,CAAC;IACTC,GAAG,EAAE,CAAC;EACR;AACF,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Simple cross fade animation
3
+ */
4
+ export function forCrossFade(_ref) {
5
+ let {
6
+ current
7
+ } = _ref;
8
+ return {
9
+ sceneStyle: {
10
+ opacity: current.interpolate({
11
+ inputRange: [-1, 0, 1],
12
+ outputRange: [0, 1, 0]
13
+ })
14
+ }
15
+ };
16
+ }
17
+
18
+ /**
19
+ * Animation where the screens slightly shift to left/right
20
+ */
21
+ export function forShifting(_ref2) {
22
+ let {
23
+ current
24
+ } = _ref2;
25
+ return {
26
+ sceneStyle: {
27
+ opacity: current.interpolate({
28
+ inputRange: [-1, 0, 1],
29
+ outputRange: [0, 1, 0]
30
+ }),
31
+ transform: [{
32
+ translateX: current.interpolate({
33
+ inputRange: [-1, 0, 1],
34
+ outputRange: [-50, 1, 50]
35
+ })
36
+ }]
37
+ }
38
+ };
39
+ }
40
+ //# sourceMappingURL=SceneStyleInterpolators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forCrossFade","current","sceneStyle","opacity","interpolate","inputRange","outputRange","forShifting","transform","translateX"],"sourceRoot":"../../../src","sources":["TransitionConfigs/SceneStyleInterpolators.tsx"],"mappings":"AAKA;AACA;AACA;AACA,OAAO,SAASA,YAAY,OAE0C;EAAA,IAFzC;IAC3BC;EACgC,CAAC;EACjC,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEF,OAAO,CAACG,WAAW,CAAC;QAC3BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MACvB,CAAC;IACH;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,WAAW,QAE2C;EAAA,IAF1C;IAC1BN;EACgC,CAAC;EACjC,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEF,OAAO,CAACG,WAAW,CAAC;QAC3BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MACvB,CAAC,CAAC;MACFE,SAAS,EAAE,CACT;QACEC,UAAU,EAAER,OAAO,CAACG,WAAW,CAAC;UAC9BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;UACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC1B,CAAC;MACH,CAAC;IAEL;EACF,CAAC;AACH"}
@@ -0,0 +1,11 @@
1
+ import { forCrossFade, forShifting } from './SceneStyleInterpolators';
2
+ import { CrossFadeSpec, ShiftingSpec } from './TransitionSpecs';
3
+ export const FadeTransition = {
4
+ transitionSpec: CrossFadeSpec,
5
+ sceneStyleInterpolator: forCrossFade
6
+ };
7
+ export const ShiftingTransition = {
8
+ transitionSpec: ShiftingSpec,
9
+ sceneStyleInterpolator: forShifting
10
+ };
11
+ //# sourceMappingURL=TransitionPresets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forCrossFade","forShifting","CrossFadeSpec","ShiftingSpec","FadeTransition","transitionSpec","sceneStyleInterpolator","ShiftingTransition"],"sourceRoot":"../../../src","sources":["TransitionConfigs/TransitionPresets.tsx"],"mappings":"AACA,SAASA,YAAY,EAAEC,WAAW,QAAQ,2BAA2B;AACrE,SAASC,aAAa,EAAEC,YAAY,QAAQ,mBAAmB;AAE/D,OAAO,MAAMC,cAAyC,GAAG;EACvDC,cAAc,EAAEH,aAAa;EAC7BI,sBAAsB,EAAEN;AAC1B,CAAC;AAED,OAAO,MAAMO,kBAA6C,GAAG;EAC3DF,cAAc,EAAEF,YAAY;EAC5BG,sBAAsB,EAAEL;AAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Easing } from 'react-native';
2
+ export const CrossFadeSpec = {
3
+ animation: 'timing',
4
+ config: {
5
+ duration: 150,
6
+ easing: Easing.in(Easing.linear)
7
+ }
8
+ };
9
+ export const ShiftingSpec = {
10
+ animation: 'timing',
11
+ config: {
12
+ duration: 150,
13
+ easing: Easing.inOut(Easing.ease)
14
+ }
15
+ };
16
+ //# sourceMappingURL=TransitionSpecs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Easing","CrossFadeSpec","animation","config","duration","easing","in","linear","ShiftingSpec","inOut","ease"],"sourceRoot":"../../../src","sources":["TransitionConfigs/TransitionSpecs.tsx"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AAIrC,OAAO,MAAMC,aAA6B,GAAG;EAC3CC,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;IACNC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAEL,MAAM,CAACM,EAAE,CAACN,MAAM,CAACO,MAAM;EACjC;AACF,CAAC;AAED,OAAO,MAAMC,YAA4B,GAAG;EAC1CN,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;IACNC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAEL,MAAM,CAACS,KAAK,CAACT,MAAM,CAACU,IAAI;EAClC;AACF,CAAC"}
@@ -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
  */
@@ -1 +1 @@
1
- {"version":3,"names":["createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useBottomTabBarHeight"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,wBAAwB,QAAQ,uCAAuC;;AAEhF;AACA;AACA;AACA,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,aAAa,QAAQ,uBAAuB;;AAErD;AACA;AACA;AACA,SAASC,iCAAiC,QAAQ,2CAA2C;AAC7F,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,qBAAqB,QAAQ,+BAA+B;;AAErE;AACA;AACA"}
1
+ {"version":3,"names":["SceneStyleInterpolator","TransitionPresets","TransitionSpecs","createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useBottomTabBarHeight"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAO,KAAKA,sBAAsB,MAAM,6CAA6C;AACrF,OAAO,KAAKC,iBAAiB,MAAM,uCAAuC;AAC1E,OAAO,KAAKC,eAAe,MAAM,qCAAqC;;AAEtE;AACA;AACA;AACA,SAASF,sBAAsB,EAAEC,iBAAiB,EAAEC,eAAe;;AAEnE;AACA;AACA;AACA,SAASC,wBAAwB,QAAQ,uCAAuC;;AAEhF;AACA;AACA;AACA,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,aAAa,QAAQ,uBAAuB;;AAErD;AACA;AACA;AACA,SAASC,iCAAiC,QAAQ,2CAA2C;AAC7F,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,qBAAqB,QAAQ,+BAA+B;;AAErE;AACA;AACA"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { Animated } from 'react-native';
3
+ export function useAnimatedHashMap(_ref) {
4
+ let {
5
+ routes,
6
+ index
7
+ } = _ref;
8
+ const refs = React.useRef({});
9
+ const previous = refs.current;
10
+ const routeKeys = Object.keys(previous);
11
+ if (routes.length === routeKeys.length && routes.every(route => routeKeys.includes(route.key))) {
12
+ return previous;
13
+ }
14
+ refs.current = {};
15
+ routes.forEach((_ref2, i) => {
16
+ let {
17
+ key
18
+ } = _ref2;
19
+ refs.current[key] = previous[key] ?? new Animated.Value(i === index ? 0 : i >= index ? 1 : -1);
20
+ });
21
+ return refs.current;
22
+ }
23
+ //# sourceMappingURL=useAnimatedHashMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Animated","useAnimatedHashMap","routes","index","refs","useRef","previous","current","routeKeys","Object","keys","length","every","route","includes","key","forEach","i","Value"],"sourceRoot":"../../../src","sources":["utils/useAnimatedHashMap.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,cAAc;AAEvC,OAAO,SAASC,kBAAkB,OAAqC;EAAA,IAApC;IAAEC,MAAM;IAAEC;EAAuB,CAAC;EACnE,MAAMC,IAAI,GAAGL,KAAK,CAACM,MAAM,CAAiC,CAAC,CAAC,CAAC;EAC7D,MAAMC,QAAQ,GAAGF,IAAI,CAACG,OAAO;EAC7B,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACJ,QAAQ,CAAC;EAEvC,IACEJ,MAAM,CAACS,MAAM,KAAKH,SAAS,CAACG,MAAM,IAClCT,MAAM,CAACU,KAAK,CAAEC,KAAK,IAAKL,SAAS,CAACM,QAAQ,CAACD,KAAK,CAACE,GAAG,CAAC,CAAC,EACtD;IACA,OAAOT,QAAQ;EACjB;EACAF,IAAI,CAACG,OAAO,GAAG,CAAC,CAAC;EAEjBL,MAAM,CAACc,OAAO,CAAC,QAAUC,CAAC,KAAK;IAAA,IAAf;MAAEF;IAAI,CAAC;IACrBX,IAAI,CAACG,OAAO,CAACQ,GAAG,CAAC,GACfT,QAAQ,CAACS,GAAG,CAAC,IACb,IAAIf,QAAQ,CAACkB,KAAK,CAACD,CAAC,KAAKd,KAAK,GAAG,CAAC,GAAGc,CAAC,IAAId,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC;EAEF,OAAOC,IAAI,CAACG,OAAO;AACrB"}
@@ -1,14 +1,15 @@
1
- import { MissingIcon } from '@react-navigation/elements';
1
+ import { getDefaultSidebarWidth, getLabel, MissingIcon } from '@react-navigation/elements';
2
2
  import { CommonActions, NavigationContext, NavigationRouteContext, useLinkTools, useTheme } from '@react-navigation/native';
3
+ import Color from 'color';
3
4
  import React from 'react';
4
- import { Animated, Platform, StyleSheet, View } from 'react-native';
5
- import { useSafeAreaFrame } from 'react-native-safe-area-context';
5
+ import { Animated, Platform, StyleSheet, useWindowDimensions, View } from 'react-native';
6
6
  import { BottomTabBarHeightCallbackContext } from '../utils/BottomTabBarHeightCallbackContext';
7
7
  import { useIsKeyboardShown } from '../utils/useIsKeyboardShown';
8
8
  import { BottomTabItem } from './BottomTabItem';
9
9
  const DEFAULT_TABBAR_HEIGHT = 49;
10
10
  const COMPACT_TABBAR_HEIGHT = 32;
11
11
  const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
12
+ const SPACING = 5;
12
13
  const useNativeDriver = Platform.OS !== 'web';
13
14
  const shouldUseHorizontalLabels = _ref => {
14
15
  let {
@@ -99,6 +100,7 @@ export function BottomTabBar(_ref3) {
99
100
  const focusedDescriptor = descriptors[focusedRoute.key];
100
101
  const focusedOptions = focusedDescriptor.options;
101
102
  const {
103
+ tabBarPosition = 'bottom',
102
104
  tabBarShowLabel,
103
105
  tabBarHideOnKeyboard = false,
104
106
  tabBarVisibilityAnimationConfig,
@@ -106,10 +108,12 @@ export function BottomTabBar(_ref3) {
106
108
  tabBarBackground,
107
109
  tabBarActiveTintColor,
108
110
  tabBarInactiveTintColor,
109
- tabBarActiveBackgroundColor,
111
+ tabBarActiveBackgroundColor = tabBarPosition !== 'bottom' ? Color(tabBarActiveTintColor ?? colors.primary).alpha(0.12).rgb().string() : undefined,
110
112
  tabBarInactiveBackgroundColor
111
113
  } = focusedOptions;
112
- const dimensions = useSafeAreaFrame();
114
+
115
+ // FIXME: useSafeAreaFrame doesn't update values when window is resized on Web
116
+ const dimensions = useWindowDimensions();
113
117
  const isKeyboardShown = useIsKeyboardShown();
114
118
  const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);
115
119
  const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);
@@ -191,10 +195,10 @@ export function BottomTabBar(_ref3) {
191
195
  });
192
196
  const tabBarBackgroundElement = tabBarBackground === null || tabBarBackground === void 0 ? void 0 : tabBarBackground();
193
197
  return /*#__PURE__*/React.createElement(Animated.View, {
194
- style: [styles.tabBar, {
198
+ style: [tabBarPosition === 'left' ? styles.left : tabBarPosition === 'right' ? styles.right : styles.bottom, {
195
199
  backgroundColor: tabBarBackgroundElement != null ? 'transparent' : colors.card,
196
- borderTopColor: colors.border
197
- }, {
200
+ borderColor: colors.border
201
+ }, tabBarPosition === 'bottom' ? [{
198
202
  transform: [{
199
203
  translateY: visible.interpolate({
200
204
  inputRange: [0, 1],
@@ -203,20 +207,26 @@ export function BottomTabBar(_ref3) {
203
207
  }],
204
208
  // Absolutely position the tab bar so that the content is below it
205
209
  // This is needed to avoid gap at bottom when the tab bar is hidden
206
- position: isTabBarHidden ? 'absolute' : null
210
+ position: isTabBarHidden ? 'absolute' : undefined
207
211
  }, {
208
212
  height: tabBarHeight,
209
213
  paddingBottom,
210
214
  paddingHorizontal: Math.max(insets.left, insets.right)
215
+ }] : {
216
+ paddingTop: insets.top,
217
+ paddingBottom: insets.bottom,
218
+ paddingLeft: tabBarPosition === 'left' ? insets.left : 0,
219
+ paddingRight: tabBarPosition === 'right' ? insets.right : 0,
220
+ minWidth: hasHorizontalLabels ? getDefaultSidebarWidth(dimensions) : 0
211
221
  }, tabBarStyle],
212
222
  pointerEvents: isTabBarHidden ? 'none' : 'auto',
213
- onLayout: handleLayout
223
+ onLayout: tabBarPosition === 'bottom' ? handleLayout : undefined
214
224
  }, /*#__PURE__*/React.createElement(View, {
215
225
  pointerEvents: "none",
216
226
  style: StyleSheet.absoluteFill
217
227
  }, tabBarBackgroundElement), /*#__PURE__*/React.createElement(View, {
218
228
  accessibilityRole: "tablist",
219
- style: styles.content
229
+ style: tabBarPosition === 'bottom' ? styles.bottomContent : styles.sideContent
220
230
  }, routes.map((route, index) => {
221
231
  const focused = index === state.index;
222
232
  const {
@@ -241,7 +251,10 @@ export function BottomTabBar(_ref3) {
241
251
  target: route.key
242
252
  });
243
253
  };
244
- const label = options.tabBarLabel !== undefined ? options.tabBarLabel : options.title !== undefined ? options.title : route.name;
254
+ const label = typeof options.tabBarLabel === 'function' ? options.tabBarLabel : getLabel({
255
+ label: options.tabBarLabel,
256
+ title: options.title
257
+ }, route.name);
245
258
  const accessibilityLabel = options.tabBarAccessibilityLabel !== undefined ? options.tabBarAccessibilityLabel : typeof label === 'string' && Platform.OS === 'ios' ? `${label}, tab, ${index + 1} of ${routes.length}` : undefined;
246
259
  return /*#__PURE__*/React.createElement(NavigationContext.Provider, {
247
260
  key: route.key,
@@ -280,21 +293,48 @@ export function BottomTabBar(_ref3) {
280
293
  showLabel: tabBarShowLabel,
281
294
  labelStyle: options.tabBarLabelStyle,
282
295
  iconStyle: options.tabBarIconStyle,
283
- style: options.tabBarItemStyle
296
+ style: [tabBarPosition === 'bottom' ? styles.bottomItem : [styles.sideItem, hasHorizontalLabels ? {
297
+ justifyContent: 'flex-start'
298
+ } : null], options.tabBarItemStyle]
284
299
  })));
285
300
  })));
286
301
  }
287
302
  const styles = StyleSheet.create({
288
- tabBar: {
303
+ left: {
304
+ top: 0,
305
+ bottom: 0,
306
+ left: 0,
307
+ borderRightWidth: StyleSheet.hairlineWidth
308
+ },
309
+ right: {
310
+ top: 0,
311
+ bottom: 0,
312
+ right: 0,
313
+ borderLeftWidth: StyleSheet.hairlineWidth
314
+ },
315
+ bottom: {
289
316
  left: 0,
290
317
  right: 0,
291
318
  bottom: 0,
292
319
  borderTopWidth: StyleSheet.hairlineWidth,
293
320
  elevation: 8
294
321
  },
295
- content: {
322
+ bottomContent: {
296
323
  flex: 1,
297
324
  flexDirection: 'row'
325
+ },
326
+ sideContent: {
327
+ flex: 1,
328
+ flexDirection: 'column',
329
+ padding: SPACING
330
+ },
331
+ bottomItem: {
332
+ flex: 1
333
+ },
334
+ sideItem: {
335
+ margin: SPACING,
336
+ padding: SPACING * 2,
337
+ borderRadius: 4
298
338
  }
299
339
  });
300
340
  //# sourceMappingURL=BottomTabBar.js.map