@react-navigation/bottom-tabs 6.0.9 → 6.1.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 (34) 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 +10 -9
  4. package/lib/commonjs/navigators/createBottomTabNavigator.js.map +1 -1
  5. package/lib/commonjs/views/Badge.js +13 -10
  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 +10 -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 +10 -9
  19. package/lib/module/navigators/createBottomTabNavigator.js.map +1 -1
  20. package/lib/module/views/Badge.js +13 -10
  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 +10 -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/package.json +8 -8
  34. package/src/index.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,16 @@ 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
+ initialRouteName,
27
+ backBehavior,
28
+ children,
29
+ screenListeners,
30
+ screenOptions,
31
+ sceneContainerStyle,
32
+ ...restWithDeprecated
33
+ } = _ref;
33
34
  const {
34
35
  // @ts-expect-error: lazy is deprecated
35
36
  lazy,
@@ -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","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,OAQU;AAAA,MARkB;AAC1BC,IAAAA,gBAD0B;AAE1BC,IAAAA,YAF0B;AAG1BC,IAAAA,QAH0B;AAI1BC,IAAAA,eAJ0B;AAK1BC,IAAAA,aAL0B;AAM1BC,IAAAA,mBAN0B;AAO1B,OAAGC;AAPuB,GAQlB;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"]}
@@ -21,13 +21,14 @@ 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
+ visible = true,
27
+ size = 18,
28
+ children,
29
+ style,
30
+ ...rest
31
+ } = _ref;
31
32
  const [opacity] = React.useState(() => new _reactNative.Animated.Value(visible ? 1 : 0));
32
33
  const [rendered, setRendered] = React.useState(visible ? true : false);
33
34
  const theme = (0, _native.useTheme)();
@@ -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
  }
