react-navigation-reanimated-top-tabs 0.9.0 → 0.9.2

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.
@@ -11,7 +11,7 @@ const onChange = (event, animationValue, width, navigationState) => {
11
11
  if (animationValue > 0) {
12
12
  return 0;
13
13
  }
14
- const routesLength = navigationState.size - 1;
14
+ const routesLength = navigationState.routes.length - 1;
15
15
  if (animationValue < -width * routesLength) {
16
16
  return -width * routesLength;
17
17
  }
@@ -20,7 +20,7 @@ const onChange = (event, animationValue, width, navigationState) => {
20
20
  const getIndex = (navigationState, type) => {
21
21
  'worklet';
22
22
 
23
- const max = navigationState.size - 1;
23
+ const max = navigationState.routes.length - 1;
24
24
  const current = navigationState.index;
25
25
  if (type === 'increment' && current < max) {
26
26
  return current + 1;
@@ -56,11 +56,13 @@ const onEnd = (event, minimumValueToChangeView, width, navigationState) => {
56
56
  value: -width * navigationState.index
57
57
  };
58
58
  };
59
- const animation = (newValue, duration = 350) => {
59
+ const animation = (newValue, onFinished) => {
60
60
  'worklet';
61
61
 
62
62
  return (0, _reactNativeReanimated.withTiming)(newValue, {
63
- duration
63
+ duration: 350
64
+ }, finished => {
65
+ if (finished && onFinished) (0, _reactNativeReanimated.runOnJS)(onFinished)();
64
66
  });
65
67
  };
66
68
  const AnimationHelper = exports.AnimationHelper = {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeReanimated","require","onChange","event","animationValue","width","navigationState","routesLength","size","changeX","getIndex","type","max","current","index","onEnd","minimumValueToChangeView","velocityX","translationX","newIndex","value","animation","newValue","duration","withTiming","AnimationHelper","exports"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/AnimationHelper.ts"],"mappings":";;;;;;AAMA,IAAAA,sBAAA,GAAAC,OAAA;AAIA,MAAMC,QAAQ,GAAGA,CACfC,KAEC,EACDC,cAAsB,EACtBC,KAAa,EACbC,eAAgC,KAC7B;EACH,SAAS;;EACT,IAAIF,cAAc,GAAG,CAAC,EAAE;IACtB,OAAO,CAAC;EACV;EACA,MAAMG,YAAY,GAAGD,eAAe,CAACE,IAAI,GAAG,CAAC;EAC7C,IAAIJ,cAAc,GAAG,CAACC,KAAK,GAAGE,YAAY,EAAE;IAC1C,OAAO,CAACF,KAAK,GAAGE,YAAY;EAC9B;EACA,OAAOH,cAAc,GAAGD,KAAK,CAACM,OAAO;AACvC,CAAC;AAED,MAAMC,QAAQ,GAAGA,CACfJ,eAAgC,EAChCK,IAA+B,KAC5B;EACH,SAAS;;EACT,MAAMC,GAAG,GAAGN,eAAe,CAACE,IAAI,GAAG,CAAC;EACpC,MAAMK,OAAO,GAAGP,eAAe,CAACQ,KAAK;EAErC,IAAIH,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAGD,GAAG,EAAE;IACzC,OAAOC,OAAO,GAAG,CAAC;EACpB;EAEA,IAAIF,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAG,CAAC,EAAE;IACvC,OAAOA,OAAO,GAAG,CAAC;EACpB;EAEA,OAAOA,OAAO;AAChB,CAAC;AAED,MAAME,KAAK,GAAGA,CACZZ,KAA6D,EAC7Da,wBAAgC,EAChCX,KAAa,EACbC,eAAgC,KAC7B;EACH,SAAS;;EACT,MAAM;IAAEW,SAAS;IAAEC;EAAa,CAAC,GAAGf,KAAK;EAEzC,IAAIc,SAAS,GAAG,CAAC,GAAG,IAAIC,YAAY,GAAG,CAACF,wBAAwB,EAAE;IAChE,MAAMG,QAAQ,GAAGT,QAAQ,CAACJ,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLQ,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAACf,KAAK,GAAGc;IAClB,CAAC;EACH;EACA,IAAIF,SAAS,GAAG,GAAG,IAAIC,YAAY,GAAGF,wBAAwB,EAAE;IAC9D,MAAMG,QAAQ,GAAGT,QAAQ,CAACJ,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLQ,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAACf,KAAK,GAAGc;IAClB,CAAC;EACH;EACA,OAAO;IACLL,KAAK,EAAER,eAAe,CAACQ,KAAK;IAC5BM,KAAK,EAAE,CAACf,KAAK,GAAGC,eAAe,CAACQ;EAClC,CAAC;AACH,CAAC;AAED,MAAMO,SAAS,GAAGA,CAACC,QAAgB,EAAEC,QAAQ,GAAG,GAAG,KAAK;EACtD,SAAS;;EACT,OAAO,IAAAC,iCAAU,EAACF,QAAQ,EAAE;IAAEC;EAAS,CAAC,CAAC;AAC3C,CAAC;AAEM,MAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC7BJ,SAAS;EACTnB,QAAQ;EACRa;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeReanimated","require","onChange","event","animationValue","width","navigationState","routesLength","routes","length","changeX","getIndex","type","max","current","index","onEnd","minimumValueToChangeView","velocityX","translationX","newIndex","value","animation","newValue","onFinished","withTiming","duration","finished","runOnJS","AnimationHelper","exports"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/AnimationHelper.ts"],"mappings":";;;;;;AAMA,IAAAA,sBAAA,GAAAC,OAAA;AAGA,MAAMC,QAAQ,GAAGA,CACfC,KAEC,EACDC,cAAsB,EACtBC,KAAa,EACbC,eAAuD,KACpD;EACH,SAAS;;EACT,IAAIF,cAAc,GAAG,CAAC,EAAE;IACtB,OAAO,CAAC;EACV;EACA,MAAMG,YAAY,GAAGD,eAAe,CAACE,MAAM,CAACC,MAAM,GAAG,CAAC;EACtD,IAAIL,cAAc,GAAG,CAACC,KAAK,GAAGE,YAAY,EAAE;IAC1C,OAAO,CAACF,KAAK,GAAGE,YAAY;EAC9B;EACA,OAAOH,cAAc,GAAGD,KAAK,CAACO,OAAO;AACvC,CAAC;AAED,MAAMC,QAAQ,GAAGA,CACfL,eAAuD,EACvDM,IAA+B,KAC5B;EACH,SAAS;;EACT,MAAMC,GAAG,GAAGP,eAAe,CAACE,MAAM,CAACC,MAAM,GAAG,CAAC;EAC7C,MAAMK,OAAO,GAAGR,eAAe,CAACS,KAAK;EAErC,IAAIH,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAGD,GAAG,EAAE;IACzC,OAAOC,OAAO,GAAG,CAAC;EACpB;EAEA,IAAIF,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAG,CAAC,EAAE;IACvC,OAAOA,OAAO,GAAG,CAAC;EACpB;EAEA,OAAOA,OAAO;AAChB,CAAC;AAED,MAAME,KAAK,GAAGA,CACZb,KAA6D,EAC7Dc,wBAAgC,EAChCZ,KAAa,EACbC,eAAuD,KACpD;EACH,SAAS;;EACT,MAAM;IAAEY,SAAS;IAAEC;EAAa,CAAC,GAAGhB,KAAK;EAEzC,IAAIe,SAAS,GAAG,CAAC,GAAG,IAAIC,YAAY,GAAG,CAACF,wBAAwB,EAAE;IAChE,MAAMG,QAAQ,GAAGT,QAAQ,CAACL,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLS,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAAChB,KAAK,GAAGe;IAClB,CAAC;EACH;EACA,IAAIF,SAAS,GAAG,GAAG,IAAIC,YAAY,GAAGF,wBAAwB,EAAE;IAC9D,MAAMG,QAAQ,GAAGT,QAAQ,CAACL,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLS,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAAChB,KAAK,GAAGe;IAClB,CAAC;EACH;EACA,OAAO;IACLL,KAAK,EAAET,eAAe,CAACS,KAAK;IAC5BM,KAAK,EAAE,CAAChB,KAAK,GAAGC,eAAe,CAACS;EAClC,CAAC;AACH,CAAC;AAED,MAAMO,SAAS,GAAGA,CAACC,QAAgB,EAAEC,UAAuB,KAAK;EAC/D,SAAS;;EACT,OAAO,IAAAC,iCAAU,EAACF,QAAQ,EAAE;IAAEG,QAAQ,EAAE;EAAI,CAAC,EAAGC,QAAQ,IAAK;IAC3D,IAAIA,QAAQ,IAAIH,UAAU,EAAE,IAAAI,8BAAO,EAACJ,UAAU,CAAC,CAAC,CAAC;EACnD,CAAC,CAAC;AACJ,CAAC;AAEM,MAAMK,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC7BP,SAAS;EACTpB,QAAQ;EACRc;AACF,CAAC","ignoreList":[]}
@@ -27,52 +27,36 @@ const ReanimatedTabView = exports.ReanimatedTabView = /*#__PURE__*/_react.defaul
27
27
  width
28
28
  } = (0, _reactNative.useWindowDimensions)();
29
29
  const loadedScreens = (0, _react.useRef)([navigationState.routes[navigationState.index]]);
30
+ const navigationStateRef = (0, _reactNativeReanimated.useSharedValue)(navigationState);
30
31
  const scrollPosition = (0, _reactNativeReanimated.useSharedValue)(navigationState.index);
31
32
  const {
32
33
  positionX
33
34
  } = (0, _useTabContext.useTabContext)();
35
+ (0, _react.useEffect)(() => {
36
+ navigationStateRef.value = navigationState;
37
+ }, [navigationState]);
34
38
  (0, _reactNativeReanimated.useAnimatedReaction)(() => scrollPosition.value, value => {
35
39
  positionX.value = (0, _reactNativeReanimated.interpolate)(value, navigationState.routes.map((_, i) => i * -width), navigationState.routes.map((_, i) => i), 'clamp');
36
40
  });
37
41
  const _navigate = index => {
38
- scrollPosition.value = _AnimationHelper.AnimationHelper.animation(-index * width);
39
- navigate(index);
42
+ scrollPosition.value = _AnimationHelper.AnimationHelper.animation(-index * width, () => navigate(index));
40
43
  };
41
44
  const minimumValueToChangeView = (0, _react.useMemo)(() => width * percentageTrigger, [percentageTrigger, width]);
42
- const _navigationState = (0, _reactNativeReanimated.useSharedValue)({
43
- size: 0,
44
- index: 0
45
- });
46
- (0, _react.useEffect)(() => {
47
- (0, _reactNativeReanimated.runOnUI)(() => {
48
- _navigationState.value.size = navigationState.routes.length;
49
- _navigationState.value.index = navigationState.index;
50
- })();
51
- }, [navigationState]);
52
45
  const panGesture = _react.default.useMemo(() => _reactNativeGestureHandler.Gesture.Pan().failOffsetY([-10, 10]).activeOffsetX([-20, 20]).onChange(event => {
53
46
  'worklet';
54
47
 
55
- scrollPosition.value = _AnimationHelper.AnimationHelper.onChange(event, scrollPosition.value, width, _navigationState.value);
48
+ scrollPosition.value = _AnimationHelper.AnimationHelper.onChange(event, scrollPosition.value, width, navigationStateRef.value);
56
49
  }).onEnd(event => {
57
50
  'worklet';
58
51
 
59
- const state = _AnimationHelper.AnimationHelper.onEnd(event, minimumValueToChangeView, width, _navigationState.value);
60
- scrollPosition.value = _AnimationHelper.AnimationHelper.animation(state.value);
61
- _navigationState.value.index = state.index;
62
- (0, _reactNativeReanimated.runOnJS)(navigate)(state.index);
52
+ const state = _AnimationHelper.AnimationHelper.onEnd(event, minimumValueToChangeView, width, navigationStateRef.value);
53
+ (0, _reactNativeReanimated.runOnJS)(_navigate)(state.index);
63
54
  }), [minimumValueToChangeView, width]);
64
55
  const scrollPositionStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
65
56
  transform: [{
66
57
  translateX: (0, _reactNativeReanimated.interpolate)(scrollPosition.value, [-width * (navigationState.routes.length - 1), 0], [-width * (navigationState.routes.length - 1), 0], 'clamp')
67
58
  }]
68
59
  }));
