react-native-collapsible-tabs-reanimated 0.1.0-beta
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/LICENSE +21 -0
- package/README.md +232 -0
- package/lib/commonjs/Bar.js +247 -0
- package/lib/commonjs/Bar.js.map +1 -0
- package/lib/commonjs/Button.js +150 -0
- package/lib/commonjs/Button.js.map +1 -0
- package/lib/commonjs/Context.js +21 -0
- package/lib/commonjs/Context.js.map +1 -0
- package/lib/commonjs/FlashList.js +91 -0
- package/lib/commonjs/FlashList.js.map +1 -0
- package/lib/commonjs/Header.js +54 -0
- package/lib/commonjs/Header.js.map +1 -0
- package/lib/commonjs/Indicator.js +156 -0
- package/lib/commonjs/Indicator.js.map +1 -0
- package/lib/commonjs/Lazy.js +87 -0
- package/lib/commonjs/Lazy.js.map +1 -0
- package/lib/commonjs/LegendList.js +86 -0
- package/lib/commonjs/LegendList.js.map +1 -0
- package/lib/commonjs/List.js +83 -0
- package/lib/commonjs/List.js.map +1 -0
- package/lib/commonjs/Pager.js +93 -0
- package/lib/commonjs/Pager.js.map +1 -0
- package/lib/commonjs/Root.js +169 -0
- package/lib/commonjs/Root.js.map +1 -0
- package/lib/commonjs/ScrollView.js +85 -0
- package/lib/commonjs/ScrollView.js.map +1 -0
- package/lib/commonjs/StaticHeader.js +37 -0
- package/lib/commonjs/StaticHeader.js.map +1 -0
- package/lib/commonjs/StickyHeader.js +37 -0
- package/lib/commonjs/StickyHeader.js.map +1 -0
- package/lib/commonjs/Tab.js +86 -0
- package/lib/commonjs/Tab.js.map +1 -0
- package/lib/commonjs/flash-list.js +14 -0
- package/lib/commonjs/flash-list.js.map +1 -0
- package/lib/commonjs/index.js +128 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/legend-list.js +14 -0
- package/lib/commonjs/legend-list.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/useStableCallback.js +15 -0
- package/lib/commonjs/useStableCallback.js.map +1 -0
- package/lib/module/Bar.js +242 -0
- package/lib/module/Bar.js.map +1 -0
- package/lib/module/Button.js +145 -0
- package/lib/module/Button.js.map +1 -0
- package/lib/module/Context.js +16 -0
- package/lib/module/Context.js.map +1 -0
- package/lib/module/FlashList.js +86 -0
- package/lib/module/FlashList.js.map +1 -0
- package/lib/module/Header.js +49 -0
- package/lib/module/Header.js.map +1 -0
- package/lib/module/Indicator.js +151 -0
- package/lib/module/Indicator.js.map +1 -0
- package/lib/module/Lazy.js +82 -0
- package/lib/module/Lazy.js.map +1 -0
- package/lib/module/LegendList.js +81 -0
- package/lib/module/LegendList.js.map +1 -0
- package/lib/module/List.js +78 -0
- package/lib/module/List.js.map +1 -0
- package/lib/module/Pager.js +87 -0
- package/lib/module/Pager.js.map +1 -0
- package/lib/module/Root.js +165 -0
- package/lib/module/Root.js.map +1 -0
- package/lib/module/ScrollView.js +80 -0
- package/lib/module/ScrollView.js.map +1 -0
- package/lib/module/StaticHeader.js +32 -0
- package/lib/module/StaticHeader.js.map +1 -0
- package/lib/module/StickyHeader.js +32 -0
- package/lib/module/StickyHeader.js.map +1 -0
- package/lib/module/Tab.js +81 -0
- package/lib/module/Tab.js.map +1 -0
- package/lib/module/flash-list.js +4 -0
- package/lib/module/flash-list.js.map +1 -0
- package/lib/module/index.js +44 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/legend-list.js +4 -0
- package/lib/module/legend-list.js.map +1 -0
- package/lib/module/useStableCallback.js +11 -0
- package/lib/module/useStableCallback.js.map +1 -0
- package/lib/typescript/Bar.d.ts +22 -0
- package/lib/typescript/Bar.d.ts.map +1 -0
- package/lib/typescript/Button.d.ts +32 -0
- package/lib/typescript/Button.d.ts.map +1 -0
- package/lib/typescript/Context.d.ts +37 -0
- package/lib/typescript/Context.d.ts.map +1 -0
- package/lib/typescript/FlashList.d.ts +6 -0
- package/lib/typescript/FlashList.d.ts.map +1 -0
- package/lib/typescript/Header.d.ts +7 -0
- package/lib/typescript/Header.d.ts.map +1 -0
- package/lib/typescript/Indicator.d.ts +11 -0
- package/lib/typescript/Indicator.d.ts.map +1 -0
- package/lib/typescript/Lazy.d.ts +36 -0
- package/lib/typescript/Lazy.d.ts.map +1 -0
- package/lib/typescript/LegendList.d.ts +6 -0
- package/lib/typescript/LegendList.d.ts.map +1 -0
- package/lib/typescript/List.d.ts +6 -0
- package/lib/typescript/List.d.ts.map +1 -0
- package/lib/typescript/Pager.d.ts +15 -0
- package/lib/typescript/Pager.d.ts.map +1 -0
- package/lib/typescript/Root.d.ts +14 -0
- package/lib/typescript/Root.d.ts.map +1 -0
- package/lib/typescript/ScrollView.d.ts +6 -0
- package/lib/typescript/ScrollView.d.ts.map +1 -0
- package/lib/typescript/StaticHeader.d.ts +7 -0
- package/lib/typescript/StaticHeader.d.ts.map +1 -0
- package/lib/typescript/StickyHeader.d.ts +7 -0
- package/lib/typescript/StickyHeader.d.ts.map +1 -0
- package/lib/typescript/Tab.d.ts +31 -0
- package/lib/typescript/Tab.d.ts.map +1 -0
- package/lib/typescript/flash-list.d.ts +3 -0
- package/lib/typescript/flash-list.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +69 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/legend-list.d.ts +3 -0
- package/lib/typescript/legend-list.d.ts.map +1 -0
- package/lib/typescript/useStableCallback.d.ts +2 -0
- package/lib/typescript/useStableCallback.d.ts.map +1 -0
- package/package.json +112 -0
- package/src/Bar.tsx +359 -0
- package/src/Button.tsx +219 -0
- package/src/Context.tsx +44 -0
- package/src/FlashList.tsx +150 -0
- package/src/Header.tsx +45 -0
- package/src/Indicator.tsx +193 -0
- package/src/Lazy.tsx +110 -0
- package/src/LegendList.tsx +130 -0
- package/src/List.tsx +115 -0
- package/src/Pager.tsx +134 -0
- package/src/Root.tsx +194 -0
- package/src/ScrollView.tsx +116 -0
- package/src/StaticHeader.tsx +30 -0
- package/src/StickyHeader.tsx +30 -0
- package/src/Tab.tsx +89 -0
- package/src/flash-list.ts +2 -0
- package/src/index.ts +54 -0
- package/src/legend-list.ts +2 -0
- package/src/useStableCallback.ts +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useEffect","useMemo","LegendList","StyleSheet","View","GestureDetector","Animated","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useComposedEventHandler","useSharedValue","useCollapsibleTabsContext","useTabSelfContext","useStableCallback","jsx","_jsx","AnimatedLegendList","createAnimatedComponent","CollapsibleLegendList","onLayout","onContentSizeChange","props","listGestures","activeTabIndex","activeListOffset","registerListScroller","index","selfOffset","listRef","onScroll","event","value","contentOffset","y","composedScrollEvent","scroller","animated","current","scrollToOffset","offset","stableLayout","stableContentSizeChange","handleLayout","handleContentSizeChange","width","height","style","styles","view","collapsable","children","gesture","ref","scrollEventThrottle","showsVerticalScrollIndicator","directionalLockEnabled","keyboardShouldPersistTaps","create","position","displayName"],"sourceRoot":"..\\..\\src","sources":["LegendList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useEffect, useMemo } from "react";
|
|
4
|
+
import { StyleSheet, View } from "react-native";
|
|
5
|
+
import { GestureDetector } from "react-native-gesture-handler";
|
|
6
|
+
import Animated, { scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from "react-native-reanimated";
|
|
7
|
+
import { useCollapsibleTabsContext } from "./Context";
|
|
8
|
+
import { useTabSelfContext } from "./Tab";
|
|
9
|
+
import { useStableCallback } from "./useStableCallback";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
const List = ({
|
|
12
|
+
onLayout,
|
|
13
|
+
onContentSizeChange,
|
|
14
|
+
...props
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
listGestures,
|
|
18
|
+
activeTabIndex,
|
|
19
|
+
activeListOffset,
|
|
20
|
+
registerListScroller
|
|
21
|
+
} = useCollapsibleTabsContext();
|
|
22
|
+
const {
|
|
23
|
+
index
|
|
24
|
+
} = useTabSelfContext();
|
|
25
|
+
const selfOffset = useSharedValue(0);
|
|
26
|
+
const listRef = useAnimatedRef();
|
|
27
|
+
const onScroll = useAnimatedScrollHandler(event => {
|
|
28
|
+
selfOffset.value = event.contentOffset.y;
|
|
29
|
+
if (activeTabIndex.value === index) activeListOffset.value = event.contentOffset.y;
|
|
30
|
+
});
|
|
31
|
+
const composedScrollEvent = useComposedEventHandler(props.onScroll ? [onScroll, props.onScroll] : [onScroll]);
|
|
32
|
+
useAnimatedReaction(() => activeTabIndex.value, value => {
|
|
33
|
+
if (value === index) activeListOffset.value = selfOffset.value;
|
|
34
|
+
}, [index]);
|
|
35
|
+
const scroller = useMemo(() => (animated = true) => {
|
|
36
|
+
"worklet";
|
|
37
|
+
|
|
38
|
+
scrollTo(listRef, 0, 0, animated);
|
|
39
|
+
}, [listRef]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
registerListScroller(index, scroller);
|
|
42
|
+
return () => registerListScroller(index, null);
|
|
43
|
+
}, [index, registerListScroller, scroller]);
|
|
44
|
+
const stableLayout = useStableCallback(onLayout);
|
|
45
|
+
const stableContentSizeChange = useStableCallback(onContentSizeChange);
|
|
46
|
+
const handleLayout = useCallback(event => {
|
|
47
|
+
stableLayout?.(event);
|
|
48
|
+
}, [stableLayout]);
|
|
49
|
+
const handleContentSizeChange = useCallback((width, height) => {
|
|
50
|
+
stableContentSizeChange?.(width, height);
|
|
51
|
+
}, [stableContentSizeChange]);
|
|
52
|
+
return /*#__PURE__*/_jsx(View, {
|
|
53
|
+
style: styles.view,
|
|
54
|
+
collapsable: false,
|
|
55
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
56
|
+
gesture: listGestures[index],
|
|
57
|
+
children: /*#__PURE__*/_jsx(Animated.FlatList, {
|
|
58
|
+
ref: listRef,
|
|
59
|
+
scrollEventThrottle: 16,
|
|
60
|
+
showsVerticalScrollIndicator: true,
|
|
61
|
+
directionalLockEnabled: true,
|
|
62
|
+
keyboardShouldPersistTaps: "handled",
|
|
63
|
+
...props,
|
|
64
|
+
onScroll: composedScrollEvent,
|
|
65
|
+
onLayout: handleLayout,
|
|
66
|
+
onContentSizeChange: handleContentSizeChange
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const styles = StyleSheet.create({
|
|
72
|
+
view: {
|
|
73
|
+
position: "relative"
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
List.displayName = "CollapsibleTabs.List";
|
|
77
|
+
export default /*#__PURE__*/memo(List);
|
|
78
|
+
//# sourceMappingURL=List.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useEffect","useMemo","StyleSheet","View","GestureDetector","Animated","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useComposedEventHandler","useSharedValue","useCollapsibleTabsContext","useTabSelfContext","useStableCallback","jsx","_jsx","List","onLayout","onContentSizeChange","props","listGestures","activeTabIndex","activeListOffset","registerListScroller","index","selfOffset","listRef","onScroll","event","value","contentOffset","y","composedScrollEvent","scroller","animated","stableLayout","stableContentSizeChange","handleLayout","handleContentSizeChange","width","height","style","styles","view","collapsable","children","gesture","FlatList","ref","scrollEventThrottle","showsVerticalScrollIndicator","directionalLockEnabled","keyboardShouldPersistTaps","create","position","displayName"],"sourceRoot":"..\\..\\src","sources":["List.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useMemo } from "react";
|
|
4
|
+
import { StyleSheet } from "react-native";
|
|
5
|
+
import { GestureDetector } from "react-native-gesture-handler";
|
|
6
|
+
import PagerView from "react-native-pager-view";
|
|
7
|
+
import Animated, { useAnimatedStyle, useEvent, useHandler } from "react-native-reanimated";
|
|
8
|
+
import { useCollapsibleTabsContext } from "./Context";
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const AnimatedPagerView = Animated.createAnimatedComponent(PagerView);
|
|
11
|
+
function usePageScrollHandler(handlers, dependencies) {
|
|
12
|
+
const {
|
|
13
|
+
context,
|
|
14
|
+
doDependenciesDiffer
|
|
15
|
+
} = useHandler(handlers, dependencies);
|
|
16
|
+
return useEvent(event => {
|
|
17
|
+
"worklet";
|
|
18
|
+
|
|
19
|
+
const {
|
|
20
|
+
onPageScroll
|
|
21
|
+
} = handlers;
|
|
22
|
+
if (onPageScroll && event.eventName.endsWith("onPageScroll")) onPageScroll(event, context);
|
|
23
|
+
}, ["onPageScroll"], doDependenciesDiffer);
|
|
24
|
+
}
|
|
25
|
+
const Pager = ({
|
|
26
|
+
children,
|
|
27
|
+
style,
|
|
28
|
+
height,
|
|
29
|
+
getHeight,
|
|
30
|
+
...pagerProps
|
|
31
|
+
}) => {
|
|
32
|
+
const {
|
|
33
|
+
headerOffset,
|
|
34
|
+
listPanGesture,
|
|
35
|
+
activeTabIndex,
|
|
36
|
+
activeListOffset,
|
|
37
|
+
pageDecimal,
|
|
38
|
+
pagerRef,
|
|
39
|
+
staticHeightValue,
|
|
40
|
+
stickyHeightValue
|
|
41
|
+
} = useCollapsibleTabsContext();
|
|
42
|
+
const listHeight = height ?? getHeight?.(staticHeightValue, stickyHeightValue) ?? null;
|
|
43
|
+
const pageScrollHandlers = useMemo(() => ({
|
|
44
|
+
onPageScroll: event => {
|
|
45
|
+
"worklet";
|
|
46
|
+
|
|
47
|
+
pageDecimal.value = event.position + event.offset;
|
|
48
|
+
}
|
|
49
|
+
}), [pageDecimal]);
|
|
50
|
+
const onPageScroll = usePageScrollHandler(pageScrollHandlers);
|
|
51
|
+
const onPageSelected = useCallback(event => {
|
|
52
|
+
activeTabIndex.value = event.nativeEvent.position;
|
|
53
|
+
activeListOffset.value = 0;
|
|
54
|
+
}, [activeListOffset, activeTabIndex]);
|
|
55
|
+
const animatedStyle = useAnimatedStyle(() => ({
|
|
56
|
+
...(listHeight != null ? {
|
|
57
|
+
height: listHeight
|
|
58
|
+
} : null),
|
|
59
|
+
transform: [{
|
|
60
|
+
translateY: headerOffset.value
|
|
61
|
+
}]
|
|
62
|
+
}), [listHeight]);
|
|
63
|
+
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
64
|
+
gesture: listPanGesture,
|
|
65
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
66
|
+
style: [listHeight == null && styles.flex1, animatedStyle],
|
|
67
|
+
children: /*#__PURE__*/_jsx(AnimatedPagerView, {
|
|
68
|
+
ref: pagerRef,
|
|
69
|
+
orientation: "horizontal",
|
|
70
|
+
overScrollMode: "never",
|
|
71
|
+
style: [styles.flex1, style],
|
|
72
|
+
onPageScroll: onPageScroll,
|
|
73
|
+
onPageSelected: onPageSelected,
|
|
74
|
+
...pagerProps,
|
|
75
|
+
children: children
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
Pager.displayName = "CollapsibleTabs.Pager";
|
|
81
|
+
const styles = StyleSheet.create({
|
|
82
|
+
flex1: {
|
|
83
|
+
flex: 1
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
export default /*#__PURE__*/memo(Pager);
|
|
87
|
+
//# sourceMappingURL=Pager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useMemo","StyleSheet","GestureDetector","PagerView","Animated","useAnimatedStyle","useEvent","useHandler","useCollapsibleTabsContext","jsx","_jsx","AnimatedPagerView","createAnimatedComponent","usePageScrollHandler","handlers","dependencies","context","doDependenciesDiffer","event","onPageScroll","eventName","endsWith","Pager","children","style","height","getHeight","pagerProps","headerOffset","listPanGesture","activeTabIndex","activeListOffset","pageDecimal","pagerRef","staticHeightValue","stickyHeightValue","listHeight","pageScrollHandlers","value","position","offset","onPageSelected","nativeEvent","animatedStyle","transform","translateY","gesture","View","styles","flex1","ref","orientation","overScrollMode","displayName","create","flex"],"sourceRoot":"..\\..\\src","sources":["Pager.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { Platform } from 'react-native';
|
|
5
|
+
import { Gesture } from 'react-native-gesture-handler';
|
|
6
|
+
import { clamp, useAnimatedReaction, useDerivedValue, useSharedValue, withDecay, withSpring } from 'react-native-reanimated';
|
|
7
|
+
import { scheduleOnRN } from 'react-native-worklets';
|
|
8
|
+
import { CollapsibleTabsContextProvider } from './Context';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const DECELERATION = Platform.OS === 'android' ? 0.985 : 0.998;
|
|
11
|
+
const HEIGHT_EPSILON = 0.5;
|
|
12
|
+
const RootInner = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
|
|
13
|
+
initialStaticHeight,
|
|
14
|
+
initialStickyHeight,
|
|
15
|
+
pageLength,
|
|
16
|
+
offsetAdjustment,
|
|
17
|
+
children
|
|
18
|
+
}, ref) => {
|
|
19
|
+
const headerOffset = useSharedValue(0);
|
|
20
|
+
const staticHeight = useSharedValue(initialStaticHeight);
|
|
21
|
+
const stickyHeight = useSharedValue(initialStickyHeight);
|
|
22
|
+
const offsetAdjustmentShared = useDerivedValue(() => offsetAdjustment, [offsetAdjustment]);
|
|
23
|
+
const activeTabIndex = useSharedValue(0);
|
|
24
|
+
const [activeTabIndexValue, setActiveTabIndexValue] = useState(0);
|
|
25
|
+
useAnimatedReaction(() => activeTabIndex.value, (next, prev) => {
|
|
26
|
+
if (next !== prev) scheduleOnRN(setActiveTabIndexValue, next);
|
|
27
|
+
}, []);
|
|
28
|
+
const pageDecimal = useSharedValue(0);
|
|
29
|
+
const pagerRef = useRef(null);
|
|
30
|
+
const [itemLayout, setItemLayout] = useState([]);
|
|
31
|
+
const listScrollersRef = useRef(new Map());
|
|
32
|
+
const registerButton = useCallback(config => {
|
|
33
|
+
setItemLayout(prev => {
|
|
34
|
+
const next = prev.slice();
|
|
35
|
+
next[config.index] = config;
|
|
36
|
+
return next;
|
|
37
|
+
});
|
|
38
|
+
}, []);
|
|
39
|
+
const registerListScroller = useCallback((index, scroller) => {
|
|
40
|
+
if (scroller) listScrollersRef.current.set(index, scroller);else listScrollersRef.current.delete(index);
|
|
41
|
+
}, []);
|
|
42
|
+
useImperativeHandle(ref, () => ({
|
|
43
|
+
scrollToViewTop: (animated = true) => {
|
|
44
|
+
const scroller = listScrollersRef.current.get(activeTabIndex.value);
|
|
45
|
+
scroller?.(animated);
|
|
46
|
+
headerOffset.value = withSpring(0, {
|
|
47
|
+
duration: 250,
|
|
48
|
+
dampingRatio: 1,
|
|
49
|
+
mass: 4
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}), [activeTabIndex, headerOffset]);
|
|
53
|
+
const [staticHeightValue, setStaticHeightValue] = useState(initialStaticHeight);
|
|
54
|
+
const [stickyHeightValue, setStickyHeightValue] = useState(initialStickyHeight);
|
|
55
|
+
const updateStaticHeight = useCallback(height => {
|
|
56
|
+
staticHeight.value = height;
|
|
57
|
+
setStaticHeightValue(prev => {
|
|
58
|
+
if (Math.abs(prev - height) < HEIGHT_EPSILON) return prev;
|
|
59
|
+
return height;
|
|
60
|
+
});
|
|
61
|
+
}, [staticHeight]);
|
|
62
|
+
const updateStickyHeight = useCallback(height => {
|
|
63
|
+
stickyHeight.value = height;
|
|
64
|
+
setStickyHeightValue(prev => {
|
|
65
|
+
if (Math.abs(prev - height) < HEIGHT_EPSILON) return prev;
|
|
66
|
+
return height;
|
|
67
|
+
});
|
|
68
|
+
}, [stickyHeight]);
|
|
69
|
+
const touchX = useSharedValue(0);
|
|
70
|
+
const touchY = useSharedValue(0);
|
|
71
|
+
const isVertical = useSharedValue(false);
|
|
72
|
+
const activeListOffset = useSharedValue(0);
|
|
73
|
+
const listGestures = useMemo(() => Array.from({
|
|
74
|
+
length: pageLength
|
|
75
|
+
}, () => Gesture.Native().cancelsTouchesInView(true)), [pageLength]);
|
|
76
|
+
const listPanGesture = useMemo(() => {
|
|
77
|
+
return Gesture.Pan().manualActivation(true).maxPointers(1).minPointers(1).onTouchesDown(evt => {
|
|
78
|
+
const touch = evt.allTouches[0];
|
|
79
|
+
touchX.value = touch.x;
|
|
80
|
+
touchY.value = touch.y;
|
|
81
|
+
isVertical.value = false;
|
|
82
|
+
}).onTouchesMove((evt, state) => {
|
|
83
|
+
const touch = evt.allTouches[0];
|
|
84
|
+
const toTop = touch.y > touchY.value;
|
|
85
|
+
const isHorizontal = Math.abs(touch.x - touchX.value) > 5;
|
|
86
|
+
const vertical = Math.abs(touch.y - touchY.value) > 5;
|
|
87
|
+
if (vertical) isVertical.value = true;
|
|
88
|
+
if (isHorizontal && !isVertical.value) return state.fail();
|
|
89
|
+
if (!vertical) return;
|
|
90
|
+
const minOffset = -(staticHeight.value - offsetAdjustmentShared.value);
|
|
91
|
+
if (toTop && activeListOffset.value === 0) state.activate();else if (!toTop && headerOffset.value > minOffset) state.activate();
|
|
92
|
+
}).onChange(evt => {
|
|
93
|
+
isVertical.value = true;
|
|
94
|
+
const minOffset = -(staticHeight.value - offsetAdjustmentShared.value);
|
|
95
|
+
headerOffset.value = clamp(headerOffset.value + evt.changeY, minOffset, 0);
|
|
96
|
+
}).onEnd(evt => {
|
|
97
|
+
const toTop = evt.translationY > 0;
|
|
98
|
+
const isHeaderPartialShown = headerOffset.value !== 0;
|
|
99
|
+
const minOffset = -(staticHeight.value - offsetAdjustmentShared.value);
|
|
100
|
+
const isFast = Math.abs(evt.velocityY) > 800;
|
|
101
|
+
if (isFast) {
|
|
102
|
+
if (toTop && isHeaderPartialShown) {
|
|
103
|
+
headerOffset.value = withSpring(0, {
|
|
104
|
+
duration: 250,
|
|
105
|
+
dampingRatio: 1,
|
|
106
|
+
mass: 4,
|
|
107
|
+
overshootClamping: false,
|
|
108
|
+
velocity: evt.velocityY
|
|
109
|
+
});
|
|
110
|
+
} else if (!toTop && isHeaderPartialShown) {
|
|
111
|
+
headerOffset.value = withSpring(minOffset, {
|
|
112
|
+
duration: 250,
|
|
113
|
+
dampingRatio: 1,
|
|
114
|
+
mass: 4,
|
|
115
|
+
overshootClamping: false,
|
|
116
|
+
velocity: evt.velocityY
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
} else {
|
|
120
|
+
headerOffset.value = withDecay({
|
|
121
|
+
velocity: evt.velocityY,
|
|
122
|
+
rubberBandEffect: false,
|
|
123
|
+
clamp: [minOffset, 0],
|
|
124
|
+
deceleration: DECELERATION
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}).simultaneousWithExternalGesture(...listGestures);
|
|
128
|
+
}, [activeListOffset, headerOffset, isVertical, listGestures, offsetAdjustmentShared, staticHeight, touchX, touchY]);
|
|
129
|
+
const ctxValue = useMemo(() => ({
|
|
130
|
+
headerOffset,
|
|
131
|
+
staticHeight,
|
|
132
|
+
stickyHeight,
|
|
133
|
+
offsetAdjustment: offsetAdjustmentShared,
|
|
134
|
+
activeTabIndex,
|
|
135
|
+
activeTabIndexValue,
|
|
136
|
+
pageDecimal,
|
|
137
|
+
listPanGesture,
|
|
138
|
+
listGestures,
|
|
139
|
+
pagerRef,
|
|
140
|
+
itemLayout,
|
|
141
|
+
registerButton,
|
|
142
|
+
registerListScroller,
|
|
143
|
+
staticHeightValue,
|
|
144
|
+
stickyHeightValue,
|
|
145
|
+
activeListOffset,
|
|
146
|
+
updateStaticHeight,
|
|
147
|
+
updateStickyHeight
|
|
148
|
+
}), [activeListOffset, activeTabIndex, activeTabIndexValue, headerOffset, itemLayout, listGestures, listPanGesture, offsetAdjustmentShared, pageDecimal, registerButton, registerListScroller, staticHeight, staticHeightValue, stickyHeight, stickyHeightValue, updateStaticHeight, updateStickyHeight]);
|
|
149
|
+
return /*#__PURE__*/_jsx(CollapsibleTabsContextProvider, {
|
|
150
|
+
...ctxValue,
|
|
151
|
+
children: children
|
|
152
|
+
});
|
|
153
|
+
}));
|
|
154
|
+
RootInner.displayName = 'CollapsibleTabs.RootInner';
|
|
155
|
+
const Root = /*#__PURE__*/forwardRef((props, ref) => /*#__PURE__*/_jsx(RootInner, {
|
|
156
|
+
ref: ref,
|
|
157
|
+
initialStaticHeight: props.initialStaticHeight ?? 0,
|
|
158
|
+
initialStickyHeight: props.initialStickyHeight ?? 0,
|
|
159
|
+
pageLength: props.pageLength,
|
|
160
|
+
offsetAdjustment: props.offsetAdjustment ?? 0,
|
|
161
|
+
children: props.children
|
|
162
|
+
}));
|
|
163
|
+
Root.displayName = 'CollapsibleTabs.Root';
|
|
164
|
+
export default /*#__PURE__*/memo(Root);
|
|
165
|
+
//# sourceMappingURL=Root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","memo","useCallback","useImperativeHandle","useMemo","useRef","useState","Platform","Gesture","clamp","useAnimatedReaction","useDerivedValue","useSharedValue","withDecay","withSpring","scheduleOnRN","CollapsibleTabsContextProvider","jsx","_jsx","DECELERATION","OS","HEIGHT_EPSILON","RootInner","initialStaticHeight","initialStickyHeight","pageLength","offsetAdjustment","children","ref","headerOffset","staticHeight","stickyHeight","offsetAdjustmentShared","activeTabIndex","activeTabIndexValue","setActiveTabIndexValue","value","next","prev","pageDecimal","pagerRef","itemLayout","setItemLayout","listScrollersRef","Map","registerButton","config","slice","index","registerListScroller","scroller","current","set","delete","scrollToViewTop","animated","get","duration","dampingRatio","mass","staticHeightValue","setStaticHeightValue","stickyHeightValue","setStickyHeightValue","updateStaticHeight","height","Math","abs","updateStickyHeight","touchX","touchY","isVertical","activeListOffset","listGestures","Array","from","length","Native","cancelsTouchesInView","listPanGesture","Pan","manualActivation","maxPointers","minPointers","onTouchesDown","evt","touch","allTouches","x","y","onTouchesMove","state","toTop","isHorizontal","vertical","fail","minOffset","activate","onChange","changeY","onEnd","translationY","isHeaderPartialShown","isFast","velocityY","overshootClamping","velocity","rubberBandEffect","deceleration","simultaneousWithExternalGesture","ctxValue","displayName","Root","props"],"sourceRoot":"..\\..\\src","sources":["Root.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useEffect, useMemo } from "react";
|
|
4
|
+
import { StyleSheet, View } from "react-native";
|
|
5
|
+
import { GestureDetector } from "react-native-gesture-handler";
|
|
6
|
+
import Animated, { scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from "react-native-reanimated";
|
|
7
|
+
import { useCollapsibleTabsContext } from "./Context";
|
|
8
|
+
import { useTabSelfContext } from "./Tab";
|
|
9
|
+
import { useStableCallback } from "./useStableCallback";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
const ScrollView = ({
|
|
12
|
+
onLayout,
|
|
13
|
+
onContentSizeChange,
|
|
14
|
+
...props
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
listGestures,
|
|
18
|
+
activeTabIndex,
|
|
19
|
+
activeListOffset,
|
|
20
|
+
registerListScroller
|
|
21
|
+
} = useCollapsibleTabsContext();
|
|
22
|
+
const {
|
|
23
|
+
index
|
|
24
|
+
} = useTabSelfContext();
|
|
25
|
+
const selfOffset = useSharedValue(0);
|
|
26
|
+
const scrollRef = useAnimatedRef();
|
|
27
|
+
const onScroll = useAnimatedScrollHandler(event => {
|
|
28
|
+
selfOffset.value = event.contentOffset.y;
|
|
29
|
+
if (activeTabIndex.value === index) activeListOffset.value = event.contentOffset.y;
|
|
30
|
+
});
|
|
31
|
+
const composedScrollEvent = useComposedEventHandler(props.onScroll ? [onScroll, props.onScroll] : [onScroll]);
|
|
32
|
+
useAnimatedReaction(() => activeTabIndex.value, value => {
|
|
33
|
+
if (value === index) activeListOffset.value = selfOffset.value;
|
|
34
|
+
}, [index]);
|
|
35
|
+
const scroller = useMemo(() => (animated = true) => {
|
|
36
|
+
"worklet";
|
|
37
|
+
|
|
38
|
+
scrollTo(scrollRef, 0, 0, animated);
|
|
39
|
+
}, [scrollRef]);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
registerListScroller(index, scroller);
|
|
42
|
+
return () => registerListScroller(index, null);
|
|
43
|
+
}, [index, registerListScroller, scroller]);
|
|
44
|
+
const stableLayout = useStableCallback(onLayout);
|
|
45
|
+
const stableContentSizeChange = useStableCallback(onContentSizeChange);
|
|
46
|
+
const handleLayout = useCallback(event => {
|
|
47
|
+
stableLayout?.(event);
|
|
48
|
+
}, [stableLayout]);
|
|
49
|
+
const handleContentSizeChange = useCallback((width, height) => {
|
|
50
|
+
stableContentSizeChange?.(width, height);
|
|
51
|
+
}, [stableContentSizeChange]);
|
|
52
|
+
return /*#__PURE__*/_jsx(View, {
|
|
53
|
+
style: styles.view,
|
|
54
|
+
collapsable: false,
|
|
55
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
56
|
+
gesture: listGestures[index],
|
|
57
|
+
children: /*#__PURE__*/_jsx(Animated.ScrollView, {
|
|
58
|
+
ref: scrollRef,
|
|
59
|
+
scrollEventThrottle: 16,
|
|
60
|
+
showsVerticalScrollIndicator: true,
|
|
61
|
+
directionalLockEnabled: true,
|
|
62
|
+
keyboardShouldPersistTaps: "handled",
|
|
63
|
+
...props,
|
|
64
|
+
// onScroll={onScroll as RNScrollViewProps["onScroll"]}
|
|
65
|
+
onScroll: composedScrollEvent,
|
|
66
|
+
onLayout: handleLayout,
|
|
67
|
+
onContentSizeChange: handleContentSizeChange
|
|
68
|
+
})
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const styles = StyleSheet.create({
|
|
73
|
+
view: {
|
|
74
|
+
position: "relative",
|
|
75
|
+
flex: 1
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
ScrollView.displayName = "CollapsibleTabs.ScrollView";
|
|
79
|
+
export default /*#__PURE__*/memo(ScrollView);
|
|
80
|
+
//# sourceMappingURL=ScrollView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useEffect","useMemo","StyleSheet","View","GestureDetector","Animated","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useComposedEventHandler","useSharedValue","useCollapsibleTabsContext","useTabSelfContext","useStableCallback","jsx","_jsx","ScrollView","onLayout","onContentSizeChange","props","listGestures","activeTabIndex","activeListOffset","registerListScroller","index","selfOffset","scrollRef","onScroll","event","value","contentOffset","y","composedScrollEvent","scroller","animated","stableLayout","stableContentSizeChange","handleLayout","handleContentSizeChange","width","height","style","styles","view","collapsable","children","gesture","ref","scrollEventThrottle","showsVerticalScrollIndicator","directionalLockEnabled","keyboardShouldPersistTaps","create","position","flex","displayName"],"sourceRoot":"..\\..\\src","sources":["ScrollView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import Animated from 'react-native-reanimated';
|
|
5
|
+
import { useCollapsibleTabsContext } from './Context';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
const StaticHeader = ({
|
|
8
|
+
children,
|
|
9
|
+
onLayout,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
12
|
+
const {
|
|
13
|
+
updateStaticHeight,
|
|
14
|
+
staticHeightValue
|
|
15
|
+
} = useCollapsibleTabsContext();
|
|
16
|
+
const handleLayout = evt => {
|
|
17
|
+
const height = evt.nativeEvent.layout.height;
|
|
18
|
+
if (__DEV__ && (!staticHeightValue || Math.abs(staticHeightValue - height) > 10)) {
|
|
19
|
+
console.info(`Set initialStaticHeight=${height} to reduce first-render flicker.`);
|
|
20
|
+
}
|
|
21
|
+
updateStaticHeight(height);
|
|
22
|
+
onLayout?.(evt);
|
|
23
|
+
};
|
|
24
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
25
|
+
...props,
|
|
26
|
+
onLayout: handleLayout,
|
|
27
|
+
children: children
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
StaticHeader.displayName = 'CollapsibleTabs.StaticHeader';
|
|
31
|
+
export default /*#__PURE__*/memo(StaticHeader);
|
|
32
|
+
//# sourceMappingURL=StaticHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","Animated","useCollapsibleTabsContext","jsx","_jsx","StaticHeader","children","onLayout","props","updateStaticHeight","staticHeightValue","handleLayout","evt","height","nativeEvent","layout","__DEV__","Math","abs","console","info","View","displayName"],"sourceRoot":"..\\..\\src","sources":["StaticHeader.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAI5B,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,yBAAyB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtD,MAAMC,YAAY,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,QAAQ;EAAE,GAAGC;AAAiB,CAAC,KAAK;EACpE,MAAM;IAAEC,kBAAkB;IAAEC;EAAkB,CAAC,GAAGR,yBAAyB,CAAC,CAAC;EAE7E,MAAMS,YAAY,GAAIC,GAAsB,IAAK;IAC/C,MAAMC,MAAM,GAAGD,GAAG,CAACE,WAAW,CAACC,MAAM,CAACF,MAAM;IAC5C,IAAIG,OAAO,KAAK,CAACN,iBAAiB,IAAIO,IAAI,CAACC,GAAG,CAACR,iBAAiB,GAAGG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;MAChFM,OAAO,CAACC,IAAI,CAAC,2BAA2BP,MAAM,kCAAkC,CAAC;IACnF;IACAJ,kBAAkB,CAACI,MAAM,CAAC;IAC1BN,QAAQ,GAAGK,GAAG,CAAC;EACjB,CAAC;EAED,oBACER,IAAA,CAACH,QAAQ,CAACoB,IAAI;IAAA,GAAKb,KAAK;IAAED,QAAQ,EAAEI,YAAa;IAAAL,QAAA,EAC9CA;EAAQ,CACI,CAAC;AAEpB,CAAC;AAEDD,YAAY,CAACiB,WAAW,GAAG,8BAA8B;AAEzD,4BAAetB,IAAI,CAACK,YAAY,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
import Animated from 'react-native-reanimated';
|
|
5
|
+
import { useCollapsibleTabsContext } from './Context';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
const StickyHeader = ({
|
|
8
|
+
children,
|
|
9
|
+
onLayout,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
12
|
+
const {
|
|
13
|
+
updateStickyHeight,
|
|
14
|
+
stickyHeightValue
|
|
15
|
+
} = useCollapsibleTabsContext();
|
|
16
|
+
const handleLayout = evt => {
|
|
17
|
+
const height = evt.nativeEvent.layout.height;
|
|
18
|
+
if (__DEV__ && (!stickyHeightValue || Math.abs(stickyHeightValue - height) > 10)) {
|
|
19
|
+
console.info(`Set initialStickyHeight=${height} to reduce first-render flicker.`);
|
|
20
|
+
}
|
|
21
|
+
updateStickyHeight(height);
|
|
22
|
+
onLayout?.(evt);
|
|
23
|
+
};
|
|
24
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
25
|
+
...props,
|
|
26
|
+
onLayout: handleLayout,
|
|
27
|
+
children: children
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
StickyHeader.displayName = 'CollapsibleTabs.StickyHeader';
|
|
31
|
+
export default /*#__PURE__*/memo(StickyHeader);
|
|
32
|
+
//# sourceMappingURL=StickyHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","Animated","useCollapsibleTabsContext","jsx","_jsx","StickyHeader","children","onLayout","props","updateStickyHeight","stickyHeightValue","handleLayout","evt","height","nativeEvent","layout","__DEV__","Math","abs","console","info","View","displayName"],"sourceRoot":"..\\..\\src","sources":["StickyHeader.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,OAAO;AAI5B,OAAOC,QAAQ,MAAM,yBAAyB;AAE9C,SAASC,yBAAyB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtD,MAAMC,YAAY,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,QAAQ;EAAE,GAAGC;AAAiB,CAAC,KAAK;EACpE,MAAM;IAAEC,kBAAkB;IAAEC;EAAkB,CAAC,GAAGR,yBAAyB,CAAC,CAAC;EAE7E,MAAMS,YAAY,GAAIC,GAAsB,IAAK;IAC/C,MAAMC,MAAM,GAAGD,GAAG,CAACE,WAAW,CAACC,MAAM,CAACF,MAAM;IAC5C,IAAIG,OAAO,KAAK,CAACN,iBAAiB,IAAIO,IAAI,CAACC,GAAG,CAACR,iBAAiB,GAAGG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;MAChFM,OAAO,CAACC,IAAI,CAAC,2BAA2BP,MAAM,kCAAkC,CAAC;IACnF;IACAJ,kBAAkB,CAACI,MAAM,CAAC;IAC1BN,QAAQ,GAAGK,GAAG,CAAC;EACjB,CAAC;EAED,oBACER,IAAA,CAACH,QAAQ,CAACoB,IAAI;IAAA,GAAKb,KAAK;IAAED,QAAQ,EAAEI,YAAa;IAAAL,QAAA,EAC9CA;EAAQ,CACI,CAAC;AAEpB,CAAC;AAEDD,YAAY,CAACiB,WAAW,GAAG,8BAA8B;AAEzD,4BAAetB,IAAI,CAACK,YAAY,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createContext, memo, useContext, useState } from 'react';
|
|
4
|
+
import { useAnimatedReaction, useSharedValue } from 'react-native-reanimated';
|
|
5
|
+
import { scheduleOnRN } from 'react-native-worklets';
|
|
6
|
+
import { useCollapsibleTabsContext } from './Context';
|
|
7
|
+
import { Lazy } from './Lazy';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const Tab = ({
|
|
10
|
+
index,
|
|
11
|
+
loader,
|
|
12
|
+
loaderStyle,
|
|
13
|
+
lazyProps,
|
|
14
|
+
disableLazyEntering = true,
|
|
15
|
+
disablePreload = false,
|
|
16
|
+
lazy = true,
|
|
17
|
+
children,
|
|
18
|
+
isLoading = false,
|
|
19
|
+
isScreenFocused = true
|
|
20
|
+
}) => {
|
|
21
|
+
const {
|
|
22
|
+
activeTabIndexValue,
|
|
23
|
+
pageDecimal
|
|
24
|
+
} = useCollapsibleTabsContext();
|
|
25
|
+
const [shouldPreload, setShouldPreload] = useState(false);
|
|
26
|
+
const [canMount, setCanMount] = useState(lazy === false);
|
|
27
|
+
const preloadLatched = useSharedValue(disablePreload);
|
|
28
|
+
const mountLatched = useSharedValue(lazy === false);
|
|
29
|
+
useAnimatedReaction(() => pageDecimal.value, value => {
|
|
30
|
+
if (!preloadLatched.value && Math.round(value) === index) {
|
|
31
|
+
preloadLatched.value = true;
|
|
32
|
+
scheduleOnRN(setShouldPreload, true);
|
|
33
|
+
}
|
|
34
|
+
if (!mountLatched.value && Math.abs(value - index) <= 1.5 && isScreenFocused) {
|
|
35
|
+
mountLatched.value = true;
|
|
36
|
+
scheduleOnRN(setCanMount, true);
|
|
37
|
+
}
|
|
38
|
+
}, [index, isScreenFocused]);
|
|
39
|
+
const isFocused = index === activeTabIndexValue && isScreenFocused;
|
|
40
|
+
const isMounted = lazy ? (isFocused || shouldPreload) && !isLoading : true;
|
|
41
|
+
const renderChildren = () => {
|
|
42
|
+
if (lazy) {
|
|
43
|
+
if (!canMount) return null;
|
|
44
|
+
return /*#__PURE__*/_jsx(Lazy, {
|
|
45
|
+
...lazyProps,
|
|
46
|
+
focused: isMounted && !isLoading,
|
|
47
|
+
disableEntering: disableLazyEntering,
|
|
48
|
+
placeholder: loader,
|
|
49
|
+
placeholderStyle: loaderStyle,
|
|
50
|
+
children: typeof children === 'function' ? children({
|
|
51
|
+
isFocused,
|
|
52
|
+
pageDecimal
|
|
53
|
+
}) : children
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return typeof children === 'function' ? children({
|
|
57
|
+
isFocused,
|
|
58
|
+
pageDecimal
|
|
59
|
+
}) : children;
|
|
60
|
+
};
|
|
61
|
+
return /*#__PURE__*/_jsx(TabSelfContextProvider, {
|
|
62
|
+
index: index,
|
|
63
|
+
isFocused: isFocused,
|
|
64
|
+
isMounted: isMounted,
|
|
65
|
+
children: renderChildren()
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
const TabSelfContext = /*#__PURE__*/createContext({});
|
|
69
|
+
const TabSelfContextProvider = /*#__PURE__*/memo(({
|
|
70
|
+
children,
|
|
71
|
+
...props
|
|
72
|
+
}) => {
|
|
73
|
+
return /*#__PURE__*/_jsx(TabSelfContext.Provider, {
|
|
74
|
+
value: props,
|
|
75
|
+
children: children
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
export const useTabSelfContext = () => useContext(TabSelfContext);
|
|
79
|
+
Tab.displayName = 'CollapsibleTabs.Tab';
|
|
80
|
+
export default /*#__PURE__*/memo(Tab);
|
|
81
|
+
//# sourceMappingURL=Tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","memo","useContext","useState","useAnimatedReaction","useSharedValue","scheduleOnRN","useCollapsibleTabsContext","Lazy","jsx","_jsx","Tab","index","loader","loaderStyle","lazyProps","disableLazyEntering","disablePreload","lazy","children","isLoading","isScreenFocused","activeTabIndexValue","pageDecimal","shouldPreload","setShouldPreload","canMount","setCanMount","preloadLatched","mountLatched","value","Math","round","abs","isFocused","isMounted","renderChildren","focused","disableEntering","placeholder","placeholderStyle","TabSelfContextProvider","TabSelfContext","props","Provider","useTabSelfContext","displayName"],"sourceRoot":"..\\..\\src","sources":["Tab.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["default","CollapsibleFlashList"],"sourceRoot":"..\\..\\src","sources":["flash-list.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,aAAa","ignoreList":[]}
|