@@ -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","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":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;AAqBe,SAASA,KAAT,OAML;AAAA,MANoB;AAC5BC,IAAAA,OAAO,GAAG,IADkB;AAE5BC,IAAAA,IAAI,GAAG,EAFqB;AAG5BC,IAAAA,QAH4B;AAI5BC,IAAAA,KAJ4B;AAK5B,OAAGC;AALyB,GAMpB;AACR,QAAM,CAACC,OAAD,IAAYC,KAAK,CAACC,QAAN,CAAe,MAAM,IAAIC,sBAASC,KAAb,CAAmBT,OAAO,GAAG,CAAH,GAAO,CAAjC,CAArB,CAAlB;AACA,QAAM,CAACU,QAAD,EAAWC,WAAX,IAA0BL,KAAK,CAACC,QAAN,CAAeP,OAAO,GAAG,IAAH,GAAU,KAAhC,CAAhC;AAEA,QAAMY,KAAK,GAAG,uBAAd;AAEAN,EAAAA,KAAK,CAACO,SAAN,CAAgB,MAAM;AACpB,QAAI,CAACH,QAAL,EAAe;AACb;AACD;;AAEDF,0BAASM,MAAT,CAAgBT,OAAhB,EAAyB;AACvBU,MAAAA,OAAO,EAAEf,OAAO,GAAG,CAAH,GAAO,CADA;AAEvBgB,MAAAA,QAAQ,EAAE,GAFa;AAGvBC,MAAAA,eAAe,EAAE;AAHM,KAAzB,EAIGC,KAJH,CAIS,SAAkB;AAAA,UAAjB;AAAEC,QAAAA;AAAF,OAAiB;;AACzB,UAAIA,QAAQ,IAAI,CAACnB,OAAjB,EAA0B;AACxBW,QAAAA,WAAW,CAAC,KAAD,CAAX;AACD;AACF,KARD;;AAUA,WAAO,MAAMN,OAAO,CAACe,aAAR,EAAb;AACD,GAhBD,EAgBG,CAACf,OAAD,EAAUK,QAAV,EAAoBV,OAApB,CAhBH;;AAkBA,MAAIA,OAAO,IAAI,CAACU,QAAhB,EAA0B;AACxBC,IAAAA,WAAW,CAAC,IAAD,CAAX;AACD;;AAED,MAAI,CAACX,OAAD,IAAY,CAACU,QAAjB,EAA2B;AACzB,WAAO,IAAP;AACD,GA9BO,CAgCR;;;AACA,QAAM;AAAEW,IAAAA,eAAe,GAAGT,KAAK,CAACU,MAAN,CAAaC,YAAjC;AAA+C,OAAGC;AAAlD,MACJC,wBAAWC,OAAX,CAAmBvB,KAAnB,KAA6B,EAD/B;AAEA,QAAMwB,SAAS,GAAG,oBAAMN,eAAN,EAAuBO,OAAvB,KAAmC,OAAnC,GAA6C,OAA/D;AAEA,QAAMC,YAAY,GAAG5B,IAAI,GAAG,CAA5B;AACA,QAAM6B,QAAQ,GAAGC,IAAI,CAACC,KAAL,CAAY/B,IAAI,GAAG,CAAR,GAAa,CAAxB,CAAjB;AAEA,sBACE,oBAAC,qBAAD,CAAU,IAAV;AACE,IAAA,aAAa,EAAE,CADjB;AAEE,IAAA,KAAK,EAAE,CACL;AACEI,MAAAA,OADF;AAEE4B,MAAAA,SAAS,EAAE,CACT;AACEC,QAAAA,KAAK,EAAE7B,OAAO,CAAC8B,WAAR,CAAoB;AACzBC,UAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,CADa;AAEzBC,UAAAA,WAAW,EAAE,CAAC,GAAD,EAAM,CAAN;AAFY,SAApB;AADT,OADS,CAFb;AAUEhB,MAAAA,eAVF;AAWEiB,MAAAA,KAAK,EAAEX,SAXT;AAYEG,MAAAA,QAZF;AAaES,MAAAA,UAAU,EAAEtC,IAAI,GAAG,CAbrB;AAcEuC,MAAAA,MAAM,EAAEvC,IAdV;AAeEwC,MAAAA,QAAQ,EAAExC,IAfZ;AAgBE4B,MAAAA;AAhBF,KADK,EAmBLa,MAAM,CAACC,SAnBF,EAoBLnB,SApBK;AAFT,KAwBMpB,IAxBN,GA0BGF,QA1BH,CADF;AA8BD;;AAED,MAAMwC,MAAM,GAAGjB,wBAAWmB,MAAX,CAAkB;AAC/BD,EAAAA,SAAS,EAAE;AACTE,IAAAA,SAAS,EAAE,UADF;AAETC,IAAAA,SAAS,EAAE,QAFF;AAGTC,IAAAA,iBAAiB,EAAE,CAHV;AAITC,IAAAA,QAAQ,EAAE;AAJD;AADoB,CAAlB,CAAf","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"]}
@@ -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":";;;;;;;;AAAA;;AACA;;AASA;;AACA;;AASA;;AAGA;;AACA;;AACA;;;;AAMA,MAAMA,qBAAqB,GAAG,EAA9B;AACA,MAAMC,qBAAqB,GAAG,EAA9B;AACA,MAAMC,0BAA0B,GAAG,GAAnC;AAEA,MAAMC,eAAe,GAAGC,sBAASC,EAAT,KAAgB,KAAxC;;AASA,MAAMC,yBAAyB,GAAG,QAKnB;AAAA,MALoB;AACjCC,IAAAA,KADiC;AAEjCC,IAAAA,WAFiC;AAGjCC,IAAAA,MAHiC;AAIjCC,IAAAA;AAJiC,GAKpB;AACb,QAAM;AAAEC,IAAAA;AAAF,MACJH,WAAW,CAACD,KAAK,CAACK,MAAN,CAAaL,KAAK,CAACM,KAAnB,EAA0BC,GAA3B,CAAX,CAA2CC,OAD7C;;AAGA,MAAIJ,mBAAJ,EAAyB;AACvB,YAAQA,mBAAR;AACE,WAAK,aAAL;AACE,eAAO,IAAP;;AACF,WAAK,YAAL;AACE,eAAO,KAAP;AAJJ;AAMD;;AAED,MAAIF,MAAM,CAACO,KAAP,IAAgB,GAApB,EAAyB;AACvB;AACA,UAAMC,WAAW,GAAGV,KAAK,CAACK,MAAN,CAAaM,MAAb,CAAoB,CAACC,GAAD,EAAMC,KAAN,KAAgB;AACtD,YAAM;AAAEC,QAAAA;AAAF,UAAsBb,WAAW,CAACY,KAAK,CAACN,GAAP,CAAX,CAAuBC,OAAnD;;AACA,YAAMO,cAAc,GAAGC,wBAAWC,OAAX,CAAmBH,eAAnB,CAAvB;;AAEA,UAAIC,cAAJ,EAAoB;AAClB,YAAI,OAAOA,cAAc,CAACN,KAAtB,KAAgC,QAApC,EAA8C;AAC5C,iBAAOG,GAAG,GAAGG,cAAc,CAACN,KAA5B;AACD,SAFD,MAEO,IAAI,OAAOM,cAAc,CAACG,QAAtB,KAAmC,QAAvC,EAAiD;AACtD,iBAAON,GAAG,GAAGG,cAAc,CAACG,QAA5B;AACD;AACF;;AAED,aAAON,GAAG,GAAGjB,0BAAb;AACD,KAbmB,EAajB,CAbiB,CAApB;AAeA,WAAOe,WAAW,IAAIR,MAAM,CAACO,KAA7B;AACD,GAlBD,MAkBO;AACL,WAAON,UAAU,CAACM,KAAX,GAAmBN,UAAU,CAACgB,MAArC;AACD;AACF,CAvCD;;AAyCA,MAAMC,gBAAgB,GAAIC,MAAD,IACvBC,IAAI,CAACC,GAAL,CAASF,MAAM,CAACG,MAAP,GAAgB3B,sBAAS4B,MAAT,CAAgB;AAAEC,EAAAA,GAAG,EAAE,CAAP;AAAUC,EAAAA,OAAO,EAAE;AAAnB,CAAhB,CAAzB,EAAkE,CAAlE,CADF;;AAGO,MAAMC,eAAe,GAAG,SAUzB;AAAA;;AAAA,MAV0B;AAC9B5B,IAAAA,KAD8B;AAE9BC,IAAAA,WAF8B;AAG9BE,IAAAA,UAH8B;AAI9BkB,IAAAA,MAJ8B;AAK9BQ,IAAAA,KAL8B;AAM9B,OAAGC;AAN2B,GAU1B;AACJ;AACA,QAAMC,YAAY,0BAAGf,wBAAWC,OAAX,CAAmBY,KAAnB,CAAH,wDAAG,oBAA2BV,MAAhD;;AAEA,MAAI,OAAOY,YAAP,KAAwB,QAA5B,EAAsC;AACpC,WAAOA,YAAP;AACD;;AAED,QAAMC,WAAW,GAAG7B,UAAU,CAACM,KAAX,GAAmBN,UAAU,CAACgB,MAAlD;AACA,QAAMc,gBAAgB,GAAGlC,yBAAyB,CAAC;AACjDC,IAAAA,KADiD;AAEjDC,IAAAA,WAFiD;AAGjDE,IAAAA,UAHiD;AAIjD,OAAG2B;AAJ8C,GAAD,CAAlD;AAMA,QAAMI,aAAa,GAAGd,gBAAgB,CAACC,MAAD,CAAtC;;AAEA,MACExB,sBAASC,EAAT,KAAgB,KAAhB,IACA,CAACD,sBAASsC,KADV,IAEAH,WAFA,IAGAC,gBAJF,EAKE;AACA,WAAOvC,qBAAqB,GAAGwC,aAA/B;AACD;;AAED,SAAOzC,qBAAqB,GAAGyC,aAA/B;AACD,CArCM;;;;AAuCQ,SAASE,YAAT,QAML;AAAA,MAN2B;AACnCpC,IAAAA,KADmC;AAEnCqC,IAAAA,UAFmC;AAGnCpC,IAAAA,WAHmC;AAInCoB,IAAAA,MAJmC;AAKnCQ,IAAAA;AALmC,GAM3B;AACR,QAAM;AAAES,IAAAA;AAAF,MAAa,uBAAnB;AACA,QAAMC,SAAS,GAAG,6BAAlB;AAEA,QAAMC,YAAY,GAAGxC,KAAK,CAACK,MAAN,CAAaL,KAAK,CAACM,KAAnB,CAArB;AACA,QAAMmC,iBAAiB,GAAGxC,WAAW,CAACuC,YAAY,CAACjC,GAAd,CAArC;AACA,QAAMmC,cAAc,GAAGD,iBAAiB,CAACjC,OAAzC;AAEA,QAAM;AACJmC,IAAAA,eADI;AAEJC,IAAAA,oBAAoB,GAAG,KAFnB;AAGJC,IAAAA,+BAHI;AAIJC,IAAAA,WAJI;AAKJC,IAAAA,gBALI;AAMJC,IAAAA,qBANI;AAOJC,IAAAA,uBAPI;AAQJC,IAAAA,2BARI;AASJC,IAAAA;AATI,MAUFT,cAVJ;AAYA,QAAMvC,UAAU,GAAG,mDAAnB;AACA,QAAMiD,eAAe,GAAG,kCAAxB;;AAEA,QAAMC,cAAc,GAAGC,eAAMC,UAAN,CAAiBC,0CAAjB,CAAvB;;AAEA,QAAMC,gBAAgB,GAAG,EAAEb,oBAAoB,IAAIQ,eAA1B,CAAzB;;AAEA,QAAMM,4BAA4B,GAAGJ,eAAMK,MAAN,CACnCd,+BADmC,CAArC;;AAIAS,iBAAMM,SAAN,CAAgB,MAAM;AACpBF,IAAAA,4BAA4B,CAACG,OAA7B,GAAuChB,+BAAvC;AACD,GAFD;;AAIA,QAAM,CAACiB,cAAD,EAAiBC,iBAAjB,IAAsCT,eAAMU,QAAN,CAAe,CAACP,gBAAhB,CAA5C;;AAEA,QAAM,CAACQ,OAAD,IAAYX,eAAMU,QAAN,CAChB,MAAM,IAAIE,sBAASC,KAAb,CAAmBV,gBAAgB,GAAG,CAAH,GAAO,CAA1C,CADU,CAAlB;;AAIAH,iBAAMM,SAAN,CAAgB,MAAM;AACpB,UAAMQ,yBAAyB,GAAGV,4BAA4B,CAACG,OAA/D;;AAEA,QAAIJ,gBAAJ,EAAsB;AAAA;;AACpB,YAAMY,SAAS,GACb,CAAAD,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,qCAAAA,yBAAyB,CAAEE,IAA3B,gFAAiCD,SAAjC,MAA+C,QAA/C,GACIH,sBAASK,MADb,GAEIL,sBAASM,MAHf;AAKAH,MAAAA,SAAS,CAACJ,OAAD,EAAU;AACjBQ,QAAAA,OAAO,EAAE,CADQ;AAEjB7E,QAAAA,eAFiB;AAGjB8E,QAAAA,QAAQ,EAAE,GAHO;AAIjB,YAAGN,yBAAH,aAAGA,yBAAH,iDAAGA,yBAAyB,CAAEE,IAA9B,2DAAG,uBAAiCK,MAApC;AAJiB,OAAV,CAAT,CAKGC,KALH,CAKS,SAAkB;AAAA,YAAjB;AAAEC,UAAAA;AAAF,SAAiB;;AACzB,YAAIA,QAAJ,EAAc;AACZd,UAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACD;AACF,OATD;AAUD,KAhBD,MAgBO;AAAA;;AACLA,MAAAA,iBAAiB,CAAC,IAAD,CAAjB;AAEA,YAAMM,SAAS,GACb,CAAAD,yBAAyB,SAAzB,IAAAA,yBAAyB,WAAzB,sCAAAA,yBAAyB,CAAEU,IAA3B,kFAAiCT,SAAjC,MAA+C,QAA/C,GACIH,sBAASK,MADb,GAEIL,sBAASM,MAHf;AAKAH,MAAAA,SAAS,CAACJ,OAAD,EAAU;AACjBQ,QAAAA,OAAO,EAAE,CADQ;AAEjB7E,QAAAA,eAFiB;AAGjB8E,QAAAA,QAAQ,EAAE,GAHO;AAIjB,YAAGN,yBAAH,aAAGA,yBAAH,iDAAGA,yBAAyB,CAAEU,IAA9B,2DAAG,uBAAiCH,MAApC;AAJiB,OAAV,CAAT,CAKGC,KALH;AAMD;;AAED,WAAO,MAAMX,OAAO,CAACc,aAAR,EAAb;AACD,GApCD,EAoCG,CAACd,OAAD,EAAUR,gBAAV,CApCH;;AAsCA,QAAM,CAACvD,MAAD,EAAS8E,SAAT,IAAsB1B,eAAMU,QAAN,CAAe;AACzC7C,IAAAA,MAAM,EAAE,CADiC;AAEzCV,IAAAA,KAAK,EAAEN,UAAU,CAACM;AAFuB,GAAf,CAA5B;;AAKA,QAAMwE,YAAY,GAAIC,CAAD,IAA0B;AAC7C,UAAM;AAAE/D,MAAAA,MAAF;AAAUV,MAAAA;AAAV,QAAoByE,CAAC,CAACC,WAAF,CAAcjF,MAAxC;AAEAmD,IAAAA,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAGlC,MAAH,CAAd;AAEA6D,IAAAA,SAAS,CAAE9E,MAAD,IAAY;AACpB,UAAIiB,MAAM,KAAKjB,MAAM,CAACiB,MAAlB,IAA4BV,KAAK,KAAKP,MAAM,CAACO,KAAjD,EAAwD;AACtD,eAAOP,MAAP;AACD,OAFD,MAEO;AACL,eAAO;AACLiB,UAAAA,MADK;AAELV,UAAAA;AAFK,SAAP;AAID;AACF,KATQ,CAAT;AAUD,GAfD;;AAiBA,QAAM;AAAEJ,IAAAA;AAAF,MAAaL,KAAnB;AAEA,QAAMkC,aAAa,GAAGd,gBAAgB,CAACC,MAAD,CAAtC;AACA,QAAM+D,YAAY,GAAGxD,eAAe,CAAC;AACnC5B,IAAAA,KADmC;AAEnCC,IAAAA,WAFmC;AAGnCoB,IAAAA,MAHmC;AAInClB,IAAAA,UAJmC;AAKnCD,IAAAA,MALmC;AAMnC2B,IAAAA,KAAK,EAAE,CAACiB,WAAD,EAAcjB,KAAd;AAN4B,GAAD,CAApC;AASA,QAAMwD,mBAAmB,GAAGtF,yBAAyB,CAAC;AACpDC,IAAAA,KADoD;AAEpDC,IAAAA,WAFoD;AAGpDE,IAAAA,UAHoD;AAIpDD,IAAAA;AAJoD,GAAD,CAArD;AAOA,QAAMoF,uBAAuB,GAAGvC,gBAAH,aAAGA,gBAAH,uBAAGA,gBAAgB,EAAhD;AAEA,sBACE,6BAAC,qBAAD,CAAU,IAAV;AACE,IAAA,KAAK,EAAE,CACLwC,MAAM,CAACC,MADF,EAEL;AACEC,MAAAA,eAAe,EACbH,uBAAuB,IAAI,IAA3B,GAAkC,aAAlC,GAAkDhD,MAAM,CAACoD,IAF7D;AAGEC,MAAAA,cAAc,EAAErD,MAAM,CAACsD;AAHzB,KAFK,EAOL;AACEC,MAAAA,SAAS,EAAE,CACT;AACEC,QAAAA,UAAU,EAAE7B,OAAO,CAAC8B,WAAR,CAAoB;AAC9BC,UAAAA,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,CADkB;AAE9BC,UAAAA,WAAW,EAAE,CACX/F,MAAM,CAACiB,MAAP,GAAgBe,aAAhB,GAAgClB,wBAAWkF,aADhC,EAEX,CAFW;AAFiB,SAApB;AADd,OADS,CADb;AAYE;AACA;AACAC,MAAAA,QAAQ,EAAErC,cAAc,GAAG,UAAH,GAAiB;AAd3C,KAPK,EAuBL;AACE3C,MAAAA,MAAM,EAAEiE,YADV;AAEElD,MAAAA,aAFF;AAGEkE,MAAAA,iBAAiB,EAAE9E,IAAI,CAACC,GAAL,CAASF,MAAM,CAACgF,IAAhB,EAAsBhF,MAAM,CAACiF,KAA7B;AAHrB,KAvBK,EA4BLxD,WA5BK,CADT;AA+BE,IAAA,aAAa,EAAEgB,cAAc,GAAG,MAAH,GAAY,MA/B3C;AAgCE,IAAA,QAAQ,EAAEmB;AAhCZ,kBAkCE,6BAAC,iBAAD;AAAM,IAAA,aAAa,EAAC,MAApB;AAA2B,IAAA,KAAK,EAAEjE,wBAAWuF;AAA7C,KACGjB,uBADH,CAlCF,eAqCE,6BAAC,iBAAD;AAAM,IAAA,iBAAiB,EAAC,SAAxB;AAAkC,IAAA,KAAK,EAAEC,MAAM,CAACiB;AAAhD,KACGnG,MAAM,CAACoG,GAAP,CAAW,CAAC5F,KAAD,EAAQP,KAAR,KAAkB;AAAA;;AAC5B,UAAMoG,OAAO,GAAGpG,KAAK,KAAKN,KAAK,CAACM,KAAhC;AACA,UAAM;AAAEE,MAAAA;AAAF,QAAcP,WAAW,CAACY,KAAK,CAACN,GAAP,CAA/B;;AAEA,UAAMoG,OAAO,GAAG,MAAM;AACpB,YAAMC,KAAK,GAAGvE,UAAU,CAACwE,IAAX,CAAgB;AAC5BC,QAAAA,IAAI,EAAE,UADsB;AAE5BC,QAAAA,MAAM,EAAElG,KAAK,CAACN,GAFc;AAG5ByG,QAAAA,iBAAiB,EAAE;AAHS,OAAhB,CAAd;;AAMA,UAAI,CAACN,OAAD,IAAY,CAACE,KAAK,CAACK,gBAAvB,EAAyC;AACvC5E,QAAAA,UAAU,CAAC6E,QAAX,CAAoB,EAClB,GAAGC,sBAAcC,QAAd,CAAuB;AAAEC,YAAAA,IAAI,EAAExG,KAAK,CAACwG,IAAd;AAAoBC,YAAAA,KAAK,EAAE;AAA3B,WAAvB,CADe;AAElBP,UAAAA,MAAM,EAAE/G,KAAK,CAACO;AAFI,SAApB;AAID;AACF,KAbD;;AAeA,UAAMgH,WAAW,GAAG,MAAM;AACxBlF,MAAAA,UAAU,CAACwE,IAAX,CAAgB;AACdC,QAAAA,IAAI,EAAE,cADQ;AAEdC,QAAAA,MAAM,EAAElG,KAAK,CAACN;AAFA,OAAhB;AAID,KALD;;AAOA,UAAMiH,KAAK,GACThH,OAAO,CAACiH,WAAR,KAAwBC,SAAxB,GACIlH,OAAO,CAACiH,WADZ,GAEIjH,OAAO,CAACmH,KAAR,KAAkBD,SAAlB,GACAlH,OAAO,CAACmH,KADR,GAEA9G,KAAK,CAACwG,IALZ;AAOA,UAAMO,kBAAkB,GACtBpH,OAAO,CAACqH,wBAAR,KAAqCH,SAArC,GACIlH,OAAO,CAACqH,wBADZ,GAEI,OAAOL,KAAP,KAAiB,QAAjB,IAA6B3H,sBAASC,EAAT,KAAgB,KAA7C,GACC,GAAE0H,KAAM,UAASlH,KAAK,GAAG,CAAE,OAAMD,MAAM,CAACyH,MAAO,EADhD,GAEAJ,SALN;AAOA,wBACE,6BAAC,yBAAD,CAAmB,QAAnB;AACE,MAAA,GAAG,EAAE7G,KAAK,CAACN,GADb;AAEE,MAAA,KAAK,EAAEN,WAAW,CAACY,KAAK,CAACN,GAAP,CAAX,CAAuB8B;AAFhC,oBAIE,6BAAC,8BAAD,CAAwB,QAAxB;AAAiC,MAAA,KAAK,EAAExB;AAAxC,oBACE,6BAAC,sBAAD;AACE,MAAA,KAAK,EAAEA,KADT;AAEE,MAAA,OAAO,EAAE6F,OAFX;AAGE,MAAA,UAAU,EAAErB,mBAHd;AAIE,MAAA,OAAO,EAAEsB,OAJX;AAKE,MAAA,WAAW,EAAEY,WALf;AAME,MAAA,kBAAkB,EAAEK,kBANtB;AAOE,MAAA,EAAE,EAAErF,SAAS,CAAC1B,KAAK,CAACwG,IAAP,EAAaxG,KAAK,CAACkH,MAAnB,CAPf;AAQE,MAAA,MAAM,EAAEvH,OAAO,CAACwH,YARlB;AASE,MAAA,gBAAgB,EAAExH,OAAO,CAACyH,sBAT5B;AAUE,MAAA,eAAe,EAAEjF,qBAVnB;AAWE,MAAA,iBAAiB,EAAEC,uBAXrB;AAYE,MAAA,qBAAqB,EAAEC,2BAZzB;AAaE,MAAA,uBAAuB,EAAEC,6BAb3B;AAcE,MAAA,MAAM,EAAE3C,OAAO,CAAC0H,YAdlB;AAeE,MAAA,IAAI,yBACF1H,OAAO,CAAC2H,UADN,qEAED;AAAA,YAAC;AAAEC,UAAAA,KAAF;AAASC,UAAAA;AAAT,SAAD;AAAA,4BACC,6BAAC,qBAAD;AAAa,UAAA,KAAK,EAAED,KAApB;AAA2B,UAAA,IAAI,EAAEC;AAAjC,UADD;AAAA,OAjBL;AAqBE,MAAA,KAAK,EAAE7H,OAAO,CAAC8H,WArBjB;AAsBE,MAAA,UAAU,EAAE9H,OAAO,CAAC+H,gBAtBtB;AAuBE,MAAA,KAAK,EAAEf,KAvBT;AAwBE,MAAA,SAAS,EAAE7E,eAxBb;AAyBE,MAAA,UAAU,EAAEnC,OAAO,CAACgI,gBAzBtB;AA0BE,MAAA,SAAS,EAAEhI,OAAO,CAACiI,eA1BrB;AA2BE,MAAA,KAAK,EAAEjI,OAAO,CAACM;AA3BjB,MADF,CAJF,CADF;AAsCD,GA9EA,CADH,CArCF,CADF;AAyHD;;AAED,MAAMyE,MAAM,GAAGvE,wBAAW0H,MAAX,CAAkB;AAC/BlD,EAAAA,MAAM,EAAE;AACNa,IAAAA,IAAI,EAAE,CADA;AAENC,IAAAA,KAAK,EAAE,CAFD;AAGN9E,IAAAA,MAAM,EAAE,CAHF;AAINmH,IAAAA,cAAc,EAAE3H,wBAAWkF,aAJrB;AAKN0C,IAAAA,SAAS,EAAE;AALL,GADuB;AAQ/BpC,EAAAA,OAAO,EAAE;AACPqC,IAAAA,IAAI,EAAE,CADC;AAEPC,IAAAA,aAAa,EAAE;AAFR;AARsB,CAAlB,CAAf","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
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["BottomTabItem.tsx"],"names":["BottomTabBarItem","focused","route","label","icon","badge","badgeStyle","to","button","children","style","onPress","accessibilityRole","rest","Platform","OS","styles","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","accessibilityLabel","testID","onLongPress","horizontal","activeTintColor","customActiveTintColor","inactiveTintColor","customInactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","showLabel","allowFontScaling","labelStyle","iconStyle","colors","undefined","primary","text","mix","card","hex","renderLabel","color","labelBeside","labelBeneath","position","renderIcon","activeOpacity","inactiveOpacity","scene","backgroundColor","select","ios","default","accessibilityState","selected","accessibilityStates","tab","tabLandscape","tabPortrait","StyleSheet","create","flex","alignItems","justifyContent","flexDirection","textAlign","fontSize","marginLeft","marginTop","display"],"mappings":"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","sourcesContent":["import { Link, Route, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport React from 'react';\nimport {\n GestureResponderEvent,\n Platform,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n ViewStyle,\n} from 'react-native';\n\nimport type { BottomTabBarButtonProps, LabelPosition } from '../types';\nimport TabBarIcon from './TabBarIcon';\n\ntype Props = {\n /**\n * Whether the tab is focused.\n */\n focused: boolean;\n /**\n * The route object which should be specified by the tab.\n */\n route: Route<string>;\n /**\n * The label text of the tab.\n */\n label:\n | string\n | ((props: {\n focused: boolean;\n color: string;\n position: LabelPosition;\n }) => React.ReactNode);\n /**\n * Icon to display for the tab.\n */\n icon: (props: {\n focused: boolean;\n size: number;\n color: string;\n }) => React.ReactNode;\n /**\n * Text to show in a badge on the tab icon.\n */\n badge?: number | string;\n /**\n * Custom style for the badge.\n */\n badgeStyle?: StyleProp<TextStyle>;\n /**\n * URL to use for the link to the tab.\n */\n to?: string;\n /**\n * The button for the tab. Uses a `TouchableWithoutFeedback` by default.\n */\n button?: (props: BottomTabBarButtonProps) => React.ReactNode;\n /**\n * The accessibility label for the tab.\n */\n accessibilityLabel?: string;\n /**\n * An unique ID for testing for the tab.\n */\n testID?: string;\n /**\n * Function to execute on press in React Native.\n * On the web, this will use onClick.\n */\n onPress: (\n e: React.MouseEvent<HTMLElement, MouseEvent> | GestureResponderEvent\n ) => void;\n /**\n * Function to execute on long press.\n */\n onLongPress: (e: GestureResponderEvent) => void;\n /**\n * Whether the label should be aligned with the icon horizontally.\n */\n horizontal: boolean;\n /**\n * Color for the icon and label when the item is active.\n */\n activeTintColor?: string;\n /**\n * Color for the icon and label when the item is inactive.\n */\n inactiveTintColor?: string;\n /**\n * Background color for item when its active.\n */\n activeBackgroundColor?: string;\n /**\n * Background color for item when its inactive.\n */\n inactiveBackgroundColor?: string;\n /**\n * Whether to show the label text for the tab.\n */\n showLabel?: boolean;\n /**\n * Whether to allow scaling the font for the label for accessibility purposes.\n */\n allowFontScaling?: boolean;\n /**\n * Style object for the label element.\n */\n labelStyle?: StyleProp<TextStyle>;\n /**\n * Style object for the icon element.\n */\n iconStyle?: StyleProp<ViewStyle>;\n /**\n * Style object for the wrapper element.\n */\n style?: StyleProp<ViewStyle>;\n};\n\nexport default function BottomTabBarItem({\n focused,\n route,\n label,\n icon,\n badge,\n badgeStyle,\n to,\n button = ({\n children,\n style,\n onPress,\n to,\n accessibilityRole,\n ...rest\n }: BottomTabBarButtonProps) => {\n if (Platform.OS === 'web' && to) {\n // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n // We need to use `onClick` to be able to prevent default browser handling of links.\n return (\n <Link\n {...rest}\n to={to}\n style={[styles.button, style]}\n onPress={(e: any) => {\n if (\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n (e.button == null || e.button === 0) // ignore everything but left clicks\n ) {\n e.preventDefault();\n onPress?.(e);\n }\n }}\n >\n {children}\n </Link>\n );\n } else {\n return (\n <Pressable\n {...rest}\n accessibilityRole={accessibilityRole}\n onPress={onPress}\n style={style}\n >\n {children}\n </Pressable>\n );\n }\n },\n accessibilityLabel,\n testID,\n onPress,\n onLongPress,\n horizontal,\n activeTintColor: customActiveTintColor,\n inactiveTintColor: customInactiveTintColor,\n activeBackgroundColor = 'transparent',\n inactiveBackgroundColor = 'transparent',\n showLabel = true,\n allowFontScaling,\n labelStyle,\n iconStyle,\n style,\n}: Props) {\n const { colors } = useTheme();\n\n const activeTintColor =\n customActiveTintColor === undefined\n ? colors.primary\n : customActiveTintColor;\n\n const inactiveTintColor =\n customInactiveTintColor === undefined\n ? Color(colors.text).mix(Color(colors.card), 0.5).hex()\n : customInactiveTintColor;\n\n const renderLabel = ({ focused }: { focused: boolean }) => {\n if (showLabel === false) {\n return null;\n }\n\n const color = focused ? activeTintColor : inactiveTintColor;\n\n if (typeof label === 'string') {\n return (\n <Text\n numberOfLines={1}\n style={[\n styles.label,\n { color },\n horizontal ? styles.labelBeside : styles.labelBeneath,\n labelStyle,\n ]}\n allowFontScaling={allowFontScaling}\n >\n {label}\n </Text>\n );\n }\n\n return label({\n focused,\n color,\n position: horizontal ? 'beside-icon' : 'below-icon',\n });\n };\n\n const renderIcon = ({ focused }: { focused: boolean }) => {\n if (icon === undefined) {\n return null;\n }\n\n const activeOpacity = focused ? 1 : 0;\n const inactiveOpacity = focused ? 0 : 1;\n\n return (\n <TabBarIcon\n route={route}\n horizontal={horizontal}\n badge={badge}\n badgeStyle={badgeStyle}\n activeOpacity={activeOpacity}\n inactiveOpacity={inactiveOpacity}\n activeTintColor={activeTintColor}\n inactiveTintColor={inactiveTintColor}\n renderIcon={icon}\n style={iconStyle}\n />\n );\n };\n\n const scene = { route, focused };\n\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n return button({\n to,\n onPress,\n onLongPress,\n testID,\n accessibilityLabel,\n // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS\n accessibilityRole: Platform.select({ ios: 'button', default: 'tab' }),\n accessibilityState: { selected: focused },\n // @ts-expect-error: keep for compatibility with older React Native versions\n accessibilityStates: focused ? ['selected'] : [],\n style: [\n styles.tab,\n { backgroundColor },\n horizontal ? styles.tabLandscape : styles.tabPortrait,\n style,\n ],\n children: (\n <React.Fragment>\n {renderIcon(scene)}\n {renderLabel(scene)}\n </React.Fragment>\n ),\n }) as React.ReactElement;\n}\n\nconst styles = StyleSheet.create({\n tab: {\n flex: 1,\n alignItems: 'center',\n },\n tabPortrait: {\n justifyContent: 'flex-end',\n flexDirection: 'column',\n },\n tabLandscape: {\n justifyContent: 'center',\n flexDirection: 'row',\n },\n label: {\n textAlign: 'center',\n backgroundColor: 'transparent',\n },\n labelBeneath: {\n fontSize: 10,\n },\n labelBeside: {\n fontSize: 13,\n marginLeft: 20,\n marginTop: 3,\n },\n button: {\n display: 'flex',\n },\n});\n"]}
1
+ {"version":3,"sources":["BottomTabItem.tsx"],"names":["BottomTabBarItem","focused","route","label","icon","badge","badgeStyle","to","button","children","style","onPress","accessibilityRole","rest","Platform","OS","styles","e","metaKey","altKey","ctrlKey","shiftKey","preventDefault","accessibilityLabel","testID","onLongPress","horizontal","activeTintColor","customActiveTintColor","inactiveTintColor","customInactiveTintColor","activeBackgroundColor","inactiveBackgroundColor","showLabel","allowFontScaling","labelStyle","iconStyle","colors","undefined","primary","text","mix","card","hex","renderLabel","color","labelBeside","labelBeneath","position","renderIcon","activeOpacity","inactiveOpacity","scene","backgroundColor","select","ios","default","accessibilityState","selected","accessibilityStates","tab","tabLandscape","tabPortrait","StyleSheet","create","flex","alignItems","justifyContent","flexDirection","textAlign","fontSize","marginLeft","marginTop","display"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAYA;;;;;;AA0Ge,SAASA,gBAAT,OAgEL;AAAA,MAhE+B;AACvCC,IAAAA,OADuC;AAEvCC,IAAAA,KAFuC;AAGvCC,IAAAA,KAHuC;AAIvCC,IAAAA,IAJuC;AAKvCC,IAAAA,KALuC;AAMvCC,IAAAA,UANuC;AAOvCC,IAAAA,EAPuC;AAQvCC,IAAAA,MAAM,GAAG,SAOsB;AAAA,UAPrB;AACRC,QAAAA,QADQ;AAERC,QAAAA,KAFQ;AAGRC,QAAAA,OAHQ;AAIRJ,QAAAA,EAJQ;AAKRK,QAAAA,iBALQ;AAMR,WAAGC;AANK,OAOqB;;AAC7B,UAAIC,sBAASC,EAAT,KAAgB,KAAhB,IAAyBR,EAA7B,EAAiC;AAC/B;AACA;AACA,4BACE,6BAAC,YAAD,eACMM,IADN;AAEE,UAAA,EAAE,EAAEN,EAFN;AAGE,UAAA,KAAK,EAAE,CAACS,MAAM,CAACR,MAAR,EAAgBE,KAAhB,CAHT;AAIE,UAAA,OAAO,EAAGO,CAAD,IAAY;AACnB,gBACE,EAAEA,CAAC,CAACC,OAAF,IAAaD,CAAC,CAACE,MAAf,IAAyBF,CAAC,CAACG,OAA3B,IAAsCH,CAAC,CAACI,QAA1C,OAAuD;AACtDJ,YAAAA,CAAC,CAACT,MAAF,IAAY,IAAZ,IAAoBS,CAAC,CAACT,MAAF,KAAa,CADlC,CADF,CAEuC;AAFvC,cAGE;AACAS,cAAAA,CAAC,CAACK,cAAF;AACAX,cAAAA,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAGM,CAAH,CAAP;AACD;AACF;AAZH,YAcGR,QAdH,CADF;AAkBD,OArBD,MAqBO;AACL,4BACE,6BAAC,sBAAD,eACMI,IADN;AAEE,UAAA,iBAAiB,EAAED,iBAFrB;AAGE,UAAA,OAAO,EAAED,OAHX;AAIE,UAAA,KAAK,EAAED;AAJT,YAMGD,QANH,CADF;AAUD;AACF,KAjDsC;AAkDvCc,IAAAA,kBAlDuC;AAmDvCC,IAAAA,MAnDuC;AAoDvCb,IAAAA,OApDuC;AAqDvCc,IAAAA,WArDuC;AAsDvCC,IAAAA,UAtDuC;AAuDvCC,IAAAA,eAAe,EAAEC,qBAvDsB;AAwDvCC,IAAAA,iBAAiB,EAAEC,uBAxDoB;AAyDvCC,IAAAA,qBAAqB,GAAG,aAzDe;AA0DvCC,IAAAA,uBAAuB,GAAG,aA1Da;AA2DvCC,IAAAA,SAAS,GAAG,IA3D2B;AA4DvCC,IAAAA,gBA5DuC;AA6DvCC,IAAAA,UA7DuC;AA8DvCC,IAAAA,SA9DuC;AA+DvC1B,IAAAA;AA/DuC,GAgE/B;AACR,QAAM;AAAE2B,IAAAA;AAAF,MAAa,uBAAnB;AAEA,QAAMV,eAAe,GACnBC,qBAAqB,KAAKU,SAA1B,GACID,MAAM,CAACE,OADX,GAEIX,qBAHN;AAKA,QAAMC,iBAAiB,GACrBC,uBAAuB,KAAKQ,SAA5B,GACI,oBAAMD,MAAM,CAACG,IAAb,EAAmBC,GAAnB,CAAuB,oBAAMJ,MAAM,CAACK,IAAb,CAAvB,EAA2C,GAA3C,EAAgDC,GAAhD,EADJ,GAEIb,uBAHN;;AAKA,QAAMc,WAAW,GAAG,SAAuC;AAAA,QAAtC;AAAE3C,MAAAA;AAAF,KAAsC;;AACzD,QAAIgC,SAAS,KAAK,KAAlB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED,UAAMY,KAAK,GAAG5C,OAAO,GAAG0B,eAAH,GAAqBE,iBAA1C;;AAEA,QAAI,OAAO1B,KAAP,KAAiB,QAArB,EAA+B;AAC7B,0BACE,6BAAC,iBAAD;AACE,QAAA,aAAa,EAAE,CADjB;AAEE,QAAA,KAAK,EAAE,CACLa,MAAM,CAACb,KADF,EAEL;AAAE0C,UAAAA;AAAF,SAFK,EAGLnB,UAAU,GAAGV,MAAM,CAAC8B,WAAV,GAAwB9B,MAAM,CAAC+B,YAHpC,EAILZ,UAJK,CAFT;AAQE,QAAA,gBAAgB,EAAED;AARpB,SAUG/B,KAVH,CADF;AAcD;;AAED,WAAOA,KAAK,CAAC;AACXF,MAAAA,OADW;AAEX4C,MAAAA,KAFW;AAGXG,MAAAA,QAAQ,EAAEtB,UAAU,GAAG,aAAH,GAAmB;AAH5B,KAAD,CAAZ;AAKD,GA7BD;;AA+BA,QAAMuB,UAAU,GAAG,SAAuC;AAAA,QAAtC;AAAEhD,MAAAA;AAAF,KAAsC;;AACxD,QAAIG,IAAI,KAAKkC,SAAb,EAAwB;AACtB,aAAO,IAAP;AACD;;AAED,UAAMY,aAAa,GAAGjD,OAAO,GAAG,CAAH,GAAO,CAApC;AACA,UAAMkD,eAAe,GAAGlD,OAAO,GAAG,CAAH,GAAO,CAAtC;AAEA,wBACE,6BAAC,mBAAD;AACE,MAAA,KAAK,EAAEC,KADT;AAEE,MAAA,UAAU,EAAEwB,UAFd;AAGE,MAAA,KAAK,EAAErB,KAHT;AAIE,MAAA,UAAU,EAAEC,UAJd;AAKE,MAAA,aAAa,EAAE4C,aALjB;AAME,MAAA,eAAe,EAAEC,eANnB;AAOE,MAAA,eAAe,EAAExB,eAPnB;AAQE,MAAA,iBAAiB,EAAEE,iBARrB;AASE,MAAA,UAAU,EAAEzB,IATd;AAUE,MAAA,KAAK,EAAEgC;AAVT,MADF;AAcD,GAtBD;;AAwBA,QAAMgB,KAAK,GAAG;AAAElD,IAAAA,KAAF;AAASD,IAAAA;AAAT,GAAd;AAEA,QAAMoD,eAAe,GAAGpD,OAAO,GAC3B8B,qBAD2B,GAE3BC,uBAFJ;AAIA,SAAOxB,MAAM,CAAC;AACZD,IAAAA,EADY;AAEZI,IAAAA,OAFY;AAGZc,IAAAA,WAHY;AAIZD,IAAAA,MAJY;AAKZD,IAAAA,kBALY;AAMZ;AACAX,IAAAA,iBAAiB,EAAEE,sBAASwC,MAAT,CAAgB;AAAEC,MAAAA,GAAG,EAAE,QAAP;AAAiBC,MAAAA,OAAO,EAAE;AAA1B,KAAhB,CAPP;AAQZC,IAAAA,kBAAkB,EAAE;AAAEC,MAAAA,QAAQ,EAAEzD;AAAZ,KARR;AASZ;AACA0D,IAAAA,mBAAmB,EAAE1D,OAAO,GAAG,CAAC,UAAD,CAAH,GAAkB,EAVlC;AAWZS,IAAAA,KAAK,EAAE,CACLM,MAAM,CAAC4C,GADF,EAEL;AAAEP,MAAAA;AAAF,KAFK,EAGL3B,UAAU,GAAGV,MAAM,CAAC6C,YAAV,GAAyB7C,MAAM,CAAC8C,WAHrC,EAILpD,KAJK,CAXK;AAiBZD,IAAAA,QAAQ,eACN,6BAAC,cAAD,CAAO,QAAP,QACGwC,UAAU,CAACG,KAAD,CADb,EAEGR,WAAW,CAACQ,KAAD,CAFd;AAlBU,GAAD,CAAb;AAwBD;;AAED,MAAMpC,MAAM,GAAG+C,wBAAWC,MAAX,CAAkB;AAC/BJ,EAAAA,GAAG,EAAE;AACHK,IAAAA,IAAI,EAAE,CADH;AAEHC,IAAAA,UAAU,EAAE;AAFT,GAD0B;AAK/BJ,EAAAA,WAAW,EAAE;AACXK,IAAAA,cAAc,EAAE,UADL;AAEXC,IAAAA,aAAa,EAAE;AAFJ,GALkB;AAS/BP,EAAAA,YAAY,EAAE;AACZM,IAAAA,cAAc,EAAE,QADJ;AAEZC,IAAAA,aAAa,EAAE;AAFH,GATiB;AAa/BjE,EAAAA,KAAK,EAAE;AACLkE,IAAAA,SAAS,EAAE,QADN;AAELhB,IAAAA,eAAe,EAAE;AAFZ,GAbwB;AAiB/BN,EAAAA,YAAY,EAAE;AACZuB,IAAAA,QAAQ,EAAE;AADE,GAjBiB;AAoB/BxB,EAAAA,WAAW,EAAE;AACXwB,IAAAA,QAAQ,EAAE,EADC;AAEXC,IAAAA,UAAU,EAAE,EAFD;AAGXC,IAAAA,SAAS,EAAE;AAHA,GApBkB;AAyB/BhE,EAAAA,MAAM,EAAE;AACNiE,IAAAA,OAAO,EAAE;AADH;AAzBuB,CAAlB,CAAf","sourcesContent":["import { Link, Route, useTheme } from '@react-navigation/native';\nimport Color from 'color';\nimport React from 'react';\nimport {\n GestureResponderEvent,\n Platform,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n ViewStyle,\n} from 'react-native';\n\nimport type { BottomTabBarButtonProps, LabelPosition } from '../types';\nimport TabBarIcon from './TabBarIcon';\n\ntype Props = {\n /**\n * Whether the tab is focused.\n */\n focused: boolean;\n /**\n * The route object which should be specified by the tab.\n */\n route: Route<string>;\n /**\n * The label text of the tab.\n */\n label:\n | string\n | ((props: {\n focused: boolean;\n color: string;\n position: LabelPosition;\n }) => React.ReactNode);\n /**\n * Icon to display for the tab.\n */\n icon: (props: {\n focused: boolean;\n size: number;\n color: string;\n }) => React.ReactNode;\n /**\n * Text to show in a badge on the tab icon.\n */\n badge?: number | string;\n /**\n * Custom style for the badge.\n */\n badgeStyle?: StyleProp<TextStyle>;\n /**\n * URL to use for the link to the tab.\n */\n to?: string;\n /**\n * The button for the tab. Uses a `TouchableWithoutFeedback` by default.\n */\n button?: (props: BottomTabBarButtonProps) => React.ReactNode;\n /**\n * The accessibility label for the tab.\n */\n accessibilityLabel?: string;\n /**\n * An unique ID for testing for the tab.\n */\n testID?: string;\n /**\n * Function to execute on press in React Native.\n * On the web, this will use onClick.\n */\n onPress: (\n e: React.MouseEvent<HTMLElement, MouseEvent> | GestureResponderEvent\n ) => void;\n /**\n * Function to execute on long press.\n */\n onLongPress: (e: GestureResponderEvent) => void;\n /**\n * Whether the label should be aligned with the icon horizontally.\n */\n horizontal: boolean;\n /**\n * Color for the icon and label when the item is active.\n */\n activeTintColor?: string;\n /**\n * Color for the icon and label when the item is inactive.\n */\n inactiveTintColor?: string;\n /**\n * Background color for item when its active.\n */\n activeBackgroundColor?: string;\n /**\n * Background color for item when its inactive.\n */\n inactiveBackgroundColor?: string;\n /**\n * Whether to show the label text for the tab.\n */\n showLabel?: boolean;\n /**\n * Whether to allow scaling the font for the label for accessibility purposes.\n */\n allowFontScaling?: boolean;\n /**\n * Style object for the label element.\n */\n labelStyle?: StyleProp<TextStyle>;\n /**\n * Style object for the icon element.\n */\n iconStyle?: StyleProp<ViewStyle>;\n /**\n * Style object for the wrapper element.\n */\n style?: StyleProp<ViewStyle>;\n};\n\nexport default function BottomTabBarItem({\n focused,\n route,\n label,\n icon,\n badge,\n badgeStyle,\n to,\n button = ({\n children,\n style,\n onPress,\n to,\n accessibilityRole,\n ...rest\n }: BottomTabBarButtonProps) => {\n if (Platform.OS === 'web' && to) {\n // React Native Web doesn't forward `onClick` if we use `TouchableWithoutFeedback`.\n // We need to use `onClick` to be able to prevent default browser handling of links.\n return (\n <Link\n {...rest}\n to={to}\n style={[styles.button, style]}\n onPress={(e: any) => {\n if (\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) && // ignore clicks with modifier keys\n (e.button == null || e.button === 0) // ignore everything but left clicks\n ) {\n e.preventDefault();\n onPress?.(e);\n }\n }}\n >\n {children}\n </Link>\n );\n } else {\n return (\n <Pressable\n {...rest}\n accessibilityRole={accessibilityRole}\n onPress={onPress}\n style={style}\n >\n {children}\n </Pressable>\n );\n }\n },\n accessibilityLabel,\n testID,\n onPress,\n onLongPress,\n horizontal,\n activeTintColor: customActiveTintColor,\n inactiveTintColor: customInactiveTintColor,\n activeBackgroundColor = 'transparent',\n inactiveBackgroundColor = 'transparent',\n showLabel = true,\n allowFontScaling,\n labelStyle,\n iconStyle,\n style,\n}: Props) {\n const { colors } = useTheme();\n\n const activeTintColor =\n customActiveTintColor === undefined\n ? colors.primary\n : customActiveTintColor;\n\n const inactiveTintColor =\n customInactiveTintColor === undefined\n ? Color(colors.text).mix(Color(colors.card), 0.5).hex()\n : customInactiveTintColor;\n\n const renderLabel = ({ focused }: { focused: boolean }) => {\n if (showLabel === false) {\n return null;\n }\n\n const color = focused ? activeTintColor : inactiveTintColor;\n\n if (typeof label === 'string') {\n return (\n <Text\n numberOfLines={1}\n style={[\n styles.label,\n { color },\n horizontal ? styles.labelBeside : styles.labelBeneath,\n labelStyle,\n ]}\n allowFontScaling={allowFontScaling}\n >\n {label}\n </Text>\n );\n }\n\n return label({\n focused,\n color,\n position: horizontal ? 'beside-icon' : 'below-icon',\n });\n };\n\n const renderIcon = ({ focused }: { focused: boolean }) => {\n if (icon === undefined) {\n return null;\n }\n\n const activeOpacity = focused ? 1 : 0;\n const inactiveOpacity = focused ? 0 : 1;\n\n return (\n <TabBarIcon\n route={route}\n horizontal={horizontal}\n badge={badge}\n badgeStyle={badgeStyle}\n activeOpacity={activeOpacity}\n inactiveOpacity={inactiveOpacity}\n activeTintColor={activeTintColor}\n inactiveTintColor={inactiveTintColor}\n renderIcon={icon}\n style={iconStyle}\n />\n );\n };\n\n const scene = { route, focused };\n\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n return button({\n to,\n onPress,\n onLongPress,\n testID,\n accessibilityLabel,\n // FIXME: accessibilityRole: 'tab' doesn't seem to work as expected on iOS\n accessibilityRole: Platform.select({ ios: 'button', default: 'tab' }),\n accessibilityState: { selected: focused },\n // @ts-expect-error: keep for compatibility with older React Native versions\n accessibilityStates: focused ? ['selected'] : [],\n style: [\n styles.tab,\n { backgroundColor },\n horizontal ? styles.tabLandscape : styles.tabPortrait,\n style,\n ],\n children: (\n <React.Fragment>\n {renderIcon(scene)}\n {renderLabel(scene)}\n </React.Fragment>\n ),\n }) as React.ReactElement;\n}\n\nconst styles = StyleSheet.create({\n tab: {\n flex: 1,\n alignItems: 'center',\n },\n tabPortrait: {\n justifyContent: 'flex-end',\n flexDirection: 'column',\n },\n tabLandscape: {\n justifyContent: 'center',\n flexDirection: 'row',\n },\n label: {\n textAlign: 'center',\n backgroundColor: 'transparent',\n },\n labelBeneath: {\n fontSize: 10,\n },\n labelBeside: {\n fontSize: 13,\n marginLeft: 20,\n marginTop: 3,\n },\n button: {\n display: 'flex',\n },\n});\n"]}