@react-navigation/bottom-tabs 6.0.9 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/lib/commonjs/index.js +6 -6
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/navigators/createBottomTabNavigator.js +12 -9
  4. package/lib/commonjs/navigators/createBottomTabNavigator.js.map +1 -1
  5. package/lib/commonjs/views/Badge.js +23 -20
  6. package/lib/commonjs/views/Badge.js.map +1 -1
  7. package/lib/commonjs/views/BottomTabBar.js +39 -31
  8. package/lib/commonjs/views/BottomTabBar.js.map +1 -1
  9. package/lib/commonjs/views/BottomTabItem.js +65 -57
  10. package/lib/commonjs/views/BottomTabItem.js.map +1 -1
  11. package/lib/commonjs/views/BottomTabView.js +11 -7
  12. package/lib/commonjs/views/BottomTabView.js.map +1 -1
  13. package/lib/commonjs/views/ScreenFallback.js +13 -9
  14. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  15. package/lib/commonjs/views/TabBarIcon.js +13 -12
  16. package/lib/commonjs/views/TabBarIcon.js.map +1 -1
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/navigators/createBottomTabNavigator.js +12 -9
  19. package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
  20. package/lib/module/views/Badge.js +23 -20
  21. package/lib/module/views/Badge.js.map +1 -1
  22. package/lib/module/views/BottomTabBar.js +39 -31
  23. package/lib/module/views/BottomTabBar.js.map +1 -1
  24. package/lib/module/views/BottomTabItem.js +65 -57
  25. package/lib/module/views/BottomTabItem.js.map +1 -1
  26. package/lib/module/views/BottomTabView.js +11 -7
  27. package/lib/module/views/BottomTabView.js.map +1 -1
  28. package/lib/module/views/ScreenFallback.js +13 -9
  29. package/lib/module/views/ScreenFallback.js.map +1 -1
  30. package/lib/module/views/TabBarIcon.js +13 -12
  31. package/lib/module/views/TabBarIcon.js.map +1 -1
  32. package/lib/typescript/src/index.d.ts +1 -1
  33. package/lib/typescript/src/navigators/createBottomTabNavigator.d.ts +1 -1
  34. package/lib/typescript/src/types.d.ts +3 -3
  35. package/lib/typescript/src/views/Badge.d.ts +1 -1
  36. package/lib/typescript/src/views/ScreenFallback.d.ts +1 -0
  37. package/package.json +8 -8
  38. package/src/index.tsx +1 -0
  39. package/src/navigators/createBottomTabNavigator.tsx +2 -0
  40. package/src/types.tsx +6 -3
  41. package/src/views/Badge.tsx +12 -12
  42. package/src/views/BottomTabView.tsx +1 -0
  43. package/src/views/ScreenFallback.tsx +1 -0
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "createBottomTabNavigator", {
6
+ Object.defineProperty(exports, "BottomTabBar", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _createBottomTabNavigator.default;
9
+ return _BottomTabBar.default;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "BottomTabBar", {
12
+ Object.defineProperty(exports, "BottomTabBarHeightContext", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _BottomTabBar.default;
15
+ return _BottomTabBarHeightContext.default;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "BottomTabView", {
@@ -21,10 +21,10 @@ Object.defineProperty(exports, "BottomTabView", {
21
21
  return _BottomTabView.default;
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "BottomTabBarHeightContext", {
24
+ Object.defineProperty(exports, "createBottomTabNavigator", {
25
25
  enumerable: true,
26
26
  get: function () {
27
- return _BottomTabBarHeightContext.default;
27
+ return _createBottomTabNavigator.default;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "useBottomTabBarHeight", {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAKA;;AACA;;AAKA;;AACA","sourcesContent":["/**\n * Navigators\n */\nexport { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';\n\n/**\n * Views\n */\nexport { default as BottomTabBar } from './views/BottomTabBar';\nexport { default as BottomTabView } from './views/BottomTabView';\n\n/**\n * Utilities\n */\nexport { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';\nexport { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';\n\n/**\n * Types\n */\nexport type {\n BottomTabBarButtonProps,\n BottomTabBarProps,\n BottomTabHeaderProps,\n BottomTabNavigationOptions,\n BottomTabNavigationProp,\n BottomTabScreenProps,\n} from './types';\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAKA;;AACA;;AAKA;;AACA","sourcesContent":["/**\n * Navigators\n */\nexport { default as createBottomTabNavigator } from './navigators/createBottomTabNavigator';\n\n/**\n * Views\n */\nexport { default as BottomTabBar } from './views/BottomTabBar';\nexport { default as BottomTabView } from './views/BottomTabView';\n\n/**\n * Utilities\n */\nexport { default as BottomTabBarHeightContext } from './utils/BottomTabBarHeightContext';\nexport { default as useBottomTabBarHeight } from './utils/useBottomTabBarHeight';\n\n/**\n * Types\n */\nexport type {\n BottomTabBarButtonProps,\n BottomTabBarProps,\n BottomTabHeaderProps,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n BottomTabNavigationProp,\n BottomTabScreenProps,\n} from './types';\n"]}
@@ -21,15 +21,17 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
21
21
 
22
22
  function _extends() { _extends = Object.assign || 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); }
23
23
 
24
- function BottomTabNavigator({
25
- initialRouteName,
26
- backBehavior,
27
- children,
28
- screenListeners,
29
- screenOptions,
30
- sceneContainerStyle,
31
- ...restWithDeprecated
32
- }) {
24
+ function BottomTabNavigator(_ref) {
25
+ let {
26
+ id,
27
+ initialRouteName,
28
+ backBehavior,
29
+ children,
30
+ screenListeners,
31
+ screenOptions,
32
+ sceneContainerStyle,
33
+ ...restWithDeprecated
34
+ } = _ref;
33
35
  const {
34
36
  // @ts-expect-error: lazy is deprecated
35
37
  lazy,
@@ -78,6 +80,7 @@ function BottomTabNavigator({
78
80
  navigation,
79
81
  NavigationContent
80
82
  } = (0, _native.useNavigationBuilder)(_native.TabRouter, {
83
+ id,
81
84
  initialRouteName,
82
85
  backBehavior,
83
86
  children,
@@ -1 +1 @@
1
- {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["BottomTabNavigator","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent","TabRouter"],"mappings":";;;;;;;AAAA;;AAUA;;AACA;;AAOA;;;;;;;;;;AAWA,SAASA,kBAAT,CAA4B;AAC1BC,EAAAA,gBAD0B;AAE1BC,EAAAA,YAF0B;AAG1BC,EAAAA,QAH0B;AAI1BC,EAAAA,eAJ0B;AAK1BC,EAAAA,aAL0B;AAM1BC,EAAAA,mBAN0B;AAO1B,KAAGC;AAPuB,CAA5B,EAQU;AACR,QAAM;AACJ;AACAC,IAAAA,IAFI;AAGJ;AACAC,IAAAA,aAJI;AAKJ,OAAGC;AALC,MAMFH,kBANJ;AAQA,MAAII,oBAAgD,GAAG,EAAvD;;AAEA,MAAIF,aAAJ,EAAmB;AAAA;;AACjBG,IAAAA,MAAM,CAACC,MAAP,CAAcF,oBAAd,EAAoC;AAClCG,MAAAA,oBAAoB,EAAEL,aAAa,CAACM,mBADF;AAElCC,MAAAA,qBAAqB,EAAEP,aAAa,CAACQ,eAFH;AAGlCC,MAAAA,uBAAuB,EAAET,aAAa,CAACU,iBAHL;AAIlCC,MAAAA,2BAA2B,EAAEX,aAAa,CAACY,qBAJT;AAKlCC,MAAAA,6BAA6B,EAAEb,aAAa,CAACc,uBALX;AAMlCC,MAAAA,sBAAsB,EAAEf,aAAa,CAACgB,gBANJ;AAOlCC,MAAAA,eAAe,EAAEjB,aAAa,CAACkB,SAPG;AAQlCC,MAAAA,gBAAgB,EAAEnB,aAAa,CAACoB,UARE;AASlCC,MAAAA,eAAe,EAAErB,aAAa,CAACsB,SATG;AAUlCC,MAAAA,eAAe,EAAEvB,aAAa,CAACwB,QAVG;AAWlCC,MAAAA,mBAAmB,2BACjBzB,aAAa,CAAC0B,aADG,yEAEhB1B,aAAa,CAAC2B,QAAd,KAA2B,KAA3B,GAAmC,YAAnC,GAAkDC,SAbnB;AAclCC,MAAAA,WAAW,EAAE,CACX;AAAEC,QAAAA,OAAO,EAAE9B,aAAa,CAAC+B,aAAd,GAA8B,MAA9B,GAAuC;AAAlD,OADW,EAEX7B,oBAAoB,CAAC2B,WAFV;AAdqB,KAApC;AAqBE1B,IAAAA,MAAM,CAAC6B,IAAP,CAAY9B,oBAAZ,CADF,CAEE+B,OAFF,CAEWC,GAAD,IAAS;AACjB,UAAIhC,oBAAoB,CAACgC,GAAD,CAApB,KAA8BN,SAAlC,EAA6C;AAC3C;AACA,eAAO1B,oBAAoB,CAACgC,GAAD,CAA3B;AACD;AACF,KAPD;AASA,2BACElC,aADF,EAEG,4LAA2LmC,IAAI,CAACC,SAAL,CAC1LlC,oBAD0L,EAE1L,IAF0L,EAG1L,CAH0L,CAI1L,yFANJ;AAQD;;AAED,MAAI,OAAOH,IAAP,KAAgB,SAApB,EAA+B;AAC7BG,IAAAA,oBAAoB,CAACH,IAArB,GAA4BA,IAA5B;AAEA,2BACE,IADF,EAEG,+KAFH;AAID;;AAED,QAAM;AAAEsC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,iBANF,EAMa;AACXjD,IAAAA,gBADW;AAEXC,IAAAA,YAFW;AAGXC,IAAAA,QAHW;AAIXC,IAAAA,eAJW;AAKXC,IAAAA,aALW;AAMXM,IAAAA;AANW,GANb,CADF;AAgBA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,sBAAD,eACMD,IADN;AAEE,IAAA,KAAK,EAAEoC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED,WAJf;AAKE,IAAA,mBAAmB,EAAEzC;AALvB,KADF,CADF;AAWD;;eAEc,oCAKbN,kBALa,C","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n ParamListBase,\n TabActionHelpers,\n TabNavigationState,\n TabRouter,\n TabRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n BottomTabNavigationConfig,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n} from '../types';\nimport BottomTabView from '../views/BottomTabView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n> &\n TabRouterOptions &\n BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n sceneContainerStyle,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: BottomTabNavigationOptions = {};\n\n if (tabBarOptions) {\n Object.assign(defaultScreenOptions, {\n tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,\n tabBarActiveTintColor: tabBarOptions.activeTintColor,\n tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,\n tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,\n tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,\n tabBarAllowFontScaling: tabBarOptions.allowFontScaling,\n tabBarShowLabel: tabBarOptions.showLabel,\n tabBarLabelStyle: tabBarOptions.labelStyle,\n tabBarIconStyle: tabBarOptions.iconStyle,\n tabBarItemStyle: tabBarOptions.tabStyle,\n tabBarLabelPosition:\n tabBarOptions.labelPosition ??\n (tabBarOptions.adaptive === false ? 'below-icon' : undefined),\n tabBarStyle: [\n { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },\n defaultScreenOptions.tabBarStyle,\n ],\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n tabBarOptions,\n `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`\n );\n }\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n TabNavigationState<ParamListBase>,\n TabRouterOptions,\n TabActionHelpers<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n >(TabRouter, {\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <BottomTabView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n sceneContainerStyle={sceneContainerStyle}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap,\n typeof BottomTabNavigator\n>(BottomTabNavigator);\n"]}
1
+ {"version":3,"sources":["createBottomTabNavigator.tsx"],"names":["BottomTabNavigator","id","initialRouteName","backBehavior","children","screenListeners","screenOptions","sceneContainerStyle","restWithDeprecated","lazy","tabBarOptions","rest","defaultScreenOptions","Object","assign","tabBarHideOnKeyboard","keyboardHidesTabBar","tabBarActiveTintColor","activeTintColor","tabBarInactiveTintColor","inactiveTintColor","tabBarActiveBackgroundColor","activeBackgroundColor","tabBarInactiveBackgroundColor","inactiveBackgroundColor","tabBarAllowFontScaling","allowFontScaling","tabBarShowLabel","showLabel","tabBarLabelStyle","labelStyle","tabBarIconStyle","iconStyle","tabBarItemStyle","tabStyle","tabBarLabelPosition","labelPosition","adaptive","undefined","tabBarStyle","display","tabBarVisible","keys","forEach","key","JSON","stringify","state","descriptors","navigation","NavigationContent","TabRouter"],"mappings":";;;;;;;AAAA;;AAUA;;AACA;;AAOA;;;;;;;;;;AAWA,SAASA,kBAAT,OASU;AAAA,MATkB;AAC1BC,IAAAA,EAD0B;AAE1BC,IAAAA,gBAF0B;AAG1BC,IAAAA,YAH0B;AAI1BC,IAAAA,QAJ0B;AAK1BC,IAAAA,eAL0B;AAM1BC,IAAAA,aAN0B;AAO1BC,IAAAA,mBAP0B;AAQ1B,OAAGC;AARuB,GASlB;AACR,QAAM;AACJ;AACAC,IAAAA,IAFI;AAGJ;AACAC,IAAAA,aAJI;AAKJ,OAAGC;AALC,MAMFH,kBANJ;AAQA,MAAII,oBAAgD,GAAG,EAAvD;;AAEA,MAAIF,aAAJ,EAAmB;AAAA;;AACjBG,IAAAA,MAAM,CAACC,MAAP,CAAcF,oBAAd,EAAoC;AAClCG,MAAAA,oBAAoB,EAAEL,aAAa,CAACM,mBADF;AAElCC,MAAAA,qBAAqB,EAAEP,aAAa,CAACQ,eAFH;AAGlCC,MAAAA,uBAAuB,EAAET,aAAa,CAACU,iBAHL;AAIlCC,MAAAA,2BAA2B,EAAEX,aAAa,CAACY,qBAJT;AAKlCC,MAAAA,6BAA6B,EAAEb,aAAa,CAACc,uBALX;AAMlCC,MAAAA,sBAAsB,EAAEf,aAAa,CAACgB,gBANJ;AAOlCC,MAAAA,eAAe,EAAEjB,aAAa,CAACkB,SAPG;AAQlCC,MAAAA,gBAAgB,EAAEnB,aAAa,CAACoB,UARE;AASlCC,MAAAA,eAAe,EAAErB,aAAa,CAACsB,SATG;AAUlCC,MAAAA,eAAe,EAAEvB,aAAa,CAACwB,QAVG;AAWlCC,MAAAA,mBAAmB,2BACjBzB,aAAa,CAAC0B,aADG,yEAEhB1B,aAAa,CAAC2B,QAAd,KAA2B,KAA3B,GAAmC,YAAnC,GAAkDC,SAbnB;AAclCC,MAAAA,WAAW,EAAE,CACX;AAAEC,QAAAA,OAAO,EAAE9B,aAAa,CAAC+B,aAAd,GAA8B,MAA9B,GAAuC;AAAlD,OADW,EAEX7B,oBAAoB,CAAC2B,WAFV;AAdqB,KAApC;AAqBE1B,IAAAA,MAAM,CAAC6B,IAAP,CAAY9B,oBAAZ,CADF,CAEE+B,OAFF,CAEWC,GAAD,IAAS;AACjB,UAAIhC,oBAAoB,CAACgC,GAAD,CAApB,KAA8BN,SAAlC,EAA6C;AAC3C;AACA,eAAO1B,oBAAoB,CAACgC,GAAD,CAA3B;AACD;AACF,KAPD;AASA,2BACElC,aADF,EAEG,4LAA2LmC,IAAI,CAACC,SAAL,CAC1LlC,oBAD0L,EAE1L,IAF0L,EAG1L,CAH0L,CAI1L,yFANJ;AAQD;;AAED,MAAI,OAAOH,IAAP,KAAgB,SAApB,EAA+B;AAC7BG,IAAAA,oBAAoB,CAACH,IAArB,GAA4BA,IAA5B;AAEA,2BACE,IADF,EAEG,+KAFH;AAID;;AAED,QAAM;AAAEsC,IAAAA,KAAF;AAASC,IAAAA,WAAT;AAAsBC,IAAAA,UAAtB;AAAkCC,IAAAA;AAAlC,MACJ,kCAMEC,iBANF,EAMa;AACXlD,IAAAA,EADW;AAEXC,IAAAA,gBAFW;AAGXC,IAAAA,YAHW;AAIXC,IAAAA,QAJW;AAKXC,IAAAA,eALW;AAMXC,IAAAA,aANW;AAOXM,IAAAA;AAPW,GANb,CADF;AAiBA,sBACE,oBAAC,iBAAD,qBACE,oBAAC,sBAAD,eACMD,IADN;AAEE,IAAA,KAAK,EAAEoC,KAFT;AAGE,IAAA,UAAU,EAAEE,UAHd;AAIE,IAAA,WAAW,EAAED,WAJf;AAKE,IAAA,mBAAmB,EAAEzC;AALvB,KADF,CADF;AAWD;;eAEc,oCAKbP,kBALa,C","sourcesContent":["import {\n createNavigatorFactory,\n DefaultNavigatorOptions,\n ParamListBase,\n TabActionHelpers,\n TabNavigationState,\n TabRouter,\n TabRouterOptions,\n useNavigationBuilder,\n} from '@react-navigation/native';\nimport * as React from 'react';\nimport warnOnce from 'warn-once';\n\nimport type {\n BottomTabNavigationConfig,\n BottomTabNavigationEventMap,\n BottomTabNavigationOptions,\n} from '../types';\nimport BottomTabView from '../views/BottomTabView';\n\ntype Props = DefaultNavigatorOptions<\n ParamListBase,\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n> &\n TabRouterOptions &\n BottomTabNavigationConfig;\n\nfunction BottomTabNavigator({\n id,\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n sceneContainerStyle,\n ...restWithDeprecated\n}: Props) {\n const {\n // @ts-expect-error: lazy is deprecated\n lazy,\n // @ts-expect-error: tabBarOptions is deprecated\n tabBarOptions,\n ...rest\n } = restWithDeprecated;\n\n let defaultScreenOptions: BottomTabNavigationOptions = {};\n\n if (tabBarOptions) {\n Object.assign(defaultScreenOptions, {\n tabBarHideOnKeyboard: tabBarOptions.keyboardHidesTabBar,\n tabBarActiveTintColor: tabBarOptions.activeTintColor,\n tabBarInactiveTintColor: tabBarOptions.inactiveTintColor,\n tabBarActiveBackgroundColor: tabBarOptions.activeBackgroundColor,\n tabBarInactiveBackgroundColor: tabBarOptions.inactiveBackgroundColor,\n tabBarAllowFontScaling: tabBarOptions.allowFontScaling,\n tabBarShowLabel: tabBarOptions.showLabel,\n tabBarLabelStyle: tabBarOptions.labelStyle,\n tabBarIconStyle: tabBarOptions.iconStyle,\n tabBarItemStyle: tabBarOptions.tabStyle,\n tabBarLabelPosition:\n tabBarOptions.labelPosition ??\n (tabBarOptions.adaptive === false ? 'below-icon' : undefined),\n tabBarStyle: [\n { display: tabBarOptions.tabBarVisible ? 'none' : 'flex' },\n defaultScreenOptions.tabBarStyle,\n ],\n });\n\n (\n Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[]\n ).forEach((key) => {\n if (defaultScreenOptions[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete defaultScreenOptions[key];\n }\n });\n\n warnOnce(\n tabBarOptions,\n `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\\n\\nPlace the following in 'screenOptions' in your code to keep current behavior:\\n\\n${JSON.stringify(\n defaultScreenOptions,\n null,\n 2\n )}\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator#options for more details.`\n );\n }\n\n if (typeof lazy === 'boolean') {\n defaultScreenOptions.lazy = lazy;\n\n warnOnce(\n true,\n `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\\n\\nSee https://reactnavigation.org/docs/bottom-tab-navigator/#lazy for more details.`\n );\n }\n\n const { state, descriptors, navigation, NavigationContent } =\n useNavigationBuilder<\n TabNavigationState<ParamListBase>,\n TabRouterOptions,\n TabActionHelpers<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap\n >(TabRouter, {\n id,\n initialRouteName,\n backBehavior,\n children,\n screenListeners,\n screenOptions,\n defaultScreenOptions,\n });\n\n return (\n <NavigationContent>\n <BottomTabView\n {...rest}\n state={state}\n navigation={navigation}\n descriptors={descriptors}\n sceneContainerStyle={sceneContainerStyle}\n />\n </NavigationContent>\n );\n}\n\nexport default createNavigatorFactory<\n TabNavigationState<ParamListBase>,\n BottomTabNavigationOptions,\n BottomTabNavigationEventMap,\n typeof BottomTabNavigator\n>(BottomTabNavigator);\n"]}
@@ -21,15 +21,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
21
 
22
22
  function _extends() { _extends = Object.assign || 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); }
23
23
 
24
- function Badge({
25
- visible = true,
26
- size = 18,
27
- children,
28
- style,
29
- ...rest
30
- }) {
24
+ function Badge(_ref) {
25
+ let {
26
+ children,
27
+ style,
28
+ visible = true,
29
+ size = 18,
30
+ ...rest
31
+ } = _ref;
31
32
  const [opacity] = React.useState(() => new _reactNative.Animated.Value(visible ? 1 : 0));
32
- const [rendered, setRendered] = React.useState(visible ? true : false);
33
+ const [rendered, setRendered] = React.useState(visible);
33
34
  const theme = (0, _native.useTheme)();
34
35
  React.useEffect(() => {
35
36
  if (!rendered) {
@@ -40,9 +41,11 @@ function Badge({
40
41
  toValue: visible ? 1 : 0,
41
42
  duration: 150,
42
43
  useNativeDriver: true
43
- }).start(({
44
- finished
45
- }) => {
44
+ }).start(_ref2 => {
45
+ let {
46
+ finished
47
+ } = _ref2;
48
+
46
49
  if (finished && !visible) {
47
50
  setRendered(false);
48
51
  }
@@ -51,12 +54,12 @@ function Badge({
51
54
  return () => opacity.stopAnimation();
52
55
  }, [opacity, rendered, visible]);
53
56
 
54
- if (visible && !rendered) {
55
- setRendered(true);
56
- }
57
-
58
- if (!visible && !rendered) {
59
- return null;
57
+ if (!rendered) {
58
+ if (visible) {
59
+ setRendered(true);
60
+ } else {
61
+ return null;
62
+ }
60
63
  } // @ts-expect-error: backgroundColor definitely exists
61
64
 
62
65
 
@@ -70,19 +73,19 @@ function Badge({
70
73
  return /*#__PURE__*/React.createElement(_reactNative.Animated.Text, _extends({
71
74
  numberOfLines: 1,
72
75
  style: [{
73
- opacity,
74
76
  transform: [{
75
77
  scale: opacity.interpolate({
76
78
  inputRange: [0, 1],
77
79
  outputRange: [0.5, 1]
78
80
  })
79
81
  }],
80
- backgroundColor,
81
82
  color: textColor,
82
- fontSize,
83
83
  lineHeight: size - 1,
84
84
  height: size,
85
85
  minWidth: size,
86
+ opacity,
87
+ backgroundColor,
88
+ fontSize,
86
89
  borderRadius
87
90
  }, styles.container, restStyle]
88
91
  }, rest), children);
@@ -1 +1 @@
1
- {"version":3,"sources":["Badge.tsx"],"names":["Badge","visible","size","children","style","rest","opacity","React","useState","Animated","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","StyleSheet","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","color","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"mappings":"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","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';\n\ntype Props = {\n /**\n * Whether the badge is visible\n */\n visible: boolean;\n /**\n * Content of the `Badge`.\n */\n children?: string | number;\n /**\n * Size of the `Badge`.\n */\n size?: number;\n /**\n * Style object for the tab bar container.\n */\n style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n visible = true,\n size = 18,\n children,\n style,\n ...rest\n}: Props) {\n const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n const [rendered, setRendered] = React.useState(visible ? true : false);\n\n const theme = useTheme();\n\n React.useEffect(() => {\n if (!rendered) {\n return;\n }\n\n Animated.timing(opacity, {\n toValue: visible ? 1 : 0,\n duration: 150,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished && !visible) {\n setRendered(false);\n }\n });\n\n return () => opacity.stopAnimation();\n }, [opacity, rendered, visible]);\n\n if (visible && !rendered) {\n setRendered(true);\n }\n\n if (!visible && !rendered) {\n return null;\n }\n\n // @ts-expect-error: backgroundColor definitely exists\n const { backgroundColor = theme.colors.notification, ...restStyle } =\n StyleSheet.flatten(style) || {};\n const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n const borderRadius = size / 2;\n const fontSize = Math.floor((size * 3) / 4);\n\n return (\n <Animated.Text\n numberOfLines={1}\n style={[\n {\n opacity,\n transform: [\n {\n scale: opacity.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n }),\n },\n ],\n backgroundColor,\n color: textColor,\n fontSize,\n lineHeight: size - 1,\n height: size,\n minWidth: size,\n borderRadius,\n },\n styles.container,\n restStyle,\n ]}\n {...rest}\n >\n {children}\n </Animated.Text>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-end',\n textAlign: 'center',\n paddingHorizontal: 4,\n overflow: 'hidden',\n },\n});\n"]}
1
+ {"version":3,"sources":["Badge.tsx"],"names":["Badge","children","style","visible","size","rest","opacity","React","useState","Animated","Value","rendered","setRendered","theme","useEffect","timing","toValue","duration","useNativeDriver","start","finished","stopAnimation","backgroundColor","colors","notification","restStyle","StyleSheet","flatten","textColor","isLight","borderRadius","fontSize","Math","floor","transform","scale","interpolate","inputRange","outputRange","color","lineHeight","height","minWidth","styles","container","create","alignSelf","textAlign","paddingHorizontal","overflow"],"mappings":"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","sourcesContent":["import { useTheme } from '@react-navigation/native';\nimport color from 'color';\nimport * as React from 'react';\nimport { Animated, StyleProp, StyleSheet, TextStyle } from 'react-native';\n\ntype Props = {\n /**\n * Whether the badge is visible\n */\n visible: boolean;\n /**\n * Content of the `Badge`.\n */\n children?: string | number;\n /**\n * Size of the `Badge`.\n */\n size?: number;\n /**\n * Style object for the tab bar container.\n */\n style?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n};\n\nexport default function Badge({\n children,\n style,\n visible = true,\n size = 18,\n ...rest\n}: Props) {\n const [opacity] = React.useState(() => new Animated.Value(visible ? 1 : 0));\n const [rendered, setRendered] = React.useState(visible);\n\n const theme = useTheme();\n\n React.useEffect(() => {\n if (!rendered) {\n return;\n }\n\n Animated.timing(opacity, {\n toValue: visible ? 1 : 0,\n duration: 150,\n useNativeDriver: true,\n }).start(({ finished }) => {\n if (finished && !visible) {\n setRendered(false);\n }\n });\n\n return () => opacity.stopAnimation();\n }, [opacity, rendered, visible]);\n\n if (!rendered) {\n if (visible) {\n setRendered(true);\n } else {\n return null;\n }\n }\n\n // @ts-expect-error: backgroundColor definitely exists\n const { backgroundColor = theme.colors.notification, ...restStyle } =\n StyleSheet.flatten(style) || {};\n const textColor = color(backgroundColor).isLight() ? 'black' : 'white';\n\n const borderRadius = size / 2;\n const fontSize = Math.floor((size * 3) / 4);\n\n return (\n <Animated.Text\n numberOfLines={1}\n style={[\n {\n transform: [\n {\n scale: opacity.interpolate({\n inputRange: [0, 1],\n outputRange: [0.5, 1],\n }),\n },\n ],\n color: textColor,\n lineHeight: size - 1,\n height: size,\n minWidth: size,\n opacity,\n backgroundColor,\n fontSize,\n borderRadius,\n },\n styles.container,\n restStyle,\n ]}\n {...rest}\n >\n {children}\n </Animated.Text>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignSelf: 'flex-end',\n textAlign: 'center',\n paddingHorizontal: 4,\n overflow: 'hidden',\n },\n});\n"]}
@@ -29,12 +29,13 @@ const COMPACT_TABBAR_HEIGHT = 32;
29
29
  const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
30
30
  const useNativeDriver = _reactNative.Platform.OS !== 'web';
31
31
 
32
- const shouldUseHorizontalLabels = ({
33
- state,
34
- descriptors,
35
- layout,
36
- dimensions
37
- }) => {
32
+ const shouldUseHorizontalLabels = _ref => {
33
+ let {
34
+ state,
35
+ descriptors,
36
+ layout,
37
+ dimensions
38
+ } = _ref;
38
39
  const {
39
40
  tabBarLabelPosition
40
41
  } = descriptors[state.routes[state.index].key].options;
@@ -79,16 +80,17 @@ const getPaddingBottom = insets => Math.max(insets.bottom - _reactNative.Platfor
79
80
  default: 0
80
81
  }), 0);
81
82
 
82
- const getTabBarHeight = ({
83
- state,
84
- descriptors,
85
- dimensions,
86
- insets,
87
- style,
88
- ...rest
89
- }) => {
83
+ const getTabBarHeight = _ref2 => {
90
84
  var _StyleSheet$flatten;
91
85
 
86
+ let {
87
+ state,
88
+ descriptors,
89
+ dimensions,
90
+ insets,
91
+ style,
92
+ ...rest
93
+ } = _ref2;
92
94
  // @ts-ignore
93
95
  const customHeight = (_StyleSheet$flatten = _reactNative.StyleSheet.flatten(style)) === null || _StyleSheet$flatten === void 0 ? void 0 : _StyleSheet$flatten.height;
94
96
 
@@ -114,13 +116,14 @@ const getTabBarHeight = ({
114
116
 
115
117
  exports.getTabBarHeight = getTabBarHeight;
116
118
 
117
- function BottomTabBar({
118
- state,
119
- navigation,
120
- descriptors,
121
- insets,
122
- style
123
- }) {
119
+ function BottomTabBar(_ref3) {
120
+ let {
121
+ state,
122
+ navigation,
123
+ descriptors,
124
+ insets,
125
+ style
126
+ } = _ref3;
124
127
  const {
125
128
  colors
126
129
  } = (0, _native.useTheme)();
@@ -168,9 +171,11 @@ function BottomTabBar({
168
171
  useNativeDriver,
169
172
  duration: 250,
170
173
  ...(visibilityAnimationConfig === null || visibilityAnimationConfig === void 0 ? void 0 : (_visibilityAnimationC2 = visibilityAnimationConfig.show) === null || _visibilityAnimationC2 === void 0 ? void 0 : _visibilityAnimationC2.config)
171
- }).start(({
172
- finished
173
- }) => {
174
+ }).start(_ref4 => {
175
+ let {
176
+ finished
177
+ } = _ref4;
178
+
174
179
  if (finished) {
175
180
  setIsTabBarHidden(false);
176
181
  }
@@ -314,13 +319,16 @@ function BottomTabBar({
314
319
  activeBackgroundColor: tabBarActiveBackgroundColor,
315
320
  inactiveBackgroundColor: tabBarInactiveBackgroundColor,
316
321
  button: options.tabBarButton,
317
- icon: (_options$tabBarIcon = options.tabBarIcon) !== null && _options$tabBarIcon !== void 0 ? _options$tabBarIcon : ({
318
- color,
319
- size
320
- }) => /*#__PURE__*/_react.default.createElement(_elements.MissingIcon, {
321
- color: color,
322
- size: size
323
- }),
322
+ icon: (_options$tabBarIcon = options.tabBarIcon) !== null && _options$tabBarIcon !== void 0 ? _options$tabBarIcon : _ref5 => {
323
+ let {
324
+ color,
325
+ size
326
+ } = _ref5;
327
+ return /*#__PURE__*/_react.default.createElement(_elements.MissingIcon, {
328
+ color: color,
329
+ size: size
330
+ });
331
+ },
324
332
  badge: options.tabBarBadge,
325
333
  badgeStyle: options.tabBarBadgeStyle,
326
334
  label: label,
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomTabBar.tsx"],"names":["DEFAULT_TABBAR_HEIGHT","COMPACT_TABBAR_HEIGHT","DEFAULT_MAX_TAB_ITEM_WIDTH","useNativeDriver","Platform","OS","shouldUseHorizontalLabels","state","descriptors","layout","dimensions","tabBarLabelPosition","routes","index","key","options","width","maxTabWidth","reduce","acc","route","tabBarItemStyle","flattenedStyle","StyleSheet","flatten","maxWidth","height","getPaddingBottom","insets","Math","max","bottom","select","ios","default","getTabBarHeight","style","rest","customHeight","isLandscape","horizontalLabels","paddingBottom","isPad","BottomTabBar","navigation","colors","buildLink","focusedRoute","focusedDescriptor","focusedOptions","tabBarShowLabel","tabBarHideOnKeyboard","tabBarVisibilityAnimationConfig","tabBarStyle","tabBarBackground","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarActiveBackgroundColor","tabBarInactiveBackgroundColor","isKeyboardShown","onHeightChange","React","useContext","BottomTabBarHeightCallbackContext","shouldShowTabBar","visibilityAnimationConfigRef","useRef","useEffect","current","isTabBarHidden","setIsTabBarHidden","useState","visible","Animated","Value","visibilityAnimationConfig","animation","show","spring","timing","toValue","duration","config","start","finished","hide","stopAnimation","setLayout","handleLayout","e","nativeEvent","tabBarHeight","hasHorizontalLabels","tabBarBackgroundElement","styles","tabBar","backgroundColor","card","borderTopColor","border","transform","translateY","interpolate","inputRange","outputRange","hairlineWidth","position","paddingHorizontal","left","right","absoluteFill","content","map","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","CommonActions","navigate","name","merge","onLongPress","label","tabBarLabel","undefined","title","accessibilityLabel","tabBarAccessibilityLabel","length","params","tabBarTestID","tabBarAllowFontScaling","tabBarButton","tabBarIcon","color","size","tabBarBadge","tabBarBadgeStyle","tabBarLabelStyle","tabBarIconStyle","create","borderTopWidth","elevation","flex","flexDirection"],"mappings":"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","sourcesContent":["import { MissingIcon } from '@react-navigation/elements';\nimport {\n CommonActions,\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n TabNavigationState,\n useLinkBuilder,\n useTheme,\n} from '@react-navigation/native';\nimport React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native';\nimport { EdgeInsets, useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type { BottomTabBarProps, BottomTabDescriptorMap } from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport useIsKeyboardShown from '../utils/useIsKeyboardShown';\nimport BottomTabItem from './BottomTabItem';\n\ntype Props = BottomTabBarProps & {\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n};\n\nconst DEFAULT_TABBAR_HEIGHT = 49;\nconst COMPACT_TABBAR_HEIGHT = 32;\nconst DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\ntype Options = {\n state: TabNavigationState<ParamListBase>;\n descriptors: BottomTabDescriptorMap;\n layout: { height: number; width: number };\n dimensions: { height: number; width: number };\n};\n\nconst shouldUseHorizontalLabels = ({\n state,\n descriptors,\n layout,\n dimensions,\n}: Options) => {\n const { tabBarLabelPosition } =\n descriptors[state.routes[state.index].key].options;\n\n if (tabBarLabelPosition) {\n switch (tabBarLabelPosition) {\n case 'beside-icon':\n return true;\n case 'below-icon':\n return false;\n }\n }\n\n if (layout.width >= 768) {\n // Screen size matches a tablet\n const maxTabWidth = state.routes.reduce((acc, route) => {\n const { tabBarItemStyle } = descriptors[route.key].options;\n const flattenedStyle = StyleSheet.flatten(tabBarItemStyle);\n\n if (flattenedStyle) {\n if (typeof flattenedStyle.width === 'number') {\n return acc + flattenedStyle.width;\n } else if (typeof flattenedStyle.maxWidth === 'number') {\n return acc + flattenedStyle.maxWidth;\n }\n }\n\n return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;\n }, 0);\n\n return maxTabWidth <= layout.width;\n } else {\n return dimensions.width > dimensions.height;\n }\n};\n\nconst getPaddingBottom = (insets: EdgeInsets) =>\n Math.max(insets.bottom - Platform.select({ ios: 4, default: 0 }), 0);\n\nexport const getTabBarHeight = ({\n state,\n descriptors,\n dimensions,\n insets,\n style,\n ...rest\n}: Options & {\n insets: EdgeInsets;\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>> | undefined;\n}) => {\n // @ts-ignore\n const customHeight = StyleSheet.flatten(style)?.height;\n\n if (typeof customHeight === 'number') {\n return customHeight;\n }\n\n const isLandscape = dimensions.width > dimensions.height;\n const horizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n ...rest,\n });\n const paddingBottom = getPaddingBottom(insets);\n\n if (\n Platform.OS === 'ios' &&\n !Platform.isPad &&\n isLandscape &&\n horizontalLabels\n ) {\n return COMPACT_TABBAR_HEIGHT + paddingBottom;\n }\n\n return DEFAULT_TABBAR_HEIGHT + paddingBottom;\n};\n\nexport default function BottomTabBar({\n state,\n navigation,\n descriptors,\n insets,\n style,\n}: Props) {\n const { colors } = useTheme();\n const buildLink = useLinkBuilder();\n\n const focusedRoute = state.routes[state.index];\n const focusedDescriptor = descriptors[focusedRoute.key];\n const focusedOptions = focusedDescriptor.options;\n\n const {\n tabBarShowLabel,\n tabBarHideOnKeyboard = false,\n tabBarVisibilityAnimationConfig,\n tabBarStyle,\n tabBarBackground,\n tabBarActiveTintColor,\n tabBarInactiveTintColor,\n tabBarActiveBackgroundColor,\n tabBarInactiveBackgroundColor,\n } = focusedOptions;\n\n const dimensions = useSafeAreaFrame();\n const isKeyboardShown = useIsKeyboardShown();\n\n const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);\n\n const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);\n\n const visibilityAnimationConfigRef = React.useRef(\n tabBarVisibilityAnimationConfig\n );\n\n React.useEffect(() => {\n visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;\n });\n\n const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);\n\n const [visible] = React.useState(\n () => new Animated.Value(shouldShowTabBar ? 1 : 0)\n );\n\n React.useEffect(() => {\n const visibilityAnimationConfig = visibilityAnimationConfigRef.current;\n\n if (shouldShowTabBar) {\n const animation =\n visibilityAnimationConfig?.show?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 1,\n useNativeDriver,\n duration: 250,\n ...visibilityAnimationConfig?.show?.config,\n }).start(({ finished }) => {\n if (finished) {\n setIsTabBarHidden(false);\n }\n });\n } else {\n setIsTabBarHidden(true);\n\n const animation =\n visibilityAnimationConfig?.hide?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 0,\n useNativeDriver,\n duration: 200,\n ...visibilityAnimationConfig?.hide?.config,\n }).start();\n }\n\n return () => visible.stopAnimation();\n }, [visible, shouldShowTabBar]);\n\n const [layout, setLayout] = React.useState({\n height: 0,\n width: dimensions.width,\n });\n\n const handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n onHeightChange?.(height);\n\n setLayout((layout) => {\n if (height === layout.height && width === layout.width) {\n return layout;\n } else {\n return {\n height,\n width,\n };\n }\n });\n };\n\n const { routes } = state;\n\n const paddingBottom = getPaddingBottom(insets);\n const tabBarHeight = getTabBarHeight({\n state,\n descriptors,\n insets,\n dimensions,\n layout,\n style: [tabBarStyle, style],\n });\n\n const hasHorizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n layout,\n });\n\n const tabBarBackgroundElement = tabBarBackground?.();\n\n return (\n <Animated.View\n style={[\n styles.tabBar,\n {\n backgroundColor:\n tabBarBackgroundElement != null ? 'transparent' : colors.card,\n borderTopColor: colors.border,\n },\n {\n transform: [\n {\n translateY: visible.interpolate({\n inputRange: [0, 1],\n outputRange: [\n layout.height + paddingBottom + StyleSheet.hairlineWidth,\n 0,\n ],\n }),\n },\n ],\n // Absolutely position the tab bar so that the content is below it\n // This is needed to avoid gap at bottom when the tab bar is hidden\n position: isTabBarHidden ? 'absolute' : (null as any),\n },\n {\n height: tabBarHeight,\n paddingBottom,\n paddingHorizontal: Math.max(insets.left, insets.right),\n },\n tabBarStyle,\n ]}\n pointerEvents={isTabBarHidden ? 'none' : 'auto'}\n onLayout={handleLayout}\n >\n <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n {tabBarBackgroundElement}\n </View>\n <View accessibilityRole=\"tablist\" style={styles.content}>\n {routes.map((route, index) => {\n const focused = index === state.index;\n const { options } = descriptors[route.key];\n\n const onPress = () => {\n const event = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n });\n\n if (!focused && !event.defaultPrevented) {\n navigation.dispatch({\n ...CommonActions.navigate({ name: route.name, merge: true }),\n target: state.key,\n });\n }\n };\n\n const onLongPress = () => {\n navigation.emit({\n type: 'tabLongPress',\n target: route.key,\n });\n };\n\n const label =\n options.tabBarLabel !== undefined\n ? options.tabBarLabel\n : options.title !== undefined\n ? options.title\n : route.name;\n\n const accessibilityLabel =\n options.tabBarAccessibilityLabel !== undefined\n ? options.tabBarAccessibilityLabel\n : typeof label === 'string' && Platform.OS === 'ios'\n ? `${label}, tab, ${index + 1} of ${routes.length}`\n : undefined;\n\n return (\n <NavigationContext.Provider\n key={route.key}\n value={descriptors[route.key].navigation}\n >\n <NavigationRouteContext.Provider value={route}>\n <BottomTabItem\n route={route}\n focused={focused}\n horizontal={hasHorizontalLabels}\n onPress={onPress}\n onLongPress={onLongPress}\n accessibilityLabel={accessibilityLabel}\n to={buildLink(route.name, route.params)}\n testID={options.tabBarTestID}\n allowFontScaling={options.tabBarAllowFontScaling}\n activeTintColor={tabBarActiveTintColor}\n inactiveTintColor={tabBarInactiveTintColor}\n activeBackgroundColor={tabBarActiveBackgroundColor}\n inactiveBackgroundColor={tabBarInactiveBackgroundColor}\n button={options.tabBarButton}\n icon={\n options.tabBarIcon ??\n (({ color, size }) => (\n <MissingIcon color={color} size={size} />\n ))\n }\n badge={options.tabBarBadge}\n badgeStyle={options.tabBarBadgeStyle}\n label={label}\n showLabel={tabBarShowLabel}\n labelStyle={options.tabBarLabelStyle}\n iconStyle={options.tabBarIconStyle}\n style={options.tabBarItemStyle}\n />\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n );\n })}\n </View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n tabBar: {\n left: 0,\n right: 0,\n bottom: 0,\n borderTopWidth: StyleSheet.hairlineWidth,\n elevation: 8,\n },\n content: {\n flex: 1,\n flexDirection: 'row',\n },\n});\n"]}
1
+ {"version":3,"sources":["BottomTabBar.tsx"],"names":["DEFAULT_TABBAR_HEIGHT","COMPACT_TABBAR_HEIGHT","DEFAULT_MAX_TAB_ITEM_WIDTH","useNativeDriver","Platform","OS","shouldUseHorizontalLabels","state","descriptors","layout","dimensions","tabBarLabelPosition","routes","index","key","options","width","maxTabWidth","reduce","acc","route","tabBarItemStyle","flattenedStyle","StyleSheet","flatten","maxWidth","height","getPaddingBottom","insets","Math","max","bottom","select","ios","default","getTabBarHeight","style","rest","customHeight","isLandscape","horizontalLabels","paddingBottom","isPad","BottomTabBar","navigation","colors","buildLink","focusedRoute","focusedDescriptor","focusedOptions","tabBarShowLabel","tabBarHideOnKeyboard","tabBarVisibilityAnimationConfig","tabBarStyle","tabBarBackground","tabBarActiveTintColor","tabBarInactiveTintColor","tabBarActiveBackgroundColor","tabBarInactiveBackgroundColor","isKeyboardShown","onHeightChange","React","useContext","BottomTabBarHeightCallbackContext","shouldShowTabBar","visibilityAnimationConfigRef","useRef","useEffect","current","isTabBarHidden","setIsTabBarHidden","useState","visible","Animated","Value","visibilityAnimationConfig","animation","show","spring","timing","toValue","duration","config","start","finished","hide","stopAnimation","setLayout","handleLayout","e","nativeEvent","tabBarHeight","hasHorizontalLabels","tabBarBackgroundElement","styles","tabBar","backgroundColor","card","borderTopColor","border","transform","translateY","interpolate","inputRange","outputRange","hairlineWidth","position","paddingHorizontal","left","right","absoluteFill","content","map","focused","onPress","event","emit","type","target","canPreventDefault","defaultPrevented","dispatch","CommonActions","navigate","name","merge","onLongPress","label","tabBarLabel","undefined","title","accessibilityLabel","tabBarAccessibilityLabel","length","params","tabBarTestID","tabBarAllowFontScaling","tabBarButton","tabBarIcon","color","size","tabBarBadge","tabBarBadgeStyle","tabBarLabelStyle","tabBarIconStyle","create","borderTopWidth","elevation","flex","flexDirection"],"mappings":"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","sourcesContent":["import { MissingIcon } from '@react-navigation/elements';\nimport {\n CommonActions,\n NavigationContext,\n NavigationRouteContext,\n ParamListBase,\n TabNavigationState,\n useLinkBuilder,\n useTheme,\n} from '@react-navigation/native';\nimport React from 'react';\nimport {\n Animated,\n LayoutChangeEvent,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native';\nimport { EdgeInsets, useSafeAreaFrame } from 'react-native-safe-area-context';\n\nimport type { BottomTabBarProps, BottomTabDescriptorMap } from '../types';\nimport BottomTabBarHeightCallbackContext from '../utils/BottomTabBarHeightCallbackContext';\nimport useIsKeyboardShown from '../utils/useIsKeyboardShown';\nimport BottomTabItem from './BottomTabItem';\n\ntype Props = BottomTabBarProps & {\n style?: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n};\n\nconst DEFAULT_TABBAR_HEIGHT = 49;\nconst COMPACT_TABBAR_HEIGHT = 32;\nconst DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\ntype Options = {\n state: TabNavigationState<ParamListBase>;\n descriptors: BottomTabDescriptorMap;\n layout: { height: number; width: number };\n dimensions: { height: number; width: number };\n};\n\nconst shouldUseHorizontalLabels = ({\n state,\n descriptors,\n layout,\n dimensions,\n}: Options) => {\n const { tabBarLabelPosition } =\n descriptors[state.routes[state.index].key].options;\n\n if (tabBarLabelPosition) {\n switch (tabBarLabelPosition) {\n case 'beside-icon':\n return true;\n case 'below-icon':\n return false;\n }\n }\n\n if (layout.width >= 768) {\n // Screen size matches a tablet\n const maxTabWidth = state.routes.reduce((acc, route) => {\n const { tabBarItemStyle } = descriptors[route.key].options;\n const flattenedStyle = StyleSheet.flatten(tabBarItemStyle);\n\n if (flattenedStyle) {\n if (typeof flattenedStyle.width === 'number') {\n return acc + flattenedStyle.width;\n } else if (typeof flattenedStyle.maxWidth === 'number') {\n return acc + flattenedStyle.maxWidth;\n }\n }\n\n return acc + DEFAULT_MAX_TAB_ITEM_WIDTH;\n }, 0);\n\n return maxTabWidth <= layout.width;\n } else {\n return dimensions.width > dimensions.height;\n }\n};\n\nconst getPaddingBottom = (insets: EdgeInsets) =>\n Math.max(insets.bottom - Platform.select({ ios: 4, default: 0 }), 0);\n\nexport const getTabBarHeight = ({\n state,\n descriptors,\n dimensions,\n insets,\n style,\n ...rest\n}: Options & {\n insets: EdgeInsets;\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>> | undefined;\n}) => {\n // @ts-ignore\n const customHeight = StyleSheet.flatten(style)?.height;\n\n if (typeof customHeight === 'number') {\n return customHeight;\n }\n\n const isLandscape = dimensions.width > dimensions.height;\n const horizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n ...rest,\n });\n const paddingBottom = getPaddingBottom(insets);\n\n if (\n Platform.OS === 'ios' &&\n !Platform.isPad &&\n isLandscape &&\n horizontalLabels\n ) {\n return COMPACT_TABBAR_HEIGHT + paddingBottom;\n }\n\n return DEFAULT_TABBAR_HEIGHT + paddingBottom;\n};\n\nexport default function BottomTabBar({\n state,\n navigation,\n descriptors,\n insets,\n style,\n}: Props) {\n const { colors } = useTheme();\n const buildLink = useLinkBuilder();\n\n const focusedRoute = state.routes[state.index];\n const focusedDescriptor = descriptors[focusedRoute.key];\n const focusedOptions = focusedDescriptor.options;\n\n const {\n tabBarShowLabel,\n tabBarHideOnKeyboard = false,\n tabBarVisibilityAnimationConfig,\n tabBarStyle,\n tabBarBackground,\n tabBarActiveTintColor,\n tabBarInactiveTintColor,\n tabBarActiveBackgroundColor,\n tabBarInactiveBackgroundColor,\n } = focusedOptions;\n\n const dimensions = useSafeAreaFrame();\n const isKeyboardShown = useIsKeyboardShown();\n\n const onHeightChange = React.useContext(BottomTabBarHeightCallbackContext);\n\n const shouldShowTabBar = !(tabBarHideOnKeyboard && isKeyboardShown);\n\n const visibilityAnimationConfigRef = React.useRef(\n tabBarVisibilityAnimationConfig\n );\n\n React.useEffect(() => {\n visibilityAnimationConfigRef.current = tabBarVisibilityAnimationConfig;\n });\n\n const [isTabBarHidden, setIsTabBarHidden] = React.useState(!shouldShowTabBar);\n\n const [visible] = React.useState(\n () => new Animated.Value(shouldShowTabBar ? 1 : 0)\n );\n\n React.useEffect(() => {\n const visibilityAnimationConfig = visibilityAnimationConfigRef.current;\n\n if (shouldShowTabBar) {\n const animation =\n visibilityAnimationConfig?.show?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 1,\n useNativeDriver,\n duration: 250,\n ...visibilityAnimationConfig?.show?.config,\n }).start(({ finished }) => {\n if (finished) {\n setIsTabBarHidden(false);\n }\n });\n } else {\n setIsTabBarHidden(true);\n\n const animation =\n visibilityAnimationConfig?.hide?.animation === 'spring'\n ? Animated.spring\n : Animated.timing;\n\n animation(visible, {\n toValue: 0,\n useNativeDriver,\n duration: 200,\n ...visibilityAnimationConfig?.hide?.config,\n }).start();\n }\n\n return () => visible.stopAnimation();\n }, [visible, shouldShowTabBar]);\n\n const [layout, setLayout] = React.useState({\n height: 0,\n width: dimensions.width,\n });\n\n const handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n onHeightChange?.(height);\n\n setLayout((layout) => {\n if (height === layout.height && width === layout.width) {\n return layout;\n } else {\n return {\n height,\n width,\n };\n }\n });\n };\n\n const { routes } = state;\n\n const paddingBottom = getPaddingBottom(insets);\n const tabBarHeight = getTabBarHeight({\n state,\n descriptors,\n insets,\n dimensions,\n layout,\n style: [tabBarStyle, style],\n });\n\n const hasHorizontalLabels = shouldUseHorizontalLabels({\n state,\n descriptors,\n dimensions,\n layout,\n });\n\n const tabBarBackgroundElement = tabBarBackground?.();\n\n return (\n <Animated.View\n style={[\n styles.tabBar,\n {\n backgroundColor:\n tabBarBackgroundElement != null ? 'transparent' : colors.card,\n borderTopColor: colors.border,\n },\n {\n transform: [\n {\n translateY: visible.interpolate({\n inputRange: [0, 1],\n outputRange: [\n layout.height + paddingBottom + StyleSheet.hairlineWidth,\n 0,\n ],\n }),\n },\n ],\n // Absolutely position the tab bar so that the content is below it\n // This is needed to avoid gap at bottom when the tab bar is hidden\n position: isTabBarHidden ? 'absolute' : (null as any),\n },\n {\n height: tabBarHeight,\n paddingBottom,\n paddingHorizontal: Math.max(insets.left, insets.right),\n },\n tabBarStyle,\n ]}\n pointerEvents={isTabBarHidden ? 'none' : 'auto'}\n onLayout={handleLayout}\n >\n <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n {tabBarBackgroundElement}\n </View>\n <View accessibilityRole=\"tablist\" style={styles.content}>\n {routes.map((route, index) => {\n const focused = index === state.index;\n const { options } = descriptors[route.key];\n\n const onPress = () => {\n const event = navigation.emit({\n type: 'tabPress',\n target: route.key,\n canPreventDefault: true,\n });\n\n if (!focused && !event.defaultPrevented) {\n navigation.dispatch({\n ...CommonActions.navigate({ name: route.name, merge: true }),\n target: state.key,\n });\n }\n };\n\n const onLongPress = () => {\n navigation.emit({\n type: 'tabLongPress',\n target: route.key,\n });\n };\n\n const label =\n options.tabBarLabel !== undefined\n ? options.tabBarLabel\n : options.title !== undefined\n ? options.title\n : route.name;\n\n const accessibilityLabel =\n options.tabBarAccessibilityLabel !== undefined\n ? options.tabBarAccessibilityLabel\n : typeof label === 'string' && Platform.OS === 'ios'\n ? `${label}, tab, ${index + 1} of ${routes.length}`\n : undefined;\n\n return (\n <NavigationContext.Provider\n key={route.key}\n value={descriptors[route.key].navigation}\n >\n <NavigationRouteContext.Provider value={route}>\n <BottomTabItem\n route={route}\n focused={focused}\n horizontal={hasHorizontalLabels}\n onPress={onPress}\n onLongPress={onLongPress}\n accessibilityLabel={accessibilityLabel}\n to={buildLink(route.name, route.params)}\n testID={options.tabBarTestID}\n allowFontScaling={options.tabBarAllowFontScaling}\n activeTintColor={tabBarActiveTintColor}\n inactiveTintColor={tabBarInactiveTintColor}\n activeBackgroundColor={tabBarActiveBackgroundColor}\n inactiveBackgroundColor={tabBarInactiveBackgroundColor}\n button={options.tabBarButton}\n icon={\n options.tabBarIcon ??\n (({ color, size }) => (\n <MissingIcon color={color} size={size} />\n ))\n }\n badge={options.tabBarBadge}\n badgeStyle={options.tabBarBadgeStyle}\n label={label}\n showLabel={tabBarShowLabel}\n labelStyle={options.tabBarLabelStyle}\n iconStyle={options.tabBarIconStyle}\n style={options.tabBarItemStyle}\n />\n </NavigationRouteContext.Provider>\n </NavigationContext.Provider>\n );\n })}\n </View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n tabBar: {\n left: 0,\n right: 0,\n bottom: 0,\n borderTopWidth: StyleSheet.hairlineWidth,\n elevation: 8,\n },\n content: {\n flex: 1,\n flexDirection: 'row',\n },\n});\n"]}
@@ -19,68 +19,74 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
19
 
20
20
  function _extends() { _extends = Object.assign || 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); }
21
21
 
22
- function BottomTabBarItem({
23
- focused,
24
- route,
25
- label,
26
- icon,
27
- badge,
28
- badgeStyle,
29
- to,
30
- button = ({
31
- children,
32
- style,
33
- onPress,
22
+ function BottomTabBarItem(_ref) {
23
+ let {
24
+ focused,
25
+ route,
26
+ label,
27
+ icon,
28
+ badge,
29
+ badgeStyle,
34
30
  to,
35
- accessibilityRole,
36
- ...rest
37
- }) => {
38
- if (_reactNative.Platform.OS === 'web' && to) {
39
- // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.
40
- // We need to use `onClick` to be able to prevent default browser handling of links.
41
- return /*#__PURE__*/_react.default.createElement(_native.Link, _extends({}, rest, {
42
- to: to,
43
- style: [styles.button, style],
44
- onPress: e => {
45
- if (!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && (e.button == null || e.button === 0) // ignore everything but left clicks
46
- ) {
47
- e.preventDefault();
48
- onPress === null || onPress === void 0 ? void 0 : onPress(e);
31
+ button = _ref2 => {
32
+ let {
33
+ children,
34
+ style,
35
+ onPress,
36
+ to,
37
+ accessibilityRole,
38
+ ...rest
39
+ } = _ref2;
40
+
41
+ if (_reactNative.Platform.OS === 'web' && to) {
42
+ // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.
43
+ // We need to use `onClick` to be able to prevent default browser handling of links.
44
+ return /*#__PURE__*/_react.default.createElement(_native.Link, _extends({}, rest, {
45
+ to: to,
46
+ style: [styles.button, style],
47
+ onPress: e => {
48
+ if (!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && ( // ignore clicks with modifier keys
49
+ e.button == null || e.button === 0) // ignore everything but left clicks
50
+ ) {
51
+ e.preventDefault();
52
+ onPress === null || onPress === void 0 ? void 0 : onPress(e);
53
+ }
49
54
  }
50
- }
51
- }), children);
52
- } else {
53
- return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, _extends({}, rest, {
54
- accessibilityRole: accessibilityRole,
55
- onPress: onPress,
56
- style: style
57
- }), children);
58
- }
59
- },
60
- accessibilityLabel,
61
- testID,
62
- onPress,
63
- onLongPress,
64
- horizontal,
65
- activeTintColor: customActiveTintColor,
66
- inactiveTintColor: customInactiveTintColor,
67
- activeBackgroundColor = 'transparent',
68
- inactiveBackgroundColor = 'transparent',
69
- showLabel = true,
70
- allowFontScaling,
71
- labelStyle,
72
- iconStyle,
73
- style
74
- }) {
55
+ }), children);
56
+ } else {
57
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, _extends({}, rest, {
58
+ accessibilityRole: accessibilityRole,
59
+ onPress: onPress,
60
+ style: style
61
+ }), children);
62
+ }
63
+ },
64
+ accessibilityLabel,
65
+ testID,
66
+ onPress,
67
+ onLongPress,
68
+ horizontal,
69
+ activeTintColor: customActiveTintColor,
70
+ inactiveTintColor: customInactiveTintColor,
71
+ activeBackgroundColor = 'transparent',
72
+ inactiveBackgroundColor = 'transparent',
73
+ showLabel = true,
74
+ allowFontScaling,
75
+ labelStyle,
76
+ iconStyle,
77
+ style
78
+ } = _ref;
75
79
  const {
76
80
  colors
77
81
  } = (0, _native.useTheme)();
78
82
  const activeTintColor = customActiveTintColor === undefined ? colors.primary : customActiveTintColor;
79
83
  const inactiveTintColor = customInactiveTintColor === undefined ? (0, _color.default)(colors.text).mix((0, _color.default)(colors.card), 0.5).hex() : customInactiveTintColor;
80
84
 
81
- const renderLabel = ({
82
- focused
83
- }) => {
85
+ const renderLabel = _ref3 => {
86
+ let {
87
+ focused
88
+ } = _ref3;
89
+
84
90
  if (showLabel === false) {
85
91
  return null;
86
92
  }
@@ -104,9 +110,11 @@ function BottomTabBarItem({
104
110
  });
105
111
  };
106
112
 
107
- const renderIcon = ({
108
- focused
109
- }) => {
113
+ const renderIcon = _ref4 => {
114
+ let {
115
+ focused
116
+ } = _ref4;
117
+
110
118
  if (icon === undefined) {
111
119
  return null;
112
120
  }