react-native-tab-view 3.3.3 → 3.4.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/README.md +4 -0
- package/lib/commonjs/Pager.android.js +0 -2
- package/lib/commonjs/Pager.android.js.map +1 -1
- package/lib/commonjs/Pager.ios.js +0 -2
- package/lib/commonjs/Pager.ios.js.map +1 -1
- package/lib/commonjs/Pager.js +0 -2
- package/lib/commonjs/Pager.js.map +1 -1
- package/lib/commonjs/PagerViewAdapter.js +0 -24
- package/lib/commonjs/PagerViewAdapter.js.map +1 -1
- package/lib/commonjs/PanResponderAdapter.js +11 -42
- package/lib/commonjs/PanResponderAdapter.js.map +1 -1
- package/lib/commonjs/PlatformPressable.js +1 -7
- package/lib/commonjs/PlatformPressable.js.map +1 -1
- package/lib/commonjs/SceneMap.js +0 -5
- package/lib/commonjs/SceneMap.js.map +1 -1
- package/lib/commonjs/SceneView.js +4 -15
- package/lib/commonjs/SceneView.js.map +1 -1
- package/lib/commonjs/TabBar.js +24 -60
- package/lib/commonjs/TabBar.js.map +1 -1
- package/lib/commonjs/TabBarIndicator.js +7 -18
- package/lib/commonjs/TabBarIndicator.js.map +1 -1
- package/lib/commonjs/TabBarItem.js +7 -31
- package/lib/commonjs/TabBarItem.js.map +1 -1
- package/lib/commonjs/TabView.js +9 -19
- package/lib/commonjs/TabView.js.map +1 -1
- package/lib/commonjs/index.js +0 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useAnimatedValue.js +0 -7
- package/lib/commonjs/useAnimatedValue.js.map +1 -1
- package/lib/module/Pager.android.js.map +1 -1
- package/lib/module/Pager.ios.js.map +1 -1
- package/lib/module/Pager.js.map +1 -1
- package/lib/module/PagerViewAdapter.js +0 -14
- package/lib/module/PagerViewAdapter.js.map +1 -1
- package/lib/module/PanResponderAdapter.js +11 -28
- package/lib/module/PanResponderAdapter.js.map +1 -1
- package/lib/module/PlatformPressable.js +1 -2
- package/lib/module/PlatformPressable.js.map +1 -1
- package/lib/module/SceneMap.js.map +1 -1
- package/lib/module/SceneView.js +4 -9
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/TabBar.js +24 -48
- package/lib/module/TabBar.js.map +1 -1
- package/lib/module/TabBarIndicator.js +7 -10
- package/lib/module/TabBarIndicator.js.map +1 -1
- package/lib/module/TabBarItem.js +7 -19
- package/lib/module/TabBarItem.js.map +1 -1
- package/lib/module/TabView.js +9 -9
- package/lib/module/TabView.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useAnimatedValue.js +0 -2
- package/lib/module/useAnimatedValue.js.map +1 -1
- package/lib/typescript/src/Pager.android.d.ts +1 -0
- package/lib/typescript/src/Pager.android.d.ts.map +1 -0
- package/lib/typescript/src/Pager.d.ts +1 -0
- package/lib/typescript/src/Pager.d.ts.map +1 -0
- package/lib/typescript/src/Pager.ios.d.ts +1 -0
- package/lib/typescript/src/Pager.ios.d.ts.map +1 -0
- package/lib/typescript/src/PagerViewAdapter.d.ts +1 -0
- package/lib/typescript/src/PagerViewAdapter.d.ts.map +1 -0
- package/lib/typescript/src/PanResponderAdapter.d.ts +1 -0
- package/lib/typescript/src/PanResponderAdapter.d.ts.map +1 -0
- package/lib/typescript/src/PlatformPressable.d.ts +1 -0
- package/lib/typescript/src/PlatformPressable.d.ts.map +1 -0
- package/lib/typescript/src/SceneMap.d.ts +1 -0
- package/lib/typescript/src/SceneMap.d.ts.map +1 -0
- package/lib/typescript/src/SceneView.d.ts +1 -0
- package/lib/typescript/src/SceneView.d.ts.map +1 -0
- package/lib/typescript/src/TabBar.d.ts +4 -2
- package/lib/typescript/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/src/TabBarIndicator.d.ts +1 -0
- package/lib/typescript/src/TabBarIndicator.d.ts.map +1 -0
- package/lib/typescript/src/TabBarItem.d.ts +3 -1
- package/lib/typescript/src/TabBarItem.d.ts.map +1 -0
- package/lib/typescript/src/TabView.d.ts +2 -1
- package/lib/typescript/src/TabView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +1 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/useAnimatedValue.d.ts +1 -0
- package/lib/typescript/src/useAnimatedValue.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/TabBar.tsx +5 -0
- package/src/TabBarItem.tsx +4 -1
- package/src/TabView.tsx +2 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
|
|
3
2
|
import * as React from 'react';
|
|
4
3
|
import { Animated, I18nManager, Keyboard, PanResponder, StyleSheet, View } from 'react-native';
|
|
5
4
|
import useAnimatedValue from './useAnimatedValue';
|
|
@@ -44,16 +43,15 @@ export default function PanResponderAdapter(_ref) {
|
|
|
44
43
|
timing,
|
|
45
44
|
...transitionConfig
|
|
46
45
|
} = DefaultTransitionSpec;
|
|
47
|
-
|
|
48
46
|
if (animate) {
|
|
49
|
-
Animated.parallel([timing(panX, {
|
|
47
|
+
Animated.parallel([timing(panX, {
|
|
48
|
+
...transitionConfig,
|
|
50
49
|
toValue: offset,
|
|
51
50
|
useNativeDriver: false
|
|
52
51
|
})]).start(_ref2 => {
|
|
53
52
|
let {
|
|
54
53
|
finished
|
|
55
54
|
} = _ref2;
|
|
56
|
-
|
|
57
55
|
if (finished) {
|
|
58
56
|
onIndexChangeRef.current(index);
|
|
59
57
|
pendingIndexRef.current = undefined;
|
|
@@ -79,84 +77,69 @@ export default function PanResponderAdapter(_ref) {
|
|
|
79
77
|
if (keyboardDismissMode === 'auto') {
|
|
80
78
|
Keyboard.dismiss();
|
|
81
79
|
}
|
|
82
|
-
|
|
83
80
|
if (layout.width && currentIndexRef.current !== index) {
|
|
84
81
|
currentIndexRef.current = index;
|
|
85
82
|
jumpToIndex(index);
|
|
86
83
|
}
|
|
87
84
|
}, [jumpToIndex, keyboardDismissMode, layout.width, index]);
|
|
88
|
-
|
|
89
85
|
const isMovingHorizontally = (_, gestureState) => {
|
|
90
86
|
return Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2);
|
|
91
87
|
};
|
|
92
|
-
|
|
93
88
|
const canMoveScreen = (event, gestureState) => {
|
|
94
89
|
if (swipeEnabled === false) {
|
|
95
90
|
return false;
|
|
96
91
|
}
|
|
97
|
-
|
|
98
92
|
const diffX = I18nManager.isRTL ? -gestureState.dx : gestureState.dx;
|
|
99
93
|
return isMovingHorizontally(event, gestureState) && (diffX >= DEAD_ZONE && currentIndexRef.current > 0 || diffX <= -DEAD_ZONE && currentIndexRef.current < routes.length - 1);
|
|
100
94
|
};
|
|
101
|
-
|
|
102
95
|
const startGesture = () => {
|
|
103
96
|
onSwipeStart === null || onSwipeStart === void 0 ? void 0 : onSwipeStart();
|
|
104
|
-
|
|
105
97
|
if (keyboardDismissMode === 'on-drag') {
|
|
106
98
|
Keyboard.dismiss();
|
|
107
99
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
100
|
+
panX.stopAnimation();
|
|
101
|
+
// @ts-expect-error: _value is private, but docs use it as well
|
|
111
102
|
panX.setOffset(panX._value);
|
|
112
103
|
};
|
|
113
|
-
|
|
114
104
|
const respondToGesture = (_, gestureState) => {
|
|
115
105
|
const diffX = I18nManager.isRTL ? -gestureState.dx : gestureState.dx;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
diffX > 0 && index <= 0 ||
|
|
106
|
+
if (
|
|
107
|
+
// swiping left
|
|
108
|
+
diffX > 0 && index <= 0 ||
|
|
109
|
+
// swiping right
|
|
119
110
|
diffX < 0 && index >= routes.length - 1) {
|
|
120
111
|
return;
|
|
121
112
|
}
|
|
122
|
-
|
|
123
113
|
if (layout.width) {
|
|
124
114
|
// @ts-expect-error: _offset is private, but docs use it as well
|
|
125
115
|
const position = (panX._offset + diffX) / -layout.width;
|
|
126
116
|
const next = position > index ? Math.ceil(position) : Math.floor(position);
|
|
127
|
-
|
|
128
117
|
if (next !== index) {
|
|
129
118
|
listenersRef.current.forEach(listener => listener(next));
|
|
130
119
|
}
|
|
131
120
|
}
|
|
132
|
-
|
|
133
121
|
panX.setValue(diffX);
|
|
134
122
|
};
|
|
135
|
-
|
|
136
123
|
const finishGesture = (_, gestureState) => {
|
|
137
124
|
panX.flattenOffset();
|
|
138
125
|
onSwipeEnd === null || onSwipeEnd === void 0 ? void 0 : onSwipeEnd();
|
|
139
126
|
const currentIndex = typeof pendingIndexRef.current === 'number' ? pendingIndexRef.current : currentIndexRef.current;
|
|
140
127
|
let nextIndex = currentIndex;
|
|
141
|
-
|
|
142
128
|
if (Math.abs(gestureState.dx) > Math.abs(gestureState.dy) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy) && (Math.abs(gestureState.dx) > swipeDistanceThreshold || Math.abs(gestureState.vx) > swipeVelocityThreshold)) {
|
|
143
129
|
nextIndex = Math.round(Math.min(Math.max(0, I18nManager.isRTL ? currentIndex + gestureState.dx / Math.abs(gestureState.dx) : currentIndex - gestureState.dx / Math.abs(gestureState.dx)), routes.length - 1));
|
|
144
130
|
currentIndexRef.current = nextIndex;
|
|
145
131
|
}
|
|
146
|
-
|
|
147
132
|
if (!isFinite(nextIndex)) {
|
|
148
133
|
nextIndex = currentIndex;
|
|
149
134
|
}
|
|
150
|
-
|
|
151
135
|
jumpToIndex(nextIndex, true);
|
|
152
|
-
};
|
|
153
|
-
|
|
136
|
+
};
|
|
154
137
|
|
|
138
|
+
// TODO: use the listeners
|
|
155
139
|
const addEnterListener = React.useCallback(listener => {
|
|
156
140
|
listenersRef.current.push(listener);
|
|
157
141
|
return () => {
|
|
158
142
|
const index = listenersRef.current.indexOf(listener);
|
|
159
|
-
|
|
160
143
|
if (index > -1) {
|
|
161
144
|
listenersRef.current.splice(index, 1);
|
|
162
145
|
}
|
|
@@ -183,7 +166,7 @@ export default function PanResponderAdapter(_ref) {
|
|
|
183
166
|
}), I18nManager.isRTL ? -1 : 1);
|
|
184
167
|
const position = React.useMemo(() => layout.width ? Animated.divide(panX, -layout.width) : null, [layout.width, panX]);
|
|
185
168
|
return children({
|
|
186
|
-
position: position
|
|
169
|
+
position: position ?? new Animated.Value(index),
|
|
187
170
|
addEnterListener,
|
|
188
171
|
jumpTo,
|
|
189
172
|
render: children => /*#__PURE__*/React.createElement(Animated.View, _extends({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Animated","I18nManager","Keyboard","PanResponder","StyleSheet","View","useAnimatedValue","DEAD_ZONE","DefaultTransitionSpec","timing","spring","stiffness","damping","mass","overshootClamping","PanResponderAdapter","layout","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onSwipeStart","onSwipeEnd","children","style","animationEnabled","routes","index","panX","listenersRef","useRef","navigationStateRef","layoutRef","onIndexChangeRef","currentIndexRef","pendingIndexRef","swipeVelocityThreshold","swipeDistanceThreshold","width","jumpToIndex","useCallback","animate","offset","current","transitionConfig","parallel","toValue","useNativeDriver","start","finished","undefined","setValue","useEffect","dismiss","isMovingHorizontally","_","gestureState","Math","abs","dx","dy","vx","vy","canMoveScreen","event","diffX","isRTL","length","startGesture","stopAnimation","setOffset","_value","respondToGesture","position","_offset","next","ceil","floor","forEach","listener","finishGesture","flattenOffset","currentIndex","nextIndex","round","min","max","isFinite","addEnterListener","push","indexOf","splice","jumpTo","key","findIndex","route","panResponder","create","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderGrant","onPanResponderMove","onPanResponderTerminate","onPanResponderRelease","onPanResponderTerminationRequest","maxTranslate","translateX","multiply","interpolate","inputRange","outputRange","extrapolate","useMemo","divide","Value","render","styles","sheet","transform","panHandlers","Children","map","child","i","focused","absoluteFill","flex","flexDirection","alignItems"],"sources":["PanResponderAdapter.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n GestureResponderEvent,\n I18nManager,\n Keyboard,\n PanResponder,\n PanResponderGestureState,\n StyleSheet,\n View,\n} from 'react-native';\n\nimport type {\n EventEmitterProps,\n Layout,\n Listener,\n NavigationState,\n PagerProps,\n Route,\n} from './types';\nimport useAnimatedValue from './useAnimatedValue';\n\ntype Props<T extends Route> = PagerProps & {\n layout: Layout;\n onIndexChange: (index: number) => void;\n navigationState: NavigationState<T>;\n children: (\n props: EventEmitterProps & {\n // Animated value which represents the state of current index\n // It can include fractional digits as it represents the intermediate value\n position: Animated.AnimatedInterpolation;\n // Function to actually render the content of the pager\n // The parent component takes care of rendering\n render: (children: React.ReactNode) => React.ReactNode;\n // Callback to call when switching the tab\n // The tab switch animation is performed even if the index in state is unchanged\n jumpTo: (key: string) => void;\n }\n ) => React.ReactElement;\n};\n\nconst DEAD_ZONE = 12;\n\nconst DefaultTransitionSpec = {\n timing: Animated.spring,\n stiffness: 1000,\n damping: 500,\n mass: 3,\n overshootClamping: true,\n};\n\nexport default function PanResponderAdapter<T extends Route>({\n layout,\n keyboardDismissMode = 'auto',\n swipeEnabled = true,\n navigationState,\n onIndexChange,\n onSwipeStart,\n onSwipeEnd,\n children,\n style,\n animationEnabled = false,\n}: Props<T>) {\n const { routes, index } = navigationState;\n\n const panX = useAnimatedValue(0);\n\n const listenersRef = React.useRef<Listener[]>([]);\n\n const navigationStateRef = React.useRef(navigationState);\n const layoutRef = React.useRef(layout);\n const onIndexChangeRef = React.useRef(onIndexChange);\n\n const currentIndexRef = React.useRef(index);\n const pendingIndexRef = React.useRef<number>();\n\n const swipeVelocityThreshold = 0.15;\n const swipeDistanceThreshold = layout.width / 1.75;\n\n const jumpToIndex = React.useCallback(\n (index: number, animate = animationEnabled) => {\n const offset = -index * layoutRef.current.width;\n\n const { timing, ...transitionConfig } = DefaultTransitionSpec;\n\n if (animate) {\n Animated.parallel([\n timing(panX, {\n ...transitionConfig,\n toValue: offset,\n useNativeDriver: false,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n onIndexChangeRef.current(index);\n pendingIndexRef.current = undefined;\n }\n });\n pendingIndexRef.current = index;\n } else {\n panX.setValue(offset);\n onIndexChangeRef.current(index);\n pendingIndexRef.current = undefined;\n }\n },\n [animationEnabled, panX]\n );\n\n React.useEffect(() => {\n navigationStateRef.current = navigationState;\n layoutRef.current = layout;\n onIndexChangeRef.current = onIndexChange;\n });\n\n React.useEffect(() => {\n const offset = -navigationStateRef.current.index * layout.width;\n\n panX.setValue(offset);\n }, [layout.width, panX]);\n\n React.useEffect(() => {\n if (keyboardDismissMode === 'auto') {\n Keyboard.dismiss();\n }\n\n if (layout.width && currentIndexRef.current !== index) {\n currentIndexRef.current = index;\n jumpToIndex(index);\n }\n }, [jumpToIndex, keyboardDismissMode, layout.width, index]);\n\n const isMovingHorizontally = (\n _: GestureResponderEvent,\n gestureState: PanResponderGestureState\n ) => {\n return (\n Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) &&\n Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2)\n );\n };\n\n const canMoveScreen = (\n event: GestureResponderEvent,\n gestureState: PanResponderGestureState\n ) => {\n if (swipeEnabled === false) {\n return false;\n }\n\n const diffX = I18nManager.isRTL ? -gestureState.dx : gestureState.dx;\n\n return (\n isMovingHorizontally(event, gestureState) &&\n ((diffX >= DEAD_ZONE && currentIndexRef.current > 0) ||\n (diffX <= -DEAD_ZONE && currentIndexRef.current < routes.length - 1))\n );\n };\n\n const startGesture = () => {\n onSwipeStart?.();\n\n if (keyboardDismissMode === 'on-drag') {\n Keyboard.dismiss();\n }\n\n panX.stopAnimation();\n // @ts-expect-error: _value is private, but docs use it as well\n panX.setOffset(panX._value);\n };\n\n const respondToGesture = (\n _: GestureResponderEvent,\n gestureState: PanResponderGestureState\n ) => {\n const diffX = I18nManager.isRTL ? -gestureState.dx : gestureState.dx;\n\n if (\n // swiping left\n (diffX > 0 && index <= 0) ||\n // swiping right\n (diffX < 0 && index >= routes.length - 1)\n ) {\n return;\n }\n\n if (layout.width) {\n // @ts-expect-error: _offset is private, but docs use it as well\n const position = (panX._offset + diffX) / -layout.width;\n const next =\n position > index ? Math.ceil(position) : Math.floor(position);\n\n if (next !== index) {\n listenersRef.current.forEach((listener) => listener(next));\n }\n }\n\n panX.setValue(diffX);\n };\n\n const finishGesture = (\n _: GestureResponderEvent,\n gestureState: PanResponderGestureState\n ) => {\n panX.flattenOffset();\n\n onSwipeEnd?.();\n\n const currentIndex =\n typeof pendingIndexRef.current === 'number'\n ? pendingIndexRef.current\n : currentIndexRef.current;\n\n let nextIndex = currentIndex;\n\n if (\n Math.abs(gestureState.dx) > Math.abs(gestureState.dy) &&\n Math.abs(gestureState.vx) > Math.abs(gestureState.vy) &&\n (Math.abs(gestureState.dx) > swipeDistanceThreshold ||\n Math.abs(gestureState.vx) > swipeVelocityThreshold)\n ) {\n nextIndex = Math.round(\n Math.min(\n Math.max(\n 0,\n I18nManager.isRTL\n ? currentIndex + gestureState.dx / Math.abs(gestureState.dx)\n : currentIndex - gestureState.dx / Math.abs(gestureState.dx)\n ),\n routes.length - 1\n )\n );\n\n currentIndexRef.current = nextIndex;\n }\n\n if (!isFinite(nextIndex)) {\n nextIndex = currentIndex;\n }\n\n jumpToIndex(nextIndex, true);\n };\n\n // TODO: use the listeners\n const addEnterListener = React.useCallback((listener: Listener) => {\n listenersRef.current.push(listener);\n\n return () => {\n const index = listenersRef.current.indexOf(listener);\n\n if (index > -1) {\n listenersRef.current.splice(index, 1);\n }\n };\n }, []);\n\n const jumpTo = React.useCallback(\n (key: string) => {\n const index = navigationStateRef.current.routes.findIndex(\n (route: { key: string }) => route.key === key\n );\n\n jumpToIndex(index);\n },\n [jumpToIndex]\n );\n\n const panResponder = PanResponder.create({\n onMoveShouldSetPanResponder: canMoveScreen,\n onMoveShouldSetPanResponderCapture: canMoveScreen,\n onPanResponderGrant: startGesture,\n onPanResponderMove: respondToGesture,\n onPanResponderTerminate: finishGesture,\n onPanResponderRelease: finishGesture,\n onPanResponderTerminationRequest: () => true,\n });\n\n const maxTranslate = layout.width * (routes.length - 1);\n const translateX = Animated.multiply(\n panX.interpolate({\n inputRange: [-maxTranslate, 0],\n outputRange: [-maxTranslate, 0],\n extrapolate: 'clamp',\n }),\n I18nManager.isRTL ? -1 : 1\n );\n\n const position = React.useMemo(\n () => (layout.width ? Animated.divide(panX, -layout.width) : null),\n [layout.width, panX]\n );\n\n return children({\n position: position ?? new Animated.Value(index),\n addEnterListener,\n jumpTo,\n render: (children) => (\n <Animated.View\n style={[\n styles.sheet,\n layout.width\n ? {\n width: routes.length * layout.width,\n transform: [{ translateX }],\n }\n : null,\n style,\n ]}\n {...panResponder.panHandlers}\n >\n {React.Children.map(children, (child, i) => {\n const route = routes[i];\n const focused = i === index;\n\n return (\n <View\n key={route.key}\n style={\n layout.width\n ? { width: layout.width }\n : focused\n ? StyleSheet.absoluteFill\n : null\n }\n >\n {focused || layout.width ? child : null}\n </View>\n );\n })}\n </Animated.View>\n ),\n });\n}\n\nconst styles = StyleSheet.create({\n sheet: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'stretch',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","Animated","I18nManager","Keyboard","PanResponder","StyleSheet","View","useAnimatedValue","DEAD_ZONE","DefaultTransitionSpec","timing","spring","stiffness","damping","mass","overshootClamping","PanResponderAdapter","layout","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onSwipeStart","onSwipeEnd","children","style","animationEnabled","routes","index","panX","listenersRef","useRef","navigationStateRef","layoutRef","onIndexChangeRef","currentIndexRef","pendingIndexRef","swipeVelocityThreshold","swipeDistanceThreshold","width","jumpToIndex","useCallback","animate","offset","current","transitionConfig","parallel","toValue","useNativeDriver","start","finished","undefined","setValue","useEffect","dismiss","isMovingHorizontally","_","gestureState","Math","abs","dx","dy","vx","vy","canMoveScreen","event","diffX","isRTL","length","startGesture","stopAnimation","setOffset","_value","respondToGesture","position","_offset","next","ceil","floor","forEach","listener","finishGesture","flattenOffset","currentIndex","nextIndex","round","min","max","isFinite","addEnterListener","push","indexOf","splice","jumpTo","key","findIndex","route","panResponder","create","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderGrant","onPanResponderMove","onPanResponderTerminate","onPanResponderRelease","onPanResponderTerminationRequest","maxTranslate","translateX","multiply","interpolate","inputRange","outputRange","extrapolate","useMemo","divide","Value","render","styles","sheet","transform","panHandlers","Children","map","child","i","focused","absoluteFill","flex","flexDirection","alignItems"],"sourceRoot":"../../src","sources":["PanResponderAdapter.tsx"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
|
|
3
2
|
import * as React from 'react';
|
|
4
3
|
import { Platform, Pressable } from 'react-native';
|
|
5
4
|
const ANDROID_VERSION_LOLLIPOP = 21;
|
|
6
5
|
const ANDROID_SUPPORTS_RIPPLE = Platform.OS === 'android' && Platform.Version >= ANDROID_VERSION_LOLLIPOP;
|
|
6
|
+
|
|
7
7
|
/**
|
|
8
8
|
* PlatformPressable provides an abstraction on top of TouchableNativeFeedback and
|
|
9
9
|
* TouchableOpacity to handle platform differences.
|
|
@@ -11,7 +11,6 @@ const ANDROID_SUPPORTS_RIPPLE = Platform.OS === 'android' && Platform.Version >=
|
|
|
11
11
|
* On Android, you can pass the props of TouchableNativeFeedback.
|
|
12
12
|
* On other platforms, you can pass the props of TouchableOpacity.
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
14
|
export default function PlatformPressable(_ref) {
|
|
16
15
|
let {
|
|
17
16
|
android_ripple,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Platform","Pressable","ANDROID_VERSION_LOLLIPOP","ANDROID_SUPPORTS_RIPPLE","OS","Version","PlatformPressable","android_ripple","pressColor","pressOpacity","style","rest","color","undefined","pressed","opacity"],"
|
|
1
|
+
{"version":3,"names":["React","Platform","Pressable","ANDROID_VERSION_LOLLIPOP","ANDROID_SUPPORTS_RIPPLE","OS","Version","PlatformPressable","android_ripple","pressColor","pressOpacity","style","rest","color","undefined","pressed","opacity"],"sourceRoot":"../../src","sources":["PlatformPressable.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,SAAS,QAAwB,cAAc;AAQlE,MAAMC,wBAAwB,GAAG,EAAE;AACnC,MAAMC,uBAAuB,GAC3BH,QAAQ,CAACI,EAAE,KAAK,SAAS,IAAIJ,QAAQ,CAACK,OAAO,IAAIH,wBAAwB;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASI,iBAAiB,OAM/B;EAAA,IANgC;IACxCC,cAAc;IACdC,UAAU,GAAG,oBAAoB;IACjCC,YAAY;IACZC,KAAK;IACL,GAAGC;EACE,CAAC;EACN,oBACE,oBAAC,SAAS;IACR,cAAc,EACZR,uBAAuB,GACnB;MAAES,KAAK,EAAEJ,UAAU;MAAE,GAAGD;IAAe,CAAC,GACxCM,SACL;IACD,KAAK,EAAE;MAAA,IAAC;QAAEC;MAAQ,CAAC;MAAA,OAAK,CACtB;QAAEC,OAAO,EAAED,OAAO,IAAI,CAACX,uBAAuB,GAAGM,YAAY,GAAG;MAAE,CAAC,EACnE,OAAOC,KAAK,KAAK,UAAU,GAAGA,KAAK,CAAC;QAAEI;MAAQ,CAAC,CAAC,GAAGJ,KAAK,CACzD;IAAA;EAAC,GACEC,IAAI,EACR;AAEN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","SceneComponent","memo","component","rest","createElement","SceneMap","scenes","route","jumpTo","position","key"],"
|
|
1
|
+
{"version":3,"names":["React","SceneComponent","memo","component","rest","createElement","SceneMap","scenes","route","jumpTo","position","key"],"sourceRoot":"../../src","sources":["SceneMap.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAQ9B,MAAMC,cAAc,gBAAGD,KAAK,CAACE,IAAI,CAC/B,QAGS;EAAA,IAHwD;IAC/DC,SAAS;IACT,GAAGC;EACF,CAAC;EACF,oBAAOJ,KAAK,CAACK,aAAa,CAACF,SAAS,EAAEC,IAAI,CAAC;AAC7C,CAAC,CACF;AAED,eAAe,SAASE,QAAQ,CAAgBC,MAE/C,EAAE;EACD,OAAO;IAAA,IAAC;MAAEC,KAAK;MAAEC,MAAM;MAAEC;IAAqB,CAAC;IAAA,oBAC7C,oBAAC,cAAc;MACb,GAAG,EAAEF,KAAK,CAACG,GAAI;MACf,SAAS,EAAEJ,MAAM,CAACC,KAAK,CAACG,GAAG,CAAE;MAC7B,KAAK,EAAEH,KAAM;MACb,MAAM,EAAEC,MAAO;MACf,QAAQ,EAAEC;IAAS,EACnB;EAAA,CACH;AACH"}
|
package/lib/module/SceneView.js
CHANGED
|
@@ -12,12 +12,10 @@ export default function SceneView(_ref) {
|
|
|
12
12
|
style
|
|
13
13
|
} = _ref;
|
|
14
14
|
const [isLoading, setIsLoading] = React.useState(Math.abs(navigationState.index - index) > lazyPreloadDistance);
|
|
15
|
-
|
|
16
15
|
if (isLoading && Math.abs(navigationState.index - index) <= lazyPreloadDistance) {
|
|
17
16
|
// Always render the route when it becomes focused
|
|
18
17
|
setIsLoading(false);
|
|
19
18
|
}
|
|
20
|
-
|
|
21
19
|
React.useEffect(() => {
|
|
22
20
|
const handleEnter = value => {
|
|
23
21
|
// If we're entering the current route, we need to load it
|
|
@@ -26,15 +24,12 @@ export default function SceneView(_ref) {
|
|
|
26
24
|
if (prevState) {
|
|
27
25
|
return false;
|
|
28
26
|
}
|
|
29
|
-
|
|
30
27
|
return prevState;
|
|
31
28
|
});
|
|
32
29
|
}
|
|
33
30
|
};
|
|
34
|
-
|
|
35
31
|
let unsubscribe;
|
|
36
32
|
let timer;
|
|
37
|
-
|
|
38
33
|
if (lazy && isLoading) {
|
|
39
34
|
// If lazy mode is enabled, listen to when we enter screens
|
|
40
35
|
unsubscribe = addEnterListener(handleEnter);
|
|
@@ -43,10 +38,8 @@ export default function SceneView(_ref) {
|
|
|
43
38
|
// This improves the initial startup time as the scene is no longer blocking
|
|
44
39
|
timer = setTimeout(() => setIsLoading(false), 0);
|
|
45
40
|
}
|
|
46
|
-
|
|
47
41
|
return () => {
|
|
48
42
|
var _unsubscribe;
|
|
49
|
-
|
|
50
43
|
(_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 ? void 0 : _unsubscribe();
|
|
51
44
|
clearTimeout(timer);
|
|
52
45
|
};
|
|
@@ -55,12 +48,14 @@ export default function SceneView(_ref) {
|
|
|
55
48
|
return /*#__PURE__*/React.createElement(View, {
|
|
56
49
|
accessibilityElementsHidden: !focused,
|
|
57
50
|
importantForAccessibility: focused ? 'auto' : 'no-hide-descendants',
|
|
58
|
-
style: [styles.route,
|
|
51
|
+
style: [styles.route,
|
|
52
|
+
// If we don't have the layout yet, make the focused screen fill the container
|
|
59
53
|
// This avoids delay before we are able to render pages side by side
|
|
60
54
|
layout.width ? {
|
|
61
55
|
width: layout.width
|
|
62
56
|
} : focused ? StyleSheet.absoluteFill : null, style]
|
|
63
|
-
},
|
|
57
|
+
},
|
|
58
|
+
// Only render the route only if it's either focused or layout is available
|
|
64
59
|
// When layout is not available, we must not render unfocused routes
|
|
65
60
|
// so that the focused route can fill the screen
|
|
66
61
|
focused || layout.width ? children({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","SceneView","children","navigationState","lazy","layout","index","lazyPreloadDistance","addEnterListener","style","isLoading","setIsLoading","useState","Math","abs","useEffect","handleEnter","value","prevState","unsubscribe","timer","setTimeout","clearTimeout","focused","styles","route","width","absoluteFill","loading","create","flex","overflow"],"
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","SceneView","children","navigationState","lazy","layout","index","lazyPreloadDistance","addEnterListener","style","isLoading","setIsLoading","useState","Math","abs","useEffect","handleEnter","value","prevState","unsubscribe","timer","setTimeout","clearTimeout","focused","styles","route","width","absoluteFill","loading","create","flex","overflow"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAmBrE,eAAe,SAASC,SAAS,OASpB;EAAA,IATsC;IACjDC,QAAQ;IACRC,eAAe;IACfC,IAAI;IACJC,MAAM;IACNC,KAAK;IACLC,mBAAmB;IACnBC,gBAAgB;IAChBC;EACQ,CAAC;EACT,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGb,KAAK,CAACc,QAAQ,CAC9CC,IAAI,CAACC,GAAG,CAACX,eAAe,CAACG,KAAK,GAAGA,KAAK,CAAC,GAAGC,mBAAmB,CAC9D;EAED,IACEG,SAAS,IACTG,IAAI,CAACC,GAAG,CAACX,eAAe,CAACG,KAAK,GAAGA,KAAK,CAAC,IAAIC,mBAAmB,EAC9D;IACA;IACAI,YAAY,CAAC,KAAK,CAAC;EACrB;EAEAb,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,MAAMC,WAAW,GAAIC,KAAa,IAAK;MACrC;MACA,IAAIA,KAAK,KAAKX,KAAK,EAAE;QACnBK,YAAY,CAAEO,SAAS,IAAK;UAC1B,IAAIA,SAAS,EAAE;YACb,OAAO,KAAK;UACd;UACA,OAAOA,SAAS;QAClB,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAIC,WAAqC;IACzC,IAAIC,KAAqB;IAEzB,IAAIhB,IAAI,IAAIM,SAAS,EAAE;MACrB;MACAS,WAAW,GAAGX,gBAAgB,CAACQ,WAAW,CAAC;IAC7C,CAAC,MAAM,IAAIN,SAAS,EAAE;MACpB;MACA;MACAU,KAAK,GAAGC,UAAU,CAAC,MAAMV,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD;IAEA,OAAO,MAAM;MAAA;MACX,gBAAAQ,WAAW,iDAAX,cAAe;MACfG,YAAY,CAACF,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACZ,gBAAgB,EAAEF,KAAK,EAAEI,SAAS,EAAEN,IAAI,CAAC,CAAC;EAE9C,MAAMmB,OAAO,GAAGpB,eAAe,CAACG,KAAK,KAAKA,KAAK;EAE/C,oBACE,oBAAC,IAAI;IACH,2BAA2B,EAAE,CAACiB,OAAQ;IACtC,yBAAyB,EAAEA,OAAO,GAAG,MAAM,GAAG,qBAAsB;IACpE,KAAK,EAAE,CACLC,MAAM,CAACC,KAAK;IACZ;IACA;IACApB,MAAM,CAACqB,KAAK,GACR;MAAEA,KAAK,EAAErB,MAAM,CAACqB;IAAM,CAAC,GACvBH,OAAO,GACPxB,UAAU,CAAC4B,YAAY,GACvB,IAAI,EACRlB,KAAK;EACL;EAGA;EACA;EACA;EACAc,OAAO,IAAIlB,MAAM,CAACqB,KAAK,GAAGxB,QAAQ,CAAC;IAAE0B,OAAO,EAAElB;EAAU,CAAC,CAAC,GAAG,IAAI,CAE9D;AAEX;AAEA,MAAMc,MAAM,GAAGzB,UAAU,CAAC8B,MAAM,CAAC;EAC/BJ,KAAK,EAAE;IACLK,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC"}
|
package/lib/module/TabBar.js
CHANGED
|
@@ -4,7 +4,6 @@ import useLatestCallback from 'use-latest-callback';
|
|
|
4
4
|
import TabBarIndicator from './TabBarIndicator';
|
|
5
5
|
import TabBarItem from './TabBarItem';
|
|
6
6
|
import useAnimatedValue from './useAnimatedValue';
|
|
7
|
-
|
|
8
7
|
const Separator = _ref => {
|
|
9
8
|
let {
|
|
10
9
|
width
|
|
@@ -15,43 +14,32 @@ const Separator = _ref => {
|
|
|
15
14
|
}
|
|
16
15
|
});
|
|
17
16
|
};
|
|
18
|
-
|
|
19
17
|
const getFlattenedTabWidth = style => {
|
|
20
18
|
const tabStyle = StyleSheet.flatten(style);
|
|
21
19
|
return tabStyle === null || tabStyle === void 0 ? void 0 : tabStyle.width;
|
|
22
20
|
};
|
|
23
|
-
|
|
24
21
|
const getComputedTabWidth = (index, layout, routes, scrollEnabled, tabWidths, flattenedWidth) => {
|
|
25
22
|
if (flattenedWidth === 'auto') {
|
|
26
23
|
return tabWidths[routes[index].key] || 0;
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
switch (typeof flattenedWidth) {
|
|
30
26
|
case 'number':
|
|
31
27
|
return flattenedWidth;
|
|
32
|
-
|
|
33
28
|
case 'string':
|
|
34
29
|
if (flattenedWidth.endsWith('%')) {
|
|
35
30
|
const width = parseFloat(flattenedWidth);
|
|
36
|
-
|
|
37
31
|
if (Number.isFinite(width)) {
|
|
38
32
|
return layout.width * (width / 100);
|
|
39
33
|
}
|
|
40
34
|
}
|
|
41
|
-
|
|
42
35
|
}
|
|
43
|
-
|
|
44
36
|
if (scrollEnabled) {
|
|
45
37
|
return layout.width / 5 * 2;
|
|
46
38
|
}
|
|
47
|
-
|
|
48
39
|
return layout.width / routes.length;
|
|
49
40
|
};
|
|
50
|
-
|
|
51
41
|
const getMaxScrollDistance = (tabBarWidth, layoutWidth) => tabBarWidth - layoutWidth;
|
|
52
|
-
|
|
53
42
|
const getTranslateX = (scrollAmount, maxScrollDistance) => Animated.multiply(Platform.OS === 'android' && I18nManager.isRTL ? Animated.add(maxScrollDistance, Animated.multiply(scrollAmount, -1)) : scrollAmount, I18nManager.isRTL ? 1 : -1);
|
|
54
|
-
|
|
55
43
|
const getTabBarWidth = _ref2 => {
|
|
56
44
|
let {
|
|
57
45
|
navigationState,
|
|
@@ -64,9 +52,8 @@ const getTabBarWidth = _ref2 => {
|
|
|
64
52
|
const {
|
|
65
53
|
routes
|
|
66
54
|
} = navigationState;
|
|
67
|
-
return routes.reduce((acc, _, i) => acc + (i > 0 ? gap
|
|
55
|
+
return routes.reduce((acc, _, i) => acc + (i > 0 ? gap ?? 0 : 0) + getComputedTabWidth(i, layout, routes, scrollEnabled, tabWidths, flattenedTabWidth), 0);
|
|
68
56
|
};
|
|
69
|
-
|
|
70
57
|
const normalizeScrollValue = _ref3 => {
|
|
71
58
|
let {
|
|
72
59
|
layout,
|
|
@@ -87,16 +74,13 @@ const normalizeScrollValue = _ref3 => {
|
|
|
87
74
|
});
|
|
88
75
|
const maxDistance = getMaxScrollDistance(tabBarWidth, layout.width);
|
|
89
76
|
const scrollValue = Math.max(Math.min(value, maxDistance), 0);
|
|
90
|
-
|
|
91
77
|
if (Platform.OS === 'android' && I18nManager.isRTL) {
|
|
92
78
|
// On Android, scroll value is not applied in reverse in RTL
|
|
93
79
|
// so we need to manually adjust it to apply correct value
|
|
94
80
|
return maxDistance - scrollValue;
|
|
95
81
|
}
|
|
96
|
-
|
|
97
82
|
return scrollValue;
|
|
98
83
|
};
|
|
99
|
-
|
|
100
84
|
const getScrollAmount = _ref4 => {
|
|
101
85
|
let {
|
|
102
86
|
layout,
|
|
@@ -109,10 +93,11 @@ const getScrollAmount = _ref4 => {
|
|
|
109
93
|
const centerDistance = Array.from({
|
|
110
94
|
length: navigationState.index + 1
|
|
111
95
|
}).reduce((total, _, i) => {
|
|
112
|
-
const tabWidth = getComputedTabWidth(i, layout, navigationState.routes, scrollEnabled, tabWidths, flattenedTabWidth);
|
|
113
|
-
// 0 through (i - 1) and add half the width of current index i
|
|
96
|
+
const tabWidth = getComputedTabWidth(i, layout, navigationState.routes, scrollEnabled, tabWidths, flattenedTabWidth);
|
|
114
97
|
|
|
115
|
-
|
|
98
|
+
// To get the current index centered we adjust scroll amount by width of indexes
|
|
99
|
+
// 0 through (i - 1) and add half the width of current index i
|
|
100
|
+
return total + (navigationState.index === i ? (tabWidth + (gap ?? 0)) / 2 : tabWidth + (gap ?? 0));
|
|
116
101
|
}, 0);
|
|
117
102
|
const scrollAmount = centerDistance - layout.width / 2;
|
|
118
103
|
return normalizeScrollValue({
|
|
@@ -125,39 +110,34 @@ const getScrollAmount = _ref4 => {
|
|
|
125
110
|
flattenedTabWidth
|
|
126
111
|
});
|
|
127
112
|
};
|
|
128
|
-
|
|
129
113
|
const getLabelTextDefault = _ref5 => {
|
|
130
114
|
let {
|
|
131
115
|
route
|
|
132
116
|
} = _ref5;
|
|
133
117
|
return route.title;
|
|
134
118
|
};
|
|
135
|
-
|
|
136
119
|
const getAccessibleDefault = _ref6 => {
|
|
137
120
|
let {
|
|
138
121
|
route
|
|
139
122
|
} = _ref6;
|
|
140
123
|
return typeof route.accessible !== 'undefined' ? route.accessible : true;
|
|
141
124
|
};
|
|
142
|
-
|
|
143
125
|
const getAccessibilityLabelDefault = _ref7 => {
|
|
144
126
|
let {
|
|
145
127
|
route
|
|
146
128
|
} = _ref7;
|
|
147
129
|
return typeof route.accessibilityLabel === 'string' ? route.accessibilityLabel : typeof route.title === 'string' ? route.title : undefined;
|
|
148
130
|
};
|
|
149
|
-
|
|
150
131
|
const renderIndicatorDefault = props => /*#__PURE__*/React.createElement(TabBarIndicator, props);
|
|
151
|
-
|
|
152
132
|
const getTestIdDefault = _ref8 => {
|
|
153
133
|
let {
|
|
154
134
|
route
|
|
155
135
|
} = _ref8;
|
|
156
136
|
return route.testID;
|
|
157
|
-
};
|
|
158
|
-
// Defaults to 10, since that's whats FlatList is using in initialNumToRender.
|
|
159
|
-
|
|
137
|
+
};
|
|
160
138
|
|
|
139
|
+
// How many items measurements should we update per batch.
|
|
140
|
+
// Defaults to 10, since that's whats FlatList is using in initialNumToRender.
|
|
161
141
|
const MEASURE_PER_BATCH = 10;
|
|
162
142
|
export default function TabBar(_ref9) {
|
|
163
143
|
let {
|
|
@@ -188,7 +168,8 @@ export default function TabBar(_ref9) {
|
|
|
188
168
|
renderTabBarItem,
|
|
189
169
|
style,
|
|
190
170
|
tabStyle,
|
|
191
|
-
testID
|
|
171
|
+
testID,
|
|
172
|
+
android_ripple
|
|
192
173
|
} = _ref9;
|
|
193
174
|
const [layout, setLayout] = React.useState({
|
|
194
175
|
width: 0,
|
|
@@ -218,21 +199,17 @@ export default function TabBar(_ref9) {
|
|
|
218
199
|
isFirst.current = false;
|
|
219
200
|
return;
|
|
220
201
|
}
|
|
221
|
-
|
|
222
202
|
if (isWidthDynamic && !hasMeasuredTabWidths) {
|
|
223
203
|
return;
|
|
224
204
|
}
|
|
225
|
-
|
|
226
205
|
if (scrollEnabled) {
|
|
227
206
|
var _flatListRef$current;
|
|
228
|
-
|
|
229
207
|
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 ? void 0 : _flatListRef$current.scrollToOffset({
|
|
230
208
|
offset: scrollOffset,
|
|
231
209
|
animated: true
|
|
232
210
|
});
|
|
233
211
|
}
|
|
234
212
|
}, [hasMeasuredTabWidths, isWidthDynamic, scrollEnabled, scrollOffset]);
|
|
235
|
-
|
|
236
213
|
const handleLayout = e => {
|
|
237
214
|
const {
|
|
238
215
|
height,
|
|
@@ -243,7 +220,6 @@ export default function TabBar(_ref9) {
|
|
|
243
220
|
height
|
|
244
221
|
});
|
|
245
222
|
};
|
|
246
|
-
|
|
247
223
|
const tabBarWidth = getTabBarWidth({
|
|
248
224
|
layout,
|
|
249
225
|
navigationState,
|
|
@@ -278,17 +254,20 @@ export default function TabBar(_ref9) {
|
|
|
278
254
|
pressColor: pressColor,
|
|
279
255
|
pressOpacity: pressOpacity,
|
|
280
256
|
onLayout: isWidthDynamic ? e => {
|
|
281
|
-
measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
|
|
257
|
+
measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
|
|
258
|
+
|
|
259
|
+
// When we have measured widths for all of the tabs, we should updates the state
|
|
282
260
|
// We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
|
|
283
261
|
// If we have more than 10 routes divide updating tabWidths into multiple batches. Here we update only first batch of 10 items.
|
|
284
|
-
|
|
285
262
|
if (routes.length > MEASURE_PER_BATCH && index === MEASURE_PER_BATCH && routes.slice(0, MEASURE_PER_BATCH).every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
|
|
286
|
-
setTabWidths({
|
|
263
|
+
setTabWidths({
|
|
264
|
+
...measuredTabWidths.current
|
|
287
265
|
});
|
|
288
266
|
} else if (routes.every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
|
|
289
267
|
// When we have measured widths for all of the tabs, we should updates the state
|
|
290
268
|
// We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
|
|
291
|
-
setTabWidths({
|
|
269
|
+
setTabWidths({
|
|
270
|
+
...measuredTabWidths.current
|
|
292
271
|
});
|
|
293
272
|
}
|
|
294
273
|
} : undefined,
|
|
@@ -301,11 +280,9 @@ export default function TabBar(_ref9) {
|
|
|
301
280
|
}
|
|
302
281
|
};
|
|
303
282
|
onTabPress === null || onTabPress === void 0 ? void 0 : onTabPress(event);
|
|
304
|
-
|
|
305
283
|
if (event.defaultPrevented) {
|
|
306
284
|
return;
|
|
307
285
|
}
|
|
308
|
-
|
|
309
286
|
jumpTo(route.key);
|
|
310
287
|
},
|
|
311
288
|
onLongPress: () => onTabLongPress === null || onTabLongPress === void 0 ? void 0 : onTabLongPress({
|
|
@@ -314,12 +291,13 @@ export default function TabBar(_ref9) {
|
|
|
314
291
|
labelStyle: labelStyle,
|
|
315
292
|
style: tabStyle,
|
|
316
293
|
// Calculate the deafult width for tab for FlatList to work
|
|
317
|
-
defaultTabWidth: !isWidthDynamic ? getComputedTabWidth(index, layout, routes, scrollEnabled, tabWidths, getFlattenedTabWidth(tabStyle)) : undefined
|
|
294
|
+
defaultTabWidth: !isWidthDynamic ? getComputedTabWidth(index, layout, routes, scrollEnabled, tabWidths, getFlattenedTabWidth(tabStyle)) : undefined,
|
|
295
|
+
android_ripple
|
|
318
296
|
};
|
|
319
297
|
return /*#__PURE__*/React.createElement(React.Fragment, null, gap > 0 && index > 0 ? /*#__PURE__*/React.createElement(Separator, {
|
|
320
298
|
width: gap
|
|
321
299
|
}) : null, renderTabBarItem ? renderTabBarItem(props) : /*#__PURE__*/React.createElement(TabBarItem, props));
|
|
322
|
-
}, [activeColor, gap, getAccessibilityLabel, getAccessible, getLabelText, getTestID, inactiveColor, isWidthDynamic, jumpTo, labelStyle, layout, navigationState, onTabLongPress, onTabPress, position, pressColor, pressOpacity, renderBadge, renderIcon, renderLabel, renderTabBarItem, routes, scrollEnabled, tabStyle, tabWidths]);
|
|
300
|
+
}, [activeColor, android_ripple, gap, getAccessibilityLabel, getAccessible, getLabelText, getTestID, inactiveColor, isWidthDynamic, jumpTo, labelStyle, layout, navigationState, onTabLongPress, onTabPress, position, pressColor, pressOpacity, renderBadge, renderIcon, renderLabel, renderTabBarItem, routes, scrollEnabled, tabStyle, tabWidths]);
|
|
323
301
|
const keyExtractor = React.useCallback(item => item.key, []);
|
|
324
302
|
const contentContainerStyleMemoized = React.useMemo(() => [styles.tabContent, scrollEnabled ? {
|
|
325
303
|
width: tabBarWidth > separatorsWidth ? tabBarWidth : tabBarWidthPercent
|
|
@@ -337,17 +315,15 @@ export default function TabBar(_ref9) {
|
|
|
337
315
|
let {
|
|
338
316
|
changed
|
|
339
317
|
} = _ref11;
|
|
340
|
-
|
|
341
318
|
if (routes.length <= MEASURE_PER_BATCH) {
|
|
342
319
|
return;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
|
|
320
|
+
}
|
|
321
|
+
// Get next vievable item
|
|
346
322
|
const item = changed[changed.length - 1];
|
|
347
323
|
const index = (item === null || item === void 0 ? void 0 : item.index) || 0;
|
|
348
|
-
|
|
349
324
|
if (item.isViewable && (index % 10 === 0 || index === navigationState.index || index === routes.length - 1)) {
|
|
350
|
-
setTabWidths({
|
|
325
|
+
setTabWidths({
|
|
326
|
+
...measuredTabWidths.current
|
|
351
327
|
});
|
|
352
328
|
}
|
|
353
329
|
});
|