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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/commonjs/TransitionConfigs/SceneStyleInterpolators.js +47 -0
  2. package/lib/commonjs/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
  3. package/lib/commonjs/TransitionConfigs/TransitionPresets.js +19 -0
  4. package/lib/commonjs/TransitionConfigs/TransitionPresets.js.map +1 -0
  5. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js +24 -0
  6. package/lib/commonjs/TransitionConfigs/TransitionSpecs.js.map +1 -0
  7. package/lib/commonjs/index.js +9 -0
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/utils/useAnimatedHashMap.js +31 -0
  10. package/lib/commonjs/utils/useAnimatedHashMap.js.map +1 -0
  11. package/lib/commonjs/views/BottomTabView.js +74 -4
  12. package/lib/commonjs/views/BottomTabView.js.map +1 -1
  13. package/lib/commonjs/views/ScreenFallback.js +6 -8
  14. package/lib/commonjs/views/ScreenFallback.js.map +1 -1
  15. package/lib/module/TransitionConfigs/SceneStyleInterpolators.js +40 -0
  16. package/lib/module/TransitionConfigs/SceneStyleInterpolators.js.map +1 -0
  17. package/lib/module/TransitionConfigs/TransitionPresets.js +11 -0
  18. package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -0
  19. package/lib/module/TransitionConfigs/TransitionSpecs.js +16 -0
  20. package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -0
  21. package/lib/module/index.js +9 -0
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/utils/useAnimatedHashMap.js +23 -0
  24. package/lib/module/utils/useAnimatedHashMap.js.map +1 -0
  25. package/lib/module/views/BottomTabView.js +75 -5
  26. package/lib/module/views/BottomTabView.js.map +1 -1
  27. package/lib/module/views/ScreenFallback.js +6 -8
  28. package/lib/module/views/ScreenFallback.js.map +1 -1
  29. package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts +10 -0
  30. package/lib/typescript/src/TransitionConfigs/SceneStyleInterpolators.d.ts.map +1 -0
  31. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +4 -0
  32. package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -0
  33. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +4 -0
  34. package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -0
  35. package/lib/typescript/src/index.d.ts +7 -0
  36. package/lib/typescript/src/index.d.ts.map +1 -1
  37. package/lib/typescript/src/types.d.ts +50 -0
  38. package/lib/typescript/src/types.d.ts.map +1 -1
  39. package/lib/typescript/src/utils/useAnimatedHashMap.d.ts +4 -0
  40. package/lib/typescript/src/utils/useAnimatedHashMap.d.ts.map +1 -0
  41. package/lib/typescript/src/views/BottomTabView.d.ts.map +1 -1
  42. package/lib/typescript/src/views/ScreenFallback.d.ts +4 -4
  43. package/lib/typescript/src/views/ScreenFallback.d.ts.map +1 -1
  44. package/package.json +5 -5
  45. package/src/TransitionConfigs/SceneStyleInterpolators.tsx +44 -0
  46. package/src/TransitionConfigs/TransitionPresets.tsx +13 -0
  47. package/src/TransitionConfigs/TransitionSpecs.tsx +19 -0
  48. package/src/index.tsx +9 -0
  49. package/src/types.tsx +70 -0
  50. package/src/utils/useAnimatedHashMap.tsx +25 -0
  51. package/src/views/BottomTabView.tsx +93 -6
  52. package/src/views/ScreenFallback.tsx +6 -13
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.forCrossFade = forCrossFade;
7
+ exports.forShifting = forShifting;
8
+ /**
9
+ * Simple cross fade animation
10
+ */
11
+ function forCrossFade(_ref) {
12
+ let {
13
+ current
14
+ } = _ref;
15
+ return {
16
+ sceneStyle: {
17
+ opacity: current.interpolate({
18
+ inputRange: [-1, 0, 1],
19
+ outputRange: [0, 1, 0]
20
+ })
21
+ }
22
+ };
23
+ }
24
+
25
+ /**
26
+ * Animation where the screens slightly shift to left/right
27
+ */
28
+ function forShifting(_ref2) {
29
+ let {
30
+ current
31
+ } = _ref2;
32
+ return {
33
+ sceneStyle: {
34
+ opacity: current.interpolate({
35
+ inputRange: [-1, 0, 1],
36
+ outputRange: [0, 1, 0]
37
+ }),
38
+ transform: [{
39
+ translateX: current.interpolate({
40
+ inputRange: [-1, 0, 1],
41
+ outputRange: [-50, 1, 50]
42
+ })
43
+ }]
44
+ }
45
+ };
46
+ }
47
+ //# sourceMappingURL=SceneStyleInterpolators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forCrossFade","current","sceneStyle","opacity","interpolate","inputRange","outputRange","forShifting","transform","translateX"],"sourceRoot":"../../../src","sources":["TransitionConfigs/SceneStyleInterpolators.tsx"],"mappings":";;;;;;;AAKA;AACA;AACA;AACO,SAASA,YAAY,OAE0C;EAAA,IAFzC;IAC3BC;EACgC,CAAC;EACjC,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEF,OAAO,CAACG,WAAW,CAAC;QAC3BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MACvB,CAAC;IACH;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAASC,WAAW,QAE2C;EAAA,IAF1C;IAC1BN;EACgC,CAAC;EACjC,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEF,OAAO,CAACG,WAAW,CAAC;QAC3BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MACvB,CAAC,CAAC;MACFE,SAAS,EAAE,CACT;QACEC,UAAU,EAAER,OAAO,CAACG,WAAW,CAAC;UAC9BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;UACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC1B,CAAC;MACH,CAAC;IAEL;EACF,CAAC;AACH"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ShiftingTransition = exports.FadeTransition = void 0;
7
+ var _SceneStyleInterpolators = require("./SceneStyleInterpolators");
8
+ var _TransitionSpecs = require("./TransitionSpecs");
9
+ const FadeTransition = {
10
+ transitionSpec: _TransitionSpecs.CrossFadeSpec,
11
+ sceneStyleInterpolator: _SceneStyleInterpolators.forCrossFade
12
+ };
13
+ exports.FadeTransition = FadeTransition;
14
+ const ShiftingTransition = {
15
+ transitionSpec: _TransitionSpecs.ShiftingSpec,
16
+ sceneStyleInterpolator: _SceneStyleInterpolators.forShifting
17
+ };
18
+ exports.ShiftingTransition = ShiftingTransition;
19
+ //# sourceMappingURL=TransitionPresets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FadeTransition","transitionSpec","CrossFadeSpec","sceneStyleInterpolator","forCrossFade","ShiftingTransition","ShiftingSpec","forShifting"],"sourceRoot":"../../../src","sources":["TransitionConfigs/TransitionPresets.tsx"],"mappings":";;;;;;AACA;AACA;AAEO,MAAMA,cAAyC,GAAG;EACvDC,cAAc,EAAEC,8BAAa;EAC7BC,sBAAsB,EAAEC;AAC1B,CAAC;AAAC;AAEK,MAAMC,kBAA6C,GAAG;EAC3DJ,cAAc,EAAEK,6BAAY;EAC5BH,sBAAsB,EAAEI;AAC1B,CAAC;AAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ShiftingSpec = exports.CrossFadeSpec = void 0;
7
+ var _reactNative = require("react-native");
8
+ const CrossFadeSpec = {
9
+ animation: 'timing',
10
+ config: {
11
+ duration: 150,
12
+ easing: _reactNative.Easing.in(_reactNative.Easing.linear)
13
+ }
14
+ };
15
+ exports.CrossFadeSpec = CrossFadeSpec;
16
+ const ShiftingSpec = {
17
+ animation: 'timing',
18
+ config: {
19
+ duration: 150,
20
+ easing: _reactNative.Easing.inOut(_reactNative.Easing.ease)
21
+ }
22
+ };
23
+ exports.ShiftingSpec = ShiftingSpec;
24
+ //# sourceMappingURL=TransitionSpecs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CrossFadeSpec","animation","config","duration","easing","Easing","in","linear","ShiftingSpec","inOut","ease"],"sourceRoot":"../../../src","sources":["TransitionConfigs/TransitionSpecs.tsx"],"mappings":";;;;;;AAAA;AAIO,MAAMA,aAA6B,GAAG;EAC3CC,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;IACNC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAEC,mBAAM,CAACC,EAAE,CAACD,mBAAM,CAACE,MAAM;EACjC;AACF,CAAC;AAAC;AAEK,MAAMC,YAA4B,GAAG;EAC1CP,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;IACNC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAEC,mBAAM,CAACI,KAAK,CAACJ,mBAAM,CAACK,IAAI;EAClC;AACF,CAAC;AAAC"}
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "BottomTabView", {
27
27
  return _BottomTabView.BottomTabView;
28
28
  }
