react-navigation-reanimated-top-tabs 0.7.0 → 0.9.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 (95) hide show
  1. package/lib/commonjs/components/ReanimatedTopTab/AnimationHelper.js +21 -26
  2. package/lib/commonjs/components/ReanimatedTopTab/AnimationHelper.js.map +1 -1
  3. package/lib/commonjs/components/ReanimatedTopTab/ReanimatedTabView.js +13 -12
  4. package/lib/commonjs/components/ReanimatedTopTab/ReanimatedTabView.js.map +1 -1
  5. package/lib/commonjs/components/elements/TabBarBaseComponent.js +42 -25
  6. package/lib/commonjs/components/elements/TabBarBaseComponent.js.map +1 -1
  7. package/lib/commonjs/components/elements/TabBarBaseItem.js +55 -0
  8. package/lib/commonjs/components/elements/TabBarBaseItem.js.map +1 -0
  9. package/lib/commonjs/components/elements/TabBarLabelBaseComponent.js +3 -3
  10. package/lib/commonjs/components/elements/TabBarLabelBaseComponent.js.map +1 -1
  11. package/lib/commonjs/components/wrappers/GestureWrapper.js +40 -11
  12. package/lib/commonjs/components/wrappers/GestureWrapper.js.map +1 -1
  13. package/lib/commonjs/components/wrappers/SectionList.js +72 -0
  14. package/lib/commonjs/components/wrappers/SectionList.js.map +1 -0
  15. package/lib/commonjs/context/Context.hooks.js +22 -17
  16. package/lib/commonjs/context/Context.hooks.js.map +1 -1
  17. package/lib/commonjs/context/Context.js +11 -8
  18. package/lib/commonjs/context/Context.js.map +1 -1
  19. package/lib/commonjs/hooks/useHeader.js +2 -10
  20. package/lib/commonjs/hooks/useHeader.js.map +1 -1
  21. package/lib/commonjs/hooks/useTabOffset.js +2 -2
  22. package/lib/commonjs/hooks/useTabOffset.js.map +1 -1
  23. package/lib/commonjs/index.js +2 -0
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/navigator/createReanimatedTopTabNavigator.js +27 -23
  26. package/lib/commonjs/navigator/createReanimatedTopTabNavigator.js.map +1 -1
  27. package/lib/commonjs/types.js.map +1 -1
  28. package/lib/module/components/ReanimatedTopTab/AnimationHelper.js +23 -28
  29. package/lib/module/components/ReanimatedTopTab/AnimationHelper.js.map +1 -1
  30. package/lib/module/components/ReanimatedTopTab/ReanimatedTabView.js +14 -13
  31. package/lib/module/components/ReanimatedTopTab/ReanimatedTabView.js.map +1 -1
  32. package/lib/module/components/elements/TabBarBaseComponent.js +44 -27
  33. package/lib/module/components/elements/TabBarBaseComponent.js.map +1 -1
  34. package/lib/module/components/elements/TabBarBaseItem.js +48 -0
  35. package/lib/module/components/elements/TabBarBaseItem.js.map +1 -0
  36. package/lib/module/components/elements/TabBarLabelBaseComponent.js +3 -3
  37. package/lib/module/components/elements/TabBarLabelBaseComponent.js.map +1 -1
  38. package/lib/module/components/wrappers/GestureWrapper.js +41 -12
  39. package/lib/module/components/wrappers/GestureWrapper.js.map +1 -1
  40. package/lib/module/components/wrappers/SectionList.js +66 -0
  41. package/lib/module/components/wrappers/SectionList.js.map +1 -0
  42. package/lib/module/context/Context.hooks.js +22 -17
  43. package/lib/module/context/Context.hooks.js.map +1 -1
  44. package/lib/module/context/Context.js +11 -8
  45. package/lib/module/context/Context.js.map +1 -1
  46. package/lib/module/hooks/useHeader.js +3 -11
  47. package/lib/module/hooks/useHeader.js.map +1 -1
  48. package/lib/module/hooks/useTabOffset.js +2 -2
  49. package/lib/module/hooks/useTabOffset.js.map +1 -1
  50. package/lib/module/index.js +2 -0
  51. package/lib/module/index.js.map +1 -1
  52. package/lib/module/navigator/createReanimatedTopTabNavigator.js +28 -24
  53. package/lib/module/navigator/createReanimatedTopTabNavigator.js.map +1 -1
  54. package/lib/module/types.js.map +1 -1
  55. package/lib/typescript/src/components/ReanimatedTopTab/AnimationHelper.d.ts.map +1 -1
  56. package/lib/typescript/src/components/ReanimatedTopTab/ReanimatedTabView.d.ts +2 -1
  57. package/lib/typescript/src/components/ReanimatedTopTab/ReanimatedTabView.d.ts.map +1 -1
  58. package/lib/typescript/src/components/ReanimatedTopTab/types.d.ts +3 -7
  59. package/lib/typescript/src/components/ReanimatedTopTab/types.d.ts.map +1 -1
  60. package/lib/typescript/src/components/elements/TabBarBaseComponent.d.ts +1 -1
  61. package/lib/typescript/src/components/elements/TabBarBaseComponent.d.ts.map +1 -1
  62. package/lib/typescript/src/components/elements/TabBarBaseItem.d.ts +12 -0
  63. package/lib/typescript/src/components/elements/TabBarBaseItem.d.ts.map +1 -0
  64. package/lib/typescript/src/components/wrappers/GestureWrapper.d.ts +2 -1
  65. package/lib/typescript/src/components/wrappers/GestureWrapper.d.ts.map +1 -1
  66. package/lib/typescript/src/components/wrappers/SectionList.d.ts +3 -0
  67. package/lib/typescript/src/components/wrappers/SectionList.d.ts.map +1 -0
  68. package/lib/typescript/src/context/Context.d.ts.map +1 -1
  69. package/lib/typescript/src/context/Context.hooks.d.ts +4 -3
  70. package/lib/typescript/src/context/Context.hooks.d.ts.map +1 -1
  71. package/lib/typescript/src/hooks/useHeader.d.ts +0 -6
  72. package/lib/typescript/src/hooks/useHeader.d.ts.map +1 -1
  73. package/lib/typescript/src/hooks/useScreenProperties.d.ts +1 -1
  74. package/lib/typescript/src/index.d.ts +3 -8
  75. package/lib/typescript/src/index.d.ts.map +1 -1
  76. package/lib/typescript/src/navigator/createReanimatedTopTabNavigator.d.ts +1 -1
  77. package/lib/typescript/src/navigator/createReanimatedTopTabNavigator.d.ts.map +1 -1
  78. package/lib/typescript/src/types.d.ts +11 -5
  79. package/lib/typescript/src/types.d.ts.map +1 -1
  80. package/package.json +1 -1
  81. package/src/components/ReanimatedTopTab/AnimationHelper.ts +24 -32
  82. package/src/components/ReanimatedTopTab/ReanimatedTabView.tsx +19 -17
  83. package/src/components/ReanimatedTopTab/types.ts +3 -5
  84. package/src/components/elements/TabBarBaseComponent.tsx +47 -36
  85. package/src/components/elements/TabBarBaseItem.tsx +76 -0
  86. package/src/components/elements/TabBarLabelBaseComponent.tsx +3 -3
  87. package/src/components/wrappers/GestureWrapper.tsx +41 -14
  88. package/src/components/wrappers/SectionList.tsx +75 -0
  89. package/src/context/Context.hooks.ts +26 -16
  90. package/src/context/Context.tsx +8 -5
  91. package/src/hooks/useHeader.ts +4 -22
  92. package/src/hooks/useTabOffset.ts +2 -2
  93. package/src/index.tsx +2 -0
  94. package/src/navigator/createReanimatedTopTabNavigator.tsx +31 -26
  95. package/src/types.ts +21 -5
