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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SceneView","children","navigationState","lazy","layout","index","lazyPreloadDistance","addEnterListener","style","isLoading","setIsLoading","React","useState","Math","abs","useEffect","handleEnter","value","prevState","unsubscribe","timer","setTimeout","clearTimeout","focused","styles","route","width","StyleSheet","absoluteFill","loading","create","flex","overflow"],"
|
|
1
|
+
{"version":3,"names":["SceneView","children","navigationState","lazy","layout","index","lazyPreloadDistance","addEnterListener","style","isLoading","setIsLoading","React","useState","Math","abs","useEffect","handleEnter","value","prevState","unsubscribe","timer","setTimeout","clearTimeout","focused","styles","route","width","StyleSheet","absoluteFill","loading","create","flex","overflow"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":";;;;;;AAAA;AACA;AAAsE;AAAA;AAmBvD,SAASA,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,GAAGC,KAAK,CAACC,QAAQ,CAC9CC,IAAI,CAACC,GAAG,CAACZ,eAAe,CAACG,KAAK,GAAGA,KAAK,CAAC,GAAGC,mBAAmB,CAC9D;EAED,IACEG,SAAS,IACTI,IAAI,CAACC,GAAG,CAACZ,eAAe,CAACG,KAAK,GAAGA,KAAK,CAAC,IAAIC,mBAAmB,EAC9D;IACA;IACAI,YAAY,CAAC,KAAK,CAAC;EACrB;EAEAC,KAAK,CAACI,SAAS,CAAC,MAAM;IACpB,MAAMC,WAAW,GAAIC,KAAa,IAAK;MACrC;MACA,IAAIA,KAAK,KAAKZ,KAAK,EAAE;QACnBK,YAAY,CAAEQ,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,IAAIjB,IAAI,IAAIM,SAAS,EAAE;MACrB;MACAU,WAAW,GAAGZ,gBAAgB,CAACS,WAAW,CAAC;IAC7C,CAAC,MAAM,IAAIP,SAAS,EAAE;MACpB;MACA;MACAW,KAAK,GAAGC,UAAU,CAAC,MAAMX,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD;IAEA,OAAO,MAAM;MAAA;MACX,gBAAAS,WAAW,iDAAX,cAAe;MACfG,YAAY,CAACF,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACb,gBAAgB,EAAEF,KAAK,EAAEI,SAAS,EAAEN,IAAI,CAAC,CAAC;EAE9C,MAAMoB,OAAO,GAAGrB,eAAe,CAACG,KAAK,KAAKA,KAAK;EAE/C,oBACE,oBAAC,iBAAI;IACH,2BAA2B,EAAE,CAACkB,OAAQ;IACtC,yBAAyB,EAAEA,OAAO,GAAG,MAAM,GAAG,qBAAsB;IACpE,KAAK,EAAE,CACLC,MAAM,CAACC,KAAK;IACZ;IACA;IACArB,MAAM,CAACsB,KAAK,GACR;MAAEA,KAAK,EAAEtB,MAAM,CAACsB;IAAM,CAAC,GACvBH,OAAO,GACPI,uBAAU,CAACC,YAAY,GACvB,IAAI,EACRpB,KAAK;EACL;EAGA;EACA;EACA;EACAe,OAAO,IAAInB,MAAM,CAACsB,KAAK,GAAGzB,QAAQ,CAAC;IAAE4B,OAAO,EAAEpB;EAAU,CAAC,CAAC,GAAG,IAAI,CAE9D;AAEX;AAEA,MAAMe,MAAM,GAAGG,uBAAU,CAACG,MAAM,CAAC;EAC/BL,KAAK,EAAE;IACLM,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC"}
|
package/lib/commonjs/TabBar.js
CHANGED
|
@@ -4,25 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = TabBar;
|
|
7
|
-
|
|
8
7
|
var React = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _reactNative = require("react-native");
|
|
11
|
-
|
|
12
9
|
var _useLatestCallback = _interopRequireDefault(require("use-latest-callback"));
|
|
13
|
-
|
|
14
10
|
var _TabBarIndicator = _interopRequireDefault(require("./TabBarIndicator"));
|
|
15
|
-
|
|
16
11
|
var _TabBarItem = _interopRequireDefault(require("./TabBarItem"));
|
|
17
|
-
|
|
18
12
|
var _useAnimatedValue = _interopRequireDefault(require("./useAnimatedValue"));
|
|
19
|
-
|
|
20
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
|
|
24
15
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
-
|
|
26
16
|
const Separator = _ref => {
|
|
27
17
|
let {
|
|
28
18
|
width
|
|
@@ -33,44 +23,32 @@ const Separator = _ref => {
|
|
|
33
23
|
}
|
|
34
24
|
});
|
|
35
25
|
};
|
|
36
|
-
|
|
37
26
|
const getFlattenedTabWidth = style => {
|
|
38
27
|
const tabStyle = _reactNative.StyleSheet.flatten(style);
|
|
39
|
-
|
|
40
28
|
return tabStyle === null || tabStyle === void 0 ? void 0 : tabStyle.width;
|
|
41
29
|
};
|
|
42
|
-
|
|
43
30
|
const getComputedTabWidth = (index, layout, routes, scrollEnabled, tabWidths, flattenedWidth) => {
|
|
44
31
|
if (flattenedWidth === 'auto') {
|
|
45
32
|
return tabWidths[routes[index].key] || 0;
|
|
46
33
|
}
|
|
47
|
-
|
|
48
34
|
switch (typeof flattenedWidth) {
|
|
49
35
|
case 'number':
|
|
50
36
|
return flattenedWidth;
|
|
51
|
-
|
|
52
37
|
case 'string':
|
|
53
38
|
if (flattenedWidth.endsWith('%')) {
|
|
54
39
|
const width = parseFloat(flattenedWidth);
|
|
55
|
-
|
|
56
40
|
if (Number.isFinite(width)) {
|
|
57
41
|
return layout.width * (width / 100);
|
|
58
42
|
}
|
|
59
43
|
}
|
|
60
|
-
|
|
61
44
|
}
|
|
62
|
-
|
|
63
45
|
if (scrollEnabled) {
|
|
64
46
|
return layout.width / 5 * 2;
|
|
65
47
|
}
|
|
66
|
-
|
|
67
48
|
return layout.width / routes.length;
|
|
68
49
|
};
|
|
69
|
-
|
|
70
50
|
const getMaxScrollDistance = (tabBarWidth, layoutWidth) => tabBarWidth - layoutWidth;
|
|
71
|
-
|
|
72
51
|
const getTranslateX = (scrollAmount, maxScrollDistance) => _reactNative.Animated.multiply(_reactNative.Platform.OS === 'android' && _reactNative.I18nManager.isRTL ? _reactNative.Animated.add(maxScrollDistance, _reactNative.Animated.multiply(scrollAmount, -1)) : scrollAmount, _reactNative.I18nManager.isRTL ? 1 : -1);
|
|
73
|
-
|
|
74
52
|
const getTabBarWidth = _ref2 => {
|
|
75
53
|
let {
|
|
76
54
|
navigationState,
|
|
@@ -83,9 +61,8 @@ const getTabBarWidth = _ref2 => {
|
|
|
83
61
|
const {
|
|
84
62
|
routes
|
|
85
63
|
} = navigationState;
|
|
86
|
-
return routes.reduce((acc, _, i) => acc + (i > 0 ? gap
|
|
64
|
+
return routes.reduce((acc, _, i) => acc + (i > 0 ? gap ?? 0 : 0) + getComputedTabWidth(i, layout, routes, scrollEnabled, tabWidths, flattenedTabWidth), 0);
|
|
87
65
|
};
|
|
88
|
-
|
|
89
66
|
const normalizeScrollValue = _ref3 => {
|
|
90
67
|
let {
|
|
91
68
|
layout,
|
|
@@ -106,16 +83,13 @@ const normalizeScrollValue = _ref3 => {
|
|
|
106
83
|
});
|
|
107
84
|
const maxDistance = getMaxScrollDistance(tabBarWidth, layout.width);
|
|
108
85
|
const scrollValue = Math.max(Math.min(value, maxDistance), 0);
|
|
109
|
-
|
|
110
86
|
if (_reactNative.Platform.OS === 'android' && _reactNative.I18nManager.isRTL) {
|
|
111
87
|
// On Android, scroll value is not applied in reverse in RTL
|
|
112
88
|
// so we need to manually adjust it to apply correct value
|
|
113
89
|
return maxDistance - scrollValue;
|
|
114
90
|
}
|
|
115
|
-
|
|
116
91
|
return scrollValue;
|
|
117
92
|
};
|
|
118
|
-
|
|
119
93
|
const getScrollAmount = _ref4 => {
|
|
120
94
|
let {
|
|
121
95
|
layout,
|
|
@@ -128,10 +102,11 @@ const getScrollAmount = _ref4 => {
|
|
|
128
102
|
const centerDistance = Array.from({
|
|
129
103
|
length: navigationState.index + 1
|
|
130
104
|
}).reduce((total, _, i) => {
|
|
131
|
-
const tabWidth = getComputedTabWidth(i, layout, navigationState.routes, scrollEnabled, tabWidths, flattenedTabWidth);
|
|
132
|
-
// 0 through (i - 1) and add half the width of current index i
|
|
105
|
+
const tabWidth = getComputedTabWidth(i, layout, navigationState.routes, scrollEnabled, tabWidths, flattenedTabWidth);
|
|
133
106
|
|
|
134
|
-
|
|
107
|
+
// To get the current index centered we adjust scroll amount by width of indexes
|
|
108
|
+
// 0 through (i - 1) and add half the width of current index i
|
|
109
|
+
return total + (navigationState.index === i ? (tabWidth + (gap ?? 0)) / 2 : tabWidth + (gap ?? 0));
|
|
135
110
|
}, 0);
|
|
136
111
|
const scrollAmount = centerDistance - layout.width / 2;
|
|
137
112
|
return normalizeScrollValue({
|
|
@@ -144,41 +119,35 @@ const getScrollAmount = _ref4 => {
|
|
|
144
119
|
flattenedTabWidth
|
|
145
120
|
});
|
|
146
121
|
};
|
|
147
|
-
|
|
148
122
|
const getLabelTextDefault = _ref5 => {
|
|
149
123
|
let {
|
|
150
124
|
route
|
|
151
125
|
} = _ref5;
|
|
152
126
|
return route.title;
|
|
153
127
|
};
|
|
154
|
-
|
|
155
128
|
const getAccessibleDefault = _ref6 => {
|
|
156
129
|
let {
|
|
157
130
|
route
|
|
158
131
|
} = _ref6;
|
|
159
132
|
return typeof route.accessible !== 'undefined' ? route.accessible : true;
|
|
160
133
|
};
|
|
161
|
-
|
|
162
134
|
const getAccessibilityLabelDefault = _ref7 => {
|
|
163
135
|
let {
|
|
164
136
|
route
|
|
165
137
|
} = _ref7;
|
|
166
138
|
return typeof route.accessibilityLabel === 'string' ? route.accessibilityLabel : typeof route.title === 'string' ? route.title : undefined;
|
|
167
139
|
};
|
|
168
|
-
|
|
169
140
|
const renderIndicatorDefault = props => /*#__PURE__*/React.createElement(_TabBarIndicator.default, props);
|
|
170
|
-
|
|
171
141
|
const getTestIdDefault = _ref8 => {
|
|
172
142
|
let {
|
|
173
143
|
route
|
|
174
144
|
} = _ref8;
|
|
175
145
|
return route.testID;
|
|
176
|
-
};
|
|
177
|
-
// Defaults to 10, since that's whats FlatList is using in initialNumToRender.
|
|
178
|
-
|
|
146
|
+
};
|
|
179
147
|
|
|
148
|
+
// How many items measurements should we update per batch.
|
|
149
|
+
// Defaults to 10, since that's whats FlatList is using in initialNumToRender.
|
|
180
150
|
const MEASURE_PER_BATCH = 10;
|
|
181
|
-
|
|
182
151
|
function TabBar(_ref9) {
|
|
183
152
|
let {
|
|
184
153
|
getLabelText = getLabelTextDefault,
|
|
@@ -238,21 +207,17 @@ function TabBar(_ref9) {
|
|
|
238
207
|
isFirst.current = false;
|
|
239
208
|
return;
|
|
240
209
|
}
|
|
241
|
-
|
|
242
210
|
if (isWidthDynamic && !hasMeasuredTabWidths) {
|
|
243
211
|
return;
|
|
244
212
|
}
|
|
245
|
-
|
|
246
213
|
if (scrollEnabled) {
|
|
247
214
|
var _flatListRef$current;
|
|
248
|
-
|
|
249
215
|
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 ? void 0 : _flatListRef$current.scrollToOffset({
|
|
250
216
|
offset: scrollOffset,
|
|
251
217
|
animated: true
|
|
252
218
|
});
|
|
253
219
|
}
|
|
254
220
|
}, [hasMeasuredTabWidths, isWidthDynamic, scrollEnabled, scrollOffset]);
|
|
255
|
-
|
|
256
221
|
const handleLayout = e => {
|
|
257
222
|
const {
|
|
258
223
|
height,
|
|
@@ -263,7 +228,6 @@ function TabBar(_ref9) {
|
|
|
263
228
|
height
|
|
264
229
|
});
|
|
265
230
|
};
|
|
266
|
-
|
|
267
231
|
const tabBarWidth = getTabBarWidth({
|
|
268
232
|
layout,
|
|
269
233
|
navigationState,
|
|
@@ -298,17 +262,20 @@ function TabBar(_ref9) {
|
|
|
298
262
|
pressColor: pressColor,
|
|
299
263
|
pressOpacity: pressOpacity,
|
|
300
264
|
onLayout: isWidthDynamic ? e => {
|
|
301
|
-
measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
|
|
265
|
+
measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
|
|
266
|
+
|
|
267
|
+
// When we have measured widths for all of the tabs, we should updates the state
|
|
302
268
|
// We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
|
|
303
269
|
// If we have more than 10 routes divide updating tabWidths into multiple batches. Here we update only first batch of 10 items.
|
|
304
|
-
|
|
305
270
|
if (routes.length > MEASURE_PER_BATCH && index === MEASURE_PER_BATCH && routes.slice(0, MEASURE_PER_BATCH).every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
|
|
306
|
-
setTabWidths({
|
|
271
|
+
setTabWidths({
|
|
272
|
+
...measuredTabWidths.current
|
|
307
273
|
});
|
|
308
274
|
} else if (routes.every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
|
|
309
275
|
// When we have measured widths for all of the tabs, we should updates the state
|
|
310
276
|
// We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
|
|
311
|
-
setTabWidths({
|
|
277
|
+
setTabWidths({
|
|
278
|
+
...measuredTabWidths.current
|
|
312
279
|
});
|
|
313
280
|
}
|
|
314
281
|
} : undefined,
|
|
@@ -321,11 +288,9 @@ function TabBar(_ref9) {
|
|
|
321
288
|
}
|
|
322
289
|
};
|
|
323
290
|
onTabPress === null || onTabPress === void 0 ? void 0 : onTabPress(event);
|
|
324
|
-
|
|
325
291
|
if (event.defaultPrevented) {
|
|
326
292
|
return;
|
|
327
293
|
}
|
|
328
|
-
|
|
329
294
|
jumpTo(route.key);
|
|
330
295
|
},
|
|
331
296
|
onLongPress: () => onTabLongPress === null || onTabLongPress === void 0 ? void 0 : onTabLongPress({
|
|
@@ -357,17 +322,15 @@ function TabBar(_ref9) {
|
|
|
357
322
|
let {
|
|
358
323
|
changed
|
|
359
324
|
} = _ref11;
|
|
360
|
-
|
|
361
325
|
if (routes.length <= MEASURE_PER_BATCH) {
|
|
362
326
|
return;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
|
|
327
|
+
}
|
|
328
|
+
// Get next vievable item
|
|
366
329
|
const item = changed[changed.length - 1];
|
|
367
330
|
const index = (item === null || item === void 0 ? void 0 : item.index) || 0;
|
|
368
|
-
|
|
369
331
|
if (item.isViewable && (index % 10 === 0 || index === navigationState.index || index === routes.length - 1)) {
|
|
370
|
-
setTabWidths({
|
|
332
|
+
setTabWidths({
|
|
333
|
+
...measuredTabWidths.current
|
|
371
334
|
});
|
|
372
335
|
}
|
|
373
336
|
});
|
|
@@ -420,7 +383,6 @@ function TabBar(_ref9) {
|
|
|
420
383
|
testID: testID
|
|
421
384
|
})));
|
|
422
385
|
}
|
|
423
|
-
|
|
424
386
|
const styles = _reactNative.StyleSheet.create({
|
|
425
387
|
container: {
|
|
426
388
|
flex: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Separator","width","getFlattenedTabWidth","style","tabStyle","StyleSheet","flatten","getComputedTabWidth","index","layout","routes","scrollEnabled","tabWidths","flattenedWidth","key","endsWith","parseFloat","Number","isFinite","length","getMaxScrollDistance","tabBarWidth","layoutWidth","getTranslateX","scrollAmount","maxScrollDistance","Animated","multiply","Platform","OS","I18nManager","isRTL","add","getTabBarWidth","navigationState","gap","flattenedTabWidth","reduce","acc","_","i","normalizeScrollValue","value","maxDistance","scrollValue","Math","max","min","getScrollAmount","centerDistance","Array","from","total","tabWidth","getLabelTextDefault","route","title","getAccessibleDefault","accessible","getAccessibilityLabelDefault","accessibilityLabel","undefined","renderIndicatorDefault","props","getTestIdDefault","testID","MEASURE_PER_BATCH","TabBar","getLabelText","getAccessible","getAccessibilityLabel","getTestID","renderIndicator","jumpTo","position","activeColor","bounces","contentContainerStyle","inactiveColor","indicatorContainerStyle","indicatorStyle","labelStyle","onTabLongPress","onTabPress","pressColor","pressOpacity","renderBadge","renderIcon","renderLabel","renderTabBarItem","setLayout","React","useState","height","setTabWidths","flatListRef","useRef","isFirst","useAnimatedValue","measuredTabWidths","isWidthDynamic","scrollOffset","hasMeasuredTabWidths","Boolean","slice","every","r","useEffect","current","scrollToOffset","offset","animated","handleLayout","e","nativeEvent","separatorsWidth","separatorPercent","tabBarWidthPercent","translateX","useMemo","renderItem","useCallback","item","onLayout","onPress","event","defaultPrevented","preventDefault","onLongPress","defaultTabWidth","keyExtractor","contentContainerStyleMemoized","styles","tabContent","container","handleScroll","contentOffset","x","useNativeDriver","handleViewableItemsChanged","useLatestCallback","changed","isViewable","tabBar","indicatorContainer","transform","getTabWidth","scroll","create","flex","overflow","select","default","web","backgroundColor","elevation","shadowColor","shadowOpacity","shadowRadius","hairlineWidth","shadowOffset","zIndex","flexDirection","flexWrap","top","left","right","bottom"],"sources":["TabBar.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Animated,\n FlatList,\n I18nManager,\n LayoutChangeEvent,\n ListRenderItemInfo,\n Platform,\n StyleProp,\n StyleSheet,\n TextStyle,\n View,\n ViewStyle,\n ViewToken,\n} from 'react-native';\nimport useLatestCallback from 'use-latest-callback';\n\nimport TabBarIndicator, { Props as IndicatorProps } from './TabBarIndicator';\nimport TabBarItem, { Props as TabBarItemProps } from './TabBarItem';\nimport type {\n Event,\n Layout,\n NavigationState,\n Route,\n Scene,\n SceneRendererProps,\n} from './types';\nimport useAnimatedValue from './useAnimatedValue';\n\nexport type Props<T extends Route> = SceneRendererProps & {\n navigationState: NavigationState<T>;\n scrollEnabled?: boolean;\n bounces?: boolean;\n activeColor?: string;\n inactiveColor?: string;\n pressColor?: string;\n pressOpacity?: number;\n getLabelText?: (scene: Scene<T>) => string | undefined;\n getAccessible?: (scene: Scene<T>) => boolean | undefined;\n getAccessibilityLabel?: (scene: Scene<T>) => string | undefined;\n getTestID?: (scene: Scene<T>) => string | undefined;\n renderLabel?: (\n scene: Scene<T> & {\n focused: boolean;\n color: string;\n }\n ) => React.ReactNode;\n renderIcon?: (\n scene: Scene<T> & {\n focused: boolean;\n color: string;\n }\n ) => React.ReactNode;\n renderBadge?: (scene: Scene<T>) => React.ReactNode;\n renderIndicator?: (props: IndicatorProps<T>) => React.ReactNode;\n renderTabBarItem?: (\n props: TabBarItemProps<T> & { key: string }\n ) => React.ReactElement;\n onTabPress?: (scene: Scene<T> & Event) => void;\n onTabLongPress?: (scene: Scene<T>) => void;\n tabStyle?: StyleProp<ViewStyle>;\n indicatorStyle?: StyleProp<ViewStyle>;\n indicatorContainerStyle?: StyleProp<ViewStyle>;\n labelStyle?: StyleProp<TextStyle>;\n contentContainerStyle?: StyleProp<ViewStyle>;\n style?: StyleProp<ViewStyle>;\n gap?: number;\n testID?: string;\n};\n\ntype FlattenedTabWidth = string | number | undefined;\n\nconst Separator = ({ width }: { width: number }) => {\n return <View style={{ width }} />;\n};\n\nconst getFlattenedTabWidth = (style: StyleProp<ViewStyle>) => {\n const tabStyle = StyleSheet.flatten(style);\n\n return tabStyle?.width;\n};\n\nconst getComputedTabWidth = (\n index: number,\n layout: Layout,\n routes: Route[],\n scrollEnabled: boolean | undefined,\n tabWidths: { [key: string]: number },\n flattenedWidth: FlattenedTabWidth\n) => {\n if (flattenedWidth === 'auto') {\n return tabWidths[routes[index].key] || 0;\n }\n\n switch (typeof flattenedWidth) {\n case 'number':\n return flattenedWidth;\n case 'string':\n if (flattenedWidth.endsWith('%')) {\n const width = parseFloat(flattenedWidth);\n if (Number.isFinite(width)) {\n return layout.width * (width / 100);\n }\n }\n }\n\n if (scrollEnabled) {\n return (layout.width / 5) * 2;\n }\n return layout.width / routes.length;\n};\n\nconst getMaxScrollDistance = (tabBarWidth: number, layoutWidth: number) =>\n tabBarWidth - layoutWidth;\n\nconst getTranslateX = (\n scrollAmount: Animated.Value,\n maxScrollDistance: number\n) =>\n Animated.multiply(\n Platform.OS === 'android' && I18nManager.isRTL\n ? Animated.add(maxScrollDistance, Animated.multiply(scrollAmount, -1))\n : scrollAmount,\n I18nManager.isRTL ? 1 : -1\n );\n\nconst getTabBarWidth = <T extends Route>({\n navigationState,\n layout,\n gap,\n scrollEnabled,\n flattenedTabWidth,\n tabWidths,\n}: Pick<Props<T>, 'navigationState' | 'gap' | 'layout' | 'scrollEnabled'> & {\n tabWidths: Record<string, number>;\n flattenedTabWidth: FlattenedTabWidth;\n}) => {\n const { routes } = navigationState;\n\n return routes.reduce<number>(\n (acc, _, i) =>\n acc +\n (i > 0 ? gap ?? 0 : 0) +\n getComputedTabWidth(\n i,\n layout,\n routes,\n scrollEnabled,\n tabWidths,\n flattenedTabWidth\n ),\n 0\n );\n};\n\nconst normalizeScrollValue = <T extends Route>({\n layout,\n navigationState,\n gap,\n scrollEnabled,\n tabWidths,\n value,\n flattenedTabWidth,\n}: Pick<Props<T>, 'layout' | 'navigationState' | 'gap' | 'scrollEnabled'> & {\n tabWidths: Record<string, number>;\n value: number;\n flattenedTabWidth: FlattenedTabWidth;\n}) => {\n const tabBarWidth = getTabBarWidth({\n layout,\n navigationState,\n tabWidths,\n gap,\n scrollEnabled,\n flattenedTabWidth,\n });\n const maxDistance = getMaxScrollDistance(tabBarWidth, layout.width);\n const scrollValue = Math.max(Math.min(value, maxDistance), 0);\n\n if (Platform.OS === 'android' && I18nManager.isRTL) {\n // On Android, scroll value is not applied in reverse in RTL\n // so we need to manually adjust it to apply correct value\n return maxDistance - scrollValue;\n }\n\n return scrollValue;\n};\n\nconst getScrollAmount = <T extends Route>({\n layout,\n navigationState,\n gap,\n scrollEnabled,\n flattenedTabWidth,\n tabWidths,\n}: Pick<Props<T>, 'layout' | 'navigationState' | 'scrollEnabled' | 'gap'> & {\n tabWidths: Record<string, number>;\n flattenedTabWidth: FlattenedTabWidth;\n}) => {\n const centerDistance = Array.from({\n length: navigationState.index + 1,\n }).reduce<number>((total, _, i) => {\n const tabWidth = getComputedTabWidth(\n i,\n layout,\n navigationState.routes,\n scrollEnabled,\n tabWidths,\n flattenedTabWidth\n );\n\n // To get the current index centered we adjust scroll amount by width of indexes\n // 0 through (i - 1) and add half the width of current index i\n return (\n total +\n (navigationState.index === i\n ? (tabWidth + (gap ?? 0)) / 2\n : tabWidth + (gap ?? 0))\n );\n }, 0);\n\n const scrollAmount = centerDistance - layout.width / 2;\n\n return normalizeScrollValue({\n layout,\n navigationState,\n tabWidths,\n value: scrollAmount,\n gap,\n scrollEnabled,\n flattenedTabWidth,\n });\n};\n\nconst getLabelTextDefault = ({ route }: Scene<Route>) => route.title;\n\nconst getAccessibleDefault = ({ route }: Scene<Route>) =>\n typeof route.accessible !== 'undefined' ? route.accessible : true;\n\nconst getAccessibilityLabelDefault = ({ route }: Scene<Route>) =>\n typeof route.accessibilityLabel === 'string'\n ? route.accessibilityLabel\n : typeof route.title === 'string'\n ? route.title\n : undefined;\n\nconst renderIndicatorDefault = (props: IndicatorProps<Route>) => (\n <TabBarIndicator {...props} />\n);\n\nconst getTestIdDefault = ({ route }: Scene<Route>) => route.testID;\n\n// How many items measurements should we update per batch.\n// Defaults to 10, since that's whats FlatList is using in initialNumToRender.\nconst MEASURE_PER_BATCH = 10;\n\nexport default function TabBar<T extends Route>({\n getLabelText = getLabelTextDefault,\n getAccessible = getAccessibleDefault,\n getAccessibilityLabel = getAccessibilityLabelDefault,\n getTestID = getTestIdDefault,\n renderIndicator = renderIndicatorDefault,\n gap = 0,\n scrollEnabled,\n jumpTo,\n navigationState,\n position,\n activeColor,\n bounces,\n contentContainerStyle,\n inactiveColor,\n indicatorContainerStyle,\n indicatorStyle,\n labelStyle,\n onTabLongPress,\n onTabPress,\n pressColor,\n pressOpacity,\n renderBadge,\n renderIcon,\n renderLabel,\n renderTabBarItem,\n style,\n tabStyle,\n testID,\n}: Props<T>) {\n const [layout, setLayout] = React.useState<Layout>({ width: 0, height: 0 });\n const [tabWidths, setTabWidths] = React.useState<Record<string, number>>({});\n const flatListRef = React.useRef<FlatList | null>(null);\n const isFirst = React.useRef(true);\n const scrollAmount = useAnimatedValue(0);\n const measuredTabWidths = React.useRef<Record<string, number>>({});\n\n const { routes } = navigationState;\n const flattenedTabWidth = getFlattenedTabWidth(tabStyle);\n const isWidthDynamic = flattenedTabWidth === 'auto';\n const scrollOffset = getScrollAmount({\n layout,\n navigationState,\n tabWidths,\n gap,\n scrollEnabled,\n flattenedTabWidth,\n });\n\n const hasMeasuredTabWidths =\n Boolean(layout.width) &&\n routes\n .slice(0, navigationState.index)\n .every((r) => typeof tabWidths[r.key] === 'number');\n\n React.useEffect(() => {\n if (isFirst.current) {\n isFirst.current = false;\n return;\n }\n\n if (isWidthDynamic && !hasMeasuredTabWidths) {\n return;\n }\n\n if (scrollEnabled) {\n flatListRef.current?.scrollToOffset({\n offset: scrollOffset,\n animated: true,\n });\n }\n }, [hasMeasuredTabWidths, isWidthDynamic, scrollEnabled, scrollOffset]);\n\n const handleLayout = (e: LayoutChangeEvent) => {\n const { height, width } = e.nativeEvent.layout;\n\n setLayout((layout) =>\n layout.width === width && layout.height === height\n ? layout\n : { width, height }\n );\n };\n\n const tabBarWidth = getTabBarWidth({\n layout,\n navigationState,\n tabWidths,\n gap,\n scrollEnabled,\n flattenedTabWidth,\n });\n\n const separatorsWidth = Math.max(0, routes.length - 1) * gap;\n const separatorPercent = (separatorsWidth / tabBarWidth) * 100;\n const tabBarWidthPercent = `${routes.length * 40}%`;\n\n const translateX = React.useMemo(\n () =>\n getTranslateX(\n scrollAmount,\n getMaxScrollDistance(tabBarWidth, layout.width)\n ),\n [layout.width, scrollAmount, tabBarWidth]\n );\n\n const renderItem = React.useCallback(\n ({ item: route, index }: ListRenderItemInfo<T>) => {\n const props: TabBarItemProps<T> & { key: string } = {\n key: route.key,\n position: position,\n route: route,\n navigationState: navigationState,\n getAccessibilityLabel: getAccessibilityLabel,\n getAccessible: getAccessible,\n getLabelText: getLabelText,\n getTestID: getTestID,\n renderBadge: renderBadge,\n renderIcon: renderIcon,\n renderLabel: renderLabel,\n activeColor: activeColor,\n inactiveColor: inactiveColor,\n pressColor: pressColor,\n pressOpacity: pressOpacity,\n onLayout: isWidthDynamic\n ? (e: LayoutChangeEvent) => {\n measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;\n\n // When we have measured widths for all of the tabs, we should updates the state\n // We avoid doing separate setState for each layout since it triggers multiple renders and slows down app\n // If we have more than 10 routes divide updating tabWidths into multiple batches. Here we update only first batch of 10 items.\n if (\n routes.length > MEASURE_PER_BATCH &&\n index === MEASURE_PER_BATCH &&\n routes\n .slice(0, MEASURE_PER_BATCH)\n .every(\n (r) => typeof measuredTabWidths.current[r.key] === 'number'\n )\n ) {\n setTabWidths({ ...measuredTabWidths.current });\n } else if (\n routes.every(\n (r) => typeof measuredTabWidths.current[r.key] === 'number'\n )\n ) {\n // When we have measured widths for all of the tabs, we should updates the state\n // We avoid doing separate setState for each layout since it triggers multiple renders and slows down app\n setTabWidths({ ...measuredTabWidths.current });\n }\n }\n : undefined,\n onPress: () => {\n const event: Scene<T> & Event = {\n route,\n defaultPrevented: false,\n preventDefault: () => {\n event.defaultPrevented = true;\n },\n };\n\n onTabPress?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n jumpTo(route.key);\n },\n onLongPress: () => onTabLongPress?.({ route }),\n labelStyle: labelStyle,\n style: tabStyle,\n // Calculate the deafult width for tab for FlatList to work\n defaultTabWidth: !isWidthDynamic\n ? getComputedTabWidth(\n index,\n layout,\n routes,\n scrollEnabled,\n tabWidths,\n getFlattenedTabWidth(tabStyle)\n )\n : undefined,\n };\n\n return (\n <>\n {gap > 0 && index > 0 ? <Separator width={gap} /> : null}\n {renderTabBarItem ? (\n renderTabBarItem(props)\n ) : (\n <TabBarItem {...props} />\n )}\n </>\n );\n },\n [\n activeColor,\n gap,\n getAccessibilityLabel,\n getAccessible,\n getLabelText,\n getTestID,\n inactiveColor,\n isWidthDynamic,\n jumpTo,\n labelStyle,\n layout,\n navigationState,\n onTabLongPress,\n onTabPress,\n position,\n pressColor,\n pressOpacity,\n renderBadge,\n renderIcon,\n renderLabel,\n renderTabBarItem,\n routes,\n scrollEnabled,\n tabStyle,\n tabWidths,\n ]\n );\n\n const keyExtractor = React.useCallback((item: T) => item.key, []);\n\n const contentContainerStyleMemoized = React.useMemo(\n () => [\n styles.tabContent,\n scrollEnabled\n ? {\n width:\n tabBarWidth > separatorsWidth ? tabBarWidth : tabBarWidthPercent,\n }\n : styles.container,\n contentContainerStyle,\n ],\n [\n contentContainerStyle,\n scrollEnabled,\n separatorsWidth,\n tabBarWidth,\n tabBarWidthPercent,\n ]\n );\n\n const handleScroll = React.useMemo(\n () =>\n Animated.event(\n [\n {\n nativeEvent: {\n contentOffset: { x: scrollAmount },\n },\n },\n ],\n { useNativeDriver: true }\n ),\n [scrollAmount]\n );\n\n const handleViewableItemsChanged = useLatestCallback(\n ({ changed }: { changed: ViewToken[] }) => {\n if (routes.length <= MEASURE_PER_BATCH) {\n return;\n }\n // Get next vievable item\n const item = changed[changed.length - 1];\n const index = item?.index || 0;\n if (\n item.isViewable &&\n (index % 10 === 0 ||\n index === navigationState.index ||\n index === routes.length - 1)\n ) {\n setTabWidths({ ...measuredTabWidths.current });\n }\n }\n );\n\n return (\n <Animated.View onLayout={handleLayout} style={[styles.tabBar, style]}>\n <Animated.View\n pointerEvents=\"none\"\n style={[\n styles.indicatorContainer,\n scrollEnabled ? { transform: [{ translateX }] as any } : null,\n tabBarWidth > separatorsWidth\n ? { width: tabBarWidth - separatorsWidth }\n : scrollEnabled\n ? { width: tabBarWidthPercent }\n : null,\n indicatorContainerStyle,\n ]}\n >\n {renderIndicator({\n position,\n layout,\n navigationState,\n jumpTo,\n width: isWidthDynamic\n ? 'auto'\n : `${(100 - separatorPercent) / routes.length}%`,\n style: indicatorStyle,\n getTabWidth: (i: number) =>\n getComputedTabWidth(\n i,\n layout,\n routes,\n scrollEnabled,\n tabWidths,\n flattenedTabWidth\n ),\n gap,\n })}\n </Animated.View>\n <View style={styles.scroll}>\n <Animated.FlatList\n data={routes as Animated.WithAnimatedValue<T>[]}\n keyExtractor={keyExtractor}\n horizontal\n accessibilityRole=\"tablist\"\n keyboardShouldPersistTaps=\"handled\"\n scrollEnabled={scrollEnabled}\n bounces={bounces}\n initialNumToRender={MEASURE_PER_BATCH}\n onViewableItemsChanged={handleViewableItemsChanged}\n alwaysBounceHorizontal={false}\n scrollsToTop={false}\n showsHorizontalScrollIndicator={false}\n showsVerticalScrollIndicator={false}\n automaticallyAdjustContentInsets={false}\n overScrollMode=\"never\"\n contentContainerStyle={contentContainerStyleMemoized}\n scrollEventThrottle={16}\n renderItem={renderItem}\n onScroll={handleScroll}\n ref={flatListRef}\n testID={testID}\n />\n </View>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scroll: {\n overflow: Platform.select({ default: 'scroll', web: undefined }),\n },\n tabBar: {\n backgroundColor: '#2196f3',\n elevation: 4,\n shadowColor: 'black',\n shadowOpacity: 0.1,\n shadowRadius: StyleSheet.hairlineWidth,\n shadowOffset: {\n height: StyleSheet.hairlineWidth,\n width: 0,\n },\n zIndex: 1,\n },\n tabContent: {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n indicatorContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n});\n"],"mappings":";;;;;;;AAAA;;AACA;;AAcA;;AAEA;;AACA;;AASA;;;;;;;;AA6CA,MAAMA,SAAS,GAAG,QAAkC;EAAA,IAAjC;IAAEC;EAAF,CAAiC;EAClD,oBAAO,oBAAC,iBAAD;IAAM,KAAK,EAAE;MAAEA;IAAF;EAAb,EAAP;AACD,CAFD;;AAIA,MAAMC,oBAAoB,GAAIC,KAAD,IAAiC;EAC5D,MAAMC,QAAQ,GAAGC,uBAAA,CAAWC,OAAX,CAAmBH,KAAnB,CAAjB;;EAEA,OAAOC,QAAP,aAAOA,QAAP,uBAAOA,QAAQ,CAAEH,KAAjB;AACD,CAJD;;AAMA,MAAMM,mBAAmB,GAAG,CAC1BC,KAD0B,EAE1BC,MAF0B,EAG1BC,MAH0B,EAI1BC,aAJ0B,EAK1BC,SAL0B,EAM1BC,cAN0B,KAOvB;EACH,IAAIA,cAAc,KAAK,MAAvB,EAA+B;IAC7B,OAAOD,SAAS,CAACF,MAAM,CAACF,KAAD,CAAN,CAAcM,GAAf,CAAT,IAAgC,CAAvC;EACD;;EAED,QAAQ,OAAOD,cAAf;IACE,KAAK,QAAL;MACE,OAAOA,cAAP;;IACF,KAAK,QAAL;MACE,IAAIA,cAAc,CAACE,QAAf,CAAwB,GAAxB,CAAJ,EAAkC;QAChC,MAAMd,KAAK,GAAGe,UAAU,CAACH,cAAD,CAAxB;;QACA,IAAII,MAAM,CAACC,QAAP,CAAgBjB,KAAhB,CAAJ,EAA4B;UAC1B,OAAOQ,MAAM,CAACR,KAAP,IAAgBA,KAAK,GAAG,GAAxB,CAAP;QACD;MACF;;EATL;;EAYA,IAAIU,aAAJ,EAAmB;IACjB,OAAQF,MAAM,CAACR,KAAP,GAAe,CAAhB,GAAqB,CAA5B;EACD;;EACD,OAAOQ,MAAM,CAACR,KAAP,GAAeS,MAAM,CAACS,MAA7B;AACD,CA5BD;;AA8BA,MAAMC,oBAAoB,GAAG,CAACC,WAAD,EAAsBC,WAAtB,KAC3BD,WAAW,GAAGC,WADhB;;AAGA,MAAMC,aAAa,GAAG,CACpBC,YADoB,EAEpBC,iBAFoB,KAIpBC,qBAAA,CAASC,QAAT,CACEC,qBAAA,CAASC,EAAT,KAAgB,SAAhB,IAA6BC,wBAAA,CAAYC,KAAzC,GACIL,qBAAA,CAASM,GAAT,CAAaP,iBAAb,EAAgCC,qBAAA,CAASC,QAAT,CAAkBH,YAAlB,EAAgC,CAAC,CAAjC,CAAhC,CADJ,GAEIA,YAHN,EAIEM,wBAAA,CAAYC,KAAZ,GAAoB,CAApB,GAAwB,CAAC,CAJ3B,CAJF;;AAWA,MAAME,cAAc,GAAG,SAUjB;EAAA,IAVmC;IACvCC,eADuC;IAEvCzB,MAFuC;IAGvC0B,GAHuC;IAIvCxB,aAJuC;IAKvCyB,iBALuC;IAMvCxB;EANuC,CAUnC;EACJ,MAAM;IAAEF;EAAF,IAAawB,eAAnB;EAEA,OAAOxB,MAAM,CAAC2B,MAAP,CACL,CAACC,GAAD,EAAMC,CAAN,EAASC,CAAT,KACEF,GAAG,IACFE,CAAC,GAAG,CAAJ,GAAQL,GAAR,aAAQA,GAAR,cAAQA,GAAR,GAAe,CAAf,GAAmB,CADjB,CAAH,GAEA5B,mBAAmB,CACjBiC,CADiB,EAEjB/B,MAFiB,EAGjBC,MAHiB,EAIjBC,aAJiB,EAKjBC,SALiB,EAMjBwB,iBANiB,CAJhB,EAYL,CAZK,CAAP;AAcD,CA3BD;;AA6BA,MAAMK,oBAAoB,GAAG,SAYvB;EAAA,IAZyC;IAC7ChC,MAD6C;IAE7CyB,eAF6C;IAG7CC,GAH6C;IAI7CxB,aAJ6C;IAK7CC,SAL6C;IAM7C8B,KAN6C;IAO7CN;EAP6C,CAYzC;EACJ,MAAMf,WAAW,GAAGY,cAAc,CAAC;IACjCxB,MADiC;IAEjCyB,eAFiC;IAGjCtB,SAHiC;IAIjCuB,GAJiC;IAKjCxB,aALiC;IAMjCyB;EANiC,CAAD,CAAlC;EAQA,MAAMO,WAAW,GAAGvB,oBAAoB,CAACC,WAAD,EAAcZ,MAAM,CAACR,KAArB,CAAxC;EACA,MAAM2C,WAAW,GAAGC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASL,KAAT,EAAgBC,WAAhB,CAAT,EAAuC,CAAvC,CAApB;;EAEA,IAAIf,qBAAA,CAASC,EAAT,KAAgB,SAAhB,IAA6BC,wBAAA,CAAYC,KAA7C,EAAoD;IAClD;IACA;IACA,OAAOY,WAAW,GAAGC,WAArB;EACD;;EAED,OAAOA,WAAP;AACD,CA/BD;;AAiCA,MAAMI,eAAe,GAAG,SAUlB;EAAA,IAVoC;IACxCvC,MADwC;IAExCyB,eAFwC;IAGxCC,GAHwC;IAIxCxB,aAJwC;IAKxCyB,iBALwC;IAMxCxB;EANwC,CAUpC;EACJ,MAAMqC,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAW;IAChChC,MAAM,EAAEe,eAAe,CAAC1B,KAAhB,GAAwB;EADA,CAAX,EAEpB6B,MAFoB,CAEL,CAACe,KAAD,EAAQb,CAAR,EAAWC,CAAX,KAAiB;IACjC,MAAMa,QAAQ,GAAG9C,mBAAmB,CAClCiC,CADkC,EAElC/B,MAFkC,EAGlCyB,eAAe,CAACxB,MAHkB,EAIlCC,aAJkC,EAKlCC,SALkC,EAMlCwB,iBANkC,CAApC,CADiC,CAUjC;IACA;;IACA,OACEgB,KAAK,IACJlB,eAAe,CAAC1B,KAAhB,KAA0BgC,CAA1B,GACG,CAACa,QAAQ,IAAIlB,GAAJ,aAAIA,GAAJ,cAAIA,GAAJ,GAAW,CAAX,CAAT,IAA0B,CAD7B,GAEGkB,QAAQ,IAAIlB,GAAJ,aAAIA,GAAJ,cAAIA,GAAJ,GAAW,CAAX,CAHP,CADP;EAMD,CApBsB,EAoBpB,CApBoB,CAAvB;EAsBA,MAAMX,YAAY,GAAGyB,cAAc,GAAGxC,MAAM,CAACR,KAAP,GAAe,CAArD;EAEA,OAAOwC,oBAAoB,CAAC;IAC1BhC,MAD0B;IAE1ByB,eAF0B;IAG1BtB,SAH0B;IAI1B8B,KAAK,EAAElB,YAJmB;IAK1BW,GAL0B;IAM1BxB,aAN0B;IAO1ByB;EAP0B,CAAD,CAA3B;AASD,CA5CD;;AA8CA,MAAMkB,mBAAmB,GAAG;EAAA,IAAC;IAAEC;EAAF,CAAD;EAAA,OAA6BA,KAAK,CAACC,KAAnC;AAAA,CAA5B;;AAEA,MAAMC,oBAAoB,GAAG;EAAA,IAAC;IAAEF;EAAF,CAAD;EAAA,OAC3B,OAAOA,KAAK,CAACG,UAAb,KAA4B,WAA5B,GAA0CH,KAAK,CAACG,UAAhD,GAA6D,IADlC;AAAA,CAA7B;;AAGA,MAAMC,4BAA4B,GAAG;EAAA,IAAC;IAAEJ;EAAF,CAAD;EAAA,OACnC,OAAOA,KAAK,CAACK,kBAAb,KAAoC,QAApC,GACIL,KAAK,CAACK,kBADV,GAEI,OAAOL,KAAK,CAACC,KAAb,KAAuB,QAAvB,GACAD,KAAK,CAACC,KADN,GAEAK,SAL+B;AAAA,CAArC;;AAOA,MAAMC,sBAAsB,GAAIC,KAAD,iBAC7B,oBAAC,wBAAD,EAAqBA,KAArB,CADF;;AAIA,MAAMC,gBAAgB,GAAG;EAAA,IAAC;IAAET;EAAF,CAAD;EAAA,OAA6BA,KAAK,CAACU,MAAnC;AAAA,CAAzB,C,CAEA;AACA;;;AACA,MAAMC,iBAAiB,GAAG,EAA1B;;AAEe,SAASC,MAAT,QA6BF;EAAA,IA7BmC;IAC9CC,YAAY,GAAGd,mBAD+B;IAE9Ce,aAAa,GAAGZ,oBAF8B;IAG9Ca,qBAAqB,GAAGX,4BAHsB;IAI9CY,SAAS,GAAGP,gBAJkC;IAK9CQ,eAAe,GAAGV,sBAL4B;IAM9C3B,GAAG,GAAG,CANwC;IAO9CxB,aAP8C;IAQ9C8D,MAR8C;IAS9CvC,eAT8C;IAU9CwC,QAV8C;IAW9CC,WAX8C;IAY9CC,OAZ8C;IAa9CC,qBAb8C;IAc9CC,aAd8C;IAe9CC,uBAf8C;IAgB9CC,cAhB8C;IAiB9CC,UAjB8C;IAkB9CC,cAlB8C;IAmB9CC,UAnB8C;IAoB9CC,UApB8C;IAqB9CC,YArB8C;IAsB9CC,WAtB8C;IAuB9CC,UAvB8C;IAwB9CC,WAxB8C;IAyB9CC,gBAzB8C;IA0B9CtF,KA1B8C;IA2B9CC,QA3B8C;IA4B9C6D;EA5B8C,CA6BnC;EACX,MAAM,CAACxD,MAAD,EAASiF,SAAT,IAAsBC,KAAK,CAACC,QAAN,CAAuB;IAAE3F,KAAK,EAAE,CAAT;IAAY4F,MAAM,EAAE;EAApB,CAAvB,CAA5B;EACA,MAAM,CAACjF,SAAD,EAAYkF,YAAZ,IAA4BH,KAAK,CAACC,QAAN,CAAuC,EAAvC,CAAlC;EACA,MAAMG,WAAW,GAAGJ,KAAK,CAACK,MAAN,CAA8B,IAA9B,CAApB;EACA,MAAMC,OAAO,GAAGN,KAAK,CAACK,MAAN,CAAa,IAAb,CAAhB;EACA,MAAMxE,YAAY,GAAG,IAAA0E,yBAAA,EAAiB,CAAjB,CAArB;EACA,MAAMC,iBAAiB,GAAGR,KAAK,CAACK,MAAN,CAAqC,EAArC,CAA1B;EAEA,MAAM;IAAEtF;EAAF,IAAawB,eAAnB;EACA,MAAME,iBAAiB,GAAGlC,oBAAoB,CAACE,QAAD,CAA9C;EACA,MAAMgG,cAAc,GAAGhE,iBAAiB,KAAK,MAA7C;EACA,MAAMiE,YAAY,GAAGrD,eAAe,CAAC;IACnCvC,MADmC;IAEnCyB,eAFmC;IAGnCtB,SAHmC;IAInCuB,GAJmC;IAKnCxB,aALmC;IAMnCyB;EANmC,CAAD,CAApC;EASA,MAAMkE,oBAAoB,GACxBC,OAAO,CAAC9F,MAAM,CAACR,KAAR,CAAP,IACAS,MAAM,CACH8F,KADH,CACS,CADT,EACYtE,eAAe,CAAC1B,KAD5B,EAEGiG,KAFH,CAEUC,CAAD,IAAO,OAAO9F,SAAS,CAAC8F,CAAC,CAAC5F,GAAH,CAAhB,KAA4B,QAF5C,CAFF;EAMA6E,KAAK,CAACgB,SAAN,CAAgB,MAAM;IACpB,IAAIV,OAAO,CAACW,OAAZ,EAAqB;MACnBX,OAAO,CAACW,OAAR,GAAkB,KAAlB;MACA;IACD;;IAED,IAAIR,cAAc,IAAI,CAACE,oBAAvB,EAA6C;MAC3C;IACD;;IAED,IAAI3F,aAAJ,EAAmB;MAAA;;MACjB,wBAAAoF,WAAW,CAACa,OAAZ,8EAAqBC,cAArB,CAAoC;QAClCC,MAAM,EAAET,YAD0B;QAElCU,QAAQ,EAAE;MAFwB,CAApC;IAID;EACF,CAhBD,EAgBG,CAACT,oBAAD,EAAuBF,cAAvB,EAAuCzF,aAAvC,EAAsD0F,YAAtD,CAhBH;;EAkBA,MAAMW,YAAY,GAAIC,CAAD,IAA0B;IAC7C,MAAM;MAAEpB,MAAF;MAAU5F;IAAV,IAAoBgH,CAAC,CAACC,WAAF,CAAczG,MAAxC;IAEAiF,SAAS,CAAEjF,MAAD,IACRA,MAAM,CAACR,KAAP,KAAiBA,KAAjB,IAA0BQ,MAAM,CAACoF,MAAP,KAAkBA,MAA5C,GACIpF,MADJ,GAEI;MAAER,KAAF;MAAS4F;IAAT,CAHG,CAAT;EAKD,CARD;;EAUA,MAAMxE,WAAW,GAAGY,cAAc,CAAC;IACjCxB,MADiC;IAEjCyB,eAFiC;IAGjCtB,SAHiC;IAIjCuB,GAJiC;IAKjCxB,aALiC;IAMjCyB;EANiC,CAAD,CAAlC;EASA,MAAM+E,eAAe,GAAGtE,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYpC,MAAM,CAACS,MAAP,GAAgB,CAA5B,IAAiCgB,GAAzD;EACA,MAAMiF,gBAAgB,GAAID,eAAe,GAAG9F,WAAnB,GAAkC,GAA3D;EACA,MAAMgG,kBAAkB,GAAI,GAAE3G,MAAM,CAACS,MAAP,GAAgB,EAAG,GAAjD;EAEA,MAAMmG,UAAU,GAAG3B,KAAK,CAAC4B,OAAN,CACjB,MACEhG,aAAa,CACXC,YADW,EAEXJ,oBAAoB,CAACC,WAAD,EAAcZ,MAAM,CAACR,KAArB,CAFT,CAFE,EAMjB,CAACQ,MAAM,CAACR,KAAR,EAAeuB,YAAf,EAA6BH,WAA7B,CANiB,CAAnB;EASA,MAAMmG,UAAU,GAAG7B,KAAK,CAAC8B,WAAN,CACjB,UAAmD;IAAA,IAAlD;MAAEC,IAAI,EAAEnE,KAAR;MAAe/C;IAAf,CAAkD;IACjD,MAAMuD,KAA2C,GAAG;MAClDjD,GAAG,EAAEyC,KAAK,CAACzC,GADuC;MAElD4D,QAAQ,EAAEA,QAFwC;MAGlDnB,KAAK,EAAEA,KAH2C;MAIlDrB,eAAe,EAAEA,eAJiC;MAKlDoC,qBAAqB,EAAEA,qBAL2B;MAMlDD,aAAa,EAAEA,aANmC;MAOlDD,YAAY,EAAEA,YAPoC;MAQlDG,SAAS,EAAEA,SARuC;MASlDe,WAAW,EAAEA,WATqC;MAUlDC,UAAU,EAAEA,UAVsC;MAWlDC,WAAW,EAAEA,WAXqC;MAYlDb,WAAW,EAAEA,WAZqC;MAalDG,aAAa,EAAEA,aAbmC;MAclDM,UAAU,EAAEA,UAdsC;MAelDC,YAAY,EAAEA,YAfoC;MAgBlDsC,QAAQ,EAAEvB,cAAc,GACnBa,CAAD,IAA0B;QACxBd,iBAAiB,CAACS,OAAlB,CAA0BrD,KAAK,CAACzC,GAAhC,IAAuCmG,CAAC,CAACC,WAAF,CAAczG,MAAd,CAAqBR,KAA5D,CADwB,CAGxB;QACA;QACA;;QACA,IACES,MAAM,CAACS,MAAP,GAAgB+C,iBAAhB,IACA1D,KAAK,KAAK0D,iBADV,IAEAxD,MAAM,CACH8F,KADH,CACS,CADT,EACYtC,iBADZ,EAEGuC,KAFH,CAGKC,CAAD,IAAO,OAAOP,iBAAiB,CAACS,OAAlB,CAA0BF,CAAC,CAAC5F,GAA5B,CAAP,KAA4C,QAHvD,CAHF,EAQE;UACAgF,YAAY,CAAC,EAAE,GAAGK,iBAAiB,CAACS;UAAvB,CAAD,CAAZ;QACD,CAVD,MAUO,IACLlG,MAAM,CAAC+F,KAAP,CACGC,CAAD,IAAO,OAAOP,iBAAiB,CAACS,OAAlB,CAA0BF,CAAC,CAAC5F,GAA5B,CAAP,KAA4C,QADrD,CADK,EAIL;UACA;UACA;UACAgF,YAAY,CAAC,EAAE,GAAGK,iBAAiB,CAACS;UAAvB,CAAD,CAAZ;QACD;MACF,CA1BmB,GA2BpB/C,SA3C8C;MA4ClD+D,OAAO,EAAE,MAAM;QACb,MAAMC,KAAuB,GAAG;UAC9BtE,KAD8B;UAE9BuE,gBAAgB,EAAE,KAFY;UAG9BC,cAAc,EAAE,MAAM;YACpBF,KAAK,CAACC,gBAAN,GAAyB,IAAzB;UACD;QAL6B,CAAhC;QAQA3C,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAG0C,KAAH,CAAV;;QAEA,IAAIA,KAAK,CAACC,gBAAV,EAA4B;UAC1B;QACD;;QAEDrD,MAAM,CAAClB,KAAK,CAACzC,GAAP,CAAN;MACD,CA5DiD;MA6DlDkH,WAAW,EAAE,MAAM9C,cAAN,aAAMA,cAAN,uBAAMA,cAAc,CAAG;QAAE3B;MAAF,CAAH,CA7DiB;MA8DlD0B,UAAU,EAAEA,UA9DsC;MA+DlD9E,KAAK,EAAEC,QA/D2C;MAgElD;MACA6H,eAAe,EAAE,CAAC7B,cAAD,GACb7F,mBAAmB,CACjBC,KADiB,EAEjBC,MAFiB,EAGjBC,MAHiB,EAIjBC,aAJiB,EAKjBC,SALiB,EAMjBV,oBAAoB,CAACE,QAAD,CANH,CADN,GASbyD;IA1E8C,CAApD;IA6EA,oBACE,0CACG1B,GAAG,GAAG,CAAN,IAAW3B,KAAK,GAAG,CAAnB,gBAAuB,oBAAC,SAAD;MAAW,KAAK,EAAE2B;IAAlB,EAAvB,GAAmD,IADtD,EAEGsD,gBAAgB,GACfA,gBAAgB,CAAC1B,KAAD,CADD,gBAGf,oBAAC,mBAAD,EAAgBA,KAAhB,CALJ,CADF;EAUD,CAzFgB,EA0FjB,CACEY,WADF,EAEExC,GAFF,EAGEmC,qBAHF,EAIED,aAJF,EAKED,YALF,EAMEG,SANF,EAOEO,aAPF,EAQEsB,cARF,EASE3B,MATF,EAUEQ,UAVF,EAWExE,MAXF,EAYEyB,eAZF,EAaEgD,cAbF,EAcEC,UAdF,EAeET,QAfF,EAgBEU,UAhBF,EAiBEC,YAjBF,EAkBEC,WAlBF,EAmBEC,UAnBF,EAoBEC,WApBF,EAqBEC,gBArBF,EAsBE/E,MAtBF,EAuBEC,aAvBF,EAwBEP,QAxBF,EAyBEQ,SAzBF,CA1FiB,CAAnB;EAuHA,MAAMsH,YAAY,GAAGvC,KAAK,CAAC8B,WAAN,CAAmBC,IAAD,IAAaA,IAAI,CAAC5G,GAApC,EAAyC,EAAzC,CAArB;EAEA,MAAMqH,6BAA6B,GAAGxC,KAAK,CAAC4B,OAAN,CACpC,MAAM,CACJa,MAAM,CAACC,UADH,EAEJ1H,aAAa,GACT;IACEV,KAAK,EACHoB,WAAW,GAAG8F,eAAd,GAAgC9F,WAAhC,GAA8CgG;EAFlD,CADS,GAKTe,MAAM,CAACE,SAPP,EAQJzD,qBARI,CAD8B,EAWpC,CACEA,qBADF,EAEElE,aAFF,EAGEwG,eAHF,EAIE9F,WAJF,EAKEgG,kBALF,CAXoC,CAAtC;EAoBA,MAAMkB,YAAY,GAAG5C,KAAK,CAAC4B,OAAN,CACnB,MACE7F,qBAAA,CAASmG,KAAT,CACE,CACE;IACEX,WAAW,EAAE;MACXsB,aAAa,EAAE;QAAEC,CAAC,EAAEjH;MAAL;IADJ;EADf,CADF,CADF,EAQE;IAAEkH,eAAe,EAAE;EAAnB,CARF,CAFiB,EAYnB,CAAClH,YAAD,CAZmB,CAArB;EAeA,MAAMmH,0BAA0B,GAAG,IAAAC,0BAAA,EACjC,UAA2C;IAAA,IAA1C;MAAEC;IAAF,CAA0C;;IACzC,IAAInI,MAAM,CAACS,MAAP,IAAiB+C,iBAArB,EAAwC;MACtC;IACD,CAHwC,CAIzC;;;IACA,MAAMwD,IAAI,GAAGmB,OAAO,CAACA,OAAO,CAAC1H,MAAR,GAAiB,CAAlB,CAApB;IACA,MAAMX,KAAK,GAAG,CAAAkH,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAElH,KAAN,KAAe,CAA7B;;IACA,IACEkH,IAAI,CAACoB,UAAL,KACCtI,KAAK,GAAG,EAAR,KAAe,CAAf,IACCA,KAAK,KAAK0B,eAAe,CAAC1B,KAD3B,IAECA,KAAK,KAAKE,MAAM,CAACS,MAAP,GAAgB,CAH5B,CADF,EAKE;MACA2E,YAAY,CAAC,EAAE,GAAGK,iBAAiB,CAACS;MAAvB,CAAD,CAAZ;IACD;EACF,CAhBgC,CAAnC;EAmBA,oBACE,oBAAC,qBAAD,CAAU,IAAV;IAAe,QAAQ,EAAEI,YAAzB;IAAuC,KAAK,EAAE,CAACoB,MAAM,CAACW,MAAR,EAAgB5I,KAAhB;EAA9C,gBACE,oBAAC,qBAAD,CAAU,IAAV;IACE,aAAa,EAAC,MADhB;IAEE,KAAK,EAAE,CACLiI,MAAM,CAACY,kBADF,EAELrI,aAAa,GAAG;MAAEsI,SAAS,EAAE,CAAC;QAAE3B;MAAF,CAAD;IAAb,CAAH,GAA4C,IAFpD,EAGLjG,WAAW,GAAG8F,eAAd,GACI;MAAElH,KAAK,EAAEoB,WAAW,GAAG8F;IAAvB,CADJ,GAEIxG,aAAa,GACb;MAAEV,KAAK,EAAEoH;IAAT,CADa,GAEb,IAPC,EAQLtC,uBARK;EAFT,GAaGP,eAAe,CAAC;IACfE,QADe;IAEfjE,MAFe;IAGfyB,eAHe;IAIfuC,MAJe;IAKfxE,KAAK,EAAEmG,cAAc,GACjB,MADiB,GAEhB,GAAE,CAAC,MAAMgB,gBAAP,IAA2B1G,MAAM,CAACS,MAAO,GAPjC;IAQfhB,KAAK,EAAE6E,cARQ;IASfkE,WAAW,EAAG1G,CAAD,IACXjC,mBAAmB,CACjBiC,CADiB,EAEjB/B,MAFiB,EAGjBC,MAHiB,EAIjBC,aAJiB,EAKjBC,SALiB,EAMjBwB,iBANiB,CAVN;IAkBfD;EAlBe,CAAD,CAblB,CADF,eAmCE,oBAAC,iBAAD;IAAM,KAAK,EAAEiG,MAAM,CAACe;EAApB,gBACE,oBAAC,qBAAD,CAAU,QAAV;IACE,IAAI,EAAEzI,MADR;IAEE,YAAY,EAAEwH,YAFhB;IAGE,UAAU,MAHZ;IAIE,iBAAiB,EAAC,SAJpB;IAKE,yBAAyB,EAAC,SAL5B;IAME,aAAa,EAAEvH,aANjB;IAOE,OAAO,EAAEiE,OAPX;IAQE,kBAAkB,EAAEV,iBARtB;IASE,sBAAsB,EAAEyE,0BAT1B;IAUE,sBAAsB,EAAE,KAV1B;IAWE,YAAY,EAAE,KAXhB;IAYE,8BAA8B,EAAE,KAZlC;IAaE,4BAA4B,EAAE,KAbhC;IAcE,gCAAgC,EAAE,KAdpC;IAeE,cAAc,EAAC,OAfjB;IAgBE,qBAAqB,EAAER,6BAhBzB;IAiBE,mBAAmB,EAAE,EAjBvB;IAkBE,UAAU,EAAEX,UAlBd;IAmBE,QAAQ,EAAEe,YAnBZ;IAoBE,GAAG,EAAExC,WApBP;IAqBE,MAAM,EAAE9B;EArBV,EADF,CAnCF,CADF;AA+DD;;AAED,MAAMmE,MAAM,GAAG/H,uBAAA,CAAW+I,MAAX,CAAkB;EAC/Bd,SAAS,EAAE;IACTe,IAAI,EAAE;EADG,CADoB;EAI/BF,MAAM,EAAE;IACNG,QAAQ,EAAE1H,qBAAA,CAAS2H,MAAT,CAAgB;MAAEC,OAAO,EAAE,QAAX;MAAqBC,GAAG,EAAE5F;IAA1B,CAAhB;EADJ,CAJuB;EAO/BkF,MAAM,EAAE;IACNW,eAAe,EAAE,SADX;IAENC,SAAS,EAAE,CAFL;IAGNC,WAAW,EAAE,OAHP;IAINC,aAAa,EAAE,GAJT;IAKNC,YAAY,EAAEzJ,uBAAA,CAAW0J,aALnB;IAMNC,YAAY,EAAE;MACZnE,MAAM,EAAExF,uBAAA,CAAW0J,aADP;MAEZ9J,KAAK,EAAE;IAFK,CANR;IAUNgK,MAAM,EAAE;EAVF,CAPuB;EAmB/B5B,UAAU,EAAE;IACV6B,aAAa,EAAE,KADL;IAEVC,QAAQ,EAAE;EAFA,CAnBmB;EAuB/BnB,kBAAkB,EAAE;IAClBtE,QAAQ,EAAE,UADQ;IAElB0F,GAAG,EAAE,CAFa;IAGlBC,IAAI,EAAE,CAHY;IAIlBC,KAAK,EAAE,CAJW;IAKlBC,MAAM,EAAE;EALU;AAvBW,CAAlB,CAAf"}
|
|
1
|
+
{"version":3,"names":["Separator","width","getFlattenedTabWidth","style","tabStyle","StyleSheet","flatten","getComputedTabWidth","index","layout","routes","scrollEnabled","tabWidths","flattenedWidth","key","endsWith","parseFloat","Number","isFinite","length","getMaxScrollDistance","tabBarWidth","layoutWidth","getTranslateX","scrollAmount","maxScrollDistance","Animated","multiply","Platform","OS","I18nManager","isRTL","add","getTabBarWidth","navigationState","gap","flattenedTabWidth","reduce","acc","_","i","normalizeScrollValue","value","maxDistance","scrollValue","Math","max","min","getScrollAmount","centerDistance","Array","from","total","tabWidth","getLabelTextDefault","route","title","getAccessibleDefault","accessible","getAccessibilityLabelDefault","accessibilityLabel","undefined","renderIndicatorDefault","props","getTestIdDefault","testID","MEASURE_PER_BATCH","TabBar","getLabelText","getAccessible","getAccessibilityLabel","getTestID","renderIndicator","jumpTo","position","activeColor","bounces","contentContainerStyle","inactiveColor","indicatorContainerStyle","indicatorStyle","labelStyle","onTabLongPress","onTabPress","pressColor","pressOpacity","renderBadge","renderIcon","renderLabel","renderTabBarItem","setLayout","React","useState","height","setTabWidths","flatListRef","useRef","isFirst","useAnimatedValue","measuredTabWidths","isWidthDynamic","scrollOffset","hasMeasuredTabWidths","Boolean","slice","every","r","useEffect","current","scrollToOffset","offset","animated","handleLayout","e","nativeEvent","separatorsWidth","separatorPercent","tabBarWidthPercent","translateX","useMemo","renderItem","useCallback","item","onLayout","onPress","event","defaultPrevented","preventDefault","onLongPress","defaultTabWidth","keyExtractor","contentContainerStyleMemoized","styles","tabContent","container","handleScroll","contentOffset","x","useNativeDriver","handleViewableItemsChanged","useLatestCallback","changed","isViewable","tabBar","indicatorContainer","transform","getTabWidth","scroll","create","flex","overflow","select","default","web","backgroundColor","elevation","shadowColor","shadowOpacity","shadowRadius","hairlineWidth","shadowOffset","zIndex","flexDirection","flexWrap","top","left","right","bottom"],"sourceRoot":"../../src","sources":["TabBar.tsx"],"mappings":"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"}
|
|
@@ -4,25 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = TabBarIndicator;
|
|
7
|
-
|
|
8
7
|
var React = _interopRequireWildcard(require("react"));
|
|
9
|
-
|
|
10
8
|
var _reactNative = require("react-native");
|
|
11
|
-
|
|
12
9
|
var _useAnimatedValue = _interopRequireDefault(require("./useAnimatedValue"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
20
13
|
const getTranslateX = (position, routes, getTabWidth, gap) => {
|
|
21
|
-
const inputRange = routes.map((_, i) => i);
|
|
14
|
+
const inputRange = routes.map((_, i) => i);
|
|
22
15
|
|
|
16
|
+
// every index contains widths at all previous indices
|
|
23
17
|
const outputRange = routes.reduce((acc, _, i) => {
|
|
24
18
|
if (i === 0) return [0];
|
|
25
|
-
return [...acc, acc[i - 1] + getTabWidth(i - 1) + (gap
|
|
19
|
+
return [...acc, acc[i - 1] + getTabWidth(i - 1) + (gap ?? 0)];
|
|
26
20
|
}, []);
|
|
27
21
|
const translateX = position.interpolate({
|
|
28
22
|
inputRange,
|
|
@@ -31,7 +25,6 @@ const getTranslateX = (position, routes, getTabWidth, gap) => {
|
|
|
31
25
|
});
|
|
32
26
|
return _reactNative.Animated.multiply(translateX, _reactNative.I18nManager.isRTL ? -1 : 1);
|
|
33
27
|
};
|
|
34
|
-
|
|
35
28
|
function TabBarIndicator(_ref) {
|
|
36
29
|
let {
|
|
37
30
|
getTabWidth,
|
|
@@ -48,10 +41,10 @@ function TabBarIndicator(_ref) {
|
|
|
48
41
|
const indicatorVisible = isWidthDynamic ? layout.width && navigationState.routes.slice(0, navigationState.index).every((_, r) => getTabWidth(r)) : true;
|
|
49
42
|
React.useEffect(() => {
|
|
50
43
|
const fadeInIndicator = () => {
|
|
51
|
-
if (!isIndicatorShown.current && isWidthDynamic &&
|
|
44
|
+
if (!isIndicatorShown.current && isWidthDynamic &&
|
|
45
|
+
// We should fade-in the indicator when we have widths for all the tab items
|
|
52
46
|
indicatorVisible) {
|
|
53
47
|
isIndicatorShown.current = true;
|
|
54
|
-
|
|
55
48
|
_reactNative.Animated.timing(opacity, {
|
|
56
49
|
toValue: 1,
|
|
57
50
|
duration: 150,
|
|
@@ -60,7 +53,6 @@ function TabBarIndicator(_ref) {
|
|
|
60
53
|
}).start();
|
|
61
54
|
}
|
|
62
55
|
};
|
|
63
|
-
|
|
64
56
|
fadeInIndicator();
|
|
65
57
|
return () => opacity.stopAnimation();
|
|
66
58
|
}, [indicatorVisible, isWidthDynamic, opacity]);
|
|
@@ -68,14 +60,12 @@ function TabBarIndicator(_ref) {
|
|
|
68
60
|
routes
|
|
69
61
|
} = navigationState;
|
|
70
62
|
const transform = [];
|
|
71
|
-
|
|
72
63
|
if (layout.width) {
|
|
73
64
|
const translateX = routes.length > 1 ? getTranslateX(position, routes, getTabWidth, gap) : 0;
|
|
74
65
|
transform.push({
|
|
75
66
|
translateX
|
|
76
67
|
});
|
|
77
68
|
}
|
|
78
|
-
|
|
79
69
|
if (width === 'auto') {
|
|
80
70
|
const inputRange = routes.map((_, i) => i);
|
|
81
71
|
const outputRange = inputRange.map(getTabWidth);
|
|
@@ -89,11 +79,11 @@ function TabBarIndicator(_ref) {
|
|
|
89
79
|
translateX: 0.5
|
|
90
80
|
});
|
|
91
81
|
}
|
|
92
|
-
|
|
93
82
|
return /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
|
|
94
83
|
style: [styles.indicator, {
|
|
95
84
|
width: width === 'auto' ? 1 : width
|
|
96
|
-
},
|
|
85
|
+
},
|
|
86
|
+
// If layout is not available, use `left` property for positioning the indicator
|
|
97
87
|
// This avoids rendering delay until we are able to calculate translateX
|
|
98
88
|
// If platform is macos use `left` property as `transform` is broken at the moment.
|
|
99
89
|
// See: https://github.com/microsoft/react-native-macos/issues/280
|
|
@@ -108,7 +98,6 @@ function TabBarIndicator(_ref) {
|
|
|
108
98
|
} : null, style]
|
|
109
99
|
});
|
|
110
100
|
}
|
|
111
|
-
|
|
112
101
|
const styles = _reactNative.StyleSheet.create({
|
|
113
102
|
indicator: {
|
|
114
103
|
backgroundColor: '#ffeb3b',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getTranslateX","position","routes","getTabWidth","gap","inputRange","map","_","i","outputRange","reduce","acc","translateX","interpolate","extrapolate","Animated","multiply","I18nManager","isRTL","TabBarIndicator","layout","navigationState","width","style","isIndicatorShown","React","useRef","isWidthDynamic","opacity","useAnimatedValue","indicatorVisible","slice","index","every","r","useEffect","fadeInIndicator","current","timing","toValue","duration","easing","Easing","in","linear","useNativeDriver","start","stopAnimation","transform","length","push","scaleX","styles","indicator","Platform","OS","left","StyleSheet","create","backgroundColor","bottom","right","height"],"
|
|
1
|
+
{"version":3,"names":["getTranslateX","position","routes","getTabWidth","gap","inputRange","map","_","i","outputRange","reduce","acc","translateX","interpolate","extrapolate","Animated","multiply","I18nManager","isRTL","TabBarIndicator","layout","navigationState","width","style","isIndicatorShown","React","useRef","isWidthDynamic","opacity","useAnimatedValue","indicatorVisible","slice","index","every","r","useEffect","fadeInIndicator","current","timing","toValue","duration","easing","Easing","in","linear","useNativeDriver","start","stopAnimation","transform","length","push","scaleX","styles","indicator","Platform","OS","left","StyleSheet","create","backgroundColor","bottom","right","height"],"sourceRoot":"../../src","sources":["TabBarIndicator.tsx"],"mappings":"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"}
|