react-native-tab-view 5.0.0-alpha.7 → 5.0.0-alpha.9

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 (82) hide show
  1. package/lib/module/DefaultAdapter.android.js +4 -0
  2. package/lib/module/DefaultAdapter.android.js.map +1 -0
  3. package/lib/module/DefaultAdapter.ios.js +4 -0
  4. package/lib/module/DefaultAdapter.ios.js.map +1 -0
  5. package/lib/module/DefaultAdapter.js +5 -0
  6. package/lib/module/DefaultAdapter.js.map +1 -0
  7. package/lib/module/PagerViewAdapter.native.js +29 -13
  8. package/lib/module/PagerViewAdapter.native.js.map +1 -1
  9. package/lib/module/PlatformPressable.js +1 -1
  10. package/lib/module/ScrollViewAdapter.js +46 -18
  11. package/lib/module/ScrollViewAdapter.js.map +1 -1
  12. package/lib/module/TabBar.js +260 -148
  13. package/lib/module/TabBar.js.map +1 -1
  14. package/lib/module/TabBarIndicator.js +282 -168
  15. package/lib/module/TabBarIndicator.js.map +1 -1
  16. package/lib/module/TabBarItem.js +94 -44
  17. package/lib/module/TabBarItem.js.map +1 -1
  18. package/lib/module/TabBarItemLabel.js +3 -2
  19. package/lib/module/TabBarItemLabel.js.map +1 -1
  20. package/lib/module/TabView.js +2 -2
  21. package/lib/module/TabView.js.map +1 -1
  22. package/lib/module/constants.js +10 -0
  23. package/lib/module/constants.js.map +1 -0
  24. package/lib/module/index.js +1 -0
  25. package/lib/module/index.js.map +1 -1
  26. package/lib/module/useLayoutWidths.js +46 -0
  27. package/lib/module/useLayoutWidths.js.map +1 -0
  28. package/lib/typescript/src/DefaultAdapter.android.d.ts +2 -0
  29. package/lib/typescript/src/DefaultAdapter.android.d.ts.map +1 -0
  30. package/lib/typescript/src/DefaultAdapter.d.ts +6 -0
  31. package/lib/typescript/src/DefaultAdapter.d.ts.map +1 -0
  32. package/lib/typescript/src/DefaultAdapter.ios.d.ts +2 -0
  33. package/lib/typescript/src/DefaultAdapter.ios.d.ts.map +1 -0
  34. package/lib/typescript/src/PagerViewAdapter.native.d.ts +1 -1
  35. package/lib/typescript/src/PagerViewAdapter.native.d.ts.map +1 -1
  36. package/lib/typescript/src/ScrollViewAdapter.d.ts +1 -2
  37. package/lib/typescript/src/ScrollViewAdapter.d.ts.map +1 -1
  38. package/lib/typescript/src/TabBar.d.ts +2 -1
  39. package/lib/typescript/src/TabBar.d.ts.map +1 -1
  40. package/lib/typescript/src/TabBarIndicator.d.ts +4 -7
  41. package/lib/typescript/src/TabBarIndicator.d.ts.map +1 -1
  42. package/lib/typescript/src/TabBarItem.d.ts +10 -4
  43. package/lib/typescript/src/TabBarItem.d.ts.map +1 -1
  44. package/lib/typescript/src/TabBarItemLabel.d.ts +4 -3
  45. package/lib/typescript/src/TabBarItemLabel.d.ts.map +1 -1
  46. package/lib/typescript/src/TabView.d.ts.map +1 -1
  47. package/lib/typescript/src/constants.d.ts +8 -0
  48. package/lib/typescript/src/constants.d.ts.map +1 -0
  49. package/lib/typescript/src/index.d.ts +2 -1
  50. package/lib/typescript/src/index.d.ts.map +1 -1
  51. package/lib/typescript/src/useLayoutWidths.d.ts +2 -0
  52. package/lib/typescript/src/useLayoutWidths.d.ts.map +1 -0
  53. package/package.json +2 -2
  54. package/src/DefaultAdapter.android.tsx +1 -0
  55. package/src/DefaultAdapter.ios.tsx +1 -0
  56. package/src/DefaultAdapter.tsx +13 -0
  57. package/src/PagerViewAdapter.native.tsx +36 -18
  58. package/src/PlatformPressable.tsx +1 -1
  59. package/src/ScrollViewAdapter.tsx +81 -21
  60. package/src/TabBar.tsx +386 -181
  61. package/src/TabBarIndicator.tsx +323 -248
  62. package/src/TabBarItem.tsx +102 -41
  63. package/src/TabBarItemLabel.tsx +5 -4
  64. package/src/TabView.tsx +2 -2
  65. package/src/constants.tsx +8 -0
  66. package/src/index.tsx +5 -1
  67. package/src/useLayoutWidths.tsx +51 -0
  68. package/lib/module/Pager.android.js +0 -4
  69. package/lib/module/Pager.android.js.map +0 -1
  70. package/lib/module/Pager.ios.js +0 -4
  71. package/lib/module/Pager.ios.js.map +0 -1
  72. package/lib/module/Pager.js +0 -4
  73. package/lib/module/Pager.js.map +0 -1
  74. package/lib/typescript/src/Pager.android.d.ts +0 -2
  75. package/lib/typescript/src/Pager.android.d.ts.map +0 -1
  76. package/lib/typescript/src/Pager.d.ts +0 -2
  77. package/lib/typescript/src/Pager.d.ts.map +0 -1
  78. package/lib/typescript/src/Pager.ios.d.ts +0 -2
  79. package/lib/typescript/src/Pager.ios.d.ts.map +0 -1
  80. package/src/Pager.android.tsx +0 -1
  81. package/src/Pager.ios.tsx +0 -1
  82. package/src/Pager.tsx +0 -1