69
- const jumpTo = _react.default.useCallback(key => {
70
- const newIndex = navigationState.routes.findIndex(route => route.key === key);
71
- if (newIndex === -1) {
72
- return;
73
- }
74
- scrollPosition.value = _AnimationHelper.AnimationHelper.animation(-newIndex * width);
75
- }, [navigationState.routes, scrollPosition, width]);
76
60
  const chooseRender = (0, _react.useCallback)((params, useRenderScene = true) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
77
61
  style: {
78
62
  width
@@ -82,29 +66,25 @@ const ReanimatedTabView = exports.ReanimatedTabView = /*#__PURE__*/_react.defaul
82
66
  const Routes = (0, _react.useMemo)(() => navigationState.routes.map((route, index) => {
83
67
  if (!lazy) {
84
68
  return chooseRender({
85
- jumpTo,
86
69
  route
87
70
  });
88
71
  }
89
72
  const screen = loadedScreens.current.find(loadedScreen => loadedScreen?.key === route.key);
90
73
  if (screen !== undefined) {
91
74
  return chooseRender({
92
- jumpTo,
93
75
  route
94
76
  });
95
77
  }
96
78
  if (navigationState.index === index) {
97
79
  loadedScreens.current.push(route);
98
80
  return chooseRender({
99
- jumpTo,
100
81
  route
101
82
  });
102
83
  }
103
84
  return chooseRender({
104
- jumpTo,
105
85
  route
106
86
  }, false);
107
- }), [navigationState.routes, navigationState.index, lazy, chooseRender, jumpTo]);
87
+ }), [navigationState.routes, navigationState.index, lazy, chooseRender]);
108
88
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView, {
109
89
  style: defaultStyles.flex,
110
90
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeReanimated.default.View, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_useTabContext","_AnimationHelper","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ReanimatedTabView","exports","React","memo","LazyPlaceholder","lazy","navigationState","percentageTrigger","renderScene","renderTabBar","navigate","screenOptions","width","useWindowDimensions","loadedScreens","useRef","routes","index","scrollPosition","useSharedValue","positionX","useTabContext","useAnimatedReaction","value","interpolate","map","_","_navigate","AnimationHelper","animation","minimumValueToChangeView","useMemo","_navigationState","size","useEffect","runOnUI","length","panGesture","Gesture","Pan","failOffsetY","activeOffsetX","onChange","event","onEnd","state","runOnJS","scrollPositionStyle","useAnimatedStyle","transform","translateX","jumpTo","useCallback","key","newIndex","findIndex","route","chooseRender","params","useRenderScene","jsx","View","style","children","Routes","screen","current","find","loadedScreen","undefined","push","GestureHandlerRootView","defaultStyles","flex","jsxs","layout","LinearTransition","GestureDetector","gesture","viewsContainer","StyleSheet","create","flexDirection"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/ReanimatedTabView.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_useTabContext","_AnimationHelper","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ReanimatedTabView","exports","React","memo","LazyPlaceholder","lazy","navigationState","percentageTrigger","renderScene","renderTabBar","navigate","screenOptions","width","useWindowDimensions","loadedScreens","useRef","routes","index","navigationStateRef","useSharedValue","scrollPosition","positionX","useTabContext","useEffect","value","useAnimatedReaction","interpolate","map","_","_navigate","AnimationHelper","animation","minimumValueToChangeView","useMemo","panGesture","Gesture","Pan","failOffsetY","activeOffsetX","onChange","event","onEnd","state","runOnJS","scrollPositionStyle","useAnimatedStyle","transform","translateX","length","chooseRender","useCallback","params","useRenderScene","jsx","View","style","children","route","key","Routes","screen","current","find","loadedScreen","undefined","push","GestureHandlerRootView","defaultStyles","flex","jsxs","layout","LinearTransition","GestureDetector","gesture","viewsContainer","StyleSheet","create","flexDirection"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/ReanimatedTabView.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { withTiming } from 'react-native-reanimated';
3
+ import { runOnJS, withTiming } from 'react-native-reanimated';
4
4
  const onChange = (event, animationValue, width, navigationState) => {
5
5
  'worklet';
6
6
 
7
7
  if (animationValue > 0) {
8
8
  return 0;
9
9
  }
10
- const routesLength = navigationState.size - 1;
10
+ const routesLength = navigationState.routes.length - 1;
11
11
  if (animationValue < -width * routesLength) {
12
12
  return -width * routesLength;
13
13
  }
@@ -16,7 +16,7 @@ const onChange = (event, animationValue, width, navigationState) => {
16
16
  const getIndex = (navigationState, type) => {
17
17
  'worklet';
18
18
 
19
- const max = navigationState.size - 1;
19
+ const max = navigationState.routes.length - 1;
20
20
  const current = navigationState.index;
21
21
  if (type === 'increment' && current < max) {
22
22
  return current + 1;
@@ -52,11 +52,13 @@ const onEnd = (event, minimumValueToChangeView, width, navigationState) => {
52
52
  value: -width * navigationState.index
53
53
  };
54
54
  };
55
- const animation = (newValue, duration = 350) => {
55
+ const animation = (newValue, onFinished) => {
56
56
  'worklet';
57
57
 
58
58
  return withTiming(newValue, {
59
- duration
59
+ duration: 350
60
+ }, finished => {
61
+ if (finished && onFinished) runOnJS(onFinished)();
60
62
  });
61
63
  };
62
64
  export const AnimationHelper = {
@@ -1 +1 @@
1
- {"version":3,"names":["withTiming","onChange","event","animationValue","width","navigationState","routesLength","size","changeX","getIndex","type","max","current","index","onEnd","minimumValueToChangeView","velocityX","translationX","newIndex","value","animation","newValue","duration","AnimationHelper"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/AnimationHelper.ts"],"mappings":";;AAMA,SAASA,UAAU,QAAQ,yBAAyB;AAIpD,MAAMC,QAAQ,GAAGA,CACfC,KAEC,EACDC,cAAsB,EACtBC,KAAa,EACbC,eAAgC,KAC7B;EACH,SAAS;;EACT,IAAIF,cAAc,GAAG,CAAC,EAAE;IACtB,OAAO,CAAC;EACV;EACA,MAAMG,YAAY,GAAGD,eAAe,CAACE,IAAI,GAAG,CAAC;EAC7C,IAAIJ,cAAc,GAAG,CAACC,KAAK,GAAGE,YAAY,EAAE;IAC1C,OAAO,CAACF,KAAK,GAAGE,YAAY;EAC9B;EACA,OAAOH,cAAc,GAAGD,KAAK,CAACM,OAAO;AACvC,CAAC;AAED,MAAMC,QAAQ,GAAGA,CACfJ,eAAgC,EAChCK,IAA+B,KAC5B;EACH,SAAS;;EACT,MAAMC,GAAG,GAAGN,eAAe,CAACE,IAAI,GAAG,CAAC;EACpC,MAAMK,OAAO,GAAGP,eAAe,CAACQ,KAAK;EAErC,IAAIH,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAGD,GAAG,EAAE;IACzC,OAAOC,OAAO,GAAG,CAAC;EACpB;EAEA,IAAIF,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAG,CAAC,EAAE;IACvC,OAAOA,OAAO,GAAG,CAAC;EACpB;EAEA,OAAOA,OAAO;AAChB,CAAC;AAED,MAAME,KAAK,GAAGA,CACZZ,KAA6D,EAC7Da,wBAAgC,EAChCX,KAAa,EACbC,eAAgC,KAC7B;EACH,SAAS;;EACT,MAAM;IAAEW,SAAS;IAAEC;EAAa,CAAC,GAAGf,KAAK;EAEzC,IAAIc,SAAS,GAAG,CAAC,GAAG,IAAIC,YAAY,GAAG,CAACF,wBAAwB,EAAE;IAChE,MAAMG,QAAQ,GAAGT,QAAQ,CAACJ,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLQ,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAACf,KAAK,GAAGc;IAClB,CAAC;EACH;EACA,IAAIF,SAAS,GAAG,GAAG,IAAIC,YAAY,GAAGF,wBAAwB,EAAE;IAC9D,MAAMG,QAAQ,GAAGT,QAAQ,CAACJ,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLQ,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAACf,KAAK,GAAGc;IAClB,CAAC;EACH;EACA,OAAO;IACLL,KAAK,EAAER,eAAe,CAACQ,KAAK;IAC5BM,KAAK,EAAE,CAACf,KAAK,GAAGC,eAAe,CAACQ;EAClC,CAAC;AACH,CAAC;AAED,MAAMO,SAAS,GAAGA,CAACC,QAAgB,EAAEC,QAAQ,GAAG,GAAG,KAAK;EACtD,SAAS;;EACT,OAAOtB,UAAU,CAACqB,QAAQ,EAAE;IAAEC;EAAS,CAAC,CAAC;AAC3C,CAAC;AAED,OAAO,MAAMC,eAAe,GAAG;EAC7BH,SAAS;EACTnB,QAAQ;EACRa;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["runOnJS","withTiming","onChange","event","animationValue","width","navigationState","routesLength","routes","length","changeX","getIndex","type","max","current","index","onEnd","minimumValueToChangeView","velocityX","translationX","newIndex","value","animation","newValue","onFinished","duration","finished","AnimationHelper"],"sourceRoot":"../../../../src","sources":["components/ReanimatedTopTab/AnimationHelper.ts"],"mappings":";;AAMA,SAASA,OAAO,EAAEC,UAAU,QAAQ,yBAAyB;AAG7D,MAAMC,QAAQ,GAAGA,CACfC,KAEC,EACDC,cAAsB,EACtBC,KAAa,EACbC,eAAuD,KACpD;EACH,SAAS;;EACT,IAAIF,cAAc,GAAG,CAAC,EAAE;IACtB,OAAO,CAAC;EACV;EACA,MAAMG,YAAY,GAAGD,eAAe,CAACE,MAAM,CAACC,MAAM,GAAG,CAAC;EACtD,IAAIL,cAAc,GAAG,CAACC,KAAK,GAAGE,YAAY,EAAE;IAC1C,OAAO,CAACF,KAAK,GAAGE,YAAY;EAC9B;EACA,OAAOH,cAAc,GAAGD,KAAK,CAACO,OAAO;AACvC,CAAC;AAED,MAAMC,QAAQ,GAAGA,CACfL,eAAuD,EACvDM,IAA+B,KAC5B;EACH,SAAS;;EACT,MAAMC,GAAG,GAAGP,eAAe,CAACE,MAAM,CAACC,MAAM,GAAG,CAAC;EAC7C,MAAMK,OAAO,GAAGR,eAAe,CAACS,KAAK;EAErC,IAAIH,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAGD,GAAG,EAAE;IACzC,OAAOC,OAAO,GAAG,CAAC;EACpB;EAEA,IAAIF,IAAI,KAAK,WAAW,IAAIE,OAAO,GAAG,CAAC,EAAE;IACvC,OAAOA,OAAO,GAAG,CAAC;EACpB;EAEA,OAAOA,OAAO;AAChB,CAAC;AAED,MAAME,KAAK,GAAGA,CACZb,KAA6D,EAC7Dc,wBAAgC,EAChCZ,KAAa,EACbC,eAAuD,KACpD;EACH,SAAS;;EACT,MAAM;IAAEY,SAAS;IAAEC;EAAa,CAAC,GAAGhB,KAAK;EAEzC,IAAIe,SAAS,GAAG,CAAC,GAAG,IAAIC,YAAY,GAAG,CAACF,wBAAwB,EAAE;IAChE,MAAMG,QAAQ,GAAGT,QAAQ,CAACL,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLS,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAAChB,KAAK,GAAGe;IAClB,CAAC;EACH;EACA,IAAIF,SAAS,GAAG,GAAG,IAAIC,YAAY,GAAGF,wBAAwB,EAAE;IAC9D,MAAMG,QAAQ,GAAGT,QAAQ,CAACL,eAAe,EAAE,WAAW,CAAC;IACvD,OAAO;MACLS,KAAK,EAAEK,QAAQ;MACfC,KAAK,EAAE,CAAChB,KAAK,GAAGe;IAClB,CAAC;EACH;EACA,OAAO;IACLL,KAAK,EAAET,eAAe,CAACS,KAAK;IAC5BM,KAAK,EAAE,CAAChB,KAAK,GAAGC,eAAe,CAACS;EAClC,CAAC;AACH,CAAC;AAED,MAAMO,SAAS,GAAGA,CAACC,QAAgB,EAAEC,UAAuB,KAAK;EAC/D,SAAS;;EACT,OAAOvB,UAAU,CAACsB,QAAQ,EAAE;IAAEE,QAAQ,EAAE;EAAI,CAAC,EAAGC,QAAQ,IAAK;IAC3D,IAAIA,QAAQ,IAAIF,UAAU,EAAExB,OAAO,CAACwB,UAAU,CAAC,CAAC,CAAC;EACnD,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMG,eAAe,GAAG;EAC7BL,SAAS;EACTpB,QAAQ;EACRc;AACF,CAAC","ignoreList":[]}
@@ -3,7 +3,7 @@
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, { interpolate, LinearTransition, runOnJS, runOnUI, useAnimatedReaction, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
6
+ import Reanimated, { interpolate, LinearTransition, runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
7
7
  import { useTabContext } from '../../hooks/useTabContext';
8
8
  import { AnimationHelper } from './AnimationHelper';
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -21,52 +21,36 @@ export const ReanimatedTabView = /*#__PURE__*/React.memo(({
21
21
  width
22
22
  } = useWindowDimensions();
23
23
  const loadedScreens = useRef([navigationState.routes[navigationState.index]]);
24
+ const navigationStateRef = useSharedValue(navigationState);
24
25
  const scrollPosition = useSharedValue(navigationState.index);
25
26
  const {
26
27
  positionX
27
28
  } = useTabContext();
29
+ useEffect(() => {
30
+ navigationStateRef.value = navigationState;
31
+ }, [navigationState]);
28
32
  useAnimatedReaction(() => scrollPosition.value, value => {
29
33
  positionX.value = interpolate(value, navigationState.routes.map((_, i) => i * -width), navigationState.routes.map((_, i) => i), 'clamp');
30
34
  });
31
35
  const _navigate = index => {
32
- scrollPosition.value = AnimationHelper.animation(-index * width);
33
- navigate(index);
36
+ scrollPosition.value = AnimationHelper.animation(-index * width, () => navigate(index));
34
37
  };
35
38
  const minimumValueToChangeView = useMemo(() => width * percentageTrigger, [percentageTrigger, width]);
36
- const _navigationState = useSharedValue({
37
- size: 0,
38
- index: 0
39
- });
40
- useEffect(() => {
41
- runOnUI(() => {
42
- _navigationState.value.size = navigationState.routes.length;
43
- _navigationState.value.index = navigationState.index;
44
- })();
45
- }, [navigationState]);
46
39
  const panGesture = React.useMemo(() => Gesture.Pan().failOffsetY([-10, 10]).activeOffsetX([-20, 20]).onChange(event => {
47
40
  'worklet';
48
41
 
49
- scrollPosition.value = AnimationHelper.onChange(event, scrollPosition.value, width, _navigationState.value);
42
+ scrollPosition.value = AnimationHelper.onChange(event, scrollPosition.value, width, navigationStateRef.value);
50
43
  }).onEnd(event => {
51
44
  'worklet';
52
45
 
53
- const state = AnimationHelper.onEnd(event, minimumValueToChangeView, width, _navigationState.value);
54
- scrollPosition.value = AnimationHelper.animation(state.value);
55
- _navigationState.value.index = state.index;
56
- runOnJS(navigate)(state.index);
46
+ const state = AnimationHelper.onEnd(event, minimumValueToChangeView, width, navigationStateRef.value);
47
+ runOnJS(_navigate)(state.index);
57
48
  }), [minimumValueToChangeView, width]);
58
49
  const scrollPositionStyle = useAnimatedStyle(() => ({
59
50
  transform: [{
60
51
  translateX: interpolate(scrollPosition.value, [-width * (navigationState.routes.length - 1), 0], [-width * (navigationState.routes.length - 1), 0], 'clamp')
61
52
  }]
62
53
  }));
63
- const jumpTo = React.useCallback(key => {
64
- const newIndex = navigationState.routes.findIndex(route => route.key === key);
65
- if (newIndex === -1) {
66
- return;
67
- }
68
- scrollPosition.value = AnimationHelper.animation(-newIndex * width);
69
- }, [navigationState.routes, scrollPosition, width]);
70
54
  const chooseRender = useCallback((params, useRenderScene = true) => /*#__PURE__*/_jsx(View, {
71
55
  style: {
72
56
  width
@@ -76,29 +60,25 @@ export const ReanimatedTabView = /*#__PURE__*/React.memo(({
76
60
  const Routes = useMemo(() => navigationState.routes.map((route, index) => {
77
61
  if (!lazy) {
78
62
  return chooseRender({
79
- jumpTo,
80
63
  route
81
64
  });
82
65
  }
83
66
  const screen = loadedScreens.current.find(loadedScreen => loadedScreen?.key === route.key);
84
67
  if (screen !== undefined) {
85
68
  return chooseRender({
86
- jumpTo,
87
69
  route
88
70
  });
89
71
  }
90
72
  if (navigationState.index === index) {
91
73
  loadedScreens.current.push(route);
92
74
  return chooseRender({
93
- jumpTo,
94
75
  route
95
76
  });
96
77
  }
97
78
  return chooseRender({
98
- jumpTo,
99
79
  route
100
80
  }, false);
101
- }), [navigationState.routes, navigationState.index, lazy, chooseRender, jumpTo]);
81
+ }), [navigationState.routes, navigationState.index, lazy, chooseRender]);
102
82
  return /*#__PURE__*/_jsx(GestureHandlerRootView, {
103
83
  style: defaultStyles.flex,
104
84
  children: /*#__PURE__*/_jsxs(Reanimated.View, {
@@ -1 +1 @@
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
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","GestureHandlerRootView","Reanimated","interpolate","LinearTransition","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","useTabContext","AnimationHelper","jsx","_jsx","jsxs","_jsxs","ReanimatedTabView","memo","LazyPlaceholder","lazy","navigationState","percentageTrigger","renderScene","renderTabBar","navigate","screenOptions","width","loadedScreens","routes","index","navigationStateRef","scrollPosition","positionX","value","map","_","i","_navigate","animation","minimumValueToChangeView","panGesture","Pan","failOffsetY","activeOffsetX","onChange","event","onEnd","state","scrollPositionStyle","transform","translateX","length","chooseRender","params","useRenderScene","style","children","route","key","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,15 +1,11 @@
1
1
  import type { GestureStateChangeEvent, GestureUpdateEvent, PanGestureChangeEventPayload, PanGestureHandlerEventPayload } from 'react-native-gesture-handler';
2
- type NavigationState = {
3
- size: number;
4
- index: number;
5
- };
2
+ import type { ReanimatedTabViewTypes } from './types';
6
3
  export declare const AnimationHelper: {
7
- animation: (newValue: number, duration?: number) => number;
8
- onChange: (event: GestureUpdateEvent<PanGestureHandlerEventPayload & PanGestureChangeEventPayload>, animationValue: number, width: number, navigationState: NavigationState) => number;
9
- onEnd: (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>, minimumValueToChangeView: number, width: number, navigationState: NavigationState) => {
4
+ animation: (newValue: number, onFinished?: () => void) => number;
5
+ onChange: (event: GestureUpdateEvent<PanGestureHandlerEventPayload & PanGestureChangeEventPayload>, animationValue: number, width: number, navigationState: ReanimatedTabViewTypes.NavigationState) => number;
6
+ onEnd: (event: GestureStateChangeEvent<PanGestureHandlerEventPayload>, minimumValueToChangeView: number, width: number, navigationState: ReanimatedTabViewTypes.NavigationState) => {
10
7
  index: number;
11
8
  value: number;
12
9
  };
13
10
  };
14
- export {};
15
11
  //# sourceMappingURL=AnimationHelper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationHelper.d.ts","sourceRoot":"","sources":["../../../../../src/components/ReanimatedTopTab/AnimationHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;AAGtC,KAAK,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA0EvD,eAAO,MAAM,eAAe;0BALC,MAAM;sBAlE1B,kBAAkB,CACvB,6BAA6B,GAAG,4BAA4B,CAC7D,kBACe,MAAM,SACf,MAAM,mBACI,eAAe;mBAiCzB,uBAAuB,CAAC,6BAA6B,CAAC,4BACnC,MAAM,SACzB,MAAM,mBACI,eAAe;;;;CAkCjC,CAAC"}
1
+ {"version":3,"file":"AnimationHelper.d.ts","sourceRoot":"","sources":["../../../../../src/components/ReanimatedTopTab/AnimationHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AA4EtD,eAAO,MAAM,eAAe;0BAPC,MAAM,eAAe,MAAM,IAAI;sBAlEnD,kBAAkB,CACvB,6BAA6B,GAAG,4BAA4B,CAC7D,kBACe,MAAM,SACf,MAAM,mBACI,sBAAsB,CAAC,eAAe;mBAiChD,uBAAuB,CAAC,6BAA6B,CAAC,4BACnC,MAAM,SACzB,MAAM,mBACI,sBAAsB,CAAC,eAAe;;;;CAoCxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReanimatedTabView.d.ts","sourceRoot":"","sources":["../../../../../src/components/ReanimatedTopTab/ReanimatedTabView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAgBvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,sBAAsB,CAAC,eAAe,CAAC;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5E,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,sBAAsB,CAAC,gBAAgB,KAC5C,KAAK,CAAC,SAAS,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;CAC9D;AAED,eAAO,MAAM,iBAAiB,oDAuK7B,CAAC"}
1
+ {"version":3,"file":"ReanimatedTabView.d.ts","sourceRoot":"","sources":["../../../../../src/components/ReanimatedTopTab/ReanimatedTabView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAevE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,sBAAsB,CAAC,eAAe,CAAC;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5E,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,sBAAsB,CAAC,gBAAgB,KAC5C,KAAK,CAAC,SAAS,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;CAC9D;AAED,eAAO,MAAM,iBAAiB,oDA+I7B,CAAC"}
@@ -17,7 +17,6 @@ export declare namespace ReanimatedTabViewTypes {
17
17
  screenOptions?: ReanimatedTopTabNavigation.NavigationOptions;
18
18
  }
19
19
  interface SceneProps {
20
- jumpTo?: (key: string) => void;
21
20
  route: Route;
22
21
  }
23
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ReanimatedTopTab/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,yBAAiB,sBAAsB,CAAC;IACtC,UAAiB,KAAK;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;QACpD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,KAAY,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC;IAEjE,UAAiB,gBAAgB;QAC/B,eAAe,EAAE,eAAe,CAAC;QACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;KAC9D;IAED,UAAiB,UAAU;QACzB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/B,KAAK,EAAE,KAAK,CAAC;KACd;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/ReanimatedTopTab/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,yBAAiB,sBAAsB,CAAC;IACtC,UAAiB,KAAK;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;QACpD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,KAAY,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC;IAEjE,UAAiB,gBAAgB;QAC/B,eAAe,EAAE,eAAe,CAAC;QACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,aAAa,CAAC,EAAE,0BAA0B,CAAC,iBAAiB,CAAC;KAC9D;IAED,UAAiB,UAAU;QACzB,KAAK,EAAE,KAAK,CAAC;KACd;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-navigation-reanimated-top-tabs",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "react-navigation-reanimated-top-tabs",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -4,9 +4,8 @@ import type {
4
4
  PanGestureChangeEventPayload,
5
5
  PanGestureHandlerEventPayload,
6
6
  } from 'react-native-gesture-handler';
7
- import { withTiming } from 'react-native-reanimated';
8
-
9
- type NavigationState = { size: number; index: number };
7
+ import { runOnJS, withTiming } from 'react-native-reanimated';
8
+ import type { ReanimatedTabViewTypes } from './types';
10
9
 
11
10
  const onChange = (
12
11
  event: GestureUpdateEvent<
@@ -14,13 +13,13 @@ const onChange = (
14
13
  >,
15
14
  animationValue: number,
16
15
  width: number,
17
- navigationState: NavigationState
16
+ navigationState: ReanimatedTabViewTypes.NavigationState
18
17
  ) => {
19
18
  'worklet';
20
19
  if (animationValue > 0) {
21
20
  return 0;
22
21
  }
23
- const routesLength = navigationState.size - 1;
22
+ const routesLength = navigationState.routes.length - 1;
24
23
  if (animationValue < -width * routesLength) {
25
24
  return -width * routesLength;
26
25
  }
@@ -28,11 +27,11 @@ const onChange = (
28
27
  };
29
28
 
30
29
  const getIndex = (
31
- navigationState: NavigationState,
30
+ navigationState: ReanimatedTabViewTypes.NavigationState,
32
31
  type: 'increment' | 'decrement'
33
32
  ) => {
34
33
  'worklet';
35
- const max = navigationState.size - 1;
34
+ const max = navigationState.routes.length - 1;
36
35
  const current = navigationState.index;
37
36
 
38
37
  if (type === 'increment' && current < max) {
@@ -50,7 +49,7 @@ const onEnd = (
50
49
  event: GestureStateChangeEvent<PanGestureHandlerEventPayload>,
51
50
  minimumValueToChangeView: number,
52
51
  width: number,
53
- navigationState: NavigationState
52
+ navigationState: ReanimatedTabViewTypes.NavigationState
54
53
  ) => {
55
54
  'worklet';
56
55
  const { velocityX, translationX } = event;
@@ -75,9 +74,11 @@ const onEnd = (
75
74
  };
76
75
  };
77
76
 
78
- const animation = (newValue: number, duration = 350) => {
77
+ const animation = (newValue: number, onFinished?: () => void) => {
79
78
  'worklet';
80
- return withTiming(newValue, { duration });
79
+ return withTiming(newValue, { duration: 350 }, (finished) => {
80
+ if (finished && onFinished) runOnJS(onFinished)();
81
+ });
81
82
  };
82
83
 
83
84
  export const AnimationHelper = {
@@ -9,7 +9,6 @@ import Reanimated, {
9
9
  interpolate,
10
10
  LinearTransition,
11
11
  runOnJS,
12
- runOnUI,
13
12
  useAnimatedReaction,
14
13
  useAnimatedStyle,
15
14
  useSharedValue,
@@ -47,9 +46,14 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
47
46
  const loadedScreens = useRef([
48
47
  navigationState.routes[navigationState.index],
49
48
  ]);
49
+ const navigationStateRef = useSharedValue(navigationState);
50
50
  const scrollPosition = useSharedValue(navigationState.index);
51
51
  const { positionX } = useTabContext();
52
52
 
53
+ useEffect(() => {
54
+ navigationStateRef.value = navigationState;
55
+ }, [navigationState]);
56
+
53
57
  useAnimatedReaction(
54
58
  () => scrollPosition.value,
55
59
  (value) => {
@@ -63,8 +67,9 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
63
67
  );
64
68
 
65
69
  const _navigate = (index: number) => {
66
- scrollPosition.value = AnimationHelper.animation(-index * width);
67
- navigate(index);
70
+ scrollPosition.value = AnimationHelper.animation(-index * width, () =>
71
+ navigate(index)
72
+ );
68
73
  };
69
74
 
70
75
  const minimumValueToChangeView = useMemo(
@@ -72,15 +77,6 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
72
77
  [percentageTrigger, width]
73
78
  );
74
79
 
75
- const _navigationState = useSharedValue({ size: 0, index: 0 });
76
-
77
- useEffect(() => {
78
- runOnUI(() => {
79
- _navigationState.value.size = navigationState.routes.length;
80
- _navigationState.value.index = navigationState.index;
81
- })();
82
- }, [navigationState]);
83
-
84
80
  const panGesture = React.useMemo(
85
81
  () =>
86
82
  Gesture.Pan()
@@ -92,7 +88,7 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
92
88
  event,
93
89
  scrollPosition.value,
94
90
  width,
95
- _navigationState.value
91
+ navigationStateRef.value
96
92
  );
97
93
  })
98
94
  .onEnd((event) => {
@@ -101,11 +97,9 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
101
97
  event,
102
98
  minimumValueToChangeView,
103
99
  width,
104
- _navigationState.value
100
+ navigationStateRef.value
105
101
  );
106
- scrollPosition.value = AnimationHelper.animation(state.value);
107
- _navigationState.value.index = state.index;
108
- runOnJS(navigate)(state.index);
102
+ runOnJS(_navigate)(state.index);
109
103
  }),
110
104
  [minimumValueToChangeView, width]
111
105
  );
@@ -123,19 +117,6 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
123
117
  ],
124
118
  }));
125
119
 
126
- const jumpTo = React.useCallback(
127
- (key: string) => {
128
- const newIndex = navigationState.routes.findIndex(
129
- (route) => route.key === key
130
- );
131
- if (newIndex === -1) {
132
- return;
133
- }
134
- scrollPosition.value = AnimationHelper.animation(-newIndex * width);
135
- },
136
- [navigationState.routes, scrollPosition, width]
137
- );
138
-
139
120
  const chooseRender = useCallback(
140
121
  (params: ReanimatedTabViewTypes.SceneProps, useRenderScene = true) => (
141
122
  <View key={`RNNTabView_${params.route.key}`} style={{ width }}>
@@ -149,27 +130,21 @@ export const ReanimatedTabView = React.memo<ReanimatedTabViewProps>(
149
130
  () =>
150
131
  navigationState.routes.map((route, index) => {
151
132
  if (!lazy) {
152
- return chooseRender({ jumpTo, route });
133
+ return chooseRender({ route });
153
134
  }
154
135
  const screen = loadedScreens.current.find(
155
136
  (loadedScreen) => loadedScreen?.key === route.key
156
137
  );
157
138
  if (screen !== undefined) {
158
- return chooseRender({ jumpTo, route });
139
+ return chooseRender({ route });
159
140
  }
160
141
  if (navigationState.index === index) {
161
142
  loadedScreens.current.push(route);
162
- return chooseRender({ jumpTo, route });
143
+ return chooseRender({ route });
163
144
  }
164
- return chooseRender({ jumpTo, route }, false);
145
+ return chooseRender({ route }, false);
165
146
  }),
166
- [
167
- navigationState.routes,
168
- navigationState.index,
169
- lazy,
170
- chooseRender,
171
- jumpTo,
172
- ]
147
+ [navigationState.routes, navigationState.index, lazy, chooseRender]
173
148
  );
174
149
 
175
150
  return (
@@ -18,7 +18,6 @@ export namespace ReanimatedTabViewTypes {
18
18
  }
19
19
 
20
20
  export interface SceneProps {
21
- jumpTo?: (key: string) => void;
22
21
  route: Route;
23
22
  }
24
23
  }