react-native-tab-view 3.3.2 → 3.3.4
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/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 +19 -57
- 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 +2 -27
- package/lib/commonjs/TabBarItem.js.map +1 -1
- package/lib/commonjs/TabView.js +6 -18
- 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 +19 -45
- 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 +2 -15
- package/lib/module/TabBarItem.js.map +1 -1
- package/lib/module/TabView.js +6 -8
- 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 +1 -0
- 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 +1 -0
- package/lib/typescript/src/TabBarItem.d.ts.map +1 -0
- package/lib/typescript/src/TabView.d.ts +1 -0
- 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 +4 -3
|
@@ -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":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,QADF,EAGEC,WAHF,EAIEC,QAJF,EAKEC,YALF,EAOEC,UAPF,EAQEC,IARF,QASO,cATP;AAmBA,OAAOC,gBAAP,MAA6B,oBAA7B;AAqBA,MAAMC,SAAS,GAAG,EAAlB;AAEA,MAAMC,qBAAqB,GAAG;EAC5BC,MAAM,EAAET,QAAQ,CAACU,MADW;EAE5BC,SAAS,EAAE,IAFiB;EAG5BC,OAAO,EAAE,GAHmB;EAI5BC,IAAI,EAAE,CAJsB;EAK5BC,iBAAiB,EAAE;AALS,CAA9B;AAQA,eAAe,SAASC,mBAAT,OAWF;EAAA,IAXgD;IAC3DC,MAD2D;IAE3DC,mBAAmB,GAAG,MAFqC;IAG3DC,YAAY,GAAG,IAH4C;IAI3DC,eAJ2D;IAK3DC,aAL2D;IAM3DC,YAN2D;IAO3DC,UAP2D;IAQ3DC,QAR2D;IAS3DC,KAT2D;IAU3DC,gBAAgB,GAAG;EAVwC,CAWhD;EACX,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAoBR,eAA1B;EAEA,MAAMS,IAAI,GAAGtB,gBAAgB,CAAC,CAAD,CAA7B;EAEA,MAAMuB,YAAY,GAAG9B,KAAK,CAAC+B,MAAN,CAAyB,EAAzB,CAArB;EAEA,MAAMC,kBAAkB,GAAGhC,KAAK,CAAC+B,MAAN,CAAaX,eAAb,CAA3B;EACA,MAAMa,SAAS,GAAGjC,KAAK,CAAC+B,MAAN,CAAad,MAAb,CAAlB;EACA,MAAMiB,gBAAgB,GAAGlC,KAAK,CAAC+B,MAAN,CAAaV,aAAb,CAAzB;EAEA,MAAMc,eAAe,GAAGnC,KAAK,CAAC+B,MAAN,CAAaH,KAAb,CAAxB;EACA,MAAMQ,eAAe,GAAGpC,KAAK,CAAC+B,MAAN,EAAxB;EAEA,MAAMM,sBAAsB,GAAG,IAA/B;EACA,MAAMC,sBAAsB,GAAGrB,MAAM,CAACsB,KAAP,GAAe,IAA9C;EAEA,MAAMC,WAAW,GAAGxC,KAAK,CAACyC,WAAN,CAClB,UAACb,KAAD,EAA+C;IAAA,IAA/Bc,OAA+B,uEAArBhB,gBAAqB;IAC7C,MAAMiB,MAAM,GAAG,CAACf,KAAD,GAASK,SAAS,CAACW,OAAV,CAAkBL,KAA1C;IAEA,MAAM;MAAE7B,MAAF;MAAU,GAAGmC;IAAb,IAAkCpC,qBAAxC;;IAEA,IAAIiC,OAAJ,EAAa;MACXzC,QAAQ,CAAC6C,QAAT,CAAkB,CAChBpC,MAAM,CAACmB,IAAD,EAAO,EACX,GAAGgB,gBADQ;QAEXE,OAAO,EAAEJ,MAFE;QAGXK,eAAe,EAAE;MAHN,CAAP,CADU,CAAlB,EAMGC,KANH,CAMS,SAAkB;QAAA,IAAjB;UAAEC;QAAF,CAAiB;;QACzB,IAAIA,QAAJ,EAAc;UACZhB,gBAAgB,CAACU,OAAjB,CAAyBhB,KAAzB;UACAQ,eAAe,CAACQ,OAAhB,GAA0BO,SAA1B;QACD;MACF,CAXD;MAYAf,eAAe,CAACQ,OAAhB,GAA0BhB,KAA1B;IACD,CAdD,MAcO;MACLC,IAAI,CAACuB,QAAL,CAAcT,MAAd;MACAT,gBAAgB,CAACU,OAAjB,CAAyBhB,KAAzB;MACAQ,eAAe,CAACQ,OAAhB,GAA0BO,SAA1B;IACD;EACF,CAzBiB,EA0BlB,CAACzB,gBAAD,EAAmBG,IAAnB,CA1BkB,CAApB;EA6BA7B,KAAK,CAACqD,SAAN,CAAgB,MAAM;IACpBrB,kBAAkB,CAACY,OAAnB,GAA6BxB,eAA7B;IACAa,SAAS,CAACW,OAAV,GAAoB3B,MAApB;IACAiB,gBAAgB,CAACU,OAAjB,GAA2BvB,aAA3B;EACD,CAJD;EAMArB,KAAK,CAACqD,SAAN,CAAgB,MAAM;IACpB,MAAMV,MAAM,GAAG,CAACX,kBAAkB,CAACY,OAAnB,CAA2BhB,KAA5B,GAAoCX,MAAM,CAACsB,KAA1D;IAEAV,IAAI,CAACuB,QAAL,CAAcT,MAAd;EACD,CAJD,EAIG,CAAC1B,MAAM,CAACsB,KAAR,EAAeV,IAAf,CAJH;EAMA7B,KAAK,CAACqD,SAAN,CAAgB,MAAM;IACpB,IAAInC,mBAAmB,KAAK,MAA5B,EAAoC;MAClCf,QAAQ,CAACmD,OAAT;IACD;;IAED,IAAIrC,MAAM,CAACsB,KAAP,IAAgBJ,eAAe,CAACS,OAAhB,KAA4BhB,KAAhD,EAAuD;MACrDO,eAAe,CAACS,OAAhB,GAA0BhB,KAA1B;MACAY,WAAW,CAACZ,KAAD,CAAX;IACD;EACF,CATD,EASG,CAACY,WAAD,EAActB,mBAAd,EAAmCD,MAAM,CAACsB,KAA1C,EAAiDX,KAAjD,CATH;;EAWA,MAAM2B,oBAAoB,GAAG,CAC3BC,CAD2B,EAE3BC,YAF2B,KAGxB;IACH,OACEC,IAAI,CAACC,GAAL,CAASF,YAAY,CAACG,EAAtB,IAA4BF,IAAI,CAACC,GAAL,CAASF,YAAY,CAACI,EAAb,GAAkB,CAA3B,CAA5B,IACAH,IAAI,CAACC,GAAL,CAASF,YAAY,CAACK,EAAtB,IAA4BJ,IAAI,CAACC,GAAL,CAASF,YAAY,CAACM,EAAb,GAAkB,CAA3B,CAF9B;EAID,CARD;;EAUA,MAAMC,aAAa,GAAG,CACpBC,KADoB,EAEpBR,YAFoB,KAGjB;IACH,IAAItC,YAAY,KAAK,KAArB,EAA4B;MAC1B,OAAO,KAAP;IACD;;IAED,MAAM+C,KAAK,GAAGhE,WAAW,CAACiE,KAAZ,GAAoB,CAACV,YAAY,CAACG,EAAlC,GAAuCH,YAAY,CAACG,EAAlE;IAEA,OACEL,oBAAoB,CAACU,KAAD,EAAQR,YAAR,CAApB,KACES,KAAK,IAAI1D,SAAT,IAAsB2B,eAAe,CAACS,OAAhB,GAA0B,CAAjD,IACEsB,KAAK,IAAI,CAAC1D,SAAV,IAAuB2B,eAAe,CAACS,OAAhB,GAA0BjB,MAAM,CAACyC,MAAP,GAAgB,CAFpE,CADF;EAKD,CAfD;;EAiBA,MAAMC,YAAY,GAAG,MAAM;IACzB/C,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY;;IAEZ,IAAIJ,mBAAmB,KAAK,SAA5B,EAAuC;MACrCf,QAAQ,CAACmD,OAAT;IACD;;IAEDzB,IAAI,CAACyC,aAAL,GAPyB,CAQzB;;IACAzC,IAAI,CAAC0C,SAAL,CAAe1C,IAAI,CAAC2C,MAApB;EACD,CAVD;;EAYA,MAAMC,gBAAgB,GAAG,CACvBjB,CADuB,EAEvBC,YAFuB,KAGpB;IACH,MAAMS,KAAK,GAAGhE,WAAW,CAACiE,KAAZ,GAAoB,CAACV,YAAY,CAACG,EAAlC,GAAuCH,YAAY,CAACG,EAAlE;;IAEA,KACE;IACCM,KAAK,GAAG,CAAR,IAAatC,KAAK,IAAI,CAAvB,IACA;IACCsC,KAAK,GAAG,CAAR,IAAatC,KAAK,IAAID,MAAM,CAACyC,MAAP,GAAgB,CAJzC,EAKE;MACA;IACD;;IAED,IAAInD,MAAM,CAACsB,KAAX,EAAkB;MAChB;MACA,MAAMmC,QAAQ,GAAG,CAAC7C,IAAI,CAAC8C,OAAL,GAAeT,KAAhB,IAAyB,CAACjD,MAAM,CAACsB,KAAlD;MACA,MAAMqC,IAAI,GACRF,QAAQ,GAAG9C,KAAX,GAAmB8B,IAAI,CAACmB,IAAL,CAAUH,QAAV,CAAnB,GAAyChB,IAAI,CAACoB,KAAL,CAAWJ,QAAX,CAD3C;;MAGA,IAAIE,IAAI,KAAKhD,KAAb,EAAoB;QAClBE,YAAY,CAACc,OAAb,CAAqBmC,OAArB,CAA8BC,QAAD,IAAcA,QAAQ,CAACJ,IAAD,CAAnD;MACD;IACF;;IAED/C,IAAI,CAACuB,QAAL,CAAcc,KAAd;EACD,CA3BD;;EA6BA,MAAMe,aAAa,GAAG,CACpBzB,CADoB,EAEpBC,YAFoB,KAGjB;IACH5B,IAAI,CAACqD,aAAL;IAEA3D,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU;IAEV,MAAM4D,YAAY,GAChB,OAAO/C,eAAe,CAACQ,OAAvB,KAAmC,QAAnC,GACIR,eAAe,CAACQ,OADpB,GAEIT,eAAe,CAACS,OAHtB;IAKA,IAAIwC,SAAS,GAAGD,YAAhB;;IAEA,IACEzB,IAAI,CAACC,GAAL,CAASF,YAAY,CAACG,EAAtB,IAA4BF,IAAI,CAACC,GAAL,CAASF,YAAY,CAACI,EAAtB,CAA5B,IACAH,IAAI,CAACC,GAAL,CAASF,YAAY,CAACK,EAAtB,IAA4BJ,IAAI,CAACC,GAAL,CAASF,YAAY,CAACM,EAAtB,CAD5B,KAECL,IAAI,CAACC,GAAL,CAASF,YAAY,CAACG,EAAtB,IAA4BtB,sBAA5B,IACCoB,IAAI,CAACC,GAAL,CAASF,YAAY,CAACK,EAAtB,IAA4BzB,sBAH9B,CADF,EAKE;MACA+C,SAAS,GAAG1B,IAAI,CAAC2B,KAAL,CACV3B,IAAI,CAAC4B,GAAL,CACE5B,IAAI,CAAC6B,GAAL,CACE,CADF,EAEErF,WAAW,CAACiE,KAAZ,GACIgB,YAAY,GAAG1B,YAAY,CAACG,EAAb,GAAkBF,IAAI,CAACC,GAAL,CAASF,YAAY,CAACG,EAAtB,CADrC,GAEIuB,YAAY,GAAG1B,YAAY,CAACG,EAAb,GAAkBF,IAAI,CAACC,GAAL,CAASF,YAAY,CAACG,EAAtB,CAJvC,CADF,EAOEjC,MAAM,CAACyC,MAAP,GAAgB,CAPlB,CADU,CAAZ;MAYAjC,eAAe,CAACS,OAAhB,GAA0BwC,SAA1B;IACD;;IAED,IAAI,CAACI,QAAQ,CAACJ,SAAD,CAAb,EAA0B;MACxBA,SAAS,GAAGD,YAAZ;IACD;;IAED3C,WAAW,CAAC4C,SAAD,EAAY,IAAZ,CAAX;EACD,CAzCD,CAzIW,CAoLX;;;EACA,MAAMK,gBAAgB,GAAGzF,KAAK,CAACyC,WAAN,CAAmBuC,QAAD,IAAwB;IACjElD,YAAY,CAACc,OAAb,CAAqB8C,IAArB,CAA0BV,QAA1B;IAEA,OAAO,MAAM;MACX,MAAMpD,KAAK,GAAGE,YAAY,CAACc,OAAb,CAAqB+C,OAArB,CAA6BX,QAA7B,CAAd;;MAEA,IAAIpD,KAAK,GAAG,CAAC,CAAb,EAAgB;QACdE,YAAY,CAACc,OAAb,CAAqBgD,MAArB,CAA4BhE,KAA5B,EAAmC,CAAnC;MACD;IACF,CAND;EAOD,CAVwB,EAUtB,EAVsB,CAAzB;EAYA,MAAMiE,MAAM,GAAG7F,KAAK,CAACyC,WAAN,CACZqD,GAAD,IAAiB;IACf,MAAMlE,KAAK,GAAGI,kBAAkB,CAACY,OAAnB,CAA2BjB,MAA3B,CAAkCoE,SAAlC,CACXC,KAAD,IAA4BA,KAAK,CAACF,GAAN,KAAcA,GAD9B,CAAd;IAIAtD,WAAW,CAACZ,KAAD,CAAX;EACD,CAPY,EAQb,CAACY,WAAD,CARa,CAAf;EAWA,MAAMyD,YAAY,GAAG7F,YAAY,CAAC8F,MAAb,CAAoB;IACvCC,2BAA2B,EAAEnC,aADU;IAEvCoC,kCAAkC,EAAEpC,aAFG;IAGvCqC,mBAAmB,EAAEhC,YAHkB;IAIvCiC,kBAAkB,EAAE7B,gBAJmB;IAKvC8B,uBAAuB,EAAEtB,aALc;IAMvCuB,qBAAqB,EAAEvB,aANgB;IAOvCwB,gCAAgC,EAAE,MAAM;EAPD,CAApB,CAArB;EAUA,MAAMC,YAAY,GAAGzF,MAAM,CAACsB,KAAP,IAAgBZ,MAAM,CAACyC,MAAP,GAAgB,CAAhC,CAArB;EACA,MAAMuC,UAAU,GAAG1G,QAAQ,CAAC2G,QAAT,CACjB/E,IAAI,CAACgF,WAAL,CAAiB;IACfC,UAAU,EAAE,CAAC,CAACJ,YAAF,EAAgB,CAAhB,CADG;IAEfK,WAAW,EAAE,CAAC,CAACL,YAAF,EAAgB,CAAhB,CAFE;IAGfM,WAAW,EAAE;EAHE,CAAjB,CADiB,EAMjB9G,WAAW,CAACiE,KAAZ,GAAoB,CAAC,CAArB,GAAyB,CANR,CAAnB;EASA,MAAMO,QAAQ,GAAG1E,KAAK,CAACiH,OAAN,CACf,MAAOhG,MAAM,CAACsB,KAAP,GAAetC,QAAQ,CAACiH,MAAT,CAAgBrF,IAAhB,EAAsB,CAACZ,MAAM,CAACsB,KAA9B,CAAf,GAAsD,IAD9C,EAEf,CAACtB,MAAM,CAACsB,KAAR,EAAeV,IAAf,CAFe,CAAjB;EAKA,OAAOL,QAAQ,CAAC;IACdkD,QAAQ,EAAEA,QAAF,aAAEA,QAAF,cAAEA,QAAF,GAAc,IAAIzE,QAAQ,CAACkH,KAAb,CAAmBvF,KAAnB,CADR;IAEd6D,gBAFc;IAGdI,MAHc;IAIduB,MAAM,EAAG5F,QAAD,iBACN,oBAAC,QAAD,CAAU,IAAV;MACE,KAAK,EAAE,CACL6F,MAAM,CAACC,KADF,EAELrG,MAAM,CAACsB,KAAP,GACI;QACEA,KAAK,EAAEZ,MAAM,CAACyC,MAAP,GAAgBnD,MAAM,CAACsB,KADhC;QAEEgF,SAAS,EAAE,CAAC;UAAEZ;QAAF,CAAD;MAFb,CADJ,GAKI,IAPC,EAQLlF,KARK;IADT,GAWMwE,YAAY,CAACuB,WAXnB,GAaGxH,KAAK,CAACyH,QAAN,CAAeC,GAAf,CAAmBlG,QAAnB,EAA6B,CAACmG,KAAD,EAAQC,CAAR,KAAc;MAC1C,MAAM5B,KAAK,GAAGrE,MAAM,CAACiG,CAAD,CAApB;MACA,MAAMC,OAAO,GAAGD,CAAC,KAAKhG,KAAtB;MAEA,oBACE,oBAAC,IAAD;QACE,GAAG,EAAEoE,KAAK,CAACF,GADb;QAEE,KAAK,EACH7E,MAAM,CAACsB,KAAP,GACI;UAAEA,KAAK,EAAEtB,MAAM,CAACsB;QAAhB,CADJ,GAEIsF,OAAO,GACPxH,UAAU,CAACyH,YADJ,GAEP;MAPR,GAUGD,OAAO,IAAI5G,MAAM,CAACsB,KAAlB,GAA0BoF,KAA1B,GAAkC,IAVrC,CADF;IAcD,CAlBA,CAbH;EALY,CAAD,CAAf;AAwCD;AAED,MAAMN,MAAM,GAAGhH,UAAU,CAAC6F,MAAX,CAAkB;EAC/BoB,KAAK,EAAE;IACLS,IAAI,EAAE,CADD;IAELC,aAAa,EAAE,KAFV;IAGLC,UAAU,EAAE;EAHP;AADwB,CAAlB,CAAf"}
|
|
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 {
|
|
@@ -218,21 +198,17 @@ export default function TabBar(_ref9) {
|
|
|
218
198
|
isFirst.current = false;
|
|
219
199
|
return;
|
|
220
200
|
}
|
|
221
|
-
|
|
222
201
|
if (isWidthDynamic && !hasMeasuredTabWidths) {
|
|
223
202
|
return;
|
|
224
203
|
}
|
|
225
|
-
|
|
226
204
|
if (scrollEnabled) {
|
|
227
205
|
var _flatListRef$current;
|
|
228
|
-
|
|
229
206
|
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 ? void 0 : _flatListRef$current.scrollToOffset({
|
|
230
207
|
offset: scrollOffset,
|
|
231
208
|
animated: true
|
|
232
209
|
});
|
|
233
210
|
}
|
|
234
211
|
}, [hasMeasuredTabWidths, isWidthDynamic, scrollEnabled, scrollOffset]);
|
|
235
|
-
|
|
236
212
|
const handleLayout = e => {
|
|
237
213
|
const {
|
|
238
214
|
height,
|
|
@@ -243,7 +219,6 @@ export default function TabBar(_ref9) {
|
|
|
243
219
|
height
|
|
244
220
|
});
|
|
245
221
|
};
|
|
246
|
-
|
|
247
222
|
const tabBarWidth = getTabBarWidth({
|
|
248
223
|
layout,
|
|
249
224
|
navigationState,
|
|
@@ -278,17 +253,20 @@ export default function TabBar(_ref9) {
|
|
|
278
253
|
pressColor: pressColor,
|
|
279
254
|
pressOpacity: pressOpacity,
|
|
280
255
|
onLayout: isWidthDynamic ? e => {
|
|
281
|
-
measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
|
|
256
|
+
measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
|
|
257
|
+
|
|
258
|
+
// When we have measured widths for all of the tabs, we should updates the state
|
|
282
259
|
// We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
|
|
283
260
|
// If we have more than 10 routes divide updating tabWidths into multiple batches. Here we update only first batch of 10 items.
|
|
284
|
-
|
|
285
261
|
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({
|
|
262
|
+
setTabWidths({
|
|
263
|
+
...measuredTabWidths.current
|
|
287
264
|
});
|
|
288
265
|
} else if (routes.every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
|
|
289
266
|
// When we have measured widths for all of the tabs, we should updates the state
|
|
290
267
|
// We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
|
|
291
|
-
setTabWidths({
|
|
268
|
+
setTabWidths({
|
|
269
|
+
...measuredTabWidths.current
|
|
292
270
|
});
|
|
293
271
|
}
|
|
294
272
|
} : undefined,
|
|
@@ -301,11 +279,9 @@ export default function TabBar(_ref9) {
|
|
|
301
279
|
}
|
|
302
280
|
};
|
|
303
281
|
onTabPress === null || onTabPress === void 0 ? void 0 : onTabPress(event);
|
|
304
|
-
|
|
305
282
|
if (event.defaultPrevented) {
|
|
306
283
|
return;
|
|
307
284
|
}
|
|
308
|
-
|
|
309
285
|
jumpTo(route.key);
|
|
310
286
|
},
|
|
311
287
|
onLongPress: () => onTabLongPress === null || onTabLongPress === void 0 ? void 0 : onTabLongPress({
|
|
@@ -337,17 +313,15 @@ export default function TabBar(_ref9) {
|
|
|
337
313
|
let {
|
|
338
314
|
changed
|
|
339
315
|
} = _ref11;
|
|
340
|
-
|
|
341
316
|
if (routes.length <= MEASURE_PER_BATCH) {
|
|
342
317
|
return;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
|
|
318
|
+
}
|
|
319
|
+
// Get next vievable item
|
|
346
320
|
const item = changed[changed.length - 1];
|
|
347
321
|
const index = (item === null || item === void 0 ? void 0 : item.index) || 0;
|
|
348
|
-
|
|
349
322
|
if (item.isViewable && (index % 10 === 0 || index === navigationState.index || index === routes.length - 1)) {
|
|
350
|
-
setTabWidths({
|
|
323
|
+
setTabWidths({
|
|
324
|
+
...measuredTabWidths.current
|
|
351
325
|
});
|
|
352
326
|
}
|
|
353
327
|
});
|