@zoverdoser/react-native-tab-view 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/lib/module/Pager.android.js +4 -0
  4. package/lib/module/Pager.android.js.map +1 -0
  5. package/lib/module/Pager.ios.js +4 -0
  6. package/lib/module/Pager.ios.js.map +1 -0
  7. package/lib/module/Pager.js +4 -0
  8. package/lib/module/Pager.js.map +1 -0
  9. package/lib/module/PagerViewAdapter.js +131 -0
  10. package/lib/module/PagerViewAdapter.js.map +1 -0
  11. package/lib/module/PanResponderAdapter.js +209 -0
  12. package/lib/module/PanResponderAdapter.js.map +1 -0
  13. package/lib/module/PlatformPressable.js +61 -0
  14. package/lib/module/PlatformPressable.js.map +1 -0
  15. package/lib/module/SceneMap.js +24 -0
  16. package/lib/module/SceneMap.js.map +1 -0
  17. package/lib/module/SceneView.js +72 -0
  18. package/lib/module/SceneView.js.map +1 -0
  19. package/lib/module/TabBar.js +470 -0
  20. package/lib/module/TabBar.js.map +1 -0
  21. package/lib/module/TabBarIndicator.js +122 -0
  22. package/lib/module/TabBarIndicator.js.map +1 -0
  23. package/lib/module/TabBarItem.js +209 -0
  24. package/lib/module/TabBarItem.js.map +1 -0
  25. package/lib/module/TabBarItemLabel.js +34 -0
  26. package/lib/module/TabBarItemLabel.js.map +1 -0
  27. package/lib/module/TabView.js +141 -0
  28. package/lib/module/TabView.js.map +1 -0
  29. package/lib/module/index.js +8 -0
  30. package/lib/module/index.js.map +1 -0
  31. package/lib/module/package.json +1 -0
  32. package/lib/module/types.js +4 -0
  33. package/lib/module/types.js.map +1 -0
  34. package/lib/module/useAnimatedValue.js +12 -0
  35. package/lib/module/useAnimatedValue.js.map +1 -0
  36. package/lib/typescript/package.json +1 -0
  37. package/lib/typescript/src/Pager.android.d.ts +2 -0
  38. package/lib/typescript/src/Pager.android.d.ts.map +1 -0
  39. package/lib/typescript/src/Pager.d.ts +2 -0
  40. package/lib/typescript/src/Pager.d.ts.map +1 -0
  41. package/lib/typescript/src/Pager.ios.d.ts +2 -0
  42. package/lib/typescript/src/Pager.ios.d.ts.map +1 -0
  43. package/lib/typescript/src/PagerViewAdapter.d.ts +18 -0
  44. package/lib/typescript/src/PagerViewAdapter.d.ts.map +1 -0
  45. package/lib/typescript/src/PanResponderAdapter.d.ts +19 -0
  46. package/lib/typescript/src/PanResponderAdapter.d.ts.map +1 -0
  47. package/lib/typescript/src/PlatformPressable.d.ts +14 -0
  48. package/lib/typescript/src/PlatformPressable.d.ts.map +1 -0
  49. package/lib/typescript/src/SceneMap.d.ts +10 -0
  50. package/lib/typescript/src/SceneMap.d.ts.map +1 -0
  51. package/lib/typescript/src/SceneView.d.ts +16 -0
  52. package/lib/typescript/src/SceneView.d.ts.map +1 -0
  53. package/lib/typescript/src/TabBar.d.ts +31 -0
  54. package/lib/typescript/src/TabBar.d.ts.map +1 -0
  55. package/lib/typescript/src/TabBarIndicator.d.ts +15 -0
  56. package/lib/typescript/src/TabBarIndicator.d.ts.map +1 -0
  57. package/lib/typescript/src/TabBarItem.d.ts +18 -0
  58. package/lib/typescript/src/TabBarItem.d.ts.map +1 -0
  59. package/lib/typescript/src/TabBarItemLabel.d.ts +13 -0
  60. package/lib/typescript/src/TabBarItemLabel.d.ts.map +1 -0
  61. package/lib/typescript/src/TabView.d.ts +33 -0
  62. package/lib/typescript/src/TabView.d.ts.map +1 -0
  63. package/lib/typescript/src/index.d.ts +11 -0
  64. package/lib/typescript/src/index.d.ts.map +1 -0
  65. package/lib/typescript/src/types.d.ts +76 -0
  66. package/lib/typescript/src/types.d.ts.map +1 -0
  67. package/lib/typescript/src/useAnimatedValue.d.ts +3 -0
  68. package/lib/typescript/src/useAnimatedValue.d.ts.map +1 -0
  69. package/package.json +84 -0
  70. package/src/Pager.android.tsx +1 -0
  71. package/src/Pager.ios.tsx +1 -0
  72. package/src/Pager.tsx +1 -0
  73. package/src/PagerViewAdapter.tsx +186 -0
  74. package/src/PanResponderAdapter.tsx +344 -0
  75. package/src/PlatformPressable.tsx +91 -0
  76. package/src/SceneMap.tsx +30 -0
  77. package/src/SceneView.tsx +106 -0
  78. package/src/TabBar.tsx +725 -0
  79. package/src/TabBarIndicator.tsx +190 -0
  80. package/src/TabBarItem.tsx +301 -0
  81. package/src/TabBarItemLabel.tsx +50 -0
  82. package/src/TabView.tsx +198 -0
  83. package/src/index.tsx +16 -0
  84. package/src/types.tsx +94 -0
  85. package/src/useAnimatedValue.tsx +12 -0
