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.
- package/lib/commonjs/components/wrappers/ScrollView.js +3 -1
- package/lib/commonjs/components/wrappers/ScrollView.js.map +1 -1
- package/lib/commonjs/context/Context.hooks.js +19 -1
- package/lib/commonjs/context/Context.hooks.js.map +1 -1
- package/lib/commonjs/context/Context.js +6 -3
- package/lib/commonjs/context/Context.js.map +1 -1
- package/lib/commonjs/hooks/useScreenScrollable.js +5 -3
- package/lib/commonjs/hooks/useScreenScrollable.js.map +1 -1
- package/lib/module/components/wrappers/ScrollView.js +3 -1
- package/lib/module/components/wrappers/ScrollView.js.map +1 -1
- package/lib/module/context/Context.hooks.js +20 -2
- package/lib/module/context/Context.hooks.js.map +1 -1
- package/lib/module/context/Context.js +6 -3
- package/lib/module/context/Context.js.map +1 -1
- package/lib/module/hooks/useScreenScrollable.js +6 -4
- package/lib/module/hooks/useScreenScrollable.js.map +1 -1
- package/lib/typescript/src/components/wrappers/ScrollView.d.ts.map +1 -1
- package/lib/typescript/src/context/Context.d.ts.map +1 -1
- package/lib/typescript/src/context/Context.hooks.d.ts +1 -0
- package/lib/typescript/src/context/Context.hooks.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useScreenScrollable.d.ts +1 -0
- package/lib/typescript/src/hooks/useScreenScrollable.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +1 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/wrappers/ScrollView.tsx +2 -0
- package/src/context/Context.hooks.ts +32 -2
- package/src/context/Context.tsx +9 -2
- package/src/hooks/useScreenScrollable.ts +10 -2
- 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;
|
|
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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
|
|
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;
|
|
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)(() =>
|
|
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","
|
|
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,
|
|
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":";;AAAA,SACEA,WAAW,EACXC,WAAW,EACXC,OAAO,EACPC,mBAAmB,EACnBC,eAAe,EACfC,cAAc,QACT,yBAAyB;AAEhC,SAASC,MAAM,QAAQ,OAAO;AAK9B,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,MAAM,QAAQ,QAAQ;
|
|
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;
|
|
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(() =>
|
|
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","
|
|
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,
|
|
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,
|
|
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;
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScreenScrollable.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useScreenScrollable.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useScreenScrollable.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useScreenScrollable.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CA4D/B,CAAC"}
|
|
@@ -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
|
|
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.
|
|
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": "
|
|
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 {
|
|
270
|
+
return {
|
|
271
|
+
transformationY,
|
|
272
|
+
transformationX,
|
|
273
|
+
currentYPosition,
|
|
274
|
+
headerHeight,
|
|
275
|
+
isHeaderHeightSet,
|
|
276
|
+
};
|
|
247
277
|
};
|
|
248
278
|
|
|
249
279
|
export const ContextHooks = {
|
package/src/context/Context.tsx
CHANGED
|
@@ -23,8 +23,13 @@ export const Provider = memo(
|
|
|
23
23
|
|
|
24
24
|
const topTabNativeGesture = useRef(Gesture.Native()).current;
|
|
25
25
|
|
|
26
|
-
const {
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|