@@ -2,197 +2,311 @@
2
2
 
3
3
  import * as React from 'react';
4
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 calculateSize = (value, referenceWidth) => {
9
- if (typeof value === 'number') {
10
- return value;
11
- }
12
- if (typeof value === 'string' && value.endsWith('%')) {
13
- const parsed = parseFloat(value);
14
- if (Number.isFinite(parsed)) {
15
- return referenceWidth * (parsed / 100);
16
- }
17
- }
18
- return undefined;
19
- };
20
- const getIndicatorWidthWithMargins = (width, style, direction) => {
21
- const marginHorizontal = style?.marginHorizontal ?? style?.margin;
22
- const leftMargin = (direction === 'ltr' ? style?.marginStart : style?.marginEnd) ?? style?.marginLeft ?? marginHorizontal;
23
- const rightMargin = (direction === 'rtl' ? style?.marginStart : style?.marginEnd) ?? style?.marginRight ?? marginHorizontal;
24
- return Math.max(0, width - (calculateSize(leftMargin, width) ?? 0) - (calculateSize(rightMargin, width) ?? 0));
25
- };
26
- const getIndicatorWidth = (tabWidth, width, style, direction) => {
27
- const customWidth = calculateSize(style?.width, tabWidth);
28
- if (customWidth !== undefined) {
29
- return customWidth;
30
- }
31
- if (typeof width === 'number') {
32
- return getIndicatorWidthWithMargins(width, style, direction);
33
- }
34
- return width;
35
- };
36
- const getTranslateX = (position, routes, getTabWidth, direction, gap, getWidth) => {
37
- const inputRange = routes.map((_, i) => i);
38
- const outputRange = routes.map((_, i) => {
39
- let sumTabWidth = 0;
40
- for (let j = 0; j < i; j++) {
41
- sumTabWidth += getTabWidth(j);
42
- }
43
- const indicatorWidth = getWidth?.(i);
44
- const tabOffset = sumTabWidth + (gap ? gap * i : 0);
45
- if (indicatorWidth === undefined) {
46
- return tabOffset;
47
- }
48
- return tabOffset + getTabWidth(i) / 2 - indicatorWidth / 2;
49
- });
50
- const translateX = position.interpolate({
51
- inputRange,
52
- outputRange,
53
- extrapolate: 'clamp'
54
- });
55
- return Animated.multiply(translateX, direction === 'rtl' ? -1 : 1);
56
- };
5
+ import { TAB_BAR_PRIMARY_ACTIVE_COLOR } from "./constants.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const CAP_FILL_OVERLAP = 1;
8
+ const EASING_SAMPLE_COUNT = 16;
9
+ const samplePoints = easing => Array.from({
10
+ length: EASING_SAMPLE_COUNT + 1
11
+ }, (_, i) => easing(i / EASING_SAMPLE_COUNT));
12
+ const TRAILING_EDGE_SAMPLES = samplePoints(Easing.bezier(0.3, 0, 0.8, 0.15));
13
+ const LEADING_EDGE_SAMPLES = samplePoints(Easing.bezier(0.05, 0.7, 0.1, 1));
57
14
  export function TabBarIndicator({
58
- getTabWidth,
15
+ variant = 'primary',
16
+ widths,
17
+ offsets,
59
18
  navigationState,
60
19
  position,
61
- width,
62
20
  direction,
63
- gap,
64
- style,
65
- children
21
+ style
66
22
  }) {
67
- const isIndicatorShown = React.useRef(false);
68
- const isWidthDynamic = width === 'auto';
69
- const flattenedStyle = StyleSheet.flatten(style);
70
- const hasCustomIndicatorWidth = typeof flattenedStyle?.width === 'number' || typeof flattenedStyle?.width === 'string' && flattenedStyle?.width.endsWith('%');
71
- const constantIndicatorWidth = typeof flattenedStyle?.width === 'number' ? flattenedStyle.width : undefined;
72
- const isCentered = hasCustomIndicatorWidth && (flattenedStyle?.margin === 'auto' || flattenedStyle?.marginHorizontal === 'auto');
73
-
74
- // If indicator has a custom width, we need to adjust calculations to account for it
75
- // It should be centered relative to the tab if the margin is set to auto
76
- const getCenteredIndicatorWidth = tabWidth => {
77
- if (isCentered) {
78
- return calculateSize(flattenedStyle?.width, tabWidth);
79
- }
80
- if (typeof width === 'number') {
81
- return width;
82
- }
83
- return undefined;
84
- };
85
- const opacity = useAnimatedValue(isWidthDynamic ? 0 : 1);
86
-
87
- // We should fade-in the indicator when we have widths for all the tab items
88
- const indicatorVisible = isWidthDynamic ? navigationState.routes.slice(0, navigationState.index + 1).every((_, r) => getTabWidth(r)) : true;
89
- React.useEffect(() => {
90
- let animation;
91
- const fadeInIndicator = () => {
92
- if (!isIndicatorShown.current && isWidthDynamic && indicatorVisible) {
93
- animation = Animated.timing(opacity, {
94
- toValue: 1,
95
- duration: 150,
96
- easing: Easing.in(Easing.linear),
97
- useNativeDriver
98
- });
99
- animation.start(({
100
- finished
101
- }) => {
102
- if (finished) {
103
- isIndicatorShown.current = true;
104
- }
105
- });
106
- }
107
- };
108
- fadeInIndicator();
109
- return () => animation?.stop();
110
- }, [indicatorVisible, isWidthDynamic, opacity]);
23
+ const isRTL = direction === 'rtl';
24
+ const flattenedStyle = StyleSheet.flatten([styles.defaults, style]) || {};
25
+ const {
26
+ backgroundColor,
27
+ borderRadius,
28
+ borderBottomEndRadius = borderRadius,
29
+ borderBottomLeftRadius = borderRadius,
30
+ borderBottomRightRadius = borderRadius,
31
+ borderBottomStartRadius = borderRadius,
32
+ borderTopEndRadius = borderRadius,
33
+ borderTopLeftRadius = borderRadius,
34
+ borderTopRightRadius = borderRadius,
35
+ borderTopStartRadius = borderRadius,
36
+ height,
37
+ start: indicatorStart,
38
+ end: indicatorEnd,
39
+ left: indicatorLeft,
40
+ right: indicatorRight,
41
+ ...restStyle
42
+ } = flattenedStyle;
43
+ delete restStyle.width;
44
+ delete restStyle.margin;
45
+ delete restStyle.marginHorizontal;
46
+ delete restStyle.marginStart;
47
+ delete restStyle.marginEnd;
48
+ delete restStyle.marginLeft;
49
+ delete restStyle.marginRight;
50
+ const containerStart = indicatorStart ?? (isRTL ? indicatorRight : indicatorLeft);
51
+ const containerEnd = indicatorEnd ?? (isRTL ? indicatorLeft : indicatorRight);
52
+ if (borderBottomEndRadius != null && typeof borderBottomEndRadius !== 'number' || borderBottomStartRadius != null && typeof borderBottomStartRadius !== 'number' || borderBottomLeftRadius != null && typeof borderBottomLeftRadius !== 'number' || borderBottomRightRadius != null && typeof borderBottomRightRadius !== 'number' || borderTopEndRadius != null && typeof borderTopEndRadius !== 'number' || borderTopStartRadius != null && typeof borderTopStartRadius !== 'number' || borderTopLeftRadius != null && typeof borderTopLeftRadius !== 'number' || borderTopRightRadius != null && typeof borderTopRightRadius !== 'number') {
53
+ throw new Error('Only numeric border radii are supported in TabBarIndicator.');
54
+ }
55
+ const leftRadiusWidth = Math.max((isRTL ? borderTopEndRadius : borderTopStartRadius) ?? 0, (isRTL ? borderBottomEndRadius : borderBottomStartRadius) ?? 0, borderTopLeftRadius ?? 0, borderBottomLeftRadius ?? 0);
56
+ const rightRadiusWidth = Math.max((isRTL ? borderTopStartRadius : borderTopEndRadius) ?? 0, (isRTL ? borderBottomStartRadius : borderBottomEndRadius) ?? 0, borderTopRightRadius ?? 0, borderBottomRightRadius ?? 0);
57
+ const leftPieceWidth = leftRadiusWidth + CAP_FILL_OVERLAP;
58
+ const rightPieceWidth = rightRadiusWidth + CAP_FILL_OVERLAP;
111
59
  const {
112
60
  routes
113
61
  } = navigationState;
114
- const transform = [];
115
- const translateX = routes.length > 1 ? getTranslateX(position, routes, getTabWidth, direction, gap, index => getCenteredIndicatorWidth(getTabWidth(index))) : 0;
116
- transform.push({
117
- translateX
118
- });
119
- if (width === 'auto' && constantIndicatorWidth == null) {
120
- const inputRange = routes.map((_, i) => i);
121
- const outputRange = inputRange.map(i => {
122
- const tabW = getTabWidth(i);
123
- return calculateSize(flattenedStyle?.width, tabW) ?? getIndicatorWidthWithMargins(tabW, flattenedStyle, direction);
124
- });
125
- transform.push({
126
- scaleX: routes.length > 1 ? position.interpolate({
62
+ const easedInterpolate = (values, samples) => {
63
+ if (routes.length <= 1) {
64
+ return values[0] ?? 0;
65
+ }
66
+
67
+ // On multi-tab jumps, slide directly from source to destination and
68
+ // Settle one tab before the pager finishes scrolling
69
+ // This makes the animation feel snappier
70
+ // Especially on Android where the pager animation is slow
71
+ if (jumpRange) {
72
+ const inputRange = jumpRange.from > jumpRange.to ? [jumpRange.to, jumpRange.to + 1, jumpRange.from] : [jumpRange.from, jumpRange.to - 1, jumpRange.to];
73
+ const outputRange = inputRange.map(i => i === jumpRange.from ? values[jumpRange.from] : values[jumpRange.to]);
74
+ return position.interpolate({
127
75
  inputRange,
128
76
  outputRange,
129
77
  extrapolate: 'clamp'
130
- }) : outputRange[0]
131
- }, {
132
- translateX: direction === 'rtl' ? -0.5 : 0.5
78
+ });
79
+ }
80
+ if (samples == null) {
81
+ return position.interpolate({
82
+ inputRange: values.map((_, i) => i),
83
+ outputRange: values,
84
+ extrapolate: 'clamp'
85
+ });
86
+ }
87
+ const inputRange = [];
88
+ const outputRange = [];
89
+ for (let i = 0; i < values.length - 1; i++) {
90
+ const start = values[i];
91
+ const end = values[i + 1];
92
+ for (let j = 0; j < samples.length - 1; j++) {
93
+ inputRange.push(i + j / EASING_SAMPLE_COUNT);
94
+ outputRange.push(start + (end - start) * samples[j]);
95
+ }
96
+ }
97
+ inputRange.push(values.length - 1);
98
+ outputRange.push(values[values.length - 1]);
99
+ return position.interpolate({
100
+ inputRange,
101
+ outputRange,
102
+ extrapolate: 'clamp'
133
103
  });
104
+ };
105
+ let containerLayout;
106
+ let leftFillStyle;
107
+ let centerFillStyle;
108
+ let rightCapStyle;
109
+ let rightFillStyle;
110
+ const rightEdges = widths.map((w, i) => offsets[i] + w);
111
+ const [lastIndex, setLastIndex] = React.useState(navigationState.index);
112
+ const [jumpRange, setJumpRange] = React.useState(null);
113
+ if (navigationState.index !== lastIndex) {
114
+ setLastIndex(navigationState.index);
115
+ if (Math.abs(navigationState.index - lastIndex) > 1) {
116
+ setJumpRange({
117
+ from: lastIndex,
118
+ to: navigationState.index
119
+ });
120
+ }
134
121
  }
135
- const styleList = [];
122
+ React.useEffect(() => {
123
+ if (jumpRange == null) {
124
+ return;
125
+ }
126
+ const timer = setTimeout(() => {
127
+ setJumpRange(null);
128
+ }, 500);
129
+ return () => clearTimeout(timer);
130
+ }, [jumpRange]);
136
131
 
137
- // transform doesn't work properly on chrome and opera for linux and android
138
- // so we need to use width and left/right instead of scaleX and translateX
139
- // https://github.com/react-navigation/react-navigation/pull/11440
140
- if (Platform.OS === 'web' && width === 'auto' && constantIndicatorWidth == null) {
141
- const start = flattenedStyle?.start;
142
- const translate = direction === 'rtl' ? Animated.multiply(translateX, -1) : translateX;
143
- const offset = typeof start === 'number' ? Animated.add(translate, start) : translate;
144
- styleList.push({
145
- width: transform[1].scaleX
146
- }, direction === 'rtl' ? {
147
- right: offset
148
- } : {
149
- left: offset
150
- });
151
- } else {
152
- styleList.push({
153
- width: width === 'auto' ?
154
- // if the indicator has a constant width, use it as is
155
- // we don't need to scale it to match tab width
156
- constantIndicatorWidth ?? 1 : getIndicatorWidth(getTabWidth(navigationState.index), width, flattenedStyle, direction)
157
- }, {
158
- start: `${100 / routes.length * navigationState.index}%`
159
- }, {
160
- transform
161
- });
162
- }
163
- let finalStyle;
164
- if (hasCustomIndicatorWidth && style != null) {
165
- const rest = {
166
- ...flattenedStyle
132
+ // Primary tabs use stretch animation
133
+ // Secondary tabs and multi-tab jumps slide linearly
134
+ const shouldStretch = variant === 'primary' && jumpRange == null;
135
+ const trailingSamples = shouldStretch ? TRAILING_EDGE_SAMPLES : null;
136
+ const leadingSamples = shouldStretch ? LEADING_EDGE_SAMPLES : null;
137
+ const offset = easedInterpolate(offsets, trailingSamples);
138
+ const rightEdge = easedInterpolate(rightEdges, leadingSamples);
139
+ const containerWidth = Animated.subtract(rightEdge, offset);
140
+ const sideFillWidth = Animated.divide(Animated.subtract(containerWidth, leftPieceWidth + rightPieceWidth), 2);
141
+ const sideFillScale = Animated.add(sideFillWidth, CAP_FILL_OVERLAP);
142
+ if (Platform.OS === 'web') {
143
+ const centerFillStart = Animated.add(sideFillWidth, leftPieceWidth);
144
+ const positioned = typeof containerStart === 'number' ? Animated.add(offset, containerStart) : offset;
145
+
146
+ // Web can't reliably scale via transforms
147
+ // So the fills use animated `width` instead of `scaleX`
148
+ // See https://github.com/react-navigation/react-navigation/pull/11440
149
+ containerLayout = {
150
+ width: containerWidth,
151
+ ...(direction === 'rtl' ? {
152
+ right: positioned
153
+ } : {
154
+ left: positioned
155
+ })
156
+ };
157
+ leftFillStyle = {
158
+ position: 'absolute',
159
+ start: leftRadiusWidth,
160
+ width: sideFillScale
161
+ };
162
+ centerFillStyle = {
163
+ position: 'absolute',
164
+ start: centerFillStart,
165
+ width: sideFillWidth
166
+ };
167
+ rightCapStyle = {
168
+ position: 'absolute',
169
+ end: 0
170
+ };
171
+ rightFillStyle = {
172
+ position: 'absolute',
173
+ end: rightRadiusWidth,
174
+ width: sideFillScale
167
175
  };
168
- delete rest.width;
169
- if (isCentered) {
170
- if (rest.margin === 'auto') {
171
- delete rest.margin;
172
- }
173
- if (rest.marginHorizontal === 'auto') {
174
- delete rest.marginHorizontal;
175
- }
176
- }
177
- finalStyle = rest;
178
176
  } else {
179
- finalStyle = style;
177
+ const directionSign = direction === 'rtl' ? -1 : 1;
178
+ const translateX = Animated.multiply(offset, directionSign);
179
+ const centerFillTranslateX = Animated.multiply(Animated.divide(sideFillWidth, 2), directionSign);
180
+ const rightCapTranslateX = Animated.multiply(Animated.subtract(containerWidth, rightPieceWidth), directionSign);
181
+ containerLayout = {
182
+ start: containerStart ?? 0,
183
+ end: containerEnd ?? 0,
184
+ transform: [{
185
+ translateX
186
+ }]
187
+ };
188
+ leftFillStyle = {
189
+ position: 'absolute',
190
+ start: leftRadiusWidth,
191
+ width: 1,
192
+ transformOrigin: isRTL ? 'right center' : 'left center',
193
+ transform: [{
194
+ scaleX: sideFillScale
195
+ }]
196
+ };
197
+ centerFillStyle = {
198
+ position: 'absolute',
199
+ start: leftPieceWidth,
200
+ width: 1,
201
+ transformOrigin: isRTL ? 'right center' : 'left center',
202
+ transform: [{
203
+ translateX: centerFillTranslateX
204
+ }, {
205
+ scaleX: sideFillWidth
206
+ }]
207
+ };
208
+ rightCapStyle = {
209
+ position: 'absolute',
210
+ start: 0,
211
+ transform: [{
212
+ translateX: rightCapTranslateX
213
+ }]
214
+ };
215
+ rightFillStyle = {
216
+ position: 'absolute',
217
+ end: rightRadiusWidth,
218
+ width: 1,
219
+ transformOrigin: isRTL ? 'left center' : 'right center',
220
+ transform: [{
221
+ scaleX: sideFillScale
222
+ }]
223
+ };
180
224
  }
181
- return /*#__PURE__*/_jsx(Animated.View, {
182
- style: [styles.indicator, styleList, width === 'auto' ? {
183
- opacity: opacity
184
- } : null, finalStyle],
185
- children: children
225
+
226
+ // The tab widths may be measured asynchronously
227
+ // So we show the indicator when we have widths till focused tab
228
+ const indicatorVisible = widths.slice(0, navigationState.index + 1).every((w, i) => w > 0 && offsets[i] >= 0);
229
+
230
+ /**
231
+ * We render the indicator in multiple pieces
232
+ * So we can preserve border radii when the indicator is scaled with transform
233
+ * We use 3 pieces for the inner fill as the math isn't correct on Android
234
+ * So using 1 or 2 pieces result in misalignment or gaps.
235
+ * Using 3 pieces lets us cover most space from all directions.
236
+ *
237
+ * [left fixed cap [left scaled fill >>>]]
238
+ * [center scaled fill]
239
+ * [[<<< right scaled fill] right fixed cap]
240
+ */
241
+ return /*#__PURE__*/_jsxs(Animated.View, {
242
+ style: [styles.indicator, {
243
+ height,
244
+ opacity: indicatorVisible ? 1 : 0
245
+ }, containerLayout, restStyle],
246
+ children: [/*#__PURE__*/_jsx(Animated.View, {
247
+ style: [{
248
+ ...(isRTL ? {
249
+ borderTopEndRadius,
250
+ borderBottomEndRadius
251
+ } : {
252
+ borderTopStartRadius,
253
+ borderBottomStartRadius
254
+ }),
255
+ borderTopLeftRadius,
256
+ borderBottomLeftRadius,
257
+ height,
258
+ width: leftPieceWidth,
259
+ backgroundColor
260
+ }, styles.cap],
261
+ children: /*#__PURE__*/_jsx(Animated.View, {
262
+ style: [{
263
+ height,
264
+ backgroundColor
265
+ }, leftFillStyle]
266
+ })
267
+ }), /*#__PURE__*/_jsx(Animated.View, {
268
+ style: [{
269
+ height,
270
+ backgroundColor
271
+ }, centerFillStyle]
272
+ }), /*#__PURE__*/_jsx(Animated.View, {
273
+ style: [{
274
+ ...(isRTL ? {
275
+ borderTopStartRadius,
276
+ borderBottomStartRadius
277
+ } : {
278
+ borderTopEndRadius,
279
+ borderBottomEndRadius
280
+ }),
281
+ borderTopRightRadius,
282
+ borderBottomRightRadius,
283
+ height,
284
+ width: rightPieceWidth,
285
+ backgroundColor
286
+ }, rightCapStyle],
287
+ children: /*#__PURE__*/_jsx(Animated.View, {
288
+ style: [{
289
+ height,
290
+ backgroundColor
291
+ }, rightFillStyle]
292
+ })
293
+ })]
186
294
  });
187
295
  }
188
296
  const styles = StyleSheet.create({
189
297
  indicator: {
190
- backgroundColor: 'rgb(0, 122, 255)',
298
+ flexDirection: 'row',
299
+ justifyContent: 'center',
191
300
  position: 'absolute',
192
- start: 0,
193
- bottom: 0,
194
- end: 0,
301
+ bottom: 0
302
+ },
303
+ defaults: {
304
+ backgroundColor: TAB_BAR_PRIMARY_ACTIVE_COLOR,
195
305
  height: 2
306
+ },
307
+ cap: {
308
+ position: 'absolute',
309
+ start: 0
196
310
  }
197
311
  });
198
312
  //# sourceMappingURL=TabBarIndicator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Animated","Easing","Platform","StyleSheet","useAnimatedValue","jsx","_jsx","useNativeDriver","OS","calculateSize","value","referenceWidth","endsWith","parsed","parseFloat","Number","isFinite","undefined","getIndicatorWidthWithMargins","width","style","direction","marginHorizontal","margin","leftMargin","marginStart","marginEnd","marginLeft","rightMargin","marginRight","Math","max","getIndicatorWidth","tabWidth","customWidth","getTranslateX","position","routes","getTabWidth","gap","getWidth","inputRange","map","_","i","outputRange","sumTabWidth","j","indicatorWidth","tabOffset","translateX","interpolate","extrapolate","multiply","TabBarIndicator","navigationState","children","isIndicatorShown","useRef","isWidthDynamic","flattenedStyle","flatten","hasCustomIndicatorWidth","constantIndicatorWidth","isCentered","getCenteredIndicatorWidth","opacity","indicatorVisible","slice","index","every","r","useEffect","animation","fadeInIndicator","current","timing","toValue","duration","easing","in","linear","start","finished","stop","transform","length","push","tabW","scaleX","styleList","translate","offset","add","right","left","finalStyle","rest","View","styles","indicator","create","backgroundColor","bottom","end","height"],"sourceRoot":"../../src","sources":["TabBarIndicator.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Animated","Easing","Platform","StyleSheet","TAB_BAR_PRIMARY_ACTIVE_COLOR","jsx","_jsx","jsxs","_jsxs","CAP_FILL_OVERLAP","EASING_SAMPLE_COUNT","samplePoints","easing","Array","from","length","_","i","TRAILING_EDGE_SAMPLES","bezier","LEADING_EDGE_SAMPLES","TabBarIndicator","variant","widths","offsets","navigationState","position","direction","style","isRTL","flattenedStyle","flatten","styles","defaults","backgroundColor","borderRadius","borderBottomEndRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStartRadius","borderTopEndRadius","borderTopLeftRadius","borderTopRightRadius","borderTopStartRadius","height","start","indicatorStart","end","indicatorEnd","left","indicatorLeft","right","indicatorRight","restStyle","width","margin","marginHorizontal","marginStart","marginEnd","marginLeft","marginRight","containerStart","containerEnd","Error","leftRadiusWidth","Math","max","rightRadiusWidth","leftPieceWidth","rightPieceWidth","routes","easedInterpolate","values","samples","jumpRange","inputRange","to","outputRange","map","interpolate","extrapolate","j","push","containerLayout","leftFillStyle","centerFillStyle","rightCapStyle","rightFillStyle","rightEdges","w","lastIndex","setLastIndex","useState","index","setJumpRange","abs","useEffect","timer","setTimeout","clearTimeout","shouldStretch","trailingSamples","leadingSamples","offset","rightEdge","containerWidth","subtract","sideFillWidth","divide","sideFillScale","add","OS","centerFillStart","positioned","directionSign","translateX","multiply","centerFillTranslateX","rightCapTranslateX","transform","transformOrigin","scaleX","indicatorVisible","slice","every","View","indicator","opacity","children","cap","create","flexDirection","justifyContent","bottom"],"sourceRoot":"../../src","sources":["TabBarIndicator.tsx"],"mappings":"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","ignoreList":[]}