29
29
  });
30
+ exports.TransitionSpecs = exports.TransitionPresets = exports.SceneStyleInterpolator = void 0;
30
31
  Object.defineProperty(exports, "createBottomTabNavigator", {
31
32
  enumerable: true,
32
33
  get: function () {
@@ -39,10 +40,18 @@ Object.defineProperty(exports, "useBottomTabBarHeight", {
39
40
  return _useBottomTabBarHeight.useBottomTabBarHeight;
40
41
  }
41
42
  });
43
+ var SceneStyleInterpolator = _interopRequireWildcard(require("./TransitionConfigs/SceneStyleInterpolators"));
44
+ exports.SceneStyleInterpolator = SceneStyleInterpolator;
45
+ var TransitionPresets = _interopRequireWildcard(require("./TransitionConfigs/TransitionPresets"));
46
+ exports.TransitionPresets = TransitionPresets;
47
+ var TransitionSpecs = _interopRequireWildcard(require("./TransitionConfigs/TransitionSpecs"));
48
+ exports.TransitionSpecs = TransitionSpecs;
42
49
  var _createBottomTabNavigator = require("./navigators/createBottomTabNavigator");
43
50
  var _BottomTabBar = require("./views/BottomTabBar");
44
51
  var _BottomTabView = require("./views/BottomTabView");
45
52
  var _BottomTabBarHeightCallbackContext = require("./utils/BottomTabBarHeightCallbackContext");
46
53
  var _BottomTabBarHeightContext = require("./utils/BottomTabBarHeightContext");
47
54
  var _useBottomTabBarHeight = require("./utils/useBottomTabBarHeight");
55
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
56
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
48
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AAKA;AACA;AAKA;AACA;AACA"}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAsF;AACtF;AAA2E;AAC3E;AAAuE;AAUvE;AAKA;AACA;AAKA;AACA;AACA;AAAsE;AAAA"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAnimatedHashMap = useAnimatedHashMap;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function useAnimatedHashMap(_ref) {
12
+ let {
13
+ routes,
14
+ index
15
+ } = _ref;
16
+ const refs = React.useRef({});
17
+ const previous = refs.current;
18
+ const routeKeys = Object.keys(previous);
19
+ if (routes.length === routeKeys.length && routes.every(route => routeKeys.includes(route.key))) {
20
+ return previous;
21
+ }
22
+ refs.current = {};
23
+ routes.forEach((_ref2, i) => {
24
+ let {
25
+ key
26
+ } = _ref2;
27
+ refs.current[key] = previous[key] ?? new _reactNative.Animated.Value(i === index ? 0 : i >= index ? 1 : -1);
28
+ });
29
+ return refs.current;
30
+ }
31
+ //# sourceMappingURL=useAnimatedHashMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useAnimatedHashMap","routes","index","refs","React","useRef","previous","current","routeKeys","Object","keys","length","every","route","includes","key","forEach","i","Animated","Value"],"sourceRoot":"../../../src","sources":["utils/useAnimatedHashMap.tsx"],"mappings":";;;;;;AACA;AACA;AAAwC;AAAA;AAEjC,SAASA,kBAAkB,OAAqC;EAAA,IAApC;IAAEC,MAAM;IAAEC;EAAuB,CAAC;EACnE,MAAMC,IAAI,GAAGC,KAAK,CAACC,MAAM,CAAiC,CAAC,CAAC,CAAC;EAC7D,MAAMC,QAAQ,GAAGH,IAAI,CAACI,OAAO;EAC7B,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACJ,QAAQ,CAAC;EAEvC,IACEL,MAAM,CAACU,MAAM,KAAKH,SAAS,CAACG,MAAM,IAClCV,MAAM,CAACW,KAAK,CAAEC,KAAK,IAAKL,SAAS,CAACM,QAAQ,CAACD,KAAK,CAACE,GAAG,CAAC,CAAC,EACtD;IACA,OAAOT,QAAQ;EACjB;EACAH,IAAI,CAACI,OAAO,GAAG,CAAC,CAAC;EAEjBN,MAAM,CAACe,OAAO,CAAC,QAAUC,CAAC,KAAK;IAAA,IAAf;MAAEF;IAAI,CAAC;IACrBZ,IAAI,CAACI,OAAO,CAACQ,GAAG,CAAC,GACfT,QAAQ,CAACS,GAAG,CAAC,IACb,IAAIG,qBAAQ,CAACC,KAAK,CAACF,CAAC,KAAKf,KAAK,GAAG,CAAC,GAAGe,CAAC,IAAIf,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC;EAEF,OAAOC,IAAI,CAACI,OAAO;AACrB"}
@@ -10,11 +10,27 @@ var _reactNative = require("react-native");
10
10
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
11
11
  var _BottomTabBarHeightCallbackContext = require("../utils/BottomTabBarHeightCallbackContext");
12
12
  var _BottomTabBarHeightContext = require("../utils/BottomTabBarHeightContext");
13
+ var _useAnimatedHashMap = require("../utils/useAnimatedHashMap");
13
14
  var _BottomTabBar = require("./BottomTabBar");
14
15
  var _ScreenFallback = require("./ScreenFallback");
15
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
18
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
+ var CompositeAnimation = _reactNative.Animated.CompositeAnimation;
20
+ const EPSILON = 1e-5;
21
+ const STATE_INACTIVE = 0;
22
+ const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
23
+ const STATE_ON_TOP = 2;
24
+ const hasAnimation = options => {
25
+ const {
26
+ animationEnabled,
27
+ transitionSpec
28
+ } = options;
29
+ if (animationEnabled === false || !transitionSpec) {
30
+ return false;
31
+ }
32
+ return true;
33
+ };
18
34
  function BottomTabView(props) {
19
35
  const {
20
36
  tabBar = props => /*#__PURE__*/React.createElement(_BottomTabBar.BottomTabBar, props),
@@ -26,10 +42,43 @@ function BottomTabView(props) {
26
42
  sceneContainerStyle
27
43
  } = props;
28
44
  const focusedRouteKey = state.routes[state.index].key;
45
+
46
+ /**
47
+ * List of loaded tabs, tabs will be loaded when navigated to.
48
+ */
29
49
  const [loaded, setLoaded] = React.useState([focusedRouteKey]);
30
50
  if (!loaded.includes(focusedRouteKey)) {
51
+ // Set the current tab to be loaded if it was not loaded before
31
52
  setLoaded([...loaded, focusedRouteKey]);
32
53
  }
54
+ const tabAnims = (0, _useAnimatedHashMap.useAnimatedHashMap)(state);
55
+ React.useEffect(() => {
56
+ const animateToIndex = () => {
57
+ _reactNative.Animated.parallel(state.routes.map((route, index) => {
58
+ const {
59
+ options
60
+ } = descriptors[route.key];
61
+ const {
62
+ transitionSpec
63
+ } = options;
64
+ const animationEnabled = hasAnimation(options);
65
+ const toValue = index === state.index ? 0 : index >= state.index ? 1 : -1;
66
+ if (!animationEnabled || !transitionSpec) {
67
+ return _reactNative.Animated.timing(tabAnims[route.key], {
68
+ toValue,
69
+ duration: 0,
70
+ useNativeDriver: true
71
+ });
72
+ }
73
+ return _reactNative.Animated[transitionSpec.animation](tabAnims[route.key], {
74
+ ...transitionSpec.config,
75
+ toValue,
76
+ useNativeDriver: true
77
+ });
78
+ }).filter(Boolean)).start();
79
+ };
80
+ animateToIndex();
81
+ }, [descriptors, state.index, state.routes, tabAnims]);
33
82
  const dimensions = _elements.SafeAreaProviderCompat.initialMetrics.frame;
34
83
  const [tabBarHeight, setTabBarHeight] = React.useState(() => (0, _BottomTabBar.getTabBarHeight)({
35
84
  state,
@@ -61,15 +110,19 @@ function BottomTabView(props) {
61
110
  const {
62
111
  routes
63
112
  } = state;
113
+
114
+ // If there is no animation, we only have 2 states: visible and invisible
115
+ const hasTwoStates = !routes.some(route => hasAnimation(descriptors[route.key].options));
64
116
  return /*#__PURE__*/React.createElement(_elements.SafeAreaProviderCompat, null, /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreenContainer, {
65
117
  enabled: detachInactiveScreens,
66
- hasTwoStates: true,
118
+ hasTwoStates: hasTwoStates,
67
119
  style: styles.container
68
120
  }, routes.map((route, index) => {
69
121
  const descriptor = descriptors[route.key];
70
122
  const {
71
123
  lazy = true,
72
- unmountOnBlur
124
+ unmountOnBlur,
125
+ sceneStyleInterpolator
73
126
  } = descriptor.options;
74
127
  const isFocused = state.index === index;
75
128
  if (unmountOnBlur && !isFocused) {
@@ -95,12 +148,29 @@ function BottomTabView(props) {
95
148
  headerStatusBarHeight,
96
149
  headerTransparent
97
150
  } = descriptor.options;
151
+ const {
152
+ sceneStyle
153
+ } = (sceneStyleInterpolator === null || sceneStyleInterpolator === void 0 ? void 0 : sceneStyleInterpolator({
154
+ current: tabAnims[route.key]
155
+ })) ?? {};
156
+ const animationEnabled = hasAnimation(descriptor.options);
157
+ const activityState = isFocused ? STATE_ON_TOP // the screen is on top after the transition
158
+ : animationEnabled // is animation is not enabled, immediately move to inactive state
159
+ ? tabAnims[route.key].interpolate({
160
+ inputRange: [0, 1 - EPSILON, 1],
161
+ outputRange: [STATE_TRANSITIONING_OR_BELOW_TOP,
162
+ // screen visible during transition
163
+ STATE_TRANSITIONING_OR_BELOW_TOP, STATE_INACTIVE // the screen is detached after transition
164
+ ],
165
+
166
+ extrapolate: 'extend'
167
+ }) : STATE_INACTIVE;
98
168
  return /*#__PURE__*/React.createElement(_ScreenFallback.MaybeScreen, {
99
169
  key: route.key,
100
170
  style: [_reactNative.StyleSheet.absoluteFill, {
101
171
  zIndex: isFocused ? 0 : -1
102
172
  }],
103
- visible: isFocused,
173
+ active: activityState,
104
174
  enabled: detachInactiveScreens,
105
175
  freezeOnBlur: freezeOnBlur
106
176
  }, /*#__PURE__*/React.createElement(_BottomTabBarHeightContext.BottomTabBarHeightContext.Provider, {
@@ -118,7 +188,7 @@ function BottomTabView(props) {
118
188
  navigation: descriptor.navigation,
119
189
  options: descriptor.options
120
190
  }),
121
- style: sceneContainerStyle
191
+ style: [sceneContainerStyle, animationEnabled && sceneStyle]
122
192
  }, descriptor.render())));
123
193
  })), /*#__PURE__*/React.createElement(_BottomTabBarHeightCallbackContext.BottomTabBarHeightCallbackContext.Provider, {
124
194
  value: setTabBarHeight
@@ -1 +1 @@
1
- {"version":3,"names":["BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","getTabBarHeight","layout","width","height","insets","style","options","tabBarStyle","renderTabBar","top","right","bottom","left","styles","container","map","route","descriptor","lazy","unmountOnBlur","isFocused","freezeOnBlur","header","getHeaderTitle","name","headerShown","headerStatusBarHeight","headerTransparent","StyleSheet","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabView.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["CompositeAnimation","Animated","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","hasAnimation","options","animationEnabled","transitionSpec","BottomTabView","props","tabBar","state","navigation","descriptors","safeAreaInsets","detachInactiveScreens","Platform","OS","sceneContainerStyle","focusedRouteKey","routes","index","key","loaded","setLoaded","React","useState","includes","tabAnims","useAnimatedHashMap","useEffect","animateToIndex","parallel","map","route","toValue","timing","duration","useNativeDriver","animation","config","filter","Boolean","start","dimensions","SafeAreaProviderCompat","initialMetrics","frame","tabBarHeight","setTabBarHeight","getTabBarHeight","layout","width","height","insets","style","tabBarStyle","renderTabBar","top","right","bottom","left","hasTwoStates","some","styles","container","descriptor","lazy","unmountOnBlur","sceneStyleInterpolator","isFocused","freezeOnBlur","header","getHeaderTitle","name","headerShown","headerStatusBarHeight","headerTransparent","sceneStyle","current","activityState","interpolate","inputRange","outputRange","extrapolate","StyleSheet","absoluteFill","zIndex","render","create","flex","overflow"],"sourceRoot":"../../../src","sources":["views/BottomTabView.tsx"],"mappings":"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"}
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.MaybeScreen = MaybeScreen;
7
7
  exports.MaybeScreenContainer = void 0;
8
- var _elements = require("@react-navigation/elements");
9
8
  var React = _interopRequireWildcard(require("react"));
10
9
  var _reactNative = require("react-native");
11
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -34,17 +33,16 @@ exports.MaybeScreenContainer = MaybeScreenContainer;
34
33
  function MaybeScreen(_ref2) {
35
34
  var _Screens2, _Screens2$screensEnab;
36
35
  let {
37
- visible,
38
- children,
36
+ enabled,
37
+ active,
39
38
  ...rest
40
39
  } = _ref2;
41
40
  if ((_Screens2 = Screens) !== null && _Screens2 !== void 0 && (_Screens2$screensEnab = _Screens2.screensEnabled) !== null && _Screens2$screensEnab !== void 0 && _Screens2$screensEnab.call(_Screens2)) {
42
41
  return /*#__PURE__*/React.createElement(Screens.Screen, _extends({
43
- activityState: visible ? 2 : 0
44
- }, rest), children);
42
+ enabled: enabled,
43
+ activityState: active
44
+ }, rest));
45
45
  }
46
- return /*#__PURE__*/React.createElement(_elements.ResourceSavingView, _extends({
47
- visible: visible
48
- }, rest), children);
46
+ return /*#__PURE__*/React.createElement(_reactNative.View, rest);
49
47
  }
50
48
  //# sourceMappingURL=ScreenFallback.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","visible","children"],"sourceRoot":"../../../src","sources":["views/ScreenFallback.tsx"],"mappings":";;;;;;;AAAA;AACA;AACA;AAAqE;AAAA;AAAA;AAUrE,IAAIA,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGK,MAAMC,oBAAoB,GAAG,QAO9B;EAAA;EAAA,IAP+B;IACnCC,OAAO;IACP,GAAGC;EAKL,CAAC;EACC,gBAAIL,OAAO,8DAAP,SAASM,cAAc,kDAAvB,oCAA2B,EAAE;IAC/B,oBAAO,oBAAC,OAAO,CAAC,eAAe;MAAC,OAAO,EAAEF;IAAQ,GAAKC,IAAI,EAAI;EAChE;EAEA,oBAAO,oBAAC,iBAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAAC;AAEK,SAASE,WAAW,QAAwC;EAAA;EAAA,IAAvC;IAAEC,OAAO;IAAEC,QAAQ;IAAE,GAAGJ;EAAY,CAAC;EAC/D,iBAAIL,OAAO,+DAAP,UAASM,cAAc,kDAAvB,qCAA2B,EAAE;IAC/B,oBACE,oBAAC,OAAO,CAAC,MAAM;MAAC,aAAa,EAAEE,OAAO,GAAG,CAAC,GAAG;IAAE,GAAKH,IAAI,GACrDI,QAAQ,CACM;EAErB;EAEA,oBACE,oBAAC,4BAAkB;IAAC,OAAO,EAAED;EAAQ,GAAKH,IAAI,GAC3CI,QAAQ,CACU;AAEzB"}
1
+ {"version":3,"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","screensEnabled","MaybeScreen","active"],"sourceRoot":"../../../src","sources":["views/ScreenFallback.tsx"],"mappings":";;;;;;;AAAA;AACA;AAA+E;AAAA;AAAA;AAU/E,IAAIA,OAA0D;AAE9D,IAAI;EACFA,OAAO,GAAGC,OAAO,CAAC,sBAAsB,CAAC;AAC3C,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV;AAAA;AAGK,MAAMC,oBAAoB,GAAG,QAO9B;EAAA;EAAA,IAP+B;IACnCC,OAAO;IACP,GAAGC;EAKL,CAAC;EACC,gBAAIL,OAAO,8DAAP,SAASM,cAAc,kDAAvB,oCAA2B,EAAE;IAC/B,oBAAO,oBAAC,OAAO,CAAC,eAAe;MAAC,OAAO,EAAEF;IAAQ,GAAKC,IAAI,EAAI;EAChE;EAEA,oBAAO,oBAAC,iBAAI,EAAKA,IAAI,CAAI;AAC3B,CAAC;AAAC;AAEK,SAASE,WAAW,QAAkD;EAAA;EAAA,IAAjD;IAAEH,OAAO;IAAEI,MAAM;IAAE,GAAGH;EAAwB,CAAC;EACzE,iBAAIL,OAAO,+DAAP,UAASM,cAAc,kDAAvB,qCAA2B,EAAE;IAC/B,oBACE,oBAAC,OAAO,CAAC,MAAM;MAAC,OAAO,EAAEF,OAAQ;MAAC,aAAa,EAAEI;IAAO,GAAKH,IAAI,EAAI;EAEzE;EAEA,oBAAO,oBAAC,iBAAI,EAAKA,IAAI,CAAI;AAC3B"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Simple cross fade animation
3
+ */
4
+ export function forCrossFade(_ref) {
5
+ let {
6
+ current
7
+ } = _ref;
8
+ return {
9
+ sceneStyle: {
10
+ opacity: current.interpolate({
11
+ inputRange: [-1, 0, 1],
12
+ outputRange: [0, 1, 0]
13
+ })
14
+ }
15
+ };
16
+ }
17
+
18
+ /**
19
+ * Animation where the screens slightly shift to left/right
20
+ */
21
+ export function forShifting(_ref2) {
22
+ let {
23
+ current
24
+ } = _ref2;
25
+ return {
26
+ sceneStyle: {
27
+ opacity: current.interpolate({
28
+ inputRange: [-1, 0, 1],
29
+ outputRange: [0, 1, 0]
30
+ }),
31
+ transform: [{
32
+ translateX: current.interpolate({
33
+ inputRange: [-1, 0, 1],
34
+ outputRange: [-50, 1, 50]
35
+ })
36
+ }]
37
+ }
38
+ };
39
+ }
40
+ //# sourceMappingURL=SceneStyleInterpolators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forCrossFade","current","sceneStyle","opacity","interpolate","inputRange","outputRange","forShifting","transform","translateX"],"sourceRoot":"../../../src","sources":["TransitionConfigs/SceneStyleInterpolators.tsx"],"mappings":"AAKA;AACA;AACA;AACA,OAAO,SAASA,YAAY,OAE0C;EAAA,IAFzC;IAC3BC;EACgC,CAAC;EACjC,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEF,OAAO,CAACG,WAAW,CAAC;QAC3BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MACvB,CAAC;IACH;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,WAAW,QAE2C;EAAA,IAF1C;IAC1BN;EACgC,CAAC;EACjC,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEF,OAAO,CAACG,WAAW,CAAC;QAC3BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;MACvB,CAAC,CAAC;MACFE,SAAS,EAAE,CACT;QACEC,UAAU,EAAER,OAAO,CAACG,WAAW,CAAC;UAC9BC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;UACtBC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC1B,CAAC;MACH,CAAC;IAEL;EACF,CAAC;AACH"}
@@ -0,0 +1,11 @@
1
+ import { forCrossFade, forShifting } from './SceneStyleInterpolators';
2
+ import { CrossFadeSpec, ShiftingSpec } from './TransitionSpecs';
3
+ export const FadeTransition = {
4
+ transitionSpec: CrossFadeSpec,
5
+ sceneStyleInterpolator: forCrossFade
6
+ };
7
+ export const ShiftingTransition = {
8
+ transitionSpec: ShiftingSpec,
9
+ sceneStyleInterpolator: forShifting
10
+ };
11
+ //# sourceMappingURL=TransitionPresets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forCrossFade","forShifting","CrossFadeSpec","ShiftingSpec","FadeTransition","transitionSpec","sceneStyleInterpolator","ShiftingTransition"],"sourceRoot":"../../../src","sources":["TransitionConfigs/TransitionPresets.tsx"],"mappings":"AACA,SAASA,YAAY,EAAEC,WAAW,QAAQ,2BAA2B;AACrE,SAASC,aAAa,EAAEC,YAAY,QAAQ,mBAAmB;AAE/D,OAAO,MAAMC,cAAyC,GAAG;EACvDC,cAAc,EAAEH,aAAa;EAC7BI,sBAAsB,EAAEN;AAC1B,CAAC;AAED,OAAO,MAAMO,kBAA6C,GAAG;EAC3DF,cAAc,EAAEF,YAAY;EAC5BG,sBAAsB,EAAEL;AAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Easing } from 'react-native';
2
+ export const CrossFadeSpec = {
3
+ animation: 'timing',
4
+ config: {
5
+ duration: 150,
6
+ easing: Easing.in(Easing.linear)
7
+ }
8
+ };
9
+ export const ShiftingSpec = {
10
+ animation: 'timing',
11
+ config: {
12
+ duration: 150,
13
+ easing: Easing.inOut(Easing.ease)
14
+ }
15
+ };
16
+ //# sourceMappingURL=TransitionSpecs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Easing","CrossFadeSpec","animation","config","duration","easing","in","linear","ShiftingSpec","inOut","ease"],"sourceRoot":"../../../src","sources":["TransitionConfigs/TransitionSpecs.tsx"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AAIrC,OAAO,MAAMC,aAA6B,GAAG;EAC3CC,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;IACNC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAEL,MAAM,CAACM,EAAE,CAACN,MAAM,CAACO,MAAM;EACjC;AACF,CAAC;AAED,OAAO,MAAMC,YAA4B,GAAG;EAC1CN,SAAS,EAAE,QAAQ;EACnBC,MAAM,EAAE;IACNC,QAAQ,EAAE,GAAG;IACbC,MAAM,EAAEL,MAAM,CAACS,KAAK,CAACT,MAAM,CAACU,IAAI;EAClC;AACF,CAAC"}
@@ -1,3 +1,12 @@
1
+ import * as SceneStyleInterpolator from './TransitionConfigs/SceneStyleInterpolators';
2
+ import * as TransitionPresets from './TransitionConfigs/TransitionPresets';
3
+ import * as TransitionSpecs from './TransitionConfigs/TransitionSpecs';
4
+
5
+ /**
6
+ * Transition Presets
7
+ */
8
+ export { SceneStyleInterpolator, TransitionPresets, TransitionSpecs };
9
+
1
10
  /**
2
11
  * Navigators
3
12
  */
@@ -1 +1 @@
1
- {"version":3,"names":["createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useBottomTabBarHeight"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,wBAAwB,QAAQ,uCAAuC;;AAEhF;AACA;AACA;AACA,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,aAAa,QAAQ,uBAAuB;;AAErD;AACA;AACA;AACA,SAASC,iCAAiC,QAAQ,2CAA2C;AAC7F,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,qBAAqB,QAAQ,+BAA+B;;AAErE;AACA;AACA"}
1
+ {"version":3,"names":["SceneStyleInterpolator","TransitionPresets","TransitionSpecs","createBottomTabNavigator","BottomTabBar","BottomTabView","BottomTabBarHeightCallbackContext","BottomTabBarHeightContext","useBottomTabBarHeight"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,OAAO,KAAKA,sBAAsB,MAAM,6CAA6C;AACrF,OAAO,KAAKC,iBAAiB,MAAM,uCAAuC;AAC1E,OAAO,KAAKC,eAAe,MAAM,qCAAqC;;AAEtE;AACA;AACA;AACA,SAASF,sBAAsB,EAAEC,iBAAiB,EAAEC,eAAe;;AAEnE;AACA;AACA;AACA,SAASC,wBAAwB,QAAQ,uCAAuC;;AAEhF;AACA;AACA;AACA,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,aAAa,QAAQ,uBAAuB;;AAErD;AACA;AACA;AACA,SAASC,iCAAiC,QAAQ,2CAA2C;AAC7F,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,qBAAqB,QAAQ,+BAA+B;;AAErE;AACA;AACA"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { Animated } from 'react-native';
3
+ export function useAnimatedHashMap(_ref) {
4
+ let {
5
+ routes,
6
+ index
7
+ } = _ref;
8
+ const refs = React.useRef({});
9
+ const previous = refs.current;
10
+ const routeKeys = Object.keys(previous);
11
+ if (routes.length === routeKeys.length && routes.every(route => routeKeys.includes(route.key))) {
12
+ return previous;
13
+ }
14
+ refs.current = {};
15
+ routes.forEach((_ref2, i) => {
16
+ let {
17
+ key
18
+ } = _ref2;
19
+ refs.current[key] = previous[key] ?? new Animated.Value(i === index ? 0 : i >= index ? 1 : -1);
20
+ });
21
+ return refs.current;
22
+ }
23
+ //# sourceMappingURL=useAnimatedHashMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Animated","useAnimatedHashMap","routes","index","refs","useRef","previous","current","routeKeys","Object","keys","length","every","route","includes","key","forEach","i","Value"],"sourceRoot":"../../../src","sources":["utils/useAnimatedHashMap.tsx"],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,cAAc;AAEvC,OAAO,SAASC,kBAAkB,OAAqC;EAAA,IAApC;IAAEC,MAAM;IAAEC;EAAuB,CAAC;EACnE,MAAMC,IAAI,GAAGL,KAAK,CAACM,MAAM,CAAiC,CAAC,CAAC,CAAC;EAC7D,MAAMC,QAAQ,GAAGF,IAAI,CAACG,OAAO;EAC7B,MAAMC,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACJ,QAAQ,CAAC;EAEvC,IACEJ,MAAM,CAACS,MAAM,KAAKH,SAAS,CAACG,MAAM,IAClCT,MAAM,CAACU,KAAK,CAAEC,KAAK,IAAKL,SAAS,CAACM,QAAQ,CAACD,KAAK,CAACE,GAAG,CAAC,CAAC,EACtD;IACA,OAAOT,QAAQ;EACjB;EACAF,IAAI,CAACG,OAAO,GAAG,CAAC,CAAC;EAEjBL,MAAM,CAACc,OAAO,CAAC,QAAUC,CAAC,KAAK;IAAA,IAAf;MAAEF;IAAI,CAAC;IACrBX,IAAI,CAACG,OAAO,CAACQ,GAAG,CAAC,GACfT,QAAQ,CAACS,GAAG,CAAC,IACb,IAAIf,QAAQ,CAACkB,KAAK,CAACD,CAAC,KAAKd,KAAK,GAAG,CAAC,GAAGc,CAAC,IAAId,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC;EAEF,OAAOC,IAAI,CAACG,OAAO;AACrB"}