react-navigation-reanimated-top-tabs 0.4.0 → 0.6.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 (32) hide show
  1. package/lib/commonjs/components/wrappers/ScrollView.js +3 -1
  2. package/lib/commonjs/components/wrappers/ScrollView.js.map +1 -1
  3. package/lib/commonjs/context/Context.hooks.js +19 -1
  4. package/lib/commonjs/context/Context.hooks.js.map +1 -1
  5. package/lib/commonjs/context/Context.js +6 -3
  6. package/lib/commonjs/context/Context.js.map +1 -1
  7. package/lib/commonjs/hooks/useScreenScrollable.js +5 -3
  8. package/lib/commonjs/hooks/useScreenScrollable.js.map +1 -1
  9. package/lib/module/components/wrappers/ScrollView.js +3 -1
  10. package/lib/module/components/wrappers/ScrollView.js.map +1 -1
  11. package/lib/module/context/Context.hooks.js +20 -2
  12. package/lib/module/context/Context.hooks.js.map +1 -1
  13. package/lib/module/context/Context.js +6 -3
  14. package/lib/module/context/Context.js.map +1 -1
  15. package/lib/module/hooks/useScreenScrollable.js +6 -4
  16. package/lib/module/hooks/useScreenScrollable.js.map +1 -1
  17. package/lib/typescript/src/components/wrappers/ScrollView.d.ts.map +1 -1
  18. package/lib/typescript/src/context/Context.d.ts.map +1 -1
  19. package/lib/typescript/src/context/Context.hooks.d.ts +1 -0
  20. package/lib/typescript/src/context/Context.hooks.d.ts.map +1 -1
  21. package/lib/typescript/src/hooks/useScreenScrollable.d.ts +1 -0
  22. package/lib/typescript/src/hooks/useScreenScrollable.d.ts.map +1 -1
  23. package/lib/typescript/src/index.d.ts +1 -0
  24. package/lib/typescript/src/index.d.ts.map +1 -1
  25. package/lib/typescript/src/types.d.ts +1 -0
  26. package/lib/typescript/src/types.d.ts.map +1 -1
  27. package/package.json +2 -2
  28. package/src/components/wrappers/ScrollView.tsx +2 -0
  29. package/src/context/Context.hooks.ts +32 -2
  30. package/src/context/Context.tsx +9 -2
  31. package/src/hooks/useScreenScrollable.ts +10 -2
  32. package/src/types.ts +1 -0