@@ -3,7 +3,8 @@
3
3
  import React, { useCallback, useEffect, useMemo, useRef } from 'react';
4
4
  import { StyleSheet, useWindowDimensions, View } from 'react-native';
5
5
  import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
6
- import Reanimated, { Extrapolation, interpolate, LinearTransition, runOnJS, runOnUI, useAnimatedStyle, useDerivedValue, useSharedValue } from 'react-native-reanimated';
6
+ import Reanimated, { interpolate, LinearTransition, runOnJS, runOnUI, useAnimatedReaction, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
7
+ import { useTabContext } from '../../hooks/useTabContext';
7
8
  import { AnimationHelper } from './AnimationHelper';
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  export const ReanimatedTabView = /*#__PURE__*/React.memo(({
@@ -11,22 +12,22 @@ export const ReanimatedTabView = /*#__PURE__*/React.memo(({
11
12
  lazy = false,
12
13
  navigationState,
13
14
  percentageTrigger = 0.4,
14
- positionInterpolation,
15
15
  renderScene,
16
16
  renderTabBar,
17
- navigate
17
+ navigate,
18
+ screenOptions
18
19
  }) => {
19
20
  const {
20
21
  width
21
22
  } = useWindowDimensions();
22
23
  const loadedScreens = useRef([navigationState.routes[navigationState.index]]);
23
24
  const scrollPosition = useSharedValue(navigationState.index);
24
- const position = useDerivedValue(() => {
25
- if (!positionInterpolation) {
26
- return -scrollPosition.value;
27
- }
28
- return interpolate(-scrollPosition.value, positionInterpolation.input, positionInterpolation.output, Extrapolation.CLAMP);
29
- }, [positionInterpolation]);
25
+ const {
26
+ positionX
27
+ } = useTabContext();
28
+ useAnimatedReaction(() => scrollPosition.value, value => {
29
+ positionX.value = interpolate(value, navigationState.routes.map((_, i) => i * -width), navigationState.routes.map((_, i) => i), 'clamp');
30
+ });
30
31
  const _navigate = index => {
31
32
  scrollPosition.value = AnimationHelper.animation(-index * width);
32
33
  navigate(index);
@@ -53,10 +54,10 @@ export const ReanimatedTabView = /*#__PURE__*/React.memo(({
53
54
  scrollPosition.value = AnimationHelper.animation(state.value);
54
55
  _navigationState.value.index = state.index;
55
56
  runOnJS(navigate)(state.index);
56
- }), [minimumValueToChangeView, width, _navigationState]);
57
+ }), [minimumValueToChangeView, width]);
57
58
  const scrollPositionStyle = useAnimatedStyle(() => ({
58
59
  transform: [{
59
- translateX: interpolate(scrollPosition.value, [-width * (navigationState.routes.length - 1), 0], [-width * (navigationState.routes.length - 1), 0], Extrapolation.CLAMP)
60
+ translateX: interpolate(scrollPosition.value, [-width * (navigationState.routes.length - 1), 0], [-width * (navigationState.routes.length - 1), 0], 'clamp')
60
61
  }]
61
62
  }));
62
63
  const jumpTo = React.useCallback(key => {
@@ -105,8 +106,8 @@ export const ReanimatedTabView = /*#__PURE__*/React.memo(({
105
106
  style: defaultStyles.flex,
106
107
  children: [renderTabBar ? renderTabBar({
107
108
  navigationState,
108
- position,
109
- navigate: _navigate
109
+ navigate: _navigate,
110
+ screenOptions
110
111
  }) : null, /*#__PURE__*/_jsx(GestureDetector, {
111
112
  gesture: panGesture,
112
113
  children: /*#__PURE__*/_jsx(Reanimated.View, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Reanimated","Extrapolation","interpolate","LinearTransition","runOnJS","runOnUI","useAnimatedStyle","useDerivedValue","useSharedValue","AnimationHelper","jsx","_jsx","jsxs","_jsxs","ReanimatedTabView","memo","LazyPlaceholder","lazy","navigationState","percentageTrigger","positionInterpolation","renderScene","renderTabBar","navigate","width","loadedScreens","routes","index","scrollPosition","position","value","input","output","CLAMP","_navigate","animation","minimumValueToChangeView","_navigationState","size","length","panGesture","Pan","failOffsetY","activeOffsetX","onChange","event","onEnd","state","scrollPositionStyle","transform","translateX","jumpTo","key","newIndex","findIndex","route","chooseRender","params","useRenderScene","style","children","Routes","map","screen","current","find","loadedScreen","undefined","push","defaultStyles","flex","layout","gesture","viewsContainer","create","flexDirection"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/ReanimatedTabView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Reanimated","interpolate","LinearTransition","runOnJS","runOnUI","useAnimatedReaction","useAnimatedStyle","useSharedValue","useTabContext","AnimationHelper","jsx","_jsx","jsxs","_jsxs","ReanimatedTabView","memo","LazyPlaceholder","lazy","navigationState","percentageTrigger","renderScene","renderTabBar","navigate","screenOptions","width","loadedScreens","routes","index","scrollPosition","positionX","value","map","_","i","_navigate","animation","minimumValueToChangeView","_navigationState","size","length","panGesture","Pan","failOffsetY","activeOffsetX","onChange","event","onEnd","state","scrollPositionStyle","transform","translateX","jumpTo","key","newIndex","findIndex","route","chooseRender","params","useRenderScene","style","children","Routes","screen","current","find","loadedScreen","undefined","push","defaultStyles","flex","layout","gesture","viewsContainer","create","flexDirection"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/ReanimatedTabView.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,45 +1,62 @@
1
1
  "use strict";
2
2
 
3
3
  import * as React from 'react';
4
- import { Pressable, StyleSheet, Text, useWindowDimensions } from 'react-native';
5
- import Reanimated, { interpolate, useAnimatedReaction } from 'react-native-reanimated';
4
+ import { StyleSheet } from 'react-native';
5
+ import Reanimated, { interpolate, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
6
6
  import { useTabContext } from '../../hooks/useTabContext';
7
+ import { TabBarBaseItem } from './TabBarBaseItem';
7
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
9
  export const TabBarBaseComponent = ({
9
10
  children,
10
11
  navigationState,
11
- position,
12
12
  style,
13
- navigate
13
+ navigate,
14
+ screenOptions
14
15
  }) => {
15
- const layout = useWindowDimensions();
16
16
  const {
17
17
  topTabHeight,
18
- transformationX
18
+ positionX
19
19
  } = useTabContext();
20
-
21
- //Assign interpolated offsetX to transformationX
22
- useAnimatedReaction(() => interpolate(position.value, navigationState.routes.map((_, i) => i * layout.width), navigationState.routes.map((_, i) => i), 'clamp'), value => {
23
- transformationX.value = value;
24
- }, [navigationState.routes]);
20
+ const width = useSharedValue(0);
21
+ const {
22
+ tabBarIndicatorStyle,
23
+ tabBarItemStyle,
24
+ tabBarStyle
25
+ } = screenOptions ?? {};
26
+ const inputRange = navigationState.routes.map((_, index) => index);
27
+ const indicatorStyle = useAnimatedStyle(() => {
28
+ const outputRange = navigationState.routes.map((_, index) => index * (width.value / navigationState.routes.length));
29
+ return {
30
+ transform: [{
31
+ translateX: interpolate(positionX.value, inputRange, outputRange)
32
+ }],
33
+ width: width.value / navigationState.routes.length
34
+ };
35
+ });
25
36
  return /*#__PURE__*/_jsxs(Reanimated.View, {
26
37
  onLayout: ({
27
38
  nativeEvent
28
39
  }) => {
29
40
  topTabHeight.value = nativeEvent.layout.height;
30
41
  },
31
- children: [/*#__PURE__*/_jsx(Reanimated.View, {
32
- style: [styles.wrapper, style],
33
- children: navigationState.routes.map((route, index) => /*#__PURE__*/_jsx(Pressable, {
34
- style: styles.labelWrapper,
42
+ children: [/*#__PURE__*/_jsxs(Reanimated.View, {
43
+ onLayout: ({
44
+ nativeEvent
45
+ }) => {
46
+ width.value = nativeEvent.layout.width;
47
+ },
48
+ style: [styles.wrapper, tabBarStyle, style],
49
+ children: [/*#__PURE__*/_jsx(Reanimated.View, {
50
+ style: [styles.indicator, indicatorStyle, tabBarIndicatorStyle]
51
+ }), navigationState.routes.map((route, index) => /*#__PURE__*/_jsx(TabBarBaseItem, {
52
+ index: index,
53
+ inputRange: inputRange,
35
54
  onPress: () => {
36
55
  navigate(index);
37
56
  },
38
- children: route.tabBarLabel ? route.tabBarLabel() : /*#__PURE__*/_jsx(Text, {
39
- style: styles.label,
40
- children: route.title
41
- })
42
- }, route.key))
57
+ route: route,
58
+ style: tabBarItemStyle
59
+ }, route.key))]
43
60
  }), children]
44
61
  });
45
62
  };
@@ -51,15 +68,15 @@ const styles = StyleSheet.create({
51
68
  alignItems: 'center',
52
69
  justifyContent: 'center'
53
70
  },
54
- label: {
55
- color: 'red'
56
- },
57
71
  wrapper: {
58
- width: '100%',
59
72
  flexDirection: 'row',
60
- backgroundColor: 'white',
61
- paddingVertical: 8,
62
- height: 50
73
+ backgroundColor: 'white'
74
+ },
75
+ indicator: {
76
+ backgroundColor: 'black',
77
+ bottom: 0,
78
+ height: 2,
79
+ position: 'absolute'
63
80
  }
64
81
  });
65
82
  //# sourceMappingURL=TabBarBaseComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Pressable","StyleSheet","Text","useWindowDimensions","Reanimated","interpolate","useAnimatedReaction","useTabContext","jsx","_jsx","jsxs","_jsxs","TabBarBaseComponent","children","navigationState","position","style","navigate","layout","topTabHeight","transformationX","value","routes","map","_","i","width","View","onLayout","nativeEvent","height","styles","wrapper","route","index","labelWrapper","onPress","tabBarLabel","label","title","key","create","flex","alignItems","justifyContent","color","flexDirection","backgroundColor","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/elements/TabBarBaseComponent.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,EAAEC,mBAAmB,QAAQ,cAAc;AAC/E,OAAOC,UAAU,IAEfC,WAAW,EACXC,mBAAmB,QACd,yBAAyB;AAEhC,SAASC,aAAa,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ1D,OAAO,MAAMC,mBAAmB,GAAGA,CAAC;EAClCC,QAAQ;EACRC,eAAe;EACfC,QAAQ;EACRC,KAAK;EACLC;AACW,CAAC,KAAK;EACjB,MAAMC,MAAM,GAAGf,mBAAmB,CAAC,CAAC;EAEpC,MAAM;IAAEgB,YAAY;IAAEC;EAAgB,CAAC,GAAGb,aAAa,CAAC,CAAC;;EAEzD;EACAD,mBAAmB,CACjB,MACED,WAAW,CACTU,QAAQ,CAACM,KAAK,EACdP,eAAe,CAACQ,MAAM,CAACC,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,GAAGP,MAAM,CAACQ,KAAK,CAAC,EACtDZ,eAAe,CAACQ,MAAM,CAACC,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAAC,EACvC,OACF,CAAC,EACFJ,KAAK,IAAK;IACTD,eAAe,CAACC,KAAK,GAAGA,KAAK;EAC/B,CAAC,EACD,CAACP,eAAe,CAACQ,MAAM,CACzB,CAAC;EAED,oBACEX,KAAA,CAACP,UAAU,CAACuB,IAAI;IACdC,QAAQ,EAAEA,CAAC;MAAEC;IAAY,CAAC,KAAK;MAC7BV,YAAY,CAACE,KAAK,GAAGQ,WAAW,CAACX,MAAM,CAACY,MAAM;IAChD,CAAE;IAAAjB,QAAA,gBAEFJ,IAAA,CAACL,UAAU,CAACuB,IAAI;MAACX,KAAK,EAAE,CAACe,MAAM,CAACC,OAAO,EAAEhB,KAAK,CAAE;MAAAH,QAAA,EAC7CC,eAAe,CAACQ,MAAM,CAACC,GAAG,CAAC,CAACU,KAAK,EAAEC,KAAK,kBACvCzB,IAAA,CAACT,SAAS;QACRgB,KAAK,EAAEe,MAAM,CAACI,YAAa;QAE3BC,OAAO,EAAEA,CAAA,KAAM;UACbnB,QAAQ,CAACiB,KAAK,CAAC;QACjB,CAAE;QAAArB,QAAA,EAEDoB,KAAK,CAACI,WAAW,GAChBJ,KAAK,CAACI,WAAW,CAAC,CAAC,gBAEnB5B,IAAA,CAACP,IAAI;UAACc,KAAK,EAAEe,MAAM,CAACO,KAAM;UAAAzB,QAAA,EAAEoB,KAAK,CAACM;QAAK,CAAO;MAC/C,GATIN,KAAK,CAACO,GAUF,CACZ;IAAC,CACa,CAAC,EACjB3B,QAAQ;EAAA,CACM,CAAC;AAEtB,CAAC;;AAED;AACA,MAAMkB,MAAM,GAAG9B,UAAU,CAACwC,MAAM,CAAC;EAC/BN,YAAY,EAAE;IACZO,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDN,KAAK,EAAE;IACLO,KAAK,EAAE;EACT,CAAC;EACDb,OAAO,EAAE;IACPN,KAAK,EAAE,MAAM;IACboB,aAAa,EAAE,KAAK;IACpBC,eAAe,EAAE,OAAO;IACxBC,eAAe,EAAE,CAAC;IAClBlB,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","Reanimated","interpolate","useAnimatedStyle","useSharedValue","useTabContext","TabBarBaseItem","jsx","_jsx","jsxs","_jsxs","TabBarBaseComponent","children","navigationState","style","navigate","screenOptions","topTabHeight","positionX","width","tabBarIndicatorStyle","tabBarItemStyle","tabBarStyle","inputRange","routes","map","_","index","indicatorStyle","outputRange","value","length","transform","translateX","View","onLayout","nativeEvent","layout","height","styles","wrapper","indicator","route","onPress","key","create","labelWrapper","flex","alignItems","justifyContent","flexDirection","backgroundColor","bottom","position"],"sourceRoot":"../../../../src","sources":["components/elements/TabBarBaseComponent.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import { Pressable, StyleSheet, Text } from 'react-native';
4
+ import Animated, { interpolate, useAnimatedStyle } from 'react-native-reanimated';
5
+ import { useTabContext } from '../../hooks/useTabContext';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export const TabBarBaseItem = ({
8
+ index,
9
+ inputRange,
10
+ onPress,
11
+ route,
12
+ style
13
+ }) => {
14
+ const {
15
+ positionX
16
+ } = useTabContext();
17
+ const activeStyle = useAnimatedStyle(() => ({
18
+ opacity: interpolate(positionX.value, inputRange, inputRange.map(i => i === index ? 1 : 0)),
19
+ position: 'absolute'
20
+ }));
21
+ const inactiveStyle = useAnimatedStyle(() => ({
22
+ opacity: interpolate(positionX.value, inputRange, inputRange.map(i => i === index ? 0 : 1))
23
+ }));
24
+ return /*#__PURE__*/_jsxs(Pressable, {
25
+ onPress: () => onPress(index),
26
+ style: [styles.container, style],
27
+ children: [/*#__PURE__*/_jsx(Animated.View, {
28
+ style: activeStyle,
29
+ children: route.tabBarLabel ? route.tabBarLabel(true) : /*#__PURE__*/_jsx(Text, {
30
+ children: route.title
31
+ })
32
+ }), /*#__PURE__*/_jsx(Animated.View, {
33
+ style: inactiveStyle,
34
+ children: route.tabBarLabel ? route.tabBarLabel(false) : /*#__PURE__*/_jsx(Text, {
35
+ children: route.title
36
+ })
37
+ })]
38
+ });
39
+ };
40
+ const styles = StyleSheet.create({
41
+ container: {
42
+ alignItems: 'center',
43
+ flex: 1,
44
+ justifyContent: 'center',
45
+ minHeight: 50
46
+ }
47
+ });
48
+ //# sourceMappingURL=TabBarBaseItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Pressable","StyleSheet","Text","Animated","interpolate","useAnimatedStyle","useTabContext","jsx","_jsx","jsxs","_jsxs","TabBarBaseItem","index","inputRange","onPress","route","style","positionX","activeStyle","opacity","value","map","i","position","inactiveStyle","styles","container","children","View","tabBarLabel","title","create","alignItems","flex","justifyContent","minHeight"],"sourceRoot":"../../../../src","sources":["components/elements/TabBarBaseItem.tsx"],"mappings":";;AAAA,SACEA,SAAS,EACTC,UAAU,EACVC,IAAI,QAGC,cAAc;AACrB,OAAOC,QAAQ,IACbC,WAAW,EACXC,gBAAgB,QACX,yBAAyB;AAChC,SAASC,aAAa,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAW1D,OAAO,MAAMC,cAAc,GAAGA,CAAC;EAC7BC,KAAK;EACLC,UAAU;EACVC,OAAO;EACPC,KAAK;EACLC;AACmB,CAAC,KAAK;EACzB,MAAM;IAAEC;EAAU,CAAC,GAAGX,aAAa,CAAC,CAAC;EAErC,MAAMY,WAAW,GAAGb,gBAAgB,CAAC,OAAO;IAC1Cc,OAAO,EAAEf,WAAW,CAClBa,SAAS,CAACG,KAAK,EACfP,UAAU,EACVA,UAAU,CAACQ,GAAG,CAAEC,CAAC,IAAMA,CAAC,KAAKV,KAAK,GAAG,CAAC,GAAG,CAAE,CAC7C,CAAC;IACDW,QAAQ,EAAE;EACZ,CAAC,CAAC,CAAC;EAEH,MAAMC,aAAa,GAAGnB,gBAAgB,CAAC,OAAO;IAC5Cc,OAAO,EAAEf,WAAW,CAClBa,SAAS,CAACG,KAAK,EACfP,UAAU,EACVA,UAAU,CAACQ,GAAG,CAAEC,CAAC,IAAMA,CAAC,KAAKV,KAAK,GAAG,CAAC,GAAG,CAAE,CAC7C;EACF,CAAC,CAAC,CAAC;EAEH,oBACEF,KAAA,CAACV,SAAS;IAACc,OAAO,EAAEA,CAAA,KAAMA,OAAO,CAACF,KAAK,CAAE;IAACI,KAAK,EAAE,CAACS,MAAM,CAACC,SAAS,EAAEV,KAAK,CAAE;IAAAW,QAAA,gBACzEnB,IAAA,CAACL,QAAQ,CAACyB,IAAI;MAACZ,KAAK,EAAEE,WAAY;MAAAS,QAAA,EAC/BZ,KAAK,CAACc,WAAW,GAChBd,KAAK,CAACc,WAAW,CAAC,IAAI,CAAC,gBAEvBrB,IAAA,CAACN,IAAI;QAAAyB,QAAA,EAAEZ,KAAK,CAACe;MAAK,CAAO;IAC1B,CACY,CAAC,eAChBtB,IAAA,CAACL,QAAQ,CAACyB,IAAI;MAACZ,KAAK,EAAEQ,aAAc;MAAAG,QAAA,EACjCZ,KAAK,CAACc,WAAW,GAChBd,KAAK,CAACc,WAAW,CAAC,KAAK,CAAC,gBAExBrB,IAAA,CAACN,IAAI;QAAAyB,QAAA,EAAEZ,KAAK,CAACe;MAAK,CAAO;IAC1B,CACY,CAAC;EAAA,CACP,CAAC;AAEhB,CAAC;AAED,MAAML,MAAM,GAAGxB,UAAU,CAAC8B,MAAM,CAAC;EAC/BL,SAAS,EAAE;IACTM,UAAU,EAAE,QAAQ;IACpBC,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -8,12 +8,12 @@ export const TabBarLabelBaseComponent = ({
8
8
  index,
9
9
  ...props
10
10
  }) => {
11
- const transformationX = useTabOffset();
11
+ const positionX = useTabOffset();
12
12
  const style = useAnimatedStyle(() => ({
13
- backgroundColor: interpolateColor(transformationX.value, [index - 1, index, index + 1], ['transparent', 'blue', 'transparent'])
13
+ backgroundColor: interpolateColor(positionX.value, [index - 1, index, index + 1], ['transparent', 'blue', 'transparent'])
14
14
  }), []);
15
15
  const textStyle = useAnimatedStyle(() => ({
16
- color: interpolateColor(transformationX.value, [index - 1, index, index + 1], ['black', 'white', 'black'])
16
+ color: interpolateColor(positionX.value, [index - 1, index, index + 1], ['black', 'white', 'black'])
17
17
  }), []);
18
18
  return /*#__PURE__*/_jsx(Reanimated.View, {
19
19
  style: [style, styles.wrapper],
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","Reanimated","interpolateColor","useAnimatedStyle","useTabOffset","jsx","_jsx","TabBarLabelBaseComponent","index","props","transformationX","style","backgroundColor","value","textStyle","color","View","styles","wrapper","children","Text","text","title","create","fontWeight","textTransform","borderRadius","height","justifyContent","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/elements/TabBarLabelBaseComponent.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,UAAU,IACfC,gBAAgB,EAChBC,gBAAgB,QACX,yBAAyB;AAEhC,SAASC,YAAY,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EACvCC,KAAK;EACL,GAAGC;AACa,CAAC,KAAK;EACtB,MAAMC,eAAe,GAAGN,YAAY,CAAC,CAAC;EAEtC,MAAMO,KAAK,GAAGR,gBAAgB,CAC5B,OAAO;IACLS,eAAe,EAAEV,gBAAgB,CAC/BQ,eAAe,CAACG,KAAK,EACrB,CAACL,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAEA,KAAK,GAAG,CAAC,CAAC,EAC7B,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CACvC;EACF,CAAC,CAAC,EACF,EACF,CAAC;EAED,MAAMM,SAAS,GAAGX,gBAAgB,CAChC,OAAO;IACLY,KAAK,EAAEb,gBAAgB,CACrBQ,eAAe,CAACG,KAAK,EACrB,CAACL,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAEA,KAAK,GAAG,CAAC,CAAC,EAC7B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAC5B;EACF,CAAC,CAAC,EACF,EACF,CAAC;EAED,oBACEF,IAAA,CAACL,UAAU,CAACe,IAAI;IAACL,KAAK,EAAE,CAACA,KAAK,EAAEM,MAAM,CAACC,OAAO,CAAE;IAAAC,QAAA,eAC9Cb,IAAA,CAACL,UAAU,CAACmB,IAAI;MAACT,KAAK,EAAE,CAACG,SAAS,EAAEG,MAAM,CAACI,IAAI,CAAE;MAAAF,QAAA,EAC9CV,KAAK,CAACa;IAAK,CACG;EAAC,CACH,CAAC;AAEtB,CAAC;AAED,MAAML,MAAM,GAAGjB,UAAU,CAACuB,MAAM,CAAC;EAC/BF,IAAI,EAAE;IACJG,UAAU,EAAE,MAAM;IAClBC,aAAa,EAAE;EACjB,CAAC;EACDP,OAAO,EAAE;IACPQ,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","Reanimated","interpolateColor","useAnimatedStyle","useTabOffset","jsx","_jsx","TabBarLabelBaseComponent","index","props","positionX","style","backgroundColor","value","textStyle","color","View","styles","wrapper","children","Text","text","title","create","fontWeight","textTransform","borderRadius","height","justifyContent","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/elements/TabBarLabelBaseComponent.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,UAAU,IACfC,gBAAgB,EAChBC,gBAAgB,QACX,yBAAyB;AAEhC,SAASC,YAAY,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,OAAO,MAAMC,wBAAwB,GAAGA,CAAC;EACvCC,KAAK;EACL,GAAGC;AACa,CAAC,KAAK;EACtB,MAAMC,SAAS,GAAGN,YAAY,CAAC,CAAC;EAEhC,MAAMO,KAAK,GAAGR,gBAAgB,CAC5B,OAAO;IACLS,eAAe,EAAEV,gBAAgB,CAC/BQ,SAAS,CAACG,KAAK,EACf,CAACL,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAEA,KAAK,GAAG,CAAC,CAAC,EAC7B,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CACvC;EACF,CAAC,CAAC,EACF,EACF,CAAC;EAED,MAAMM,SAAS,GAAGX,gBAAgB,CAChC,OAAO;IACLY,KAAK,EAAEb,gBAAgB,CACrBQ,SAAS,CAACG,KAAK,EACf,CAACL,KAAK,GAAG,CAAC,EAAEA,KAAK,EAAEA,KAAK,GAAG,CAAC,CAAC,EAC7B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAC5B;EACF,CAAC,CAAC,EACF,EACF,CAAC;EAED,oBACEF,IAAA,CAACL,UAAU,CAACe,IAAI;IAACL,KAAK,EAAE,CAACA,KAAK,EAAEM,MAAM,CAACC,OAAO,CAAE;IAAAC,QAAA,eAC9Cb,IAAA,CAACL,UAAU,CAACmB,IAAI;MAACT,KAAK,EAAE,CAACG,SAAS,EAAEG,MAAM,CAACI,IAAI,CAAE;MAAAF,QAAA,EAC9CV,KAAK,CAACa;IAAK,CACG;EAAC,CACH,CAAC;AAEtB,CAAC;AAED,MAAML,MAAM,GAAGjB,UAAU,CAACuB,MAAM,CAAC;EAC/BF,IAAI,EAAE;IACJG,UAAU,EAAE,MAAM;IAClBC,aAAa,EAAE;EACjB,CAAC;EACDP,OAAO,EAAE;IACPQ,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -2,19 +2,26 @@
2
2
 
3
3
  import React, { useMemo, useRef, useState } from 'react';
4
4
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
5
- import Reanimated, { Easing, interpolate, runOnJS, useAnimatedReaction, useAnimatedStyle, useDerivedValue, useSharedValue, withTiming } from 'react-native-reanimated';
5
+ import Reanimated, { Easing, runOnJS, useAnimatedReaction, useAnimatedStyle, useDerivedValue, useSharedValue, withTiming } from 'react-native-reanimated';
6
6
  import { useTabContext } from '../../hooks/useTabContext';
7
+ import { Platform, StyleSheet, View } from 'react-native';
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
8
9
  export const GestureWrapper = ({
9
- children
10
+ children,
11
+ bounces
10
12
  }) => {
13
+ const _bounces = Platform.select({
14
+ ios: bounces,
15
+ default: false
16
+ });
11
17
  const {
12
18
  context,
13
19
  currentScreenIndex,
14
20
  currentYPosition,
15
21
  gestureEnabled,
16
22
  headerHeight,
17
- transformationY
23
+ transformationY,
24
+ scrollY
18
25
  } = useTabContext();
19
26
  const movedY = useSharedValue(0);
20
27
  const gestureRef = useRef(Gesture.Pan());
@@ -67,18 +74,40 @@ export const GestureWrapper = ({
67
74
  }).simultaneousWithExternalGesture(...Object.values(context.screen.properties).map(({
68
75
  nativeGesture
69
76
  }) => nativeGesture)).withRef(gestureRef).enabled(_gestureEnabled), [_gestureEnabled]);
70
- const style = useAnimatedStyle(() => ({
71
- flex: 1,
72
- transform: [{
73
- translateY: interpolate(transformationY.value, [0, -headerHeight.value], [0, -headerHeight.value], 'clamp')
74
- }]
75
- }), []);
77
+ useAnimatedReaction(() => {
78
+ if (transformationY.value > 0) {
79
+ if (_bounces) return transformationY.value * -0.3;else return 0;
80
+ }
81
+ if (transformationY.value < -headerHeight.value) {
82
+ return headerHeight.value;
83
+ }
84
+ return -transformationY.value;
85
+ }, value => {
86
+ scrollY.value = value;
87
+ });
88
+ const style = useAnimatedStyle(() => {
89
+ return {
90
+ flex: 1,
91
+ transform: [{
92
+ translateY: scrollY.value * -1
93
+ }]
94
+ };
95
+ }, []);
76
96
  return /*#__PURE__*/_jsx(GestureDetector, {
77
97
  gesture: gesture,
78
- children: /*#__PURE__*/_jsx(Reanimated.View, {
79
- style: style,
80
- children: children
98
+ children: /*#__PURE__*/_jsx(View, {
99
+ style: styles.container,
100
+ children: /*#__PURE__*/_jsx(Reanimated.View, {
101
+ style: style,
102
+ children: children
103
+ })
81
104
  })
82
105
  });
83
106
  };
107
+ const styles = StyleSheet.create({
108
+ container: {
109
+ overflow: 'hidden',
110
+ flex: 1
111
+ }
112
+ });
84
113
  //# sourceMappingURL=GestureWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useRef","useState","Gesture","GestureDetector","Reanimated","Easing","interpolate","runOnJS","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","useTabContext","jsx","_jsx","GestureWrapper","children","context","currentScreenIndex","currentYPosition","gestureEnabled","headerHeight","transformationY","movedY","gestureRef","Pan","currentScreenScrollOffset","Object","values","screen","properties","map","scrollY","value","withTimingConfig","duration","easing","bezier","_gestureEnabled","setGestureEnabled","next","prev","gesture","activeOffsetY","onTouchesMove","_","stateManager","fail","onUpdate","translationY","onEnd","velocityY","gestureValue","changeOffset","destination","onFinalize","simultaneousWithExternalGesture","nativeGesture","withRef","enabled","style","flex","transform","translateY","View"],"sourceRoot":"../../../../src","sources":["components/wrappers/GestureWrapper.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","useRef","useState","Gesture","GestureDetector","Reanimated","Easing","runOnJS","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","useTabContext","Platform","StyleSheet","View","jsx","_jsx","GestureWrapper","children","bounces","_bounces","select","ios","default","context","currentScreenIndex","currentYPosition","gestureEnabled","headerHeight","transformationY","scrollY","movedY","gestureRef","Pan","currentScreenScrollOffset","Object","values","screen","properties","map","value","withTimingConfig","duration","easing","bezier","_gestureEnabled","setGestureEnabled","next","prev","gesture","activeOffsetY","onTouchesMove","_","stateManager","fail","onUpdate","translationY","onEnd","velocityY","gestureValue","changeOffset","destination","onFinalize","simultaneousWithExternalGesture","nativeGesture","withRef","enabled","style","flex","transform","translateY","styles","container","create","overflow"],"sourceRoot":"../../../../src","sources":["components/wrappers/GestureWrapper.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ import { SectionList as RNSectionList, StyleSheet } from 'react-native';
4
+ import { GestureDetector } from 'react-native-gesture-handler';
5
+ import Reanimated from 'react-native-reanimated';
6
+ import { useRef } from 'react';
7
+ import { useRoute } from '@react-navigation/native';
8
+ import { useTabContext } from '../../hooks/useTabContext';
9
+ import { useScreenGesture } from '../../hooks/useScreenGesture';
10
+ import { useScreenScrollable } from '../../hooks/useScreenScrollable';
11
+ import { useScreenProperties } from '../../hooks/useScreenProperties';
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ export const SectionList = ({
14
+ children,
15
+ style,
16
+ contentContainerStyle,
17
+ onLayout,
18
+ ...props
19
+ }) => {
20
+ const gesture = useScreenGesture();
21
+ const {
22
+ style: _style,
23
+ contentContainerStyle: _contentContainerStyle,
24
+ onScroll,
25
+ bounces,
26
+ animatedProps,
27
+ overScrollMode
28
+ } = useScreenScrollable();
29
+ const {
30
+ innerLayout
31
+ } = useScreenProperties();
32
+ const {
33
+ context
34
+ } = useTabContext();
35
+ const {
36
+ key
37
+ } = useRoute();
38
+ const _ref = useRef(null);
39
+ const _onLayout = event => {
40
+ onLayout?.(event);
41
+ innerLayout.value = event.nativeEvent.layout;
42
+ context.screen.setRef(key, _ref.current);
43
+ };
44
+ return /*#__PURE__*/_jsx(GestureDetector, {
45
+ gesture: gesture,
46
+ children: /*#__PURE__*/_jsx(AnimatedSectionList, {
47
+ ref: _ref,
48
+ contentContainerStyle: [_contentContainerStyle, styleSheet.contentContainerStyle, contentContainerStyle],
49
+ onLayout: _onLayout,
50
+ style: [_style, style],
51
+ onScroll: onScroll,
52
+ bounces: bounces,
53
+ animatedProps: animatedProps,
54
+ overScrollMode: overScrollMode,
55
+ ...props,
56
+ children: children
57
+ })
58
+ });
59
+ };
60
+ const styleSheet = StyleSheet.create({
61
+ contentContainerStyle: {
62
+ flexGrow: 1
63
+ }
64
+ });
65
+ const AnimatedSectionList = Reanimated.createAnimatedComponent(RNSectionList);
66
+ //# sourceMappingURL=SectionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SectionList","RNSectionList","StyleSheet","GestureDetector","Reanimated","useRef","useRoute","useTabContext","useScreenGesture","useScreenScrollable","useScreenProperties","jsx","_jsx","children","style","contentContainerStyle","onLayout","props","gesture","_style","_contentContainerStyle","onScroll","bounces","animatedProps","overScrollMode","innerLayout","context","key","_ref","_onLayout","event","value","nativeEvent","layout","screen","setRef","current","AnimatedSectionList","ref","styleSheet","create","flexGrow","createAnimatedComponent"],"sourceRoot":"../../../../src","sources":["components/wrappers/SectionList.tsx"],"mappings":";;AAAA,SAIEA,WAAW,IAAIC,aAAa,EAC5BC,UAAU,QACL,cAAc;AACrB,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,UAAU,MAAM,yBAAyB;AAChD,SAASC,MAAM,QAAQ,OAAO;AAC9B,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,mBAAmB,QAAQ,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtE,OAAO,MAAMZ,WAAW,GAAGA,CAAoC;EAC7Da,QAAQ;EACRC,KAAK;EACLC,qBAAqB;EACrBC,QAAQ;EACR,GAAGC;AAC8B,CAAC,KAAK;EACvC,MAAMC,OAAO,GAAGV,gBAAgB,CAAC,CAAC;EAClC,MAAM;IACJM,KAAK,EAAEK,MAAM;IACbJ,qBAAqB,EAAEK,sBAAsB;IAC7CC,QAAQ;IACRC,OAAO;IACPC,aAAa;IACbC;EACF,CAAC,GAAGf,mBAAmB,CAAC,CAAC;EACzB,MAAM;IAAEgB;EAAY,CAAC,GAAGf,mBAAmB,CAAC,CAAC;EAC7C,MAAM;IAAEgB;EAAQ,CAAC,GAAGnB,aAAa,CAAC,CAAC;EAEnC,MAAM;IAAEoB;EAAI,CAAC,GAAGrB,QAAQ,CAAC,CAAC;EAC1B,MAAMsB,IAAI,GAAGvB,MAAM,CAAqB,IAAI,CAAC;EAE7C,MAAMwB,SAAS,GAAIC,KAAwB,IAAK;IAC9Cd,QAAQ,GAAGc,KAAK,CAAC;IACjBL,WAAW,CAACM,KAAK,GAAGD,KAAK,CAACE,WAAW,CAACC,MAAM;IAC5CP,OAAO,CAACQ,MAAM,CAACC,MAAM,CAACR,GAAG,EAAEC,IAAI,CAACQ,OAAO,CAAC;EAC1C,CAAC;EAED,oBACExB,IAAA,CAACT,eAAe;IAACe,OAAO,EAAEA,OAAQ;IAAAL,QAAA,eAChCD,IAAA,CAACyB,mBAAmB;MAClBC,GAAG,EAAEV,IAAK;MACVb,qBAAqB,EAAE,CACrBK,sBAAsB,EACtBmB,UAAU,CAACxB,qBAAqB,EAChCA,qBAAqB,CACrB;MACFC,QAAQ,EAAEa,SAAU;MACpBf,KAAK,EAAE,CAACK,MAAM,EAAEL,KAAK,CAAE;MACvBO,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,aAAa,EAAEA,aAAc;MAC7BC,cAAc,EAAEA,cAAe;MAAA,GAC3BP,KAAK;MAAAJ,QAAA,EAERA;IAAQ,CACU;EAAC,CACP,CAAC;AAEtB,CAAC;AAED,MAAM0B,UAAU,GAAGrC,UAAU,CAACsC,MAAM,CAAC;EACnCzB,qBAAqB,EAAE;IACrB0B,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,MAAMJ,mBAAmB,GACvBjC,UAAU,CAACsC,uBAAuB,CAA6BzC,aAAa,CAAC","ignoreList":[]}
@@ -5,13 +5,14 @@ import { useRef } from 'react';
5
5
  import { Gesture } from 'react-native-gesture-handler';
6
6
  import { assign, throttle } from 'lodash';
7
7
  import { ContextHelpers } from './Context.helpers';
8
+ import { SectionList } from 'react-native';
8
9
 
9
10
  /**
10
11
  * Hook to reset the scroll offset for the approaching screen in a tab navigation context.
11
12
  *
12
13
  * @param {Object} params - The parameters for configuring the scroll offset reset.
13
14
  * @param {ReanimatedTopTabNavigation.ContextType["context"]} params.context - The context containing navigation and screen information.
14
- * @param {ReanimatedTopTabNavigation.ContextType["transformationX"]} params.transformationX - The horizontal transformation value used in animations.
15
+ * @param {ReanimatedTopTabNavigation.ContextType["positionX"]} params.positionX - The horizontal transformation value used in animations.
15
16
  * @param {ReanimatedTopTabNavigation.ContextType["currentYPosition"]} params.currentYPosition - The current vertical scroll position.
16
17
  *
17
18
  * The hook is responsible for resetting the vertical scroll offset of the "approaching" screen within a tabbed navigation interface,
@@ -21,7 +22,7 @@ import { ContextHelpers } from './Context.helpers';
21
22
  */
22
23
  const useResetApproachingScreenScrollOffset = ({
23
24
  context,
24
- transformationX,
25
+ positionX,
25
26
  currentYPosition
26
27
  }) => {
27
28
  const screenOffsets = useDerivedValue(() => Object.values(context.screen.properties).map(({
@@ -29,19 +30,21 @@ const useResetApproachingScreenScrollOffset = ({
29
30
  }) => scrollY.value));
30
31
  const resetApproachingScreenOffset = (index, shouldReset) => {
31
32
  if (shouldReset) {
32
- const {
33
- scrollTo
34
- } = context.screen.getRef(context.route.getKeyForIndex(index)).current ?? {
35
- scrollTo: () => {}
36
- };
37
- //NOTE: use reanimated scrollTo does not work
38
- scrollTo({
33
+ const ref = context.screen.getRef(context.route.getKeyForIndex(index)).current;
34
+ if (ref instanceof SectionList) {
35
+ ref.scrollToLocation({
36
+ animated: false,
37
+ sectionIndex: 0,
38
+ itemIndex: 0,
39
+ viewOffset: 0
40
+ });
41
+ } else ref?.scrollTo({
39
42
  y: 0,
40
43
  animated: false
41
44
  });
42
45
  }
43
46
  };
44
- useAnimatedReaction(() => transformationX.value, (current, previous) => {
47
+ useAnimatedReaction(() => positionX.value, (current, previous) => {
45
48
  const approachingIndex = ContextHelpers.getTargetIndex(current, previous);
46
49
  const approachingScreenOffset = screenOffsets.value[approachingIndex] ?? -1;
47
50
  runOnJS(resetApproachingScreenOffset)(approachingIndex, approachingScreenOffset > 0 && currentYPosition.value === 0);
@@ -170,7 +173,7 @@ const usePrepareContext = ({
170
173
  * @param {Array} params.config - An array of configuration settings to determine the header's transformation.
171
174
  * @returns {Object} An object containing shared values for header transformations and positioning:
172
175
  * - transformationY: The derived Y-axis transformation value for the header.
173
- * - transformationX: The shared X-axis transformation value to be observed.
176
+ * - positionX: The shared X-axis transformation value to be observed.
174
177
  * - currentYPosition: The shared Y-axis position of the header.
175
178
  * - headerHeight: The shared height value of the header.
176
179
  */
@@ -180,7 +183,8 @@ const useTransformHeaderOnTabChange = ({
180
183
  const headerHeight = useSharedValue(0);
181
184
  const isHeaderHeightSet = useSharedValue(false);
182
185
  const transformationY = useSharedValue(0);
183
- const transformationX = useSharedValue(0);
186
+ const scrollY = useSharedValue(0);
187
+ const positionX = useSharedValue(0);
184
188
  const currentYPosition = useSharedValue(0);
185
189
 
186
190
  //Hide header base on config
@@ -211,21 +215,22 @@ const useTransformHeaderOnTabChange = ({
211
215
  runOnJS(debouncedSetIsHeaderSet)();
212
216
  }
213
217
  }, []);
214
- useAnimatedReaction(() => transformationX.value, value => {
218
+ useAnimatedReaction(() => positionX.value, value => {
215
219
  if (currentYPosition.value === -headerHeight.value) return;
216
220
  transformationY.value = interpolate(value, inputRange.value, outputRange.value, 'clamp');
217
221
  });
218
222
  return {
219
223
  transformationY,
220
- transformationX,
224
+ positionX,
221
225
  currentYPosition,
222
226
  headerHeight,
223
- isHeaderHeightSet
227
+ isHeaderHeightSet,
228
+ scrollY
224
229
  };
225
230
  };
226
231
  const useApproachingTabChange = ({
227
232
  config,
228
- transformationX,
233
+ positionX,
229
234
  gestureEnabled,
230
235
  currentScreenIndex
231
236
  }) => {
@@ -246,7 +251,7 @@ const useApproachingTabChange = ({
246
251
  }
247
252
  }
248
253
  };
249
- useAnimatedReaction(() => transformationX.value, (current, previous) => {
254
+ useAnimatedReaction(() => positionX.value, (current, previous) => {
250
255
  const approachingIndex = ContextHelpers.getTargetIndex(current, previous);
251
256
  onIndexApproach(approachingIndex);
252
257
  });