@oxyhq/bloom 0.79.1 → 0.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/scroll/index.web.js +52 -18
- package/lib/commonjs/scroll/index.web.js.map +1 -1
- package/lib/commonjs/scroll/scrollable.web.js +9 -3
- package/lib/commonjs/scroll/scrollable.web.js.map +1 -1
- package/lib/commonjs/tabs/Tabs.js +263 -63
- package/lib/commonjs/tabs/Tabs.js.map +1 -1
- package/lib/commonjs/tabs/expo-router/RouterTabs.js +215 -0
- package/lib/commonjs/tabs/expo-router/RouterTabs.js.map +1 -0
- package/lib/commonjs/tabs/expo-router/index.js +13 -0
- package/lib/commonjs/tabs/expo-router/index.js.map +1 -0
- package/lib/module/scroll/index.web.js +52 -18
- package/lib/module/scroll/index.web.js.map +1 -1
- package/lib/module/scroll/scrollable.web.js +9 -3
- package/lib/module/scroll/scrollable.web.js.map +1 -1
- package/lib/module/tabs/Tabs.js +271 -65
- package/lib/module/tabs/Tabs.js.map +1 -1
- package/lib/module/tabs/expo-router/RouterTabs.js +210 -0
- package/lib/module/tabs/expo-router/RouterTabs.js.map +1 -0
- package/lib/module/tabs/expo-router/index.js +10 -0
- package/lib/module/tabs/expo-router/index.js.map +1 -0
- package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/scrollable.web.d.ts +18 -5
- package/lib/typescript/commonjs/scroll/scrollable.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/Tabs.d.ts +41 -1
- package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts +80 -0
- package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts.map +1 -0
- package/lib/typescript/commonjs/tabs/expo-router/index.d.ts +9 -0
- package/lib/typescript/commonjs/tabs/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/tabs/types.d.ts +48 -4
- package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
- package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/module/scroll/scrollable.web.d.ts +18 -5
- package/lib/typescript/module/scroll/scrollable.web.d.ts.map +1 -1
- package/lib/typescript/module/tabs/Tabs.d.ts +41 -1
- package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
- package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts +80 -0
- package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts.map +1 -0
- package/lib/typescript/module/tabs/expo-router/index.d.ts +9 -0
- package/lib/typescript/module/tabs/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/module/tabs/types.d.ts +48 -4
- package/lib/typescript/module/tabs/types.d.ts.map +1 -1
- package/package.json +15 -1
- package/src/__tests__/Tabs.test.tsx +187 -0
- package/src/__tests__/optional-peer-imports.test.ts +5 -0
- package/src/__tests__/scroll-web.test.tsx +255 -2
- package/src/scroll/index.web.tsx +55 -19
- package/src/scroll/scrollable.web.ts +30 -8
- package/src/tabs/Tabs.tsx +352 -77
- package/src/tabs/expo-router/RouterTabs.tsx +268 -0
- package/src/tabs/expo-router/index.ts +8 -0
- package/src/tabs/types.ts +48 -4
package/lib/module/tabs/Tabs.js
CHANGED
|
@@ -1,83 +1,233 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef } from 'react';
|
|
4
|
-
import { View, Text, Pressable,
|
|
3
|
+
import React, { createContext, forwardRef, memo, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
|
|
4
|
+
import { View, Text, Pressable,
|
|
5
|
+
// The press-scale comes from `usePressAnimation`, which owns an RN
|
|
6
|
+
// `Animated.Value`; a reanimated `Animated.View` cannot consume one. The two
|
|
7
|
+
// namespaces coexist on purpose: reanimated drives the SHARED underline (the
|
|
8
|
+
// part that has to animate from a shared value, including on web), RN
|
|
9
|
+
// Animated drives the per-trigger press scale it already drove.
|
|
10
|
+
Animated as RNAnimated, ScrollView } from 'react-native';
|
|
11
|
+
import Animated, { useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
|
|
5
12
|
import { useTheme } from "../theme/use-theme.js";
|
|
6
13
|
import { usePressAnimation } from "../hooks/usePressAnimation.js";
|
|
7
14
|
import { borderRadius, space } from "../styles/tokens.js";
|
|
8
15
|
import { bloomShadowStyle } from '../design-tokens/shadows';
|
|
9
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Underline travel. The same spring the floating `TabBar` highlight uses, so the
|
|
19
|
+
* two strips read as one motion language; stated here rather than imported
|
|
20
|
+
* because they are separate component families and a shared constant would tie
|
|
21
|
+
* their feel together permanently.
|
|
22
|
+
*/
|
|
23
|
+
const SLIDE_SPRING = {
|
|
24
|
+
duration: 420,
|
|
25
|
+
dampingRatio: 0.82
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/** Visibility, not travel — see {@link TabsContextValue.indicatorOpacity}. */
|
|
29
|
+
const HIGHLIGHT_FADE = {
|
|
30
|
+
duration: 160
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Fraction of the distance to the neighbour a drag must cover before releasing
|
|
35
|
+
* commits. Below it the underline springs home and nothing navigates.
|
|
36
|
+
*/
|
|
37
|
+
const COMMIT_THRESHOLD = 0.4;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* How far the underline may stray past the first/last tab, and how heavily that
|
|
41
|
+
* travel is damped. A rubber-band is reserved for the edge, where "there is
|
|
42
|
+
* nothing there" is the true message; used anywhere else it would promise a
|
|
43
|
+
* neighbour that is about to arrive, which is the opposite of what happens.
|
|
44
|
+
*/
|
|
45
|
+
const EDGE_RUBBER_BAND_DAMPING = 0.25;
|
|
46
|
+
const EDGE_RUBBER_BAND_MAX = 32;
|
|
47
|
+
|
|
48
|
+
/** Above this the count renders as "99+", so a large tally cannot stretch a tab. */
|
|
49
|
+
const MAX_DISPLAYED_COUNT = 99;
|
|
50
|
+
function formatCount(count) {
|
|
51
|
+
return count > MAX_DISPLAYED_COUNT ? `${MAX_DISPLAYED_COUNT}+` : String(count);
|
|
52
|
+
}
|
|
53
|
+
const TabsContext = /*#__PURE__*/createContext(null);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The imperative surface a horizontal drag gesture drives the underline through.
|
|
57
|
+
*
|
|
58
|
+
* It lives here rather than in the gesture's own code because every quantity the
|
|
59
|
+
* drag needs — where the neighbouring trigger is, how wide it is, whether there
|
|
60
|
+
* IS a neighbour — is measured layout the strip already holds and nothing
|
|
61
|
+
* outside it can see. The gesture supplies one number, the finger's delta; the
|
|
62
|
+
* strip decides what that means.
|
|
63
|
+
*
|
|
64
|
+
* Obtained via a `ref` on `Tabs`. The gesture belongs in the LAYOUT beside the
|
|
65
|
+
* strip, never inside a tab screen — a gesture mounted in a screen is destroyed
|
|
66
|
+
* by the navigation it commits, mid-release.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
function useTabsContext(component) {
|
|
70
|
+
const ctx = useContext(TabsContext);
|
|
71
|
+
if (!ctx) {
|
|
72
|
+
throw new Error(`${component} must be used within a Tabs`);
|
|
73
|
+
}
|
|
74
|
+
return ctx;
|
|
75
|
+
}
|
|
76
|
+
const TabsBarComponent = /*#__PURE__*/forwardRef(function TabsBar({
|
|
18
77
|
value,
|
|
19
78
|
onValueChange,
|
|
79
|
+
hasSelection = true,
|
|
20
80
|
variant = 'underline',
|
|
21
81
|
fullWidth = false,
|
|
22
82
|
children,
|
|
23
83
|
style,
|
|
24
84
|
testID
|
|
25
|
-
})
|
|
85
|
+
}, dragRef) {
|
|
26
86
|
const theme = useTheme();
|
|
27
87
|
const isUnderline = variant === 'underline';
|
|
28
88
|
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
89
|
+
// One shared underline that translates + resizes between triggers. Triggers
|
|
90
|
+
// report their measured {x, width}; whoever owns the selection drives these
|
|
91
|
+
// shared values IMPERATIVELY, and `useAnimatedStyle` below only ever READS
|
|
92
|
+
// them. That split is what makes the animation work on web, where returning
|
|
93
|
+
// an animation from inside a mapper silently does nothing.
|
|
94
|
+
const indicatorX = useSharedValue(0);
|
|
95
|
+
const indicatorWidth = useSharedValue(0);
|
|
96
|
+
// Starts hidden: a strip whose active trigger has not been measured yet must
|
|
97
|
+
// not flash an underline at the origin on its first frame.
|
|
98
|
+
const indicatorOpacity = useSharedValue(0);
|
|
99
|
+
// Live drag, added to the settled position/width rather than replacing them,
|
|
100
|
+
// so a release can fold the delta into the base without a visible jump.
|
|
101
|
+
const dragOffset = useSharedValue(0);
|
|
102
|
+
const dragWidthDelta = useSharedValue(0);
|
|
34
103
|
const triggerLayoutsRef = useRef({});
|
|
35
104
|
const indicatorPlacedRef = useRef(false);
|
|
105
|
+
const scrollRef = useRef(null);
|
|
106
|
+
const viewportWidthRef = useRef(0);
|
|
107
|
+
// The value the underline currently belongs to, from EITHER path. A ref
|
|
108
|
+
// because the layout callback below must see the latest selection without
|
|
109
|
+
// being re-created — and therefore re-firing — on every selection change.
|
|
110
|
+
const selectedValueRef = useRef(value);
|
|
36
111
|
const moveIndicator = useCallback((target, animate) => {
|
|
37
112
|
if (animate) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
duration: 200,
|
|
41
|
-
easing: Easing.out(Easing.cubic),
|
|
42
|
-
useNativeDriver: false
|
|
43
|
-
}), Animated.timing(indicatorWidth, {
|
|
44
|
-
toValue: target.width,
|
|
45
|
-
duration: 200,
|
|
46
|
-
easing: Easing.out(Easing.cubic),
|
|
47
|
-
useNativeDriver: false
|
|
48
|
-
})]).start();
|
|
113
|
+
indicatorX.value = withSpring(target.x, SLIDE_SPRING);
|
|
114
|
+
indicatorWidth.value = withSpring(target.width, SLIDE_SPRING);
|
|
49
115
|
} else {
|
|
50
|
-
indicatorX.
|
|
51
|
-
indicatorWidth.
|
|
116
|
+
indicatorX.value = target.x;
|
|
117
|
+
indicatorWidth.value = target.width;
|
|
52
118
|
}
|
|
53
|
-
|
|
119
|
+
indicatorOpacity.value = withTiming(1, HIGHLIGHT_FADE);
|
|
120
|
+
}, [indicatorX, indicatorWidth, indicatorOpacity]);
|
|
121
|
+
|
|
122
|
+
// Keep the active tab in view when the strip overflows its viewport. Centring
|
|
123
|
+
// is what makes a ROUTED strip usable: arriving at a tab that is scrolled out
|
|
124
|
+
// of sight — via a deep link, a Back, or simply a long tab set — must not
|
|
125
|
+
// look like an empty selection.
|
|
126
|
+
const revealTrigger = useCallback((target, animate) => {
|
|
127
|
+
const viewport = viewportWidthRef.current;
|
|
128
|
+
if (fullWidth || viewport <= 0) return;
|
|
129
|
+
const centred = target.x + target.width / 2 - viewport / 2;
|
|
130
|
+
scrollRef.current?.scrollTo({
|
|
131
|
+
x: Math.max(0, centred),
|
|
132
|
+
animated: animate
|
|
133
|
+
});
|
|
134
|
+
}, [fullWidth]);
|
|
135
|
+
const applySelection = useCallback(tabValue => {
|
|
136
|
+
const target = triggerLayoutsRef.current[tabValue];
|
|
137
|
+
// Not measured yet — `reportTriggerLayout` places it on arrival.
|
|
138
|
+
if (!target) return;
|
|
139
|
+
const animate = indicatorPlacedRef.current;
|
|
140
|
+
moveIndicator(target, animate);
|
|
141
|
+
revealTrigger(target, animate);
|
|
142
|
+
indicatorPlacedRef.current = true;
|
|
143
|
+
}, [moveIndicator, revealTrigger]);
|
|
54
144
|
const reportTriggerLayout = useCallback((tabValue, layout) => {
|
|
55
145
|
triggerLayoutsRef.current[tabValue] = layout;
|
|
56
|
-
// Snap onto the active trigger the moment it
|
|
146
|
+
// Snap onto the active trigger the moment it is first measured (mount), or
|
|
57
147
|
// when its size changes — never slide in from the origin.
|
|
58
|
-
if (tabValue ===
|
|
148
|
+
if (tabValue === selectedValueRef.current) {
|
|
59
149
|
moveIndicator(layout, false);
|
|
150
|
+
revealTrigger(layout, false);
|
|
60
151
|
indicatorPlacedRef.current = true;
|
|
61
152
|
}
|
|
62
|
-
}, [
|
|
153
|
+
}, [moveIndicator, revealTrigger]);
|
|
154
|
+
const reportFocused = useCallback(tabValue => {
|
|
155
|
+
selectedValueRef.current = tabValue;
|
|
156
|
+
applySelection(tabValue);
|
|
157
|
+
}, [applySelection]);
|
|
63
158
|
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
// (external-system sync)
|
|
159
|
+
// CONTROLLED path only: the bar owns the underline when `value` is provided.
|
|
160
|
+
// Syncing an imperative animation to a controlled prop is a legitimate effect
|
|
161
|
+
// (external-system sync). On the focus-driven path each trigger reports
|
|
162
|
+
// instead, so this stays out of the way and there is only ever one writer.
|
|
67
163
|
useEffect(() => {
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
164
|
+
if (value === undefined) return;
|
|
165
|
+
selectedValueRef.current = value;
|
|
166
|
+
applySelection(value);
|
|
167
|
+
}, [value, applySelection]);
|
|
168
|
+
|
|
169
|
+
// Nothing is focused — fade out where it stands. Position is deliberately
|
|
170
|
+
// untouched: see `TabsProps.hasSelection`. Placing this AFTER the controlled
|
|
171
|
+
// effect is what lets a later re-selection snap back rather than travel,
|
|
172
|
+
// because `indicatorPlacedRef` is left alone here.
|
|
173
|
+
useEffect(() => {
|
|
174
|
+
if (hasSelection) return;
|
|
175
|
+
indicatorOpacity.value = withTiming(0, HIGHLIGHT_FADE);
|
|
176
|
+
}, [hasSelection, indicatorOpacity]);
|
|
177
|
+
useImperativeHandle(dragRef, () => ({
|
|
178
|
+
drag(translationX) {
|
|
179
|
+
const current = selectedValueRef.current;
|
|
180
|
+
if (current === undefined) return null;
|
|
181
|
+
// Ordered by measured position, so "the neighbour" means the tab next
|
|
182
|
+
// to it ON SCREEN. Deriving it from child order instead would be wrong
|
|
183
|
+
// the moment a caller reorders or conditionally renders a trigger.
|
|
184
|
+
const ordered = Object.entries(triggerLayoutsRef.current).sort((a, b) => a[1].x - b[1].x);
|
|
185
|
+
const index = ordered.findIndex(([tabValue]) => tabValue === current);
|
|
186
|
+
const from = ordered[index]?.[1];
|
|
187
|
+
if (from === undefined) return null;
|
|
188
|
+
|
|
189
|
+
// Opposite the finger: dragging LEFT reveals the NEXT tab, which is to
|
|
190
|
+
// the right, so that is where the underline goes.
|
|
191
|
+
const travel = -translationX;
|
|
192
|
+
const neighbour = ordered[index + (travel > 0 ? 1 : -1)];
|
|
193
|
+
if (neighbour === undefined) {
|
|
194
|
+
// First or last tab. Resist, never commit — the rubber-band is the
|
|
195
|
+
// honest signal that there is nothing in that direction.
|
|
196
|
+
const damped = Math.min(Math.abs(travel) * EDGE_RUBBER_BAND_DAMPING, EDGE_RUBBER_BAND_MAX);
|
|
197
|
+
dragOffset.value = Math.sign(travel) * damped;
|
|
198
|
+
dragWidthDelta.value = 0;
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
const [neighbourValue, to] = neighbour;
|
|
202
|
+
const distance = to.x - from.x;
|
|
203
|
+
// Clamped at the neighbour: the underline stops exactly where releasing
|
|
204
|
+
// would leave it, so it never promises travel the commit cannot deliver.
|
|
205
|
+
const progress = Math.min(Math.abs(travel) / Math.abs(distance), 1);
|
|
206
|
+
dragOffset.value = distance * progress;
|
|
207
|
+
dragWidthDelta.value = (to.width - from.width) * progress;
|
|
208
|
+
return progress >= COMMIT_THRESHOLD ? neighbourValue : null;
|
|
209
|
+
},
|
|
210
|
+
release(committed) {
|
|
211
|
+
if (committed === null) {
|
|
212
|
+
dragOffset.value = withSpring(0, SLIDE_SPRING);
|
|
213
|
+
dragWidthDelta.value = withSpring(0, SLIDE_SPRING);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
// Fold, do not zero — see `TabsDragController.release`.
|
|
217
|
+
indicatorX.value += dragOffset.value;
|
|
218
|
+
indicatorWidth.value += dragWidthDelta.value;
|
|
219
|
+
dragOffset.value = 0;
|
|
220
|
+
dragWidthDelta.value = 0;
|
|
221
|
+
}
|
|
222
|
+
}), [dragOffset, dragWidthDelta, indicatorX, indicatorWidth]);
|
|
74
223
|
const contextValue = useMemo(() => ({
|
|
75
|
-
value,
|
|
224
|
+
selectedValue: value,
|
|
76
225
|
onValueChange,
|
|
77
226
|
variant,
|
|
78
227
|
fullWidth,
|
|
79
|
-
reportTriggerLayout
|
|
80
|
-
|
|
228
|
+
reportTriggerLayout,
|
|
229
|
+
reportFocused
|
|
230
|
+
}), [value, onValueChange, variant, fullWidth, reportTriggerLayout, reportFocused]);
|
|
81
231
|
const containerStyle = useMemo(() => {
|
|
82
232
|
const base = {
|
|
83
233
|
flexDirection: 'row',
|
|
@@ -102,20 +252,42 @@ const TabsBarComponent = ({
|
|
|
102
252
|
}
|
|
103
253
|
return base;
|
|
104
254
|
}, [variant, theme]);
|
|
255
|
+
|
|
256
|
+
// Deps: every shared value the mapper READS is listed. On web WITHOUT the
|
|
257
|
+
// react-native-worklets babel plugin — the production reality for Bloom's
|
|
258
|
+
// Vite consumers — reanimated cannot auto-detect a worklet's reads and drives
|
|
259
|
+
// the mapper off this array instead: omit one and the mapper runs ONCE and
|
|
260
|
+
// freezes at the first frame while the shared value keeps animating
|
|
261
|
+
// underneath, with no error anywhere. Native (plugin present) auto-tracks and
|
|
262
|
+
// ignores the extras, so listing them is correct on both platforms. Same rule
|
|
263
|
+
// as `TabBarBase` and `BottomSheetBase`. Do NOT strip these.
|
|
264
|
+
const indicatorStyle = useAnimatedStyle(() => ({
|
|
265
|
+
// The drag deltas ADD to the settled values rather than replacing them,
|
|
266
|
+
// which is what lets a release fold them into the base with no jump.
|
|
267
|
+
width: Math.max(indicatorWidth.value + dragWidthDelta.value, 0),
|
|
268
|
+
opacity: indicatorOpacity.value,
|
|
269
|
+
transform: [{
|
|
270
|
+
translateX: indicatorX.value + dragOffset.value
|
|
271
|
+
}]
|
|
272
|
+
}), [indicatorWidth, dragWidthDelta, indicatorOpacity, indicatorX, dragOffset]);
|
|
273
|
+
|
|
274
|
+
// The underline is a sibling of the triggers INSIDE the scrollable content,
|
|
275
|
+
// so the two share one coordinate space: a trigger's `onLayout` x is already
|
|
276
|
+
// relative to the container the underline is absolutely positioned in. That
|
|
277
|
+
// is why nothing here subtracts a scroll offset — an underline parked outside
|
|
278
|
+
// the scroller would have to, and would lag by a frame on every scroll event.
|
|
105
279
|
const indicator = isUnderline ? /*#__PURE__*/_jsx(Animated.View, {
|
|
106
280
|
pointerEvents: "none",
|
|
107
281
|
testID: testID ? `${testID}-indicator` : undefined,
|
|
108
|
-
style: {
|
|
282
|
+
style: [{
|
|
109
283
|
position: 'absolute',
|
|
110
284
|
left: 0,
|
|
111
285
|
bottom: 0,
|
|
112
286
|
height: 2,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}]
|
|
118
|
-
}
|
|
287
|
+
borderTopLeftRadius: 2,
|
|
288
|
+
borderTopRightRadius: 2,
|
|
289
|
+
backgroundColor: theme.colors.primary
|
|
290
|
+
}, indicatorStyle]
|
|
119
291
|
}) : null;
|
|
120
292
|
return /*#__PURE__*/_jsx(TabsContext.Provider, {
|
|
121
293
|
value: contextValue,
|
|
@@ -124,41 +296,66 @@ const TabsBarComponent = ({
|
|
|
124
296
|
testID: testID,
|
|
125
297
|
children: [children, indicator]
|
|
126
298
|
}) : /*#__PURE__*/_jsxs(ScrollView, {
|
|
299
|
+
ref: scrollRef,
|
|
127
300
|
horizontal: true,
|
|
128
301
|
showsHorizontalScrollIndicator: false,
|
|
129
302
|
contentContainerStyle: [containerStyle, style],
|
|
303
|
+
onLayout: e => {
|
|
304
|
+
viewportWidthRef.current = e.nativeEvent.layout.width;
|
|
305
|
+
},
|
|
130
306
|
testID: testID,
|
|
131
307
|
children: [children, indicator]
|
|
132
308
|
})
|
|
133
309
|
});
|
|
134
|
-
};
|
|
310
|
+
});
|
|
135
311
|
const TabComponent = ({
|
|
136
312
|
value,
|
|
137
313
|
label,
|
|
138
314
|
icon,
|
|
315
|
+
count,
|
|
316
|
+
isFocused,
|
|
139
317
|
disabled = false,
|
|
318
|
+
onPress: onPressProp,
|
|
140
319
|
style,
|
|
141
320
|
textStyle
|
|
142
321
|
}) => {
|
|
143
322
|
const theme = useTheme();
|
|
144
323
|
const {
|
|
145
|
-
|
|
324
|
+
selectedValue,
|
|
146
325
|
onValueChange,
|
|
147
326
|
variant,
|
|
148
327
|
fullWidth,
|
|
149
|
-
reportTriggerLayout
|
|
150
|
-
|
|
151
|
-
|
|
328
|
+
reportTriggerLayout,
|
|
329
|
+
reportFocused
|
|
330
|
+
} = useTabsContext('TabsTrigger');
|
|
331
|
+
// The two paths meet here: an explicit `isFocused` (router adapter) wins;
|
|
332
|
+
// otherwise selection comes from the bar's controlled `value`.
|
|
333
|
+
const isSelected = isFocused ?? value === selectedValue;
|
|
152
334
|
const {
|
|
153
335
|
scaleAnim,
|
|
154
336
|
onPressIn,
|
|
155
337
|
onPressOut
|
|
156
338
|
} = usePressAnimation(0.97);
|
|
339
|
+
const resolvedCount = count ?? 0;
|
|
340
|
+
const showCount = resolvedCount > 0;
|
|
341
|
+
|
|
342
|
+
// FOCUS-DRIVEN path only. This covers programmatic navigation too — a deep
|
|
343
|
+
// link, a browser Back, a back gesture — because nothing here asks HOW the
|
|
344
|
+
// change happened: the trigger simply re-renders focused and the underline
|
|
345
|
+
// follows. On the controlled path the bar drives the underline instead, so
|
|
346
|
+
// this stays out of the way to avoid two writers on one shared value.
|
|
347
|
+
useEffect(() => {
|
|
348
|
+
if (isFocused !== true) return;
|
|
349
|
+
reportFocused(value);
|
|
350
|
+
}, [isFocused, value, reportFocused]);
|
|
157
351
|
const handlePress = useCallback(() => {
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
352
|
+
if (disabled) return;
|
|
353
|
+
onPressProp?.();
|
|
354
|
+
// On the focus-driven path navigation is the caller's job (the router
|
|
355
|
+
// adapter's trigger performs it), so reporting a selection here as well
|
|
356
|
+
// would fight the router for the same underline.
|
|
357
|
+
if (isFocused === undefined) onValueChange?.(value);
|
|
358
|
+
}, [value, disabled, onValueChange, onPressProp, isFocused]);
|
|
162
359
|
const tabStyle = useMemo(() => {
|
|
163
360
|
const base = {
|
|
164
361
|
flexDirection: 'row',
|
|
@@ -204,7 +401,7 @@ const TabComponent = ({
|
|
|
204
401
|
}
|
|
205
402
|
return base;
|
|
206
403
|
}, [variant, isSelected, theme]);
|
|
207
|
-
return /*#__PURE__*/_jsx(
|
|
404
|
+
return /*#__PURE__*/_jsx(RNAnimated.View, {
|
|
208
405
|
onLayout: e => {
|
|
209
406
|
const {
|
|
210
407
|
x,
|
|
@@ -233,6 +430,7 @@ const TabComponent = ({
|
|
|
233
430
|
onPressOut: onPressOut,
|
|
234
431
|
disabled: disabled,
|
|
235
432
|
accessibilityRole: "tab",
|
|
433
|
+
accessibilityLabel: showCount ? `${label}, ${resolvedCount}` : label,
|
|
236
434
|
accessibilityState: {
|
|
237
435
|
selected: isSelected,
|
|
238
436
|
disabled
|
|
@@ -240,7 +438,15 @@ const TabComponent = ({
|
|
|
240
438
|
children: [icon, /*#__PURE__*/_jsx(Text, {
|
|
241
439
|
style: [labelStyle, textStyle],
|
|
242
440
|
children: label
|
|
243
|
-
})
|
|
441
|
+
}), showCount ? /*#__PURE__*/_jsx(Text, {
|
|
442
|
+
style: {
|
|
443
|
+
fontSize: 11,
|
|
444
|
+
fontWeight: '600',
|
|
445
|
+
color: theme.colors.textTertiary
|
|
446
|
+
},
|
|
447
|
+
numberOfLines: 1,
|
|
448
|
+
children: formatCount(resolvedCount)
|
|
449
|
+
}) : null]
|
|
244
450
|
})
|
|
245
451
|
});
|
|
246
452
|
};
|
|
@@ -250,8 +456,8 @@ const TabPanelComponent = ({
|
|
|
250
456
|
style
|
|
251
457
|
}) => {
|
|
252
458
|
const {
|
|
253
|
-
|
|
254
|
-
} =
|
|
459
|
+
selectedValue
|
|
460
|
+
} = useTabsContext('TabsContent');
|
|
255
461
|
if (value !== selectedValue) return null;
|
|
256
462
|
return /*#__PURE__*/_jsx(View, {
|
|
257
463
|
style: style,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","memo","useCallback","useContext","useEffect","useMemo","useRef","View","Text","Pressable","Animated","Easing","ScrollView","useTheme","usePressAnimation","borderRadius","space","bloomShadowStyle","jsx","_jsx","jsxs","_jsxs","TabsContext","value","onValueChange","variant","fullWidth","reportTriggerLayout","TabsBarComponent","children","style","testID","theme","isUnderline","indicatorX","Value","current","indicatorWidth","triggerLayoutsRef","indicatorPlacedRef","moveIndicator","target","animate","parallel","timing","toValue","x","duration","easing","out","cubic","useNativeDriver","width","start","setValue","tabValue","layout","contextValue","containerStyle","base","flexDirection","alignItems","borderBottomWidth","borderBottomColor","colors","borderLight","backgroundColor","backgroundSecondary","sm","padding","borderWidth","borderColor","border","indicator","pointerEvents","undefined","position","left","bottom","height","primary","transform","translateX","Provider","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","TabComponent","label","icon","disabled","textStyle","selectedValue","isSelected","scaleAnim","onPressIn","onPressOut","handlePress","tabStyle","justifyContent","paddingHorizontal","lg","paddingVertical","gap","xs","card","Object","assign","labelStyle","fontSize","fontWeight","color","primaryForeground","textSecondary","onLayout","e","nativeEvent","scale","flex","opacity","onPress","accessibilityRole","accessibilityState","selected","TabPanelComponent","Tabs","displayName","TabsTrigger","TabsContent"],"sourceRoot":"../../../src","sources":["tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","createContext","forwardRef","memo","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","View","Text","Pressable","Animated","RNAnimated","ScrollView","useAnimatedStyle","useSharedValue","withSpring","withTiming","useTheme","usePressAnimation","borderRadius","space","bloomShadowStyle","jsx","_jsx","jsxs","_jsxs","SLIDE_SPRING","duration","dampingRatio","HIGHLIGHT_FADE","COMMIT_THRESHOLD","EDGE_RUBBER_BAND_DAMPING","EDGE_RUBBER_BAND_MAX","MAX_DISPLAYED_COUNT","formatCount","count","String","TabsContext","useTabsContext","component","ctx","Error","TabsBarComponent","TabsBar","value","onValueChange","hasSelection","variant","fullWidth","children","style","testID","dragRef","theme","isUnderline","indicatorX","indicatorWidth","indicatorOpacity","dragOffset","dragWidthDelta","triggerLayoutsRef","indicatorPlacedRef","scrollRef","viewportWidthRef","selectedValueRef","moveIndicator","target","animate","x","width","revealTrigger","viewport","current","centred","scrollTo","Math","max","animated","applySelection","tabValue","reportTriggerLayout","layout","reportFocused","undefined","drag","translationX","ordered","Object","entries","sort","a","b","index","findIndex","from","travel","neighbour","damped","min","abs","sign","neighbourValue","to","distance","progress","release","committed","contextValue","selectedValue","containerStyle","base","flexDirection","alignItems","borderBottomWidth","borderBottomColor","colors","borderLight","backgroundColor","backgroundSecondary","sm","padding","borderWidth","borderColor","border","indicatorStyle","opacity","transform","translateX","indicator","pointerEvents","position","left","bottom","height","borderTopLeftRadius","borderTopRightRadius","primary","Provider","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","onLayout","e","nativeEvent","TabComponent","label","icon","isFocused","disabled","onPress","onPressProp","textStyle","isSelected","scaleAnim","onPressIn","onPressOut","resolvedCount","showCount","handlePress","tabStyle","justifyContent","paddingHorizontal","lg","paddingVertical","gap","xs","card","assign","labelStyle","fontSize","fontWeight","color","primaryForeground","textSecondary","scale","flex","accessibilityRole","accessibilityLabel","accessibilityState","selected","textTertiary","numberOfLines","TabPanelComponent","Tabs","displayName","TabsTrigger","TabsContent"],"sourceRoot":"../../../src","sources":["tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}
|