@@ -28,7 +28,8 @@ const ScrollView = ({
28
28
  contentContainerStyle: _contentContainerStyle,
29
29
  onScroll,
30
30
  bounces,
31
- animatedProps
31
+ animatedProps,
32
+ overScrollMode
32
33
  } = (0, _useScreenScrollable.useScreenScrollable)();
33
34
  const {
34
35
  innerLayout
@@ -55,6 +56,7 @@ const ScrollView = ({
55
56
  onScroll: onScroll,
56
57
  bounces: bounces,
57
58
  animatedProps: animatedProps,
59
+ overScrollMode: overScrollMode,
58
60
  ...props,
59
61
  children: children
60
62
  })
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireDefault","_react","_native","_useTabContext","_useScreenGesture","_useScreenScrollable","_useScreenProperties","_jsxRuntime","e","__esModule","default","ScrollView","children","style","contentContainerStyle","onLayout","props","gesture","useScreenGesture","_style","_contentContainerStyle","onScroll","bounces","animatedProps","useScreenScrollable","innerLayout","useScreenProperties","context","useTabContext","key","useRoute","_ref","useRef","_onLayout","event","value","nativeEvent","layout","screen","setRef","current","jsx","GestureDetector","ref","styleSheet","exports","StyleSheet","create","flexGrow"],"sourceRoot":"../../../../src","sources":["components/wrappers/ScrollView.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AACA,IAAAQ,oBAAA,GAAAR,OAAA;AACA,IAAAS,oBAAA,GAAAT,OAAA;AAAsE,IAAAU,WAAA,GAAAV,OAAA;AAAA,SAAAG,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAO/D,MAAMG,UAAU,GAAGA,CAAC;EACzBC,QAAQ;EACRC,KAAK;EACLC,qBAAqB;EACrBC,QAAQ;EACR,GAAGC;AACe,CAAC,KAAK;EACxB,MAAMC,OAAO,GAAG,IAAAC,kCAAgB,EAAC,CAAC;EAClC,MAAM;IACJL,KAAK,EAAEM,MAAM;IACbL,qBAAqB,EAAEM,sBAAsB;IAC7CC,QAAQ;IACRC,OAAO;IACPC;EACF,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EACzB,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,4BAAa,EAAC,CAAC;EAEnC,MAAM;IAAEC;EAAI,CAAC,GAAG,IAAAC,gBAAQ,EAAC,CAAC;EAC1B,MAAMC,IAAI,GAAG,IAAAC,aAAM,EAAwB,IAAI,CAAC;EAEhD,MAAMC,SAAS,GAAIC,KAAwB,IAAK;IAC9CnB,QAAQ,GAAGmB,KAAK,CAAC;IACjBT,WAAW,CAACU,KAAK,GAAGD,KAAK,CAACE,WAAW,CAACC,MAAM;IAC5CV,OAAO,CAACW,MAAM,CAACC,MAAM,CAACV,GAAG,EAAEE,IAAI,CAACS,OAAO,CAAC;EAC1C,CAAC;EAED,oBACE,IAAAjC,WAAA,CAAAkC,GAAA,EAAC3C,0BAAA,CAAA4C,eAAe;IAACzB,OAAO,EAAEA,OAAQ;IAAAL,QAAA,eAChC,IAAAL,WAAA,CAAAkC,GAAA,EAAC1C,sBAAA,CAAAW,OAAU,CAACC,UAAU;MACpBgC,GAAG,EAAEZ,IAAK;MACVjB,qBAAqB,EAAE,CACrBM,sBAAsB,EACtBwB,UAAU,CAAC9B,qBAAqB,EAChCA,qBAAqB,CACrB;MACFC,QAAQ,EAAEkB,SAAU;MACpBpB,KAAK,EAAE,CAACM,MAAM,EAAEN,KAAK,CAAE;MACvBQ,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,aAAa,EAAEA,aAAc;MAAA,GACzBP,KAAK;MAAAJ,QAAA,EAERA;IAAQ,CACY;EAAC,CACT,CAAC;AAEtB,CAAC;AAACiC,OAAA,CAAAlC,UAAA,GAAAA,UAAA;AAEF,MAAMiC,UAAU,GAAGE,uBAAU,CAACC,MAAM,CAAC;EACnCjC,qBAAqB,EAAE;IACrBkC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireDefault","_react","_native","_useTabContext","_useScreenGesture","_useScreenScrollable","_useScreenProperties","_jsxRuntime","e","__esModule","default","ScrollView","children","style","contentContainerStyle","onLayout","props","gesture","useScreenGesture","_style","_contentContainerStyle","onScroll","bounces","animatedProps","overScrollMode","useScreenScrollable","innerLayout","useScreenProperties","context","useTabContext","key","useRoute","_ref","useRef","_onLayout","event","value","nativeEvent","layout","screen","setRef","current","jsx","GestureDetector","ref","styleSheet","exports","StyleSheet","create","flexGrow"],"sourceRoot":"../../../../src","sources":["components/wrappers/ScrollView.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AACA,IAAAQ,oBAAA,GAAAR,OAAA;AACA,IAAAS,oBAAA,GAAAT,OAAA;AAAsE,IAAAU,WAAA,GAAAV,OAAA;AAAA,SAAAG,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAO/D,MAAMG,UAAU,GAAGA,CAAC;EACzBC,QAAQ;EACRC,KAAK;EACLC,qBAAqB;EACrBC,QAAQ;EACR,GAAGC;AACe,CAAC,KAAK;EACxB,MAAMC,OAAO,GAAG,IAAAC,kCAAgB,EAAC,CAAC;EAClC,MAAM;IACJL,KAAK,EAAEM,MAAM;IACbL,qBAAqB,EAAEM,sBAAsB;IAC7CC,QAAQ;IACRC,OAAO;IACPC,aAAa;IACbC;EACF,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EACzB,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EAC7C,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,4BAAa,EAAC,CAAC;EAEnC,MAAM;IAAEC;EAAI,CAAC,GAAG,IAAAC,gBAAQ,EAAC,CAAC;EAC1B,MAAMC,IAAI,GAAG,IAAAC,aAAM,EAAwB,IAAI,CAAC;EAEhD,MAAMC,SAAS,GAAIC,KAAwB,IAAK;IAC9CpB,QAAQ,GAAGoB,KAAK,CAAC;IACjBT,WAAW,CAACU,KAAK,GAAGD,KAAK,CAACE,WAAW,CAACC,MAAM;IAC5CV,OAAO,CAACW,MAAM,CAACC,MAAM,CAACV,GAAG,EAAEE,IAAI,CAACS,OAAO,CAAC;EAC1C,CAAC;EAED,oBACE,IAAAlC,WAAA,CAAAmC,GAAA,EAAC5C,0BAAA,CAAA6C,eAAe;IAAC1B,OAAO,EAAEA,OAAQ;IAAAL,QAAA,eAChC,IAAAL,WAAA,CAAAmC,GAAA,EAAC3C,sBAAA,CAAAW,OAAU,CAACC,UAAU;MACpBiC,GAAG,EAAEZ,IAAK;MACVlB,qBAAqB,EAAE,CACrBM,sBAAsB,EACtByB,UAAU,CAAC/B,qBAAqB,EAChCA,qBAAqB,CACrB;MACFC,QAAQ,EAAEmB,SAAU;MACpBrB,KAAK,EAAE,CAACM,MAAM,EAAEN,KAAK,CAAE;MACvBQ,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,aAAa,EAAEA,aAAc;MAC7BC,cAAc,EAAEA,cAAe;MAAA,GAC3BR,KAAK;MAAAJ,QAAA,EAERA;IAAQ,CACY;EAAC,CACT,CAAC;AAEtB,CAAC;AAACkC,OAAA,CAAAnC,UAAA,GAAAA,UAAA;AAEF,MAAMkC,UAAU,GAAGE,uBAAU,CAACC,MAAM,CAAC;EACnClC,qBAAqB,EAAE;IACrBmC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -181,6 +181,7 @@ const useTransformHeaderOnTabChange = ({
181
181
  config
182
182
  }) => {
183
183
  const headerHeight = (0, _reactNativeReanimated.useSharedValue)(0);
184
+ const isHeaderHeightSet = (0, _reactNativeReanimated.useSharedValue)(false);
184
185
  const transformationY = (0, _reactNativeReanimated.useSharedValue)(0);
185
186
  const transformationX = (0, _reactNativeReanimated.useSharedValue)(0);
186
187
  const currentYPosition = (0, _reactNativeReanimated.useSharedValue)(0);
@@ -197,6 +198,22 @@ const useTransformHeaderOnTabChange = ({
197
198
  return 0;
198
199
  }
199
200
  }), [config]);
201
+
202
+ // NOTE: headerHeight is setting onLayout, so at very first render it has value equal 0,
203
+ // but right after the header content renders onLayout calls once again.
204
+ // That's why we use debounce
205
+ const debouncedSetIsHeaderSet = (0, _lodash.throttle)(() => {
206
+ isHeaderHeightSet.value = true;
207
+ }, 10);
208
+ const cancel = () => {
209
+ debouncedSetIsHeaderSet.cancel();
210
+ };
211
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => headerHeight.value, (prepared, previous) => {
212
+ (0, _reactNativeReanimated.runOnJS)(cancel)();
213
+ if (previous !== prepared) {
214
+ (0, _reactNativeReanimated.runOnJS)(debouncedSetIsHeaderSet)();
215
+ }
216
+ }, []);
200
217
  (0, _reactNativeReanimated.useAnimatedReaction)(() => transformationX.value, value => {
201
218
  if (currentYPosition.value === -headerHeight.value) return;
202
219
  transformationY.value = (0, _reactNativeReanimated.interpolate)(value, inputRange.value, outputRange.value, 'clamp');
@@ -205,7 +222,8 @@ const useTransformHeaderOnTabChange = ({
205
222
  transformationY,
206
223
  transformationX,
207
224
  currentYPosition,
208
- headerHeight
225
+ headerHeight,
226
+ isHeaderHeightSet
209
227
  };
210
228
  };
211
229
  const ContextHooks = exports.ContextHooks = {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeReanimated","require","_react","_reactNativeGestureHandler","_lodash","_Context","useResetApproachingScreenScrollOffset","context","transformationX","currentYPosition","screenOffsets","useDerivedValue","Object","values","screen","properties","map","scrollY","value","resetApproachingScreenOffset","index","shouldReset","scrollTo","getRef","route","getKeyForIndex","current","y","animated","useAnimatedReaction","previous","approachingIndex","ContextHelpers","getTargetIndex","approachingScreenOffset","runOnJS","usePrepareKeyMap","state","indexToKeyMap","useRef","routes","reduce","previousValue","currentValue","currentIndex","key","usePrepareScreen","screenProperties","prev","innerLayout","makeMutable","height","width","x","nativeGesture","Gesture","Native","outerLayout","scrollRef","setRef","ref","newProperties","assign","_ref","usePrepareContext","useTransformHeaderOnTabChange","config","headerHeight","useSharedValue","transformationY","inputRange","_","idx","outputRange","type","interpolate","ContextHooks","exports"],"sourceRoot":"../../../src","sources":["context/Context.hooks.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeReanimated","require","_react","_reactNativeGestureHandler","_lodash","_Context","useResetApproachingScreenScrollOffset","context","transformationX","currentYPosition","screenOffsets","useDerivedValue","Object","values","screen","properties","map","scrollY","value","resetApproachingScreenOffset","index","shouldReset","scrollTo","getRef","route","getKeyForIndex","current","y","animated","useAnimatedReaction","previous","approachingIndex","ContextHelpers","getTargetIndex","approachingScreenOffset","runOnJS","usePrepareKeyMap","state","indexToKeyMap","useRef","routes","reduce","previousValue","currentValue","currentIndex","key","usePrepareScreen","screenProperties","prev","innerLayout","makeMutable","height","width","x","nativeGesture","Gesture","Native","outerLayout","scrollRef","setRef","ref","newProperties","assign","_ref","usePrepareContext","useTransformHeaderOnTabChange","config","headerHeight","useSharedValue","isHeaderHeightSet","transformationY","inputRange","_","idx","outputRange","type","debouncedSetIsHeaderSet","throttle","cancel","prepared","interpolate","ContextHooks","exports"],"sourceRoot":"../../../src","sources":["context/Context.hooks.ts"],"mappings":"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","ignoreList":[]}
@@ -25,7 +25,8 @@ const Provider = exports.Provider = /*#__PURE__*/(0, _react.memo)(({
25
25
  transformationX,
26
26
  transformationY,
27
27
  currentYPosition,
28
- headerHeight
28
+ headerHeight,
29
+ isHeaderHeightSet
29
30
  } = _Context.ContextHooks.useTransformHeaderOnTabChange({
30
31
  config
31
32
  });
@@ -47,7 +48,8 @@ const Provider = exports.Provider = /*#__PURE__*/(0, _react.memo)(({
47
48
  topTabNativeGesture,
48
49
  transformationX,
49
50
  transformationY,
50
- context
51
+ context,
52
+ isHeaderHeightSet
51
53
  },
52
54
  children: children({
53
55
  closeOffset,
@@ -61,7 +63,8 @@ const Provider = exports.Provider = /*#__PURE__*/(0, _react.memo)(({
61
63
  topTabNativeGesture,
62
64
  transformationX,
63
65
  transformationY,
64
- context
66
+ context,
67
+ isHeaderHeightSet
65
68
  })
66
69
  });
67
70
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_Context","_jsxRuntime","Context","exports","createContext","Provider","memo","children","config","context","gestureEnabled","useSharedValue","currentScreenIndex","navHeight","closeOffset","topTabHeight","topTabNativeGesture","useRef","Gesture","Native","current","transformationX","transformationY","currentYPosition","headerHeight","ContextHooks","useTransformHeaderOnTabChange","useResetApproachingScreenScrollOffset","jsx","value"],"sourceRoot":"../../../src","sources":["context/Context.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA+C,IAAAI,WAAA,GAAAJ,OAAA;AAExC,MAAMK,OAAO,GAAAC,OAAA,CAAAD,OAAA,gBAAG,IAAAE,oBAAa,EAClC,CAAC,CACH,CAAC;AAEM,MAAMC,QAAQ,GAAAF,OAAA,CAAAE,QAAA,gBAAG,IAAAC,WAAI,EAC1B,CAAC;EACCC,QAAQ;EACRC,MAAM;EACNC;AAC6C,CAAC,KAAK;EACnD,MAAMC,cAAc,GAAG,IAAAC,qCAAc,EAAC,IAAI,CAAC;EAC3C,MAAMC,kBAAkB,GAAG,IAAAD,qCAAc,EAAC,CAAC,CAAC;EAE5C,MAAME,SAAS,GAAG,IAAAF,qCAAc,EAAC,CAAC,CAAC;EACnC,MAAMG,WAAW,GAAG,IAAAH,qCAAc,EAAC,CAAC,CAAC;EACrC,MAAMI,YAAY,GAAG,IAAAJ,qCAAc,EAAC,CAAC,CAAC;EAEtC,MAAMK,mBAAmB,GAAG,IAAAC,aAAM,EAACC,kCAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO;EAE5D,MAAM;IAAEC,eAAe;IAAEC,eAAe;IAAEC,gBAAgB;IAAEC;EAAa,CAAC,GACxEC,qBAAY,CAACC,6BAA6B,CAAC;IAAElB;EAAO,CAAC,CAAC;EAExDiB,qBAAY,CAACE,qCAAqC,CAAC;IACjDJ,gBAAgB;IAChBF,eAAe;IACfZ;EACF,CAAC,CAAC;EAEF,oBACE,IAAAR,WAAA,CAAA2B,GAAA,EAAC1B,OAAO,CAACG,QAAQ;IACfwB,KAAK,EAAE;MACLf,WAAW;MACXN,MAAM;MACNI,kBAAkB;MAClBW,gBAAgB;MAChBb,cAAc;MACdc,YAAY;MACZX,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBK,eAAe;MACfC,eAAe;MACfb;IACF,CAAE;IAAAF,QAAA,EAEDA,QAAQ,CAAC;MACRO,WAAW;MACXN,MAAM;MACNI,kBAAkB;MAClBW,gBAAgB;MAChBb,cAAc;MACdc,YAAY;MACZX,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBK,eAAe;MACfC,eAAe;MACfb;IACF,CAAC;EAAC,CACc,CAAC;AAEvB,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_Context","_jsxRuntime","Context","exports","createContext","Provider","memo","children","config","context","gestureEnabled","useSharedValue","currentScreenIndex","navHeight","closeOffset","topTabHeight","topTabNativeGesture","useRef","Gesture","Native","current","transformationX","transformationY","currentYPosition","headerHeight","isHeaderHeightSet","ContextHooks","useTransformHeaderOnTabChange","useResetApproachingScreenScrollOffset","jsx","value"],"sourceRoot":"../../../src","sources":["context/Context.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAA+C,IAAAI,WAAA,GAAAJ,OAAA;AAExC,MAAMK,OAAO,GAAAC,OAAA,CAAAD,OAAA,gBAAG,IAAAE,oBAAa,EAClC,CAAC,CACH,CAAC;AAEM,MAAMC,QAAQ,GAAAF,OAAA,CAAAE,QAAA,gBAAG,IAAAC,WAAI,EAC1B,CAAC;EACCC,QAAQ;EACRC,MAAM;EACNC;AAC6C,CAAC,KAAK;EACnD,MAAMC,cAAc,GAAG,IAAAC,qCAAc,EAAC,IAAI,CAAC;EAC3C,MAAMC,kBAAkB,GAAG,IAAAD,qCAAc,EAAC,CAAC,CAAC;EAE5C,MAAME,SAAS,GAAG,IAAAF,qCAAc,EAAC,CAAC,CAAC;EACnC,MAAMG,WAAW,GAAG,IAAAH,qCAAc,EAAC,CAAC,CAAC;EACrC,MAAMI,YAAY,GAAG,IAAAJ,qCAAc,EAAC,CAAC,CAAC;EAEtC,MAAMK,mBAAmB,GAAG,IAAAC,aAAM,EAACC,kCAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO;EAE5D,MAAM;IACJC,eAAe;IACfC,eAAe;IACfC,gBAAgB;IAChBC,YAAY;IACZC;EACF,CAAC,GAAGC,qBAAY,CAACC,6BAA6B,CAAC;IAAEnB;EAAO,CAAC,CAAC;EAE1DkB,qBAAY,CAACE,qCAAqC,CAAC;IACjDL,gBAAgB;IAChBF,eAAe;IACfZ;EACF,CAAC,CAAC;EAEF,oBACE,IAAAR,WAAA,CAAA4B,GAAA,EAAC3B,OAAO,CAACG,QAAQ;IACfyB,KAAK,EAAE;MACLhB,WAAW;MACXN,MAAM;MACNI,kBAAkB;MAClBW,gBAAgB;MAChBb,cAAc;MACdc,YAAY;MACZX,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBK,eAAe;MACfC,eAAe;MACfb,OAAO;MACPgB;IACF,CAAE;IAAAlB,QAAA,EAEDA,QAAQ,CAAC;MACRO,WAAW;MACXN,MAAM;MACNI,kBAAkB;MAClBW,gBAAgB;MAChBb,cAAc;MACdc,YAAY;MACZX,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBK,eAAe;MACfC,eAAe;MACfb,OAAO;MACPgB;IACF,CAAC;EAAC,CACc,CAAC;AAEvB,CACF,CAAC","ignoreList":[]}
@@ -31,12 +31,13 @@ const useScreenScrollable = () => {
31
31
  headerHeight,
32
32
  context,
33
33
  topTabHeight,
34
- transformationY
34
+ transformationY,
35
+ isHeaderHeightSet
35
36
  } = (0, _useTabContext.useTabContext)();
36
37
  const screen = (0, _useScreenProperties.useScreenProperties)();
37
38
  const navigationHeader = React.useContext(_elements.HeaderHeightContext) ?? top;
38
39
  const animatedProps = (0, _reactNativeReanimated.useAnimatedProps)(() => ({
39
- scrollEnabled: !gestureEnabled.value || currentYPosition.value === -headerHeight.value
40
+ scrollEnabled: isHeaderHeightSet.value && (!gestureEnabled.value || currentYPosition.value === -headerHeight.value)
40
41
  }));
41
42
  const onScroll = (0, _reactNativeReanimated.useAnimatedScrollHandler)(({
42
43
  contentOffset
@@ -46,7 +47,7 @@ const useScreenScrollable = () => {
46
47
  scrollPosition.value = contentOffset.y;
47
48
  });
48
49
  const oppositeHeaderState = (0, _reactNativeReanimated.useDerivedValue)(() => transformationY.value >= 0 ? headerHeight.value : 0);
49
- const difference = (0, _reactNativeReanimated.useDerivedValue)(() => Math.abs(screen.outerLayout.value.height - screen.innerLayout.value.height));
50
+ const difference = (0, _reactNativeReanimated.useDerivedValue)(() => (0, _reactNativeReanimated.clamp)(screen.outerLayout.value.height - screen.innerLayout.value.height, 0, Infinity));
50
51
  const style = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
51
52
  minHeight: height - topTabHeight.value - oppositeHeaderState.value - navigationHeader - difference.value
52
53
  }));
@@ -57,6 +58,7 @@ const useScreenScrollable = () => {
57
58
  paddingBottom: bottom
58
59
  },
59
60
  onScroll,
61
+ overScrollMode: 'never',
60
62
  style
61
63
  };
62
64
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_native","require","_reactNative","_reactNativeSafeAreaContext","_useTabContext","React","_interopRequireWildcard","_elements","_reactNativeReanimated","_useScreenProperties","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useScreenScrollable","key","useRoute","height","useWindowDimensions","bottom","top","useSafeAreaInsets","currentYPosition","gestureEnabled","headerHeight","context","topTabHeight","transformationY","useTabContext","screen","useScreenProperties","navigationHeader","useContext","HeaderHeightContext","animatedProps","useAnimatedProps","scrollEnabled","value","onScroll","useAnimatedScrollHandler","contentOffset","scrollPosition","properties","scrollY","y","oppositeHeaderState","useDerivedValue","difference","Math","abs","outerLayout","innerLayout","style","useAnimatedStyle","minHeight","bounces","contentContainerStyle","paddingBottom","exports"],"sourceRoot":"../../../src","sources":["hooks/useScreenScrollable.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_native","require","_reactNative","_reactNativeSafeAreaContext","_useTabContext","React","_interopRequireWildcard","_elements","_reactNativeReanimated","_useScreenProperties","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useScreenScrollable","key","useRoute","height","useWindowDimensions","bottom","top","useSafeAreaInsets","currentYPosition","gestureEnabled","headerHeight","context","topTabHeight","transformationY","isHeaderHeightSet","useTabContext","screen","useScreenProperties","navigationHeader","useContext","HeaderHeightContext","animatedProps","useAnimatedProps","scrollEnabled","value","onScroll","useAnimatedScrollHandler","contentOffset","scrollPosition","properties","scrollY","y","oppositeHeaderState","useDerivedValue","difference","clamp","outerLayout","innerLayout","Infinity","style","useAnimatedStyle","minHeight","bounces","contentContainerStyle","paddingBottom","overScrollMode","exports"],"sourceRoot":"../../../src","sources":["hooks/useScreenScrollable.ts"],"mappings":"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","ignoreList":[]}
@@ -23,7 +23,8 @@ export const ScrollView = ({
23
23
  contentContainerStyle: _contentContainerStyle,
24
24
  onScroll,
25
25
  bounces,
26
- animatedProps
26
+ animatedProps,
27
+ overScrollMode
27
28
  } = useScreenScrollable();
28
29
  const {
29
30
  innerLayout
@@ -50,6 +51,7 @@ export const ScrollView = ({
50
51
  onScroll: onScroll,
51
52
  bounces: bounces,
52
53
  animatedProps: animatedProps,
54
+ overScrollMode: overScrollMode,
53
55
  ...props,
54
56
  children: children
55
57
  })
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","GestureDetector","Reanimated","useRef","useRoute","useTabContext","useScreenGesture","useScreenScrollable","useScreenProperties","jsx","_jsx","ScrollView","children","style","contentContainerStyle","onLayout","props","gesture","_style","_contentContainerStyle","onScroll","bounces","animatedProps","innerLayout","context","key","_ref","_onLayout","event","value","nativeEvent","layout","screen","setRef","current","ref","styleSheet","create","flexGrow"],"sourceRoot":"../../../../src","sources":["components/wrappers/ScrollView.tsx"],"mappings":";;AAAA,SAGEA,UAAU,QACL,cAAc;AACrB,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,UAAU,MAA8B,yBAAyB;AACxE,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;AAOtE,OAAO,MAAMC,UAAU,GAAGA,CAAC;EACzBC,QAAQ;EACRC,KAAK;EACLC,qBAAqB;EACrBC,QAAQ;EACR,GAAGC;AACe,CAAC,KAAK;EACxB,MAAMC,OAAO,GAAGX,gBAAgB,CAAC,CAAC;EAClC,MAAM;IACJO,KAAK,EAAEK,MAAM;IACbJ,qBAAqB,EAAEK,sBAAsB;IAC7CC,QAAQ;IACRC,OAAO;IACPC;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,CAAwB,IAAI,CAAC;EAEhD,MAAMwB,SAAS,GAAIC,KAAwB,IAAK;IAC9Cb,QAAQ,GAAGa,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;IAACgB,OAAO,EAAEA,OAAQ;IAAAL,QAAA,eAChCF,IAAA,CAACR,UAAU,CAACS,UAAU;MACpBwB,GAAG,EAAET,IAAK;MACVZ,qBAAqB,EAAE,CACrBK,sBAAsB,EACtBiB,UAAU,CAACtB,qBAAqB,EAChCA,qBAAqB,CACrB;MACFC,QAAQ,EAAEY,SAAU;MACpBd,KAAK,EAAE,CAACK,MAAM,EAAEL,KAAK,CAAE;MACvBO,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,aAAa,EAAEA,aAAc;MAAA,GACzBN,KAAK;MAAAJ,QAAA,EAERA;IAAQ,CACY;EAAC,CACT,CAAC;AAEtB,CAAC;AAED,MAAMwB,UAAU,GAAGpC,UAAU,CAACqC,MAAM,CAAC;EACnCvB,qBAAqB,EAAE;IACrBwB,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","GestureDetector","Reanimated","useRef","useRoute","useTabContext","useScreenGesture","useScreenScrollable","useScreenProperties","jsx","_jsx","ScrollView","children","style","contentContainerStyle","onLayout","props","gesture","_style","_contentContainerStyle","onScroll","bounces","animatedProps","overScrollMode","innerLayout","context","key","_ref","_onLayout","event","value","nativeEvent","layout","screen","setRef","current","ref","styleSheet","create","flexGrow"],"sourceRoot":"../../../../src","sources":["components/wrappers/ScrollView.tsx"],"mappings":";;AAAA,SAGEA,UAAU,QACL,cAAc;AACrB,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,UAAU,MAA8B,yBAAyB;AACxE,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;AAOtE,OAAO,MAAMC,UAAU,GAAGA,CAAC;EACzBC,QAAQ;EACRC,KAAK;EACLC,qBAAqB;EACrBC,QAAQ;EACR,GAAGC;AACe,CAAC,KAAK;EACxB,MAAMC,OAAO,GAAGX,gBAAgB,CAAC,CAAC;EAClC,MAAM;IACJO,KAAK,EAAEK,MAAM;IACbJ,qBAAqB,EAAEK,sBAAsB;IAC7CC,QAAQ;IACRC,OAAO;IACPC,aAAa;IACbC;EACF,CAAC,GAAGhB,mBAAmB,CAAC,CAAC;EACzB,MAAM;IAAEiB;EAAY,CAAC,GAAGhB,mBAAmB,CAAC,CAAC;EAC7C,MAAM;IAAEiB;EAAQ,CAAC,GAAGpB,aAAa,CAAC,CAAC;EAEnC,MAAM;IAAEqB;EAAI,CAAC,GAAGtB,QAAQ,CAAC,CAAC;EAC1B,MAAMuB,IAAI,GAAGxB,MAAM,CAAwB,IAAI,CAAC;EAEhD,MAAMyB,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,oBACEzB,IAAA,CAACT,eAAe;IAACgB,OAAO,EAAEA,OAAQ;IAAAL,QAAA,eAChCF,IAAA,CAACR,UAAU,CAACS,UAAU;MACpByB,GAAG,EAAET,IAAK;MACVb,qBAAqB,EAAE,CACrBK,sBAAsB,EACtBkB,UAAU,CAACvB,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,CACY;EAAC,CACT,CAAC;AAEtB,CAAC;AAED,MAAMyB,UAAU,GAAGrC,UAAU,CAACsC,MAAM,CAAC;EACnCxB,qBAAqB,EAAE;IACrByB,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  import { interpolate, makeMutable, runOnJS, useAnimatedReaction, useDerivedValue, useSharedValue } from 'react-native-reanimated';
4
4
  import { useRef } from 'react';
5
5
  import { Gesture } from 'react-native-gesture-handler';
6
- import { assign } from 'lodash';
6
+ import { assign, throttle } from 'lodash';
7
7
  import { ContextHelpers } from './Context.helpers';
8
8
 
9
9
  /**
@@ -178,6 +178,7 @@ const useTransformHeaderOnTabChange = ({
178
178
  config
179
179
  }) => {
180
180
  const headerHeight = useSharedValue(0);
181
+ const isHeaderHeightSet = useSharedValue(false);
181
182
  const transformationY = useSharedValue(0);
182
183
  const transformationX = useSharedValue(0);
183
184
  const currentYPosition = useSharedValue(0);
@@ -194,6 +195,22 @@ const useTransformHeaderOnTabChange = ({
194
195
  return 0;
195
196
  }
196
197
  }), [config]);
198
+
199
+ // NOTE: headerHeight is setting onLayout, so at very first render it has value equal 0,
200
+ // but right after the header content renders onLayout calls once again.
201
+ // That's why we use debounce
202
+ const debouncedSetIsHeaderSet = throttle(() => {
203
+ isHeaderHeightSet.value = true;
204
+ }, 10);
205
+ const cancel = () => {
206
+ debouncedSetIsHeaderSet.cancel();
207
+ };
208
+ useAnimatedReaction(() => headerHeight.value, (prepared, previous) => {
209
+ runOnJS(cancel)();
210
+ if (previous !== prepared) {
211
+ runOnJS(debouncedSetIsHeaderSet)();
212
+ }
213
+ }, []);
197
214
  useAnimatedReaction(() => transformationX.value, value => {
198
215
  if (currentYPosition.value === -headerHeight.value) return;
199
216
  transformationY.value = interpolate(value, inputRange.value, outputRange.value, 'clamp');
@@ -202,7 +219,8 @@ const useTransformHeaderOnTabChange = ({
202
219
  transformationY,
203
220
  transformationX,
204
221
  currentYPosition,
205
- headerHeight
222
+ headerHeight,
223
+ isHeaderHeightSet
206
224
  };
207
225
  };
208
226
  export const ContextHooks = {
@@ -1 +1 @@
1
- {"version":3,"names":["interpolate","makeMutable","runOnJS","useAnimatedReaction","useDerivedValue","useSharedValue","useRef","Gesture","assign","ContextHelpers","useResetApproachingScreenScrollOffset","context","transformationX","currentYPosition","screenOffsets","Object","values","screen","properties","map","scrollY","value","resetApproachingScreenOffset","index","shouldReset","scrollTo","getRef","route","getKeyForIndex","current","y","animated","previous","approachingIndex","getTargetIndex","approachingScreenOffset","usePrepareKeyMap","state","indexToKeyMap","routes","reduce","previousValue","currentValue","currentIndex","key","usePrepareScreen","screenProperties","prev","innerLayout","height","width","x","nativeGesture","Native","outerLayout","scrollRef","setRef","ref","newProperties","_ref","usePrepareContext","useTransformHeaderOnTabChange","config","headerHeight","transformationY","inputRange","_","idx","outputRange","type","ContextHooks"],"sourceRoot":"../../../src","sources":["context/Context.hooks.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["interpolate","makeMutable","runOnJS","useAnimatedReaction","useDerivedValue","useSharedValue","useRef","Gesture","assign","throttle","ContextHelpers","useResetApproachingScreenScrollOffset","context","transformationX","currentYPosition","screenOffsets","Object","values","screen","properties","map","scrollY","value","resetApproachingScreenOffset","index","shouldReset","scrollTo","getRef","route","getKeyForIndex","current","y","animated","previous","approachingIndex","getTargetIndex","approachingScreenOffset","usePrepareKeyMap","state","indexToKeyMap","routes","reduce","previousValue","currentValue","currentIndex","key","usePrepareScreen","screenProperties","prev","innerLayout","height","width","x","nativeGesture","Native","outerLayout","scrollRef","setRef","ref","newProperties","_ref","usePrepareContext","useTransformHeaderOnTabChange","config","headerHeight","isHeaderHeightSet","transformationY","inputRange","_","idx","outputRange","type","debouncedSetIsHeaderSet","cancel","prepared","ContextHooks"],"sourceRoot":"../../../src","sources":["context/Context.hooks.ts"],"mappings":"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","ignoreList":[]}
@@ -21,7 +21,8 @@ export const Provider = /*#__PURE__*/memo(({
21
21
  transformationX,
22
22
  transformationY,
23
23
  currentYPosition,
24
- headerHeight
24
+ headerHeight,
25
+ isHeaderHeightSet
25
26
  } = ContextHooks.useTransformHeaderOnTabChange({
26
27
  config
27
28
  });
@@ -43,7 +44,8 @@ export const Provider = /*#__PURE__*/memo(({
43
44
  topTabNativeGesture,
44
45
  transformationX,
45
46
  transformationY,
46
- context
47
+ context,
48
+ isHeaderHeightSet
47
49
  },
48
50
  children: children({
49
51
  closeOffset,
@@ -57,7 +59,8 @@ export const Provider = /*#__PURE__*/memo(({
57
59
  topTabNativeGesture,
58
60
  transformationX,
59
61
  transformationY,
60
- context
62
+ context,
63
+ isHeaderHeightSet
61
64
  })
62
65
  });
63
66
  });
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","memo","useRef","Gesture","useSharedValue","ContextHooks","jsx","_jsx","Context","Provider","children","config","context","gestureEnabled","currentScreenIndex","navHeight","closeOffset","topTabHeight","topTabNativeGesture","Native","current","transformationX","transformationY","currentYPosition","headerHeight","useTransformHeaderOnTabChange","useResetApproachingScreenScrollOffset","value"],"sourceRoot":"../../../src","sources":["context/Context.tsx"],"mappings":";;AACA,SAASA,aAAa,EAAEC,IAAI,EAAEC,MAAM,QAAQ,OAAO;AACnD,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,YAAY,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/C,OAAO,MAAMC,OAAO,gBAAGR,aAAa,CAClC,CAAC,CACH,CAAC;AAED,OAAO,MAAMS,QAAQ,gBAAGR,IAAI,CAC1B,CAAC;EACCS,QAAQ;EACRC,MAAM;EACNC;AAC6C,CAAC,KAAK;EACnD,MAAMC,cAAc,GAAGT,cAAc,CAAC,IAAI,CAAC;EAC3C,MAAMU,kBAAkB,GAAGV,cAAc,CAAC,CAAC,CAAC;EAE5C,MAAMW,SAAS,GAAGX,cAAc,CAAC,CAAC,CAAC;EACnC,MAAMY,WAAW,GAAGZ,cAAc,CAAC,CAAC,CAAC;EACrC,MAAMa,YAAY,GAAGb,cAAc,CAAC,CAAC,CAAC;EAEtC,MAAMc,mBAAmB,GAAGhB,MAAM,CAACC,OAAO,CAACgB,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO;EAE5D,MAAM;IAAEC,eAAe;IAAEC,eAAe;IAAEC,gBAAgB;IAAEC;EAAa,CAAC,GACxEnB,YAAY,CAACoB,6BAA6B,CAAC;IAAEd;EAAO,CAAC,CAAC;EAExDN,YAAY,CAACqB,qCAAqC,CAAC;IACjDH,gBAAgB;IAChBF,eAAe;IACfT;EACF,CAAC,CAAC;EAEF,oBACEL,IAAA,CAACC,OAAO,CAACC,QAAQ;IACfkB,KAAK,EAAE;MACLX,WAAW;MACXL,MAAM;MACNG,kBAAkB;MAClBS,gBAAgB;MAChBV,cAAc;MACdW,YAAY;MACZT,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBG,eAAe;MACfC,eAAe;MACfV;IACF,CAAE;IAAAF,QAAA,EAEDA,QAAQ,CAAC;MACRM,WAAW;MACXL,MAAM;MACNG,kBAAkB;MAClBS,gBAAgB;MAChBV,cAAc;MACdW,YAAY;MACZT,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBG,eAAe;MACfC,eAAe;MACfV;IACF,CAAC;EAAC,CACc,CAAC;AAEvB,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createContext","memo","useRef","Gesture","useSharedValue","ContextHooks","jsx","_jsx","Context","Provider","children","config","context","gestureEnabled","currentScreenIndex","navHeight","closeOffset","topTabHeight","topTabNativeGesture","Native","current","transformationX","transformationY","currentYPosition","headerHeight","isHeaderHeightSet","useTransformHeaderOnTabChange","useResetApproachingScreenScrollOffset","value"],"sourceRoot":"../../../src","sources":["context/Context.tsx"],"mappings":";;AACA,SAASA,aAAa,EAAEC,IAAI,EAAEC,MAAM,QAAQ,OAAO;AACnD,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,YAAY,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/C,OAAO,MAAMC,OAAO,gBAAGR,aAAa,CAClC,CAAC,CACH,CAAC;AAED,OAAO,MAAMS,QAAQ,gBAAGR,IAAI,CAC1B,CAAC;EACCS,QAAQ;EACRC,MAAM;EACNC;AAC6C,CAAC,KAAK;EACnD,MAAMC,cAAc,GAAGT,cAAc,CAAC,IAAI,CAAC;EAC3C,MAAMU,kBAAkB,GAAGV,cAAc,CAAC,CAAC,CAAC;EAE5C,MAAMW,SAAS,GAAGX,cAAc,CAAC,CAAC,CAAC;EACnC,MAAMY,WAAW,GAAGZ,cAAc,CAAC,CAAC,CAAC;EACrC,MAAMa,YAAY,GAAGb,cAAc,CAAC,CAAC,CAAC;EAEtC,MAAMc,mBAAmB,GAAGhB,MAAM,CAACC,OAAO,CAACgB,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO;EAE5D,MAAM;IACJC,eAAe;IACfC,eAAe;IACfC,gBAAgB;IAChBC,YAAY;IACZC;EACF,CAAC,GAAGpB,YAAY,CAACqB,6BAA6B,CAAC;IAAEf;EAAO,CAAC,CAAC;EAE1DN,YAAY,CAACsB,qCAAqC,CAAC;IACjDJ,gBAAgB;IAChBF,eAAe;IACfT;EACF,CAAC,CAAC;EAEF,oBACEL,IAAA,CAACC,OAAO,CAACC,QAAQ;IACfmB,KAAK,EAAE;MACLZ,WAAW;MACXL,MAAM;MACNG,kBAAkB;MAClBS,gBAAgB;MAChBV,cAAc;MACdW,YAAY;MACZT,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBG,eAAe;MACfC,eAAe;MACfV,OAAO;MACPa;IACF,CAAE;IAAAf,QAAA,EAEDA,QAAQ,CAAC;MACRM,WAAW;MACXL,MAAM;MACNG,kBAAkB;MAClBS,gBAAgB;MAChBV,cAAc;MACdW,YAAY;MACZT,SAAS;MACTE,YAAY;MACZC,mBAAmB;MACnBG,eAAe;MACfC,eAAe;MACfV,OAAO;MACPa;IACF,CAAC;EAAC,CACc,CAAC;AAEvB,CACF,CAAC","ignoreList":[]}
@@ -6,7 +6,7 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context';
6
6
  import { useTabContext } from './useTabContext';
7
7
  import * as React from 'react';
8
8
  import { HeaderHeightContext } from '@react-navigation/elements';
9
- import { useAnimatedProps, useAnimatedScrollHandler, useAnimatedStyle, useDerivedValue } from 'react-native-reanimated';
9
+ import { clamp, useAnimatedProps, useAnimatedScrollHandler, useAnimatedStyle, useDerivedValue } from 'react-native-reanimated';
10
10
  import { useScreenProperties } from './useScreenProperties';
11
11
  export const useScreenScrollable = () => {
12
12
  const {
@@ -25,12 +25,13 @@ export const useScreenScrollable = () => {
25
25
  headerHeight,
26
26
  context,
27
27
  topTabHeight,
28
- transformationY
28
+ transformationY,
29
+ isHeaderHeightSet
29
30
  } = useTabContext();
30
31
  const screen = useScreenProperties();
31
32
  const navigationHeader = React.useContext(HeaderHeightContext) ?? top;
32
33
  const animatedProps = useAnimatedProps(() => ({
33
- scrollEnabled: !gestureEnabled.value || currentYPosition.value === -headerHeight.value
34
+ scrollEnabled: isHeaderHeightSet.value && (!gestureEnabled.value || currentYPosition.value === -headerHeight.value)
34
35
  }));
35
36
  const onScroll = useAnimatedScrollHandler(({
36
37
  contentOffset
@@ -40,7 +41,7 @@ export const useScreenScrollable = () => {
40
41
  scrollPosition.value = contentOffset.y;
41
42
  });
42
43
  const oppositeHeaderState = useDerivedValue(() => transformationY.value >= 0 ? headerHeight.value : 0);
43
- const difference = useDerivedValue(() => Math.abs(screen.outerLayout.value.height - screen.innerLayout.value.height));
44
+ const difference = useDerivedValue(() => clamp(screen.outerLayout.value.height - screen.innerLayout.value.height, 0, Infinity));
44
45
  const style = useAnimatedStyle(() => ({
45
46
  minHeight: height - topTabHeight.value - oppositeHeaderState.value - navigationHeader - difference.value
46
47
  }));
@@ -51,6 +52,7 @@ export const useScreenScrollable = () => {
51
52
  paddingBottom: bottom
52
53
  },
53
54
  onScroll,
55
+ overScrollMode: 'never',
54
56
  style
55
57
  };
56
58
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useRoute","useWindowDimensions","useSafeAreaInsets","useTabContext","React","HeaderHeightContext","useAnimatedProps","useAnimatedScrollHandler","useAnimatedStyle","useDerivedValue","useScreenProperties","useScreenScrollable","key","height","bottom","top","currentYPosition","gestureEnabled","headerHeight","context","topTabHeight","transformationY","screen","navigationHeader","useContext","animatedProps","scrollEnabled","value","onScroll","contentOffset","scrollPosition","properties","scrollY","y","oppositeHeaderState","difference","Math","abs","outerLayout","innerLayout","style","minHeight","bounces","contentContainerStyle","paddingBottom"],"sourceRoot":"../../../src","sources":["hooks/useScreenScrollable.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,mBAAmB,QAAQ,cAAc;AAClD,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SACEC,gBAAgB,EAChBC,wBAAwB,EACxBC,gBAAgB,EAChBC,eAAe,QACV,yBAAyB;AAEhC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAM;IAAEC;EAAI,CAAC,GAAGZ,QAAQ,CAAC,CAAC;EAC1B,MAAM;IAAEa;EAAO,CAAC,GAAGZ,mBAAmB,CAAC,CAAC;EACxC,MAAM;IAAEa,MAAM;IAAEC;EAAI,CAAC,GAAGb,iBAAiB,CAAC,CAAC;EAC3C,MAAM;IACJc,gBAAgB;IAChBC,cAAc;IACdC,YAAY;IACZC,OAAO;IACPC,YAAY;IACZC;EACF,CAAC,GAAGlB,aAAa,CAAC,CAAC;EAEnB,MAAMmB,MAAM,GAAGZ,mBAAmB,CAAC,CAAC;EAEpC,MAAMa,gBAAgB,GAAGnB,KAAK,CAACoB,UAAU,CAACnB,mBAAmB,CAAC,IAAIU,GAAG;EAErE,MAAMU,aAAa,GAAGnB,gBAAgB,CAAC,OAAO;IAC5CoB,aAAa,EACX,CAACT,cAAc,CAACU,KAAK,IAAIX,gBAAgB,CAACW,KAAK,KAAK,CAACT,YAAY,CAACS;EACtE,CAAC,CAAC,CAAC;EAEH,MAAMC,QAAQ,GAAGrB,wBAAwB,CAAC,CAAC;IAAEsB;EAAc,CAAC,KAAK;IAC/D,MAAMC,cAAc,GAAGX,OAAO,CAACG,MAAM,CAACS,UAAU,CAACnB,GAAG,CAAC,EAAEoB,OAAO;IAC9D,IAAI,CAACF,cAAc,EACjB,MAAM,uDAAuD;IAC/DA,cAAc,CAACH,KAAK,GAAGE,aAAa,CAACI,CAAC;EACxC,CAAC,CAAC;EAEF,MAAMC,mBAAmB,GAAGzB,eAAe,CAAC,MAC1CY,eAAe,CAACM,KAAK,IAAI,CAAC,GAAGT,YAAY,CAACS,KAAK,GAAG,CACpD,CAAC;EAED,MAAMQ,UAAU,GAAG1B,eAAe,CAAC,MACjC2B,IAAI,CAACC,GAAG,CAACf,MAAM,CAACgB,WAAW,CAACX,KAAK,CAACd,MAAM,GAAGS,MAAM,CAACiB,WAAW,CAACZ,KAAK,CAACd,MAAM,CAC5E,CAAC;EAED,MAAM2B,KAAK,GAAGhC,gBAAgB,CAAC,OAAO;IACpCiC,SAAS,EACP5B,MAAM,GACNO,YAAY,CAACO,KAAK,GAClBO,mBAAmB,CAACP,KAAK,GACzBJ,gBAAgB,GAChBY,UAAU,CAACR;EACf,CAAC,CAAC,CAAC;EAEH,OAAO;IACLF,aAAa;IACbiB,OAAO,EAAE,KAAK;IACdC,qBAAqB,EAAE;MAAEC,aAAa,EAAE9B;IAAO,CAAC;IAChDc,QAAQ;IACRY;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useRoute","useWindowDimensions","useSafeAreaInsets","useTabContext","React","HeaderHeightContext","clamp","useAnimatedProps","useAnimatedScrollHandler","useAnimatedStyle","useDerivedValue","useScreenProperties","useScreenScrollable","key","height","bottom","top","currentYPosition","gestureEnabled","headerHeight","context","topTabHeight","transformationY","isHeaderHeightSet","screen","navigationHeader","useContext","animatedProps","scrollEnabled","value","onScroll","contentOffset","scrollPosition","properties","scrollY","y","oppositeHeaderState","difference","outerLayout","innerLayout","Infinity","style","minHeight","bounces","contentContainerStyle","paddingBottom","overScrollMode"],"sourceRoot":"../../../src","sources":["hooks/useScreenScrollable.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,mBAAmB,QAAQ,cAAc;AAClD,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SACEC,KAAK,EACLC,gBAAgB,EAChBC,wBAAwB,EACxBC,gBAAgB,EAChBC,eAAe,QACV,yBAAyB;AAEhC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAM;IAAEC;EAAI,CAAC,GAAGb,QAAQ,CAAC,CAAC;EAC1B,MAAM;IAAEc;EAAO,CAAC,GAAGb,mBAAmB,CAAC,CAAC;EACxC,MAAM;IAAEc,MAAM;IAAEC;EAAI,CAAC,GAAGd,iBAAiB,CAAC,CAAC;EAC3C,MAAM;IACJe,gBAAgB;IAChBC,cAAc;IACdC,YAAY;IACZC,OAAO;IACPC,YAAY;IACZC,eAAe;IACfC;EACF,CAAC,GAAGpB,aAAa,CAAC,CAAC;EAEnB,MAAMqB,MAAM,GAAGb,mBAAmB,CAAC,CAAC;EAEpC,MAAMc,gBAAgB,GAAGrB,KAAK,CAACsB,UAAU,CAACrB,mBAAmB,CAAC,IAAIW,GAAG;EAErE,MAAMW,aAAa,GAAGpB,gBAAgB,CAAC,OAAO;IAC5CqB,aAAa,EACXL,iBAAiB,CAACM,KAAK,KACtB,CAACX,cAAc,CAACW,KAAK,IAAIZ,gBAAgB,CAACY,KAAK,KAAK,CAACV,YAAY,CAACU,KAAK;EAC5E,CAAC,CAAC,CAAC;EAEH,MAAMC,QAAQ,GAAGtB,wBAAwB,CAAC,CAAC;IAAEuB;EAAc,CAAC,KAAK;IAC/D,MAAMC,cAAc,GAAGZ,OAAO,CAACI,MAAM,CAACS,UAAU,CAACpB,GAAG,CAAC,EAAEqB,OAAO;IAC9D,IAAI,CAACF,cAAc,EACjB,MAAM,uDAAuD;IAC/DA,cAAc,CAACH,KAAK,GAAGE,aAAa,CAACI,CAAC;EACxC,CAAC,CAAC;EAEF,MAAMC,mBAAmB,GAAG1B,eAAe,CAAC,MAC1CY,eAAe,CAACO,KAAK,IAAI,CAAC,GAAGV,YAAY,CAACU,KAAK,GAAG,CACpD,CAAC;EAED,MAAMQ,UAAU,GAAG3B,eAAe,CAAC,MACjCJ,KAAK,CACHkB,MAAM,CAACc,WAAW,CAACT,KAAK,CAACf,MAAM,GAAGU,MAAM,CAACe,WAAW,CAACV,KAAK,CAACf,MAAM,EACjE,CAAC,EACD0B,QACF,CACF,CAAC;EAED,MAAMC,KAAK,GAAGhC,gBAAgB,CAAC,OAAO;IACpCiC,SAAS,EACP5B,MAAM,GACNO,YAAY,CAACQ,KAAK,GAClBO,mBAAmB,CAACP,KAAK,GACzBJ,gBAAgB,GAChBY,UAAU,CAACR;EACf,CAAC,CAAC,CAAC;EAEH,OAAO;IACLF,aAAa;IACbgB,OAAO,EAAE,KAAK;IACdC,qBAAqB,EAAE;MAAEC,aAAa,EAAE9B;IAAO,CAAC;IAChDe,QAAQ;IACRgB,cAAc,EAAE,OAAgB;IAChCL;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../../../src/components/wrappers/ScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AAEtB,OAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAQzE,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAC5C,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,CAC3D,GACC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;AAEzC,eAAO,MAAM,UAAU,mEAMpB,kBAAkB,4CAyCpB,CAAC"}
1
+ {"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../../../src/components/wrappers/ScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AAEtB,OAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAQzE,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAC5C,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,CAC3D,GACC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC;AAEzC,eAAO,MAAM,UAAU,mEAMpB,kBAAkB,4CA2CpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../src/context/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAM3D,eAAO,MAAM,OAAO,iEAEnB,CAAC;AAEF,eAAO,MAAM,QAAQ,uEAKhB,0BAA0B,CAAC,kBAAkB,6CAqDjD,CAAC"}
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../src/context/Context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAM3D,eAAO,MAAM,OAAO,iEAEnB,CAAC;AAEF,eAAO,MAAM,QAAQ,uEAKhB,0BAA0B,CAAC,kBAAkB,6CA4DjD,CAAC"}
@@ -10,6 +10,7 @@ export declare const ContextHooks: {
10
10
  transformationX: import("react-native-reanimated").SharedValue<number>;
11
11
  currentYPosition: import("react-native-reanimated").SharedValue<number>;
12
12
  headerHeight: import("react-native-reanimated").SharedValue<number>;
13
+ isHeaderHeightSet: import("react-native-reanimated").SharedValue<boolean>;
13
14
  };
14
15
  };
15
16
  //# sourceMappingURL=Context.hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Context.hooks.d.ts","sourceRoot":"","sources":["../../../../src/context/Context.hooks.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AA2OlC,eAAO,MAAM,YAAY;6FArNtB,IAAI,CACL,0BAA0B,CAAC,WAAW,EACtC,SAAS,GAAG,kBAAkB,GAAG,iBAAiB,CACnD;oCA8IE;QACD,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;KAC1C,KAAG,0BAA0B,CAAC,kBAAkB,CAAC,SAAS,CAAC;iDAuBzD,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;;;CA+CxD,CAAC"}
1
+ {"version":3,"file":"Context.hooks.d.ts","sourceRoot":"","sources":["../../../../src/context/Context.hooks.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAyQlC,eAAO,MAAM,YAAY;6FAnPtB,IAAI,CACL,0BAA0B,CAAC,WAAW,EACtC,SAAS,GAAG,kBAAkB,GAAG,iBAAiB,CACnD;oCA8IE;QACD,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;KAC1C,KAAG,0BAA0B,CAAC,kBAAkB,CAAC,SAAS,CAAC;iDAuBzD,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC;;;;;;;CA6ExD,CAAC"}
@@ -7,6 +7,7 @@ export declare const useScreenScrollable: () => {
7
7
  paddingBottom: number;
8
8
  };
9
9
  onScroll: import("react-native-reanimated").ScrollHandlerProcessed<Record<string, unknown>>;
10
+ overScrollMode: "never";
10
11
  style: {
11
12
  minHeight: number;
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useScreenScrollable.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useScreenScrollable.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;CAqD/B,CAAC"}
1
+ {"version":3,"file":"useScreenScrollable.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useScreenScrollable.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CA4D/B,CAAC"}
@@ -28,6 +28,7 @@ export declare const TabHooks: {
28
28
  paddingBottom: number;
29
29
  };
30
30
  onScroll: import("react-native-reanimated").ScrollHandlerProcessed<Record<string, unknown>>;
31
+ overScrollMode: "never";
31
32
  style: {
32
33
  minHeight: number;
33
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAU9F,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpB,CAAC;AAEF,eAAO,MAAM,GAAG;;;;;CAKf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAU9F,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpB,CAAC;AAEF,eAAO,MAAM,GAAG;;;;;CAKf,CAAC"}
@@ -13,6 +13,7 @@ export declare namespace ReanimatedTopTabNavigation {
13
13
  currentYPosition: SharedValue<number>;
14
14
  gestureEnabled: SharedValue<boolean>;
15
15
  headerHeight: SharedValue<number>;
16
+ isHeaderHeightSet: SharedValue<boolean>;
16
17
  navHeight: SharedValue<number>;
17
18
  topTabHeight: SharedValue<number>;
18
19
  topTabNativeGesture: NativeGesture;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-navigation-reanimated-top-tabs",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "react-navigation-reanimated-top-tabs",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -91,7 +91,7 @@
91
91
  "@react-navigation/native": ">=6.0.0",
92
92
  "@react-navigation/routers": ">=6.0.0",
93
93
  "@react-navigation/stack": ">=6.0.0",
94
- "lodash": "^4.17.21",
94
+ "lodash": ">=4.17.0",
95
95
  "react": ">=16.8.0 || ^17.0.0 || ^18.0.0",
96
96
  "react-native": ">=0.60.0",
97
97
  "react-native-gesture-handler": ">=2.0.0",
@@ -31,6 +31,7 @@ export const ScrollView = ({
31
31
  onScroll,
32
32
  bounces,
33
33
  animatedProps,
34
+ overScrollMode,
34
35
  } = useScreenScrollable();
35
36
  const { innerLayout } = useScreenProperties();
36
37
  const { context } = useTabContext();
@@ -58,6 +59,7 @@ export const ScrollView = ({
58
59
  onScroll={onScroll}
59
60
  bounces={bounces}
60
61
  animatedProps={animatedProps}
62
+ overScrollMode={overScrollMode}
61
63
  {...props}
62
64
  >
63
65
  {children}
@@ -13,7 +13,7 @@ import type {
13
13
  TabNavigationState,
14
14
  } from '@react-navigation/native';
15
15
  import { Gesture } from 'react-native-gesture-handler';
16
- import { assign } from 'lodash';
16
+ import { assign, throttle } from 'lodash';
17
17
  import { ContextHelpers } from './Context.helpers';
18
18
 
19
19
  /**
@@ -205,6 +205,7 @@ const useTransformHeaderOnTabChange = ({
205
205
  config,
206
206
  }: Pick<ReanimatedTopTabNavigation.ContextType, 'config'>) => {
207
207
  const headerHeight = useSharedValue(0);
208
+ const isHeaderHeightSet = useSharedValue(false);
208
209
  const transformationY = useSharedValue(0);
209
210
  const transformationX = useSharedValue(0);
210
211
  const currentYPosition = useSharedValue(0);
@@ -230,6 +231,29 @@ const useTransformHeaderOnTabChange = ({
230
231
  [config]
231
232
  );
232
233
 
234
+ // NOTE: headerHeight is setting onLayout, so at very first render it has value equal 0,
235
+ // but right after the header content renders onLayout calls once again.
236
+ // That's why we use debounce
237
+ const debouncedSetIsHeaderSet = throttle(() => {
238
+ isHeaderHeightSet.value = true;
239
+ }, 10);
240
+
241
+ const cancel = () => {
242
+ debouncedSetIsHeaderSet.cancel();
243
+ };
244
+
245
+ useAnimatedReaction(
246
+ () => headerHeight.value,
247
+ (prepared, previous) => {
248
+ runOnJS(cancel)();
249
+
250
+ if (previous !== prepared) {
251
+ runOnJS(debouncedSetIsHeaderSet)();
252
+ }
253
+ },
254
+ []
255
+ );
256
+
233
257
  useAnimatedReaction(
234
258
  () => transformationX.value,
235
259
  (value) => {
@@ -243,7 +267,13 @@ const useTransformHeaderOnTabChange = ({
243
267
  }
244
268
  );
245
269
 
246
- return { transformationY, transformationX, currentYPosition, headerHeight };
270
+ return {
271
+ transformationY,
272
+ transformationX,
273
+ currentYPosition,
274
+ headerHeight,
275
+ isHeaderHeightSet,
276
+ };
247
277
  };
248
278
 
249
279
  export const ContextHooks = {
@@ -23,8 +23,13 @@ export const Provider = memo(
23
23
 
24
24
  const topTabNativeGesture = useRef(Gesture.Native()).current;
25
25
 
26
- const { transformationX, transformationY, currentYPosition, headerHeight } =
27
- ContextHooks.useTransformHeaderOnTabChange({ config });
26
+ const {
27
+ transformationX,
28
+ transformationY,
29
+ currentYPosition,
30
+ headerHeight,
31
+ isHeaderHeightSet,
32
+ } = ContextHooks.useTransformHeaderOnTabChange({ config });
28
33
 
29
34
  ContextHooks.useResetApproachingScreenScrollOffset({
30
35
  currentYPosition,
@@ -47,6 +52,7 @@ export const Provider = memo(
47
52
  transformationX,
48
53
  transformationY,
49
54
  context,
55
+ isHeaderHeightSet,
50
56
  }}
51
57
  >
52
58
  {children({
@@ -62,6 +68,7 @@ export const Provider = memo(
62
68
  transformationX,
63
69
  transformationY,
64
70
  context,
71
+ isHeaderHeightSet,
65
72
  })}
66
73
  </Context.Provider>
67
74
  );
@@ -5,6 +5,7 @@ import { useTabContext } from './useTabContext';
5
5
  import * as React from 'react';
6
6
  import { HeaderHeightContext } from '@react-navigation/elements';
7
7
  import {
8
+ clamp,
8
9
  useAnimatedProps,
9
10
  useAnimatedScrollHandler,
10
11
  useAnimatedStyle,
@@ -24,6 +25,7 @@ export const useScreenScrollable = () => {
24
25
  context,
25
26
  topTabHeight,
26
27
  transformationY,
28
+ isHeaderHeightSet,
27
29
  } = useTabContext();
28
30
 
29
31
  const screen = useScreenProperties();
@@ -32,7 +34,8 @@ export const useScreenScrollable = () => {
32
34
 
33
35
  const animatedProps = useAnimatedProps(() => ({
34
36
  scrollEnabled:
35
- !gestureEnabled.value || currentYPosition.value === -headerHeight.value,
37
+ isHeaderHeightSet.value &&
38
+ (!gestureEnabled.value || currentYPosition.value === -headerHeight.value),
36
39
  }));
37
40
 
38
41
  const onScroll = useAnimatedScrollHandler(({ contentOffset }) => {
@@ -47,7 +50,11 @@ export const useScreenScrollable = () => {
47
50
  );
48
51
 
49
52
  const difference = useDerivedValue(() =>
50
- Math.abs(screen.outerLayout.value.height - screen.innerLayout.value.height)
53
+ clamp(
54
+ screen.outerLayout.value.height - screen.innerLayout.value.height,
55
+ 0,
56
+ Infinity
57
+ )
51
58
  );
52
59
 
53
60
  const style = useAnimatedStyle(() => ({
@@ -64,6 +71,7 @@ export const useScreenScrollable = () => {
64
71
  bounces: false,
65
72
  contentContainerStyle: { paddingBottom: bottom },
66
73
  onScroll,
74
+ overScrollMode: 'never' as const,
67
75
  style,
68
76
  };
69
77
  };
package/src/types.ts CHANGED
@@ -14,6 +14,7 @@ export namespace ReanimatedTopTabNavigation {
14
14
  currentYPosition: SharedValue<number>;
15
15
  gestureEnabled: SharedValue<boolean>;
16
16
  headerHeight: SharedValue<number>;
17
+ isHeaderHeightSet: SharedValue<boolean>;
17
18
  navHeight: SharedValue<number>;
18
19
  topTabHeight: SharedValue<number>;
19
20
  topTabNativeGesture: NativeGesture;