@@ -0,0 +1,470 @@
1
+ "use strict";
2
+
3
+ import * as React from 'react';
4
+ import { Animated, I18nManager, Platform, StyleSheet, View } from 'react-native';
5
+ import useLatestCallback from 'use-latest-callback';
6
+ import { TabBarIndicator } from "./TabBarIndicator.js";
7
+ import { TabBarItem } from "./TabBarItem.js";
8
+ import { useAnimatedValue } from "./useAnimatedValue.js";
9
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
+ const useNativeDriver = Platform.OS !== 'web';
11
+ const Separator = ({
12
+ width
13
+ }) => {
14
+ return /*#__PURE__*/_jsx(View, {
15
+ style: {
16
+ width
17
+ }
18
+ });
19
+ };
20
+ const getFlattenedTabWidth = style => {
21
+ const tabStyle = StyleSheet.flatten(style);
22
+ return tabStyle?.width;
23
+ };
24
+ const getFlattenedPaddingStart = style => {
25
+ const flattenStyle = StyleSheet.flatten(style);
26
+ return flattenStyle ? flattenStyle.paddingLeft || flattenStyle.paddingStart || flattenStyle.paddingHorizontal || 0 : 0;
27
+ };
28
+ const getFlattenedPaddingEnd = style => {
29
+ const flattenStyle = StyleSheet.flatten(style);
30
+ return flattenStyle ? flattenStyle.paddingRight || flattenStyle.paddingEnd || flattenStyle.paddingHorizontal || 0 : 0;
31
+ };
32
+ const convertPaddingPercentToSize = (value, layout) => {
33
+ switch (typeof value) {
34
+ case 'number':
35
+ return value;
36
+ case 'string':
37
+ if (value.endsWith('%')) {
38
+ const width = parseFloat(value);
39
+ if (Number.isFinite(width)) {
40
+ return layout.width * (width / 100);
41
+ }
42
+ }
43
+ }
44
+ return 0;
45
+ };
46
+ const getComputedTabWidth = (index, layout, routes, scrollEnabled, tabWidths, flattenedWidth, flattenedPaddingStart, flattenedPaddingEnd, gap) => {
47
+ if (flattenedWidth === 'auto') {
48
+ return tabWidths[routes[index].key] || 0;
49
+ }
50
+ switch (typeof flattenedWidth) {
51
+ case 'number':
52
+ return flattenedWidth;
53
+ case 'string':
54
+ if (flattenedWidth.endsWith('%')) {
55
+ const width = parseFloat(flattenedWidth);
56
+ if (Number.isFinite(width)) {
57
+ return layout.width * (width / 100);
58
+ }
59
+ }
60
+ }
61
+ if (scrollEnabled) {
62
+ return layout.width / 5 * 2;
63
+ }
64
+ const gapTotalWidth = (gap ?? 0) * (routes.length - 1);
65
+ const paddingTotalWidth = convertPaddingPercentToSize(flattenedPaddingStart, layout) + convertPaddingPercentToSize(flattenedPaddingEnd, layout);
66
+ return (layout.width - gapTotalWidth - paddingTotalWidth) / routes.length;
67
+ };
68
+ const getMaxScrollDistance = (tabBarWidth, layoutWidth) => tabBarWidth - layoutWidth;
69
+ const getTranslateX = (scrollAmount, maxScrollDistance, direction) => Animated.multiply(Platform.OS === 'android' && direction === 'rtl' ? Animated.add(maxScrollDistance, Animated.multiply(scrollAmount, -1)) : scrollAmount, direction === 'rtl' ? 1 : -1);
70
+ const getTabBarWidth = ({
71
+ navigationState,
72
+ layout,
73
+ gap,
74
+ scrollEnabled,
75
+ flattenedTabWidth,
76
+ flattenedPaddingStart,
77
+ flattenedPaddingEnd,
78
+ tabWidths
79
+ }) => {
80
+ const {
81
+ routes
82
+ } = navigationState;
83
+ const paddingsWidth = Math.max(0, convertPaddingPercentToSize(flattenedPaddingStart, layout) + convertPaddingPercentToSize(flattenedPaddingEnd, layout));
84
+ return routes.reduce((acc, _, i) => acc + (i > 0 ? gap ?? 0 : 0) + getComputedTabWidth(i, layout, routes, scrollEnabled, tabWidths, flattenedTabWidth, flattenedPaddingStart, flattenedPaddingEnd, gap), paddingsWidth);
85
+ };
86
+ const normalizeScrollValue = ({
87
+ layout,
88
+ navigationState,
89
+ gap,
90
+ scrollEnabled,
91
+ tabWidths,
92
+ value,
93
+ flattenedTabWidth,
94
+ flattenedPaddingStart,
95
+ flattenedPaddingEnd,
96
+ direction
97
+ }) => {
98
+ const tabBarWidth = getTabBarWidth({
99
+ layout,
100
+ navigationState,
101
+ tabWidths,
102
+ gap,
103
+ scrollEnabled,
104
+ flattenedTabWidth,
105
+ flattenedPaddingStart,
106
+ flattenedPaddingEnd
107
+ });
108
+ const maxDistance = getMaxScrollDistance(tabBarWidth, layout.width);
109
+ const scrollValue = Math.max(Math.min(value, maxDistance), 0);
110
+ if (Platform.OS === 'android' && direction === 'rtl') {
111
+ // On Android, scroll value is not applied in reverse in RTL
112
+ // so we need to manually adjust it to apply correct value
113
+ return maxDistance - scrollValue;
114
+ }
115
+ return scrollValue;
116
+ };
117
+ const getScrollAmount = ({
118
+ layout,
119
+ navigationState,
120
+ gap,
121
+ scrollEnabled,
122
+ flattenedTabWidth,
123
+ tabWidths,
124
+ flattenedPaddingStart,
125
+ flattenedPaddingEnd,
126
+ direction
127
+ }) => {
128
+ const paddingInitial = direction === 'rtl' ? convertPaddingPercentToSize(flattenedPaddingEnd, layout) : convertPaddingPercentToSize(flattenedPaddingStart, layout);
129
+ const centerDistance = Array.from({
130
+ length: navigationState.index + 1
131
+ }).reduce((total, _, i) => {
132
+ const tabWidth = getComputedTabWidth(i, layout, navigationState.routes, scrollEnabled, tabWidths, flattenedTabWidth, flattenedPaddingStart, flattenedPaddingEnd, gap);
133
+
134
+ // To get the current index centered we adjust scroll amount by width of indexes
135
+ // 0 through (i - 1) and add half the width of current index i
136
+ return total + (i > 0 ? gap ?? 0 : 0) + (navigationState.index === i ? tabWidth / 2 : tabWidth);
137
+ }, paddingInitial);
138
+ const scrollAmount = centerDistance - layout.width / 2;
139
+ return normalizeScrollValue({
140
+ layout,
141
+ navigationState,
142
+ tabWidths,
143
+ value: scrollAmount,
144
+ gap,
145
+ scrollEnabled,
146
+ flattenedTabWidth,
147
+ flattenedPaddingStart,
148
+ flattenedPaddingEnd,
149
+ direction
150
+ });
151
+ };
152
+ const getLabelTextDefault = ({
153
+ route
154
+ }) => route.title;
155
+ const getAccessibleDefault = ({
156
+ route
157
+ }) => typeof route.accessible !== 'undefined' ? route.accessible : true;
158
+ const getAccessibilityLabelDefault = ({
159
+ route
160
+ }) => typeof route.accessibilityLabel === 'string' ? route.accessibilityLabel : typeof route.title === 'string' ? route.title : undefined;
161
+ const renderIndicatorDefault = props => /*#__PURE__*/_jsx(TabBarIndicator, {
162
+ ...props
163
+ });
164
+ const getTestIdDefault = ({
165
+ route
166
+ }) => route.testID;
167
+
168
+ // How many items measurements should we update per batch.
169
+ // Defaults to 10, since that's whats FlatList is using in initialNumToRender.
170
+ const MEASURE_PER_BATCH = 10;
171
+ export function TabBar({
172
+ renderIndicator = renderIndicatorDefault,
173
+ gap = 0,
174
+ scrollEnabled,
175
+ jumpTo,
176
+ navigationState,
177
+ position,
178
+ bounces,
179
+ contentContainerStyle,
180
+ indicatorContainerStyle,
181
+ indicatorStyle,
182
+ onTabLongPress,
183
+ onTabPress,
184
+ pressColor,
185
+ pressOpacity,
186
+ direction = I18nManager.getConstants().isRTL ? 'rtl' : 'ltr',
187
+ renderTabBarItem,
188
+ style,
189
+ tabStyle,
190
+ layout: propLayout,
191
+ testID,
192
+ android_ripple,
193
+ options,
194
+ animatedStyles
195
+ }) {
196
+ const [layout, setLayout] = React.useState(propLayout ?? {
197
+ width: 0,
198
+ height: 0
199
+ });
200
+ const [tabWidths, setTabWidths] = React.useState({});
201
+ const flatListRef = React.useRef(null);
202
+ const isFirst = React.useRef(true);
203
+ const scrollAmount = useAnimatedValue(0);
204
+ const measuredTabWidths = React.useRef({});
205
+ const {
206
+ routes
207
+ } = navigationState;
208
+ const flattenedTabWidth = getFlattenedTabWidth(tabStyle);
209
+ const isWidthDynamic = flattenedTabWidth === 'auto';
210
+ const flattenedPaddingEnd = getFlattenedPaddingEnd(contentContainerStyle);
211
+ const flattenedPaddingStart = getFlattenedPaddingStart(contentContainerStyle);
212
+ const scrollOffset = getScrollAmount({
213
+ layout,
214
+ navigationState,
215
+ tabWidths,
216
+ gap,
217
+ scrollEnabled,
218
+ flattenedTabWidth,
219
+ flattenedPaddingStart,
220
+ flattenedPaddingEnd,
221
+ direction
222
+ });
223
+ const hasMeasuredTabWidths = Boolean(layout.width) && routes.slice(0, navigationState.index).every(r => typeof tabWidths[r.key] === 'number');
224
+ React.useEffect(() => {
225
+ if (isFirst.current) {
226
+ isFirst.current = false;
227
+ return;
228
+ }
229
+ if (isWidthDynamic && !hasMeasuredTabWidths) {
230
+ return;
231
+ }
232
+ if (scrollEnabled) {
233
+ flatListRef.current?.scrollToOffset({
234
+ offset: scrollOffset,
235
+ animated: true
236
+ });
237
+ }
238
+ }, [hasMeasuredTabWidths, isWidthDynamic, scrollEnabled, scrollOffset]);
239
+ const handleLayout = e => {
240
+ const {
241
+ height,
242
+ width
243
+ } = e.nativeEvent.layout;
244
+ setLayout(layout => layout.width === width && layout.height === height ? layout : {
245
+ width,
246
+ height
247
+ });
248
+ };
249
+ const tabBarWidth = getTabBarWidth({
250
+ layout,
251
+ navigationState,
252
+ tabWidths,
253
+ gap,
254
+ scrollEnabled,
255
+ flattenedTabWidth,
256
+ flattenedPaddingStart,
257
+ flattenedPaddingEnd
258
+ });
259
+ const separatorsWidth = Math.max(0, routes.length - 1) * gap;
260
+ const paddingsWidth = Math.max(0, convertPaddingPercentToSize(flattenedPaddingStart, layout) + convertPaddingPercentToSize(flattenedPaddingEnd, layout));
261
+ const translateX = React.useMemo(() => getTranslateX(scrollAmount, getMaxScrollDistance(tabBarWidth, layout.width), direction), [direction, layout.width, scrollAmount, tabBarWidth]);
262
+ const renderItem = React.useCallback(({
263
+ item: route,
264
+ index
265
+ }) => {
266
+ const {
267
+ testID = getTestIdDefault({
268
+ route
269
+ }),
270
+ labelText = getLabelTextDefault({
271
+ route
272
+ }),
273
+ accessible = getAccessibleDefault({
274
+ route
275
+ }),
276
+ accessibilityLabel = getAccessibilityLabelDefault({
277
+ route
278
+ }),
279
+ ...rest
280
+ } = options?.[route.key] ?? {};
281
+ const onLayout = isWidthDynamic ? e => {
282
+ measuredTabWidths.current[route.key] = e.nativeEvent.layout.width;
283
+
284
+ // When we have measured widths for all of the tabs, we should updates the state
285
+ // We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
286
+ // If we have more than 10 routes divide updating tabWidths into multiple batches. Here we update only first batch of 10 items.
287
+ if (routes.length > MEASURE_PER_BATCH && index === MEASURE_PER_BATCH && routes.slice(0, MEASURE_PER_BATCH).every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
288
+ setTabWidths({
289
+ ...measuredTabWidths.current
290
+ });
291
+ } else if (routes.every(r => typeof measuredTabWidths.current[r.key] === 'number')) {
292
+ // When we have measured widths for all of the tabs, we should updates the state
293
+ // We avoid doing separate setState for each layout since it triggers multiple renders and slows down app
294
+ setTabWidths({
295
+ ...measuredTabWidths.current
296
+ });
297
+ }
298
+ } : undefined;
299
+ const onPress = () => {
300
+ const event = {
301
+ route,
302
+ defaultPrevented: false,
303
+ preventDefault: () => {
304
+ event.defaultPrevented = true;
305
+ }
306
+ };
307
+ onTabPress?.(event);
308
+ if (event.defaultPrevented) {
309
+ return;
310
+ }
311
+ jumpTo(route.key);
312
+ };
313
+ const onLongPress = () => onTabLongPress?.({
314
+ route
315
+ });
316
+
317
+ // Calculate the default width for tab for FlatList to work
318
+ const defaultTabWidth = !isWidthDynamic ? getComputedTabWidth(index, layout, routes, scrollEnabled, tabWidths, getFlattenedTabWidth(tabStyle), getFlattenedPaddingEnd(contentContainerStyle), getFlattenedPaddingStart(contentContainerStyle), gap) : undefined;
319
+ const props = {
320
+ ...rest,
321
+ position,
322
+ route,
323
+ navigationState,
324
+ testID,
325
+ labelText,
326
+ accessible,
327
+ accessibilityLabel,
328
+ pressColor,
329
+ pressOpacity,
330
+ onLayout,
331
+ onPress,
332
+ onLongPress,
333
+ style: tabStyle,
334
+ defaultTabWidth,
335
+ android_ripple,
336
+ animatedStyles
337
+ };
338
+ return /*#__PURE__*/_jsxs(_Fragment, {
339
+ children: [gap > 0 && index > 0 ? /*#__PURE__*/_jsx(Separator, {
340
+ width: gap
341
+ }) : null, renderTabBarItem ? renderTabBarItem({
342
+ key: route.key,
343
+ ...props
344
+ }) : /*#__PURE__*/_jsx(TabBarItem, {
345
+ ...props
346
+ }, route.key)]
347
+ });
348
+ }, [position, navigationState, options, pressColor, pressOpacity, isWidthDynamic, tabStyle, layout, routes, scrollEnabled, tabWidths, contentContainerStyle, gap, android_ripple, renderTabBarItem, onTabPress, jumpTo, onTabLongPress, animatedStyles]);
349
+ const keyExtractor = React.useCallback(item => item.key, []);
350
+ const contentContainerStyleMemoized = React.useMemo(() => [styles.tabContent, scrollEnabled ? {
351
+ width: tabBarWidth
352
+ } : null, contentContainerStyle], [contentContainerStyle, scrollEnabled, tabBarWidth]);
353
+ const handleScroll = React.useMemo(() => Animated.event([{
354
+ nativeEvent: {
355
+ contentOffset: {
356
+ x: scrollAmount
357
+ }
358
+ }
359
+ }], {
360
+ useNativeDriver
361
+ }), [scrollAmount]);
362
+ const handleViewableItemsChanged = useLatestCallback(({
363
+ changed
364
+ }) => {
365
+ if (routes.length <= MEASURE_PER_BATCH) {
366
+ return;
367
+ }
368
+ // Get next vievable item
369
+ const item = changed[changed.length - 1];
370
+ const index = item?.index || 0;
371
+ if (item.isViewable && (index % 10 === 0 || index === navigationState.index || index === routes.length - 1)) {
372
+ setTabWidths({
373
+ ...measuredTabWidths.current
374
+ });
375
+ }
376
+ });
377
+ return /*#__PURE__*/_jsxs(Animated.View, {
378
+ onLayout: handleLayout,
379
+ style: [styles.tabBar, style],
380
+ children: [/*#__PURE__*/_jsx(Animated.View, {
381
+ pointerEvents: "none",
382
+ style: [styles.indicatorContainer, scrollEnabled ? {
383
+ transform: [{
384
+ translateX
385
+ }]
386
+ } : null, scrollEnabled ? {
387
+ width: tabBarWidth
388
+ } : null, indicatorContainerStyle],
389
+ children: renderIndicator({
390
+ position,
391
+ layout,
392
+ navigationState,
393
+ jumpTo,
394
+ direction,
395
+ width: isWidthDynamic ? 'auto' : Math.max(0, (tabBarWidth - separatorsWidth - paddingsWidth) / routes.length),
396
+ style: [indicatorStyle, {
397
+ start: flattenedPaddingStart,
398
+ end: flattenedPaddingEnd
399
+ }],
400
+ getTabWidth: i => getComputedTabWidth(i, layout, routes, scrollEnabled, tabWidths, flattenedTabWidth, flattenedPaddingEnd, flattenedPaddingStart, gap),
401
+ gap
402
+ })
403
+ }), /*#__PURE__*/_jsx(View, {
404
+ style: styles.scroll,
405
+ children: /*#__PURE__*/_jsx(Animated.FlatList, {
406
+ data: routes,
407
+ keyExtractor: keyExtractor,
408
+ horizontal: true,
409
+ role: "tablist",
410
+ keyboardShouldPersistTaps: "handled",
411
+ scrollEnabled: scrollEnabled,
412
+ bounces: bounces,
413
+ initialNumToRender: MEASURE_PER_BATCH,
414
+ onViewableItemsChanged: handleViewableItemsChanged,
415
+ alwaysBounceHorizontal: false,
416
+ scrollsToTop: false,
417
+ showsHorizontalScrollIndicator: false,
418
+ showsVerticalScrollIndicator: false,
419
+ automaticallyAdjustContentInsets: false,
420
+ overScrollMode: "never",
421
+ contentContainerStyle: contentContainerStyleMemoized,
422
+ scrollEventThrottle: 16,
423
+ renderItem: renderItem,
424
+ onScroll: handleScroll,
425
+ ref: flatListRef,
426
+ testID: testID
427
+ })
428
+ })]
429
+ });
430
+ }
431
+ const styles = StyleSheet.create({
432
+ scroll: {
433
+ overflow: Platform.select({
434
+ default: 'scroll',
435
+ web: undefined
436
+ })
437
+ },
438
+ tabBar: {
439
+ zIndex: 1,
440
+ backgroundColor: '#2196f3',
441
+ elevation: 4,
442
+ ...Platform.select({
443
+ default: {
444
+ shadowColor: 'black',
445
+ shadowOpacity: 0.1,
446
+ shadowRadius: StyleSheet.hairlineWidth,
447
+ shadowOffset: {
448
+ height: StyleSheet.hairlineWidth,
449
+ width: 0
450
+ }
451
+ },
452
+ web: {
453
+ boxShadow: '0 1px 1px rgba(0, 0, 0, 0.1)'
454
+ }
455
+ })
456
+ },
457
+ tabContent: {
458
+ flexGrow: 1,
459
+ flexDirection: 'row',
460
+ flexWrap: 'nowrap'
461
+ },
462
+ indicatorContainer: {
463
+ position: 'absolute',
464
+ top: 0,
465
+ start: 0,
466
+ end: 0,
467
+ bottom: 0
468
+ }
469
+ });
470
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Animated","I18nManager","Platform","StyleSheet","View","useLatestCallback","TabBarIndicator","TabBarItem","useAnimatedValue","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","useNativeDriver","OS","Separator","width","style","getFlattenedTabWidth","tabStyle","flatten","getFlattenedPaddingStart","flattenStyle","paddingLeft","paddingStart","paddingHorizontal","getFlattenedPaddingEnd","paddingRight","paddingEnd","convertPaddingPercentToSize","value","layout","endsWith","parseFloat","Number","isFinite","getComputedTabWidth","index","routes","scrollEnabled","tabWidths","flattenedWidth","flattenedPaddingStart","flattenedPaddingEnd","gap","key","gapTotalWidth","length","paddingTotalWidth","getMaxScrollDistance","tabBarWidth","layoutWidth","getTranslateX","scrollAmount","maxScrollDistance","direction","multiply","add","getTabBarWidth","navigationState","flattenedTabWidth","paddingsWidth","Math","max","reduce","acc","_","i","normalizeScrollValue","maxDistance","scrollValue","min","getScrollAmount","paddingInitial","centerDistance","Array","from","total","tabWidth","getLabelTextDefault","route","title","getAccessibleDefault","accessible","getAccessibilityLabelDefault","accessibilityLabel","undefined","renderIndicatorDefault","props","getTestIdDefault","testID","MEASURE_PER_BATCH","TabBar","renderIndicator","jumpTo","position","bounces","contentContainerStyle","indicatorContainerStyle","indicatorStyle","onTabLongPress","onTabPress","pressColor","pressOpacity","getConstants","isRTL","renderTabBarItem","propLayout","android_ripple","options","animatedStyles","setLayout","useState","height","setTabWidths","flatListRef","useRef","isFirst","measuredTabWidths","isWidthDynamic","scrollOffset","hasMeasuredTabWidths","Boolean","slice","every","r","useEffect","current","scrollToOffset","offset","animated","handleLayout","e","nativeEvent","separatorsWidth","translateX","useMemo","renderItem","useCallback","item","labelText","rest","onLayout","onPress","event","defaultPrevented","preventDefault","onLongPress","defaultTabWidth","children","keyExtractor","contentContainerStyleMemoized","styles","tabContent","handleScroll","contentOffset","x","handleViewableItemsChanged","changed","isViewable","tabBar","pointerEvents","indicatorContainer","transform","start","end","getTabWidth","scroll","FlatList","data","horizontal","role","keyboardShouldPersistTaps","initialNumToRender","onViewableItemsChanged","alwaysBounceHorizontal","scrollsToTop","showsHorizontalScrollIndicator","showsVerticalScrollIndicator","automaticallyAdjustContentInsets","overScrollMode","scrollEventThrottle","onScroll","ref","create","overflow","select","default","web","zIndex","backgroundColor","elevation","shadowColor","shadowOpacity","shadowRadius","hairlineWidth","shadowOffset","boxShadow","flexGrow","flexDirection","flexWrap","top","bottom"],"sourceRoot":"../../src","sources":["TabBar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ import * as React from 'react';
4
+ import { Animated, Easing, Platform, StyleSheet } from 'react-native';
5
+ import { useAnimatedValue } from "./useAnimatedValue.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const useNativeDriver = Platform.OS !== 'web';
8
+ const getTranslateX = (position, routes, getTabWidth, direction, gap, width) => {
9
+ const inputRange = routes.map((_, i) => i);
10
+
11
+ // every index contains widths at all previous indices
12
+ const outputRange = routes.reduce((acc, _, i) => {
13
+ if (typeof width === 'number') {
14
+ if (i === 0) return [getTabWidth(i) / 2 - width / 2];
15
+ let sumTabWidth = 0;
16
+ for (let j = 0; j < i; j++) {
17
+ sumTabWidth += getTabWidth(j);
18
+ }
19
+ return [...acc, sumTabWidth + getTabWidth(i) / 2 + (gap ? gap * i : 0) - width / 2];
20
+ } else {
21
+ if (i === 0) return [0];
22
+ return [...acc, acc[i - 1] + getTabWidth(i - 1) + (gap ?? 0)];
23
+ }
24
+ }, []);
25
+ const translateX = position.interpolate({
26
+ inputRange,
27
+ outputRange,
28
+ extrapolate: 'clamp'
29
+ });
30
+ return Animated.multiply(translateX, direction === 'rtl' ? -1 : 1);
31
+ };
32
+ export function TabBarIndicator({
33
+ getTabWidth,
34
+ layout,
35
+ navigationState,
36
+ position,
37
+ width,
38
+ direction,
39
+ gap,
40
+ style,
41
+ children
42
+ }) {
43
+ const isIndicatorShown = React.useRef(false);
44
+ const isWidthDynamic = width === 'auto';
45
+ const opacity = useAnimatedValue(isWidthDynamic ? 0 : 1);
46
+ const indicatorVisible = isWidthDynamic ? layout.width && navigationState.routes.slice(0, navigationState.index).every((_, r) => getTabWidth(r)) : true;
47
+ React.useEffect(() => {
48
+ const fadeInIndicator = () => {
49
+ if (!isIndicatorShown.current && isWidthDynamic &&
50
+ // We should fade-in the indicator when we have widths for all the tab items
51
+ indicatorVisible) {
52
+ isIndicatorShown.current = true;
53
+ Animated.timing(opacity, {
54
+ toValue: 1,
55
+ duration: 150,
56
+ easing: Easing.in(Easing.linear),
57
+ useNativeDriver
58
+ }).start();
59
+ }
60
+ };
61
+ fadeInIndicator();
62
+ return () => opacity.stopAnimation();
63
+ }, [indicatorVisible, isWidthDynamic, opacity]);
64
+ const {
65
+ routes
66
+ } = navigationState;
67
+ const transform = [];
68
+ if (layout.width) {
69
+ const translateX = routes.length > 1 ? getTranslateX(position, routes, getTabWidth, direction, gap, width) : 0;
70
+ transform.push({
71
+ translateX
72
+ });
73
+ }
74
+ if (width === 'auto') {
75
+ const inputRange = routes.map((_, i) => i);
76
+ const outputRange = inputRange.map(getTabWidth);
77
+ transform.push({
78
+ scaleX: routes.length > 1 ? position.interpolate({
79
+ inputRange,
80
+ outputRange,
81
+ extrapolate: 'clamp'
82
+ }) : outputRange[0]
83
+ }, {
84
+ translateX: direction === 'rtl' ? -0.5 : 0.5
85
+ });
86
+ }
87
+ const styleList = [];
88
+
89
+ // scaleX doesn't work properly on chrome and opera for linux and android
90
+ if (Platform.OS === 'web' && width === 'auto') {
91
+ styleList.push({
92
+ width: transform[1].scaleX
93
+ }, {
94
+ left: transform[0].translateX
95
+ });
96
+ } else {
97
+ styleList.push({
98
+ width: width === 'auto' ? 1 : width
99
+ }, {
100
+ start: `${100 / routes.length * navigationState.index}%`
101
+ }, {
102
+ transform
103
+ });
104
+ }
105
+ return /*#__PURE__*/_jsx(Animated.View, {
106
+ style: [styles.indicator, styleList, width === 'auto' ? {
107
+ opacity: opacity
108
+ } : null, style],
109
+ children: children
110
+ });
111
+ }
112
+ const styles = StyleSheet.create({
113
+ indicator: {
114
+ backgroundColor: '#ffeb3b',
115
+ position: 'absolute',
116
+ start: 0,
117
+ bottom: 0,
118
+ end: 0,
119
+ height: 2
120
+ }
121
+ });
122
+ //# sourceMappingURL=TabBarIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Animated","Easing","Platform","StyleSheet","useAnimatedValue","jsx","_jsx","useNativeDriver","OS","getTranslateX","position","routes","getTabWidth","direction","gap","width","inputRange","map","_","i","outputRange","reduce","acc","sumTabWidth","j","translateX","interpolate","extrapolate","multiply","TabBarIndicator","layout","navigationState","style","children","isIndicatorShown","useRef","isWidthDynamic","opacity","indicatorVisible","slice","index","every","r","useEffect","fadeInIndicator","current","timing","toValue","duration","easing","in","linear","start","stopAnimation","transform","length","push","scaleX","styleList","left","View","styles","indicator","create","backgroundColor","bottom","end","height"],"sourceRoot":"../../src","sources":["TabBarIndicator.tsx"],"mappings":"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","ignoreList":[]}