@oxyhq/bloom 0.79.0 → 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/README.md +3 -3
- package/lib/commonjs/provider/index.js +11 -7
- package/lib/commonjs/provider/index.js.map +1 -1
- package/lib/commonjs/scroll/context.js +96 -0
- package/lib/commonjs/scroll/context.js.map +1 -0
- package/lib/commonjs/scroll/expo-router/index.js +133 -0
- package/lib/commonjs/scroll/expo-router/index.js.map +1 -0
- package/lib/commonjs/scroll/index.js +85 -21
- package/lib/commonjs/scroll/index.js.map +1 -1
- package/lib/commonjs/scroll/index.web.js +221 -121
- package/lib/commonjs/scroll/index.web.js.map +1 -1
- package/lib/commonjs/scroll/scrollable.native.js +58 -0
- package/lib/commonjs/scroll/scrollable.native.js.map +1 -0
- package/lib/commonjs/scroll/scrollable.web.js +9 -3
- package/lib/commonjs/scroll/scrollable.web.js.map +1 -1
- package/lib/commonjs/scroll/store.js +47 -25
- package/lib/commonjs/scroll/store.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/commonjs/theme/color-policy.js +11 -10
- package/lib/commonjs/theme/color-policy.js.map +1 -1
- package/lib/module/provider/index.js +10 -6
- package/lib/module/provider/index.js.map +1 -1
- package/lib/module/scroll/context.js +90 -0
- package/lib/module/scroll/context.js.map +1 -0
- package/lib/module/scroll/expo-router/index.js +128 -0
- package/lib/module/scroll/expo-router/index.js.map +1 -0
- package/lib/module/scroll/index.js +80 -21
- package/lib/module/scroll/index.js.map +1 -1
- package/lib/module/scroll/index.web.js +218 -122
- package/lib/module/scroll/index.web.js.map +1 -1
- package/lib/module/scroll/scrollable.native.js +54 -0
- package/lib/module/scroll/scrollable.native.js.map +1 -0
- package/lib/module/scroll/scrollable.web.js +9 -3
- package/lib/module/scroll/scrollable.web.js.map +1 -1
- package/lib/module/scroll/store.js +47 -25
- package/lib/module/scroll/store.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/module/theme/color-policy.js +11 -10
- package/lib/module/theme/color-policy.js.map +1 -1
- package/lib/typescript/commonjs/provider/index.d.ts +7 -5
- package/lib/typescript/commonjs/provider/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/context.d.ts +14 -0
- package/lib/typescript/commonjs/scroll/context.d.ts.map +1 -0
- package/lib/typescript/commonjs/scroll/expo-router/index.d.ts +7 -0
- package/lib/typescript/commonjs/scroll/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/scroll/index.d.ts +14 -23
- package/lib/typescript/commonjs/scroll/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/index.web.d.ts +17 -19
- package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/scrollable.native.d.ts +23 -0
- package/lib/typescript/commonjs/scroll/scrollable.native.d.ts.map +1 -0
- 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/scroll/store.d.ts +41 -22
- package/lib/typescript/commonjs/scroll/store.d.ts.map +1 -1
- package/lib/typescript/commonjs/scroll/types.d.ts +82 -12
- package/lib/typescript/commonjs/scroll/types.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/commonjs/theme/color-policy.d.ts.map +1 -1
- package/lib/typescript/module/provider/index.d.ts +7 -5
- package/lib/typescript/module/provider/index.d.ts.map +1 -1
- package/lib/typescript/module/scroll/context.d.ts +14 -0
- package/lib/typescript/module/scroll/context.d.ts.map +1 -0
- package/lib/typescript/module/scroll/expo-router/index.d.ts +7 -0
- package/lib/typescript/module/scroll/expo-router/index.d.ts.map +1 -0
- package/lib/typescript/module/scroll/index.d.ts +14 -23
- package/lib/typescript/module/scroll/index.d.ts.map +1 -1
- package/lib/typescript/module/scroll/index.web.d.ts +17 -19
- package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
- package/lib/typescript/module/scroll/scrollable.native.d.ts +23 -0
- package/lib/typescript/module/scroll/scrollable.native.d.ts.map +1 -0
- 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/scroll/store.d.ts +41 -22
- package/lib/typescript/module/scroll/store.d.ts.map +1 -1
- package/lib/typescript/module/scroll/types.d.ts +82 -12
- package/lib/typescript/module/scroll/types.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/lib/typescript/module/theme/color-policy.d.ts.map +1 -1
- package/package.json +29 -1
- package/src/__tests__/BloomProvider.web.test.tsx +8 -15
- package/src/__tests__/Tabs.test.tsx +187 -0
- package/src/__tests__/optional-peer-imports.test.ts +7 -2
- package/src/__tests__/scroll-expo-router-adapter.test.tsx +164 -0
- package/src/__tests__/scroll-native.test.tsx +465 -0
- package/src/__tests__/scroll-store.test.ts +41 -17
- package/src/__tests__/scroll-web.test.tsx +797 -108
- package/src/provider/index.tsx +10 -7
- package/src/scroll/context.tsx +107 -0
- package/src/scroll/expo-router/index.ts +140 -0
- package/src/scroll/index.ts +92 -25
- package/src/scroll/index.web.tsx +255 -162
- package/src/scroll/scrollable.native.ts +64 -0
- package/src/scroll/scrollable.web.ts +30 -8
- package/src/scroll/store.ts +47 -25
- package/src/scroll/types.ts +82 -12
- 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/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +5 -5
- package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +11 -11
- package/src/theme/__tests__/policy-legibility.test.ts +10 -7
- package/src/theme/color-policy.ts +11 -10
- package/lib/commonjs/provider/scroll-provider.js +0 -13
- package/lib/commonjs/provider/scroll-provider.js.map +0 -1
- package/lib/commonjs/provider/scroll-provider.web.js +0 -13
- package/lib/commonjs/provider/scroll-provider.web.js.map +0 -1
- package/lib/module/provider/scroll-provider.js +0 -16
- package/lib/module/provider/scroll-provider.js.map +0 -1
- package/lib/module/provider/scroll-provider.web.js +0 -5
- package/lib/module/provider/scroll-provider.web.js.map +0 -1
- package/lib/typescript/commonjs/provider/scroll-provider.d.ts +0 -14
- package/lib/typescript/commonjs/provider/scroll-provider.d.ts.map +0 -1
- package/lib/typescript/commonjs/provider/scroll-provider.web.d.ts +0 -3
- package/lib/typescript/commonjs/provider/scroll-provider.web.d.ts.map +0 -1
- package/lib/typescript/module/provider/scroll-provider.d.ts +0 -14
- package/lib/typescript/module/provider/scroll-provider.d.ts.map +0 -1
- package/lib/typescript/module/provider/scroll-provider.web.d.ts +0 -3
- package/lib/typescript/module/provider/scroll-provider.web.d.ts.map +0 -1
- package/src/__tests__/scroll-native.test.ts +0 -25
- package/src/provider/scroll-provider.ts +0 -13
- package/src/provider/scroll-provider.web.ts +0 -2
|
@@ -10,16 +10,12 @@ exports.deriveScrollKey = deriveScrollKey;
|
|
|
10
10
|
*
|
|
11
11
|
* This file deliberately contains NO React and NO DOM/native imports so the
|
|
12
12
|
* logic can be unit-tested in isolation and shared verbatim by the web and
|
|
13
|
-
* native barrels.
|
|
14
|
-
* native barrel never instantiates it (native-stack already restores scroll).
|
|
13
|
+
* native barrels.
|
|
15
14
|
*/
|
|
16
|
-
|
|
17
15
|
/**
|
|
18
|
-
* Separator between the
|
|
19
|
-
* sub-key. A route may host more than one independently-scrolling list (e.g.
|
|
20
|
-
* a tabbed profile screen), so each list contributes its own sub-key.
|
|
16
|
+
* Separator between the two components of a storage key.
|
|
21
17
|
*
|
|
22
|
-
* `\0` (NUL) can never appear in a
|
|
18
|
+
* `\0` (NUL) can never appear in a router-derived content id or in a
|
|
23
19
|
* developer-authored sub-key, so it is collision-free as a delimiter. It is
|
|
24
20
|
* written as an escape sequence (not a literal byte) so the source stays
|
|
25
21
|
* text-diffable.
|
|
@@ -27,28 +23,48 @@ exports.deriveScrollKey = deriveScrollKey;
|
|
|
27
23
|
const COMPOSITE_KEY_SEPARATOR = '\0';
|
|
28
24
|
|
|
29
25
|
/**
|
|
30
|
-
* Derive the storage key for a scrollable from its
|
|
31
|
-
* optional caller sub-key.
|
|
26
|
+
* Derive the storage key for a scrollable from WHAT its screen is showing plus
|
|
27
|
+
* an optional caller sub-key.
|
|
28
|
+
*
|
|
29
|
+
* The key is CONTENT identity, deliberately not the navigation entry. An offset
|
|
30
|
+
* belongs to what the user was looking at, so returning to it restores however
|
|
31
|
+
* they got there — browser Back or Forward, a tab press, an in-app link — and
|
|
32
|
+
* only content never seen this session opens at the top. Keying on the entry
|
|
33
|
+
* would defeat that: a tab press and `router.replace` both mint a fresh entry,
|
|
34
|
+
* so both would open at the top even though the user has been there.
|
|
35
|
+
*
|
|
36
|
+
* The trade, chosen rather than overlooked: the same content occupying two LIVE
|
|
37
|
+
* entries now shares one offset. Pushing `/@alice` on top of `/@alice` in a
|
|
38
|
+
* native stack restores the first one's position instead of opening at the top,
|
|
39
|
+
* and while both are mounted each writes to the same key. That is the price of
|
|
40
|
+
* a tab press restoring, which is the behaviour that was asked for.
|
|
32
41
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
42
|
+
* The key is always the same two-field composite, with an absent sub-key
|
|
43
|
+
* written as empty, so two different identities can never collapse onto one key
|
|
44
|
+
* by omission.
|
|
35
45
|
*
|
|
36
|
-
* Returns `null` when there is no
|
|
37
|
-
* is not inside a navigator
|
|
46
|
+
* Returns `null` when there is no content id to anchor against (the scrollable
|
|
47
|
+
* is not inside a navigator, or the adapter cannot answer), which every caller
|
|
48
|
+
* treats as "do not persist and do not restore".
|
|
38
49
|
*/
|
|
39
|
-
function deriveScrollKey(
|
|
40
|
-
if (!
|
|
41
|
-
|
|
42
|
-
return `${routeKey}${COMPOSITE_KEY_SEPARATOR}${subKey}`;
|
|
50
|
+
function deriveScrollKey(contentId, subKey) {
|
|
51
|
+
if (!contentId) return null;
|
|
52
|
+
return [contentId, subKey ?? ''].join(COMPOSITE_KEY_SEPARATOR);
|
|
43
53
|
}
|
|
44
54
|
|
|
45
55
|
/**
|
|
46
56
|
* In-memory map of `scrollKey -> last-known scroll offset`.
|
|
47
57
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
58
|
+
* Offsets live only for the lifetime of the document/session. We never persist
|
|
59
|
+
* them — a full reload should start at the top — and we never auto-evict,
|
|
60
|
+
* because an entry can be revisited via browser Forward/Back long after it
|
|
61
|
+
* blurred.
|
|
62
|
+
*
|
|
63
|
+
* Deliberately an instance held in React context rather than a module-level
|
|
64
|
+
* singleton: a dependency tree can legitimately contain two copies of Bloom
|
|
65
|
+
* (a hoisted one plus a nested one under another Oxy package), and a
|
|
66
|
+
* module-global would then exist twice with no way for either half to see the
|
|
67
|
+
* other's offsets.
|
|
52
68
|
*/
|
|
53
69
|
class ScrollOffsetStore {
|
|
54
70
|
offsets = new Map();
|
|
@@ -59,19 +75,25 @@ class ScrollOffsetStore {
|
|
|
59
75
|
}
|
|
60
76
|
|
|
61
77
|
/**
|
|
62
|
-
* Read the saved offset for a key. Returns `0` when nothing was saved,
|
|
63
|
-
*
|
|
78
|
+
* Read the saved offset for a key. Returns `0` when nothing was saved, which
|
|
79
|
+
* is the same value a caller writes when {@link has} is false — an unseen
|
|
80
|
+
* list restores to the top.
|
|
64
81
|
*/
|
|
65
82
|
read(key) {
|
|
66
83
|
return this.offsets.get(key) ?? 0;
|
|
67
84
|
}
|
|
68
85
|
|
|
69
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Whether an offset was ever saved for this key. This — not `read() > 0` —
|
|
88
|
+
* is what separates "restore" from "reset": a key that was never seen and a
|
|
89
|
+
* key deliberately saved at the top both read 0, and only the store knows
|
|
90
|
+
* which is which.
|
|
91
|
+
*/
|
|
70
92
|
has(key) {
|
|
71
93
|
return this.offsets.has(key);
|
|
72
94
|
}
|
|
73
95
|
|
|
74
|
-
/** Drop a saved offset (e.g. when
|
|
96
|
+
/** Drop a saved offset (e.g. when an entry is permanently removed). */
|
|
75
97
|
forget(key) {
|
|
76
98
|
this.offsets.delete(key);
|
|
77
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["COMPOSITE_KEY_SEPARATOR","deriveScrollKey","
|
|
1
|
+
{"version":3,"names":["COMPOSITE_KEY_SEPARATOR","deriveScrollKey","contentId","subKey","join","ScrollOffsetStore","offsets","Map","save","key","offset","set","read","get","has","forget","delete","clear","size","exports"],"sourceRoot":"../../../src","sources":["scroll/store.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,uBAAuB,GAAG,IAAI;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAC7BC,SAAwB,EACxBC,MAAe,EACA;EACf,IAAI,CAACD,SAAS,EAAE,OAAO,IAAI;EAC3B,OAAO,CAACA,SAAS,EAAEC,MAAM,IAAI,EAAE,CAAC,CAACC,IAAI,CAACJ,uBAAuB,CAAC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,iBAAiB,CAAC;EACZC,OAAO,GAAG,IAAIC,GAAG,CAAiB,CAAC;;EAEpD;EACAC,IAAIA,CAACC,GAAW,EAAEC,MAAc,EAAQ;IACtC,IAAI,CAACJ,OAAO,CAACK,GAAG,CAACF,GAAG,EAAEC,MAAM,GAAG,CAAC,GAAGA,MAAM,GAAG,CAAC,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;EACEE,IAAIA,CAACH,GAAW,EAAU;IACxB,OAAO,IAAI,CAACH,OAAO,CAACO,GAAG,CAACJ,GAAG,CAAC,IAAI,CAAC;EACnC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEK,GAAGA,CAACL,GAAW,EAAW;IACxB,OAAO,IAAI,CAACH,OAAO,CAACQ,GAAG,CAACL,GAAG,CAAC;EAC9B;;EAEA;EACAM,MAAMA,CAACN,GAAW,EAAQ;IACxB,IAAI,CAACH,OAAO,CAACU,MAAM,CAACP,GAAG,CAAC;EAC1B;;EAEA;EACAQ,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACX,OAAO,CAACW,KAAK,CAAC,CAAC;EACtB;;EAEA;EACA,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACZ,OAAO,CAACY,IAAI;EAC1B;AACF;AAACC,OAAA,CAAAd,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -6,83 +6,227 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.TabsTrigger = exports.TabsContent = exports.Tabs = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
9
10
|
var _useTheme = require("../theme/use-theme.js");
|
|
10
11
|
var _usePressAnimation = require("../hooks/usePressAnimation.js");
|
|
11
12
|
var _tokens = require("../styles/tokens.js");
|
|
12
13
|
var _shadows = require("../design-tokens/shadows");
|
|
13
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Underline travel. The same spring the floating `TabBar` highlight uses, so the
|
|
18
|
+
* two strips read as one motion language; stated here rather than imported
|
|
19
|
+
* because they are separate component families and a shared constant would tie
|
|
20
|
+
* their feel together permanently.
|
|
21
|
+
*/
|
|
22
|
+
const SLIDE_SPRING = {
|
|
23
|
+
duration: 420,
|
|
24
|
+
dampingRatio: 0.82
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/** Visibility, not travel — see {@link TabsContextValue.indicatorOpacity}. */
|
|
28
|
+
const HIGHLIGHT_FADE = {
|
|
29
|
+
duration: 160
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Fraction of the distance to the neighbour a drag must cover before releasing
|
|
34
|
+
* commits. Below it the underline springs home and nothing navigates.
|
|
35
|
+
*/
|
|
36
|
+
const COMMIT_THRESHOLD = 0.4;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* How far the underline may stray past the first/last tab, and how heavily that
|
|
40
|
+
* travel is damped. A rubber-band is reserved for the edge, where "there is
|
|
41
|
+
* nothing there" is the true message; used anywhere else it would promise a
|
|
42
|
+
* neighbour that is about to arrive, which is the opposite of what happens.
|
|
43
|
+
*/
|
|
44
|
+
const EDGE_RUBBER_BAND_DAMPING = 0.25;
|
|
45
|
+
const EDGE_RUBBER_BAND_MAX = 32;
|
|
46
|
+
|
|
47
|
+
/** Above this the count renders as "99+", so a large tally cannot stretch a tab. */
|
|
48
|
+
const MAX_DISPLAYED_COUNT = 99;
|
|
49
|
+
function formatCount(count) {
|
|
50
|
+
return count > MAX_DISPLAYED_COUNT ? `${MAX_DISPLAYED_COUNT}+` : String(count);
|
|
51
|
+
}
|
|
52
|
+
const TabsContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The imperative surface a horizontal drag gesture drives the underline through.
|
|
56
|
+
*
|
|
57
|
+
* It lives here rather than in the gesture's own code because every quantity the
|
|
58
|
+
* drag needs — where the neighbouring trigger is, how wide it is, whether there
|
|
59
|
+
* IS a neighbour — is measured layout the strip already holds and nothing
|
|
60
|
+
* outside it can see. The gesture supplies one number, the finger's delta; the
|
|
61
|
+
* strip decides what that means.
|
|
62
|
+
*
|
|
63
|
+
* Obtained via a `ref` on `Tabs`. The gesture belongs in the LAYOUT beside the
|
|
64
|
+
* strip, never inside a tab screen — a gesture mounted in a screen is destroyed
|
|
65
|
+
* by the navigation it commits, mid-release.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
function useTabsContext(component) {
|
|
69
|
+
const ctx = (0, _react.useContext)(TabsContext);
|
|
70
|
+
if (!ctx) {
|
|
71
|
+
throw new Error(`${component} must be used within a Tabs`);
|
|
72
|
+
}
|
|
73
|
+
return ctx;
|
|
74
|
+
}
|
|
75
|
+
const TabsBarComponent = /*#__PURE__*/(0, _react.forwardRef)(function TabsBar({
|
|
23
76
|
value,
|
|
24
77
|
onValueChange,
|
|
78
|
+
hasSelection = true,
|
|
25
79
|
variant = 'underline',
|
|
26
80
|
fullWidth = false,
|
|
27
81
|
children,
|
|
28
82
|
style,
|
|
29
83
|
testID
|
|
30
|
-
})
|
|
84
|
+
}, dragRef) {
|
|
31
85
|
const theme = (0, _useTheme.useTheme)();
|
|
32
86
|
const isUnderline = variant === 'underline';
|
|
33
87
|
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
88
|
+
// One shared underline that translates + resizes between triggers. Triggers
|
|
89
|
+
// report their measured {x, width}; whoever owns the selection drives these
|
|
90
|
+
// shared values IMPERATIVELY, and `useAnimatedStyle` below only ever READS
|
|
91
|
+
// them. That split is what makes the animation work on web, where returning
|
|
92
|
+
// an animation from inside a mapper silently does nothing.
|
|
93
|
+
const indicatorX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
94
|
+
const indicatorWidth = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
95
|
+
// Starts hidden: a strip whose active trigger has not been measured yet must
|
|
96
|
+
// not flash an underline at the origin on its first frame.
|
|
97
|
+
const indicatorOpacity = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
98
|
+
// Live drag, added to the settled position/width rather than replacing them,
|
|
99
|
+
// so a release can fold the delta into the base without a visible jump.
|
|
100
|
+
const dragOffset = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
101
|
+
const dragWidthDelta = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
39
102
|
const triggerLayoutsRef = (0, _react.useRef)({});
|
|
40
103
|
const indicatorPlacedRef = (0, _react.useRef)(false);
|
|
104
|
+
const scrollRef = (0, _react.useRef)(null);
|
|
105
|
+
const viewportWidthRef = (0, _react.useRef)(0);
|
|
106
|
+
// The value the underline currently belongs to, from EITHER path. A ref
|
|
107
|
+
// because the layout callback below must see the latest selection without
|
|
108
|
+
// being re-created — and therefore re-firing — on every selection change.
|
|
109
|
+
const selectedValueRef = (0, _react.useRef)(value);
|
|
41
110
|
const moveIndicator = (0, _react.useCallback)((target, animate) => {
|
|
42
111
|
if (animate) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
duration: 200,
|
|
46
|
-
easing: _reactNative.Easing.out(_reactNative.Easing.cubic),
|
|
47
|
-
useNativeDriver: false
|
|
48
|
-
}), _reactNative.Animated.timing(indicatorWidth, {
|
|
49
|
-
toValue: target.width,
|
|
50
|
-
duration: 200,
|
|
51
|
-
easing: _reactNative.Easing.out(_reactNative.Easing.cubic),
|
|
52
|
-
useNativeDriver: false
|
|
53
|
-
})]).start();
|
|
112
|
+
indicatorX.value = (0, _reactNativeReanimated.withSpring)(target.x, SLIDE_SPRING);
|
|
113
|
+
indicatorWidth.value = (0, _reactNativeReanimated.withSpring)(target.width, SLIDE_SPRING);
|
|
54
114
|
} else {
|
|
55
|
-
indicatorX.
|
|
56
|
-
indicatorWidth.
|
|
115
|
+
indicatorX.value = target.x;
|
|
116
|
+
indicatorWidth.value = target.width;
|
|
57
117
|
}
|
|
58
|
-
|
|
118
|
+
indicatorOpacity.value = (0, _reactNativeReanimated.withTiming)(1, HIGHLIGHT_FADE);
|
|
119
|
+
}, [indicatorX, indicatorWidth, indicatorOpacity]);
|
|
120
|
+
|
|
121
|
+
// Keep the active tab in view when the strip overflows its viewport. Centring
|
|
122
|
+
// is what makes a ROUTED strip usable: arriving at a tab that is scrolled out
|
|
123
|
+
// of sight — via a deep link, a Back, or simply a long tab set — must not
|
|
124
|
+
// look like an empty selection.
|
|
125
|
+
const revealTrigger = (0, _react.useCallback)((target, animate) => {
|
|
126
|
+
const viewport = viewportWidthRef.current;
|
|
127
|
+
if (fullWidth || viewport <= 0) return;
|
|
128
|
+
const centred = target.x + target.width / 2 - viewport / 2;
|
|
129
|
+
scrollRef.current?.scrollTo({
|
|
130
|
+
x: Math.max(0, centred),
|
|
131
|
+
animated: animate
|
|
132
|
+
});
|
|
133
|
+
}, [fullWidth]);
|
|
134
|
+
const applySelection = (0, _react.useCallback)(tabValue => {
|
|
135
|
+
const target = triggerLayoutsRef.current[tabValue];
|
|
136
|
+
// Not measured yet — `reportTriggerLayout` places it on arrival.
|
|
137
|
+
if (!target) return;
|
|
138
|
+
const animate = indicatorPlacedRef.current;
|
|
139
|
+
moveIndicator(target, animate);
|
|
140
|
+
revealTrigger(target, animate);
|
|
141
|
+
indicatorPlacedRef.current = true;
|
|
142
|
+
}, [moveIndicator, revealTrigger]);
|
|
59
143
|
const reportTriggerLayout = (0, _react.useCallback)((tabValue, layout) => {
|
|
60
144
|
triggerLayoutsRef.current[tabValue] = layout;
|
|
61
|
-
// Snap onto the active trigger the moment it
|
|
145
|
+
// Snap onto the active trigger the moment it is first measured (mount), or
|
|
62
146
|
// when its size changes — never slide in from the origin.
|
|
63
|
-
if (tabValue ===
|
|
147
|
+
if (tabValue === selectedValueRef.current) {
|
|
64
148
|
moveIndicator(layout, false);
|
|
149
|
+
revealTrigger(layout, false);
|
|
65
150
|
indicatorPlacedRef.current = true;
|
|
66
151
|
}
|
|
67
|
-
}, [
|
|
152
|
+
}, [moveIndicator, revealTrigger]);
|
|
153
|
+
const reportFocused = (0, _react.useCallback)(tabValue => {
|
|
154
|
+
selectedValueRef.current = tabValue;
|
|
155
|
+
applySelection(tabValue);
|
|
156
|
+
}, [applySelection]);
|
|
68
157
|
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
// (external-system sync)
|
|
158
|
+
// CONTROLLED path only: the bar owns the underline when `value` is provided.
|
|
159
|
+
// Syncing an imperative animation to a controlled prop is a legitimate effect
|
|
160
|
+
// (external-system sync). On the focus-driven path each trigger reports
|
|
161
|
+
// instead, so this stays out of the way and there is only ever one writer.
|
|
72
162
|
(0, _react.useEffect)(() => {
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
163
|
+
if (value === undefined) return;
|
|
164
|
+
selectedValueRef.current = value;
|
|
165
|
+
applySelection(value);
|
|
166
|
+
}, [value, applySelection]);
|
|
167
|
+
|
|
168
|
+
// Nothing is focused — fade out where it stands. Position is deliberately
|
|
169
|
+
// untouched: see `TabsProps.hasSelection`. Placing this AFTER the controlled
|
|
170
|
+
// effect is what lets a later re-selection snap back rather than travel,
|
|
171
|
+
// because `indicatorPlacedRef` is left alone here.
|
|
172
|
+
(0, _react.useEffect)(() => {
|
|
173
|
+
if (hasSelection) return;
|
|
174
|
+
indicatorOpacity.value = (0, _reactNativeReanimated.withTiming)(0, HIGHLIGHT_FADE);
|
|
175
|
+
}, [hasSelection, indicatorOpacity]);
|
|
176
|
+
(0, _react.useImperativeHandle)(dragRef, () => ({
|
|
177
|
+
drag(translationX) {
|
|
178
|
+
const current = selectedValueRef.current;
|
|
179
|
+
if (current === undefined) return null;
|
|
180
|
+
// Ordered by measured position, so "the neighbour" means the tab next
|
|
181
|
+
// to it ON SCREEN. Deriving it from child order instead would be wrong
|
|
182
|
+
// the moment a caller reorders or conditionally renders a trigger.
|
|
183
|
+
const ordered = Object.entries(triggerLayoutsRef.current).sort((a, b) => a[1].x - b[1].x);
|
|
184
|
+
const index = ordered.findIndex(([tabValue]) => tabValue === current);
|
|
185
|
+
const from = ordered[index]?.[1];
|
|
186
|
+
if (from === undefined) return null;
|
|
187
|
+
|
|
188
|
+
// Opposite the finger: dragging LEFT reveals the NEXT tab, which is to
|
|
189
|
+
// the right, so that is where the underline goes.
|
|
190
|
+
const travel = -translationX;
|
|
191
|
+
const neighbour = ordered[index + (travel > 0 ? 1 : -1)];
|
|
192
|
+
if (neighbour === undefined) {
|
|
193
|
+
// First or last tab. Resist, never commit — the rubber-band is the
|
|
194
|
+
// honest signal that there is nothing in that direction.
|
|
195
|
+
const damped = Math.min(Math.abs(travel) * EDGE_RUBBER_BAND_DAMPING, EDGE_RUBBER_BAND_MAX);
|
|
196
|
+
dragOffset.value = Math.sign(travel) * damped;
|
|
197
|
+
dragWidthDelta.value = 0;
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
const [neighbourValue, to] = neighbour;
|
|
201
|
+
const distance = to.x - from.x;
|
|
202
|
+
// Clamped at the neighbour: the underline stops exactly where releasing
|
|
203
|
+
// would leave it, so it never promises travel the commit cannot deliver.
|
|
204
|
+
const progress = Math.min(Math.abs(travel) / Math.abs(distance), 1);
|
|
205
|
+
dragOffset.value = distance * progress;
|
|
206
|
+
dragWidthDelta.value = (to.width - from.width) * progress;
|
|
207
|
+
return progress >= COMMIT_THRESHOLD ? neighbourValue : null;
|
|
208
|
+
},
|
|
209
|
+
release(committed) {
|
|
210
|
+
if (committed === null) {
|
|
211
|
+
dragOffset.value = (0, _reactNativeReanimated.withSpring)(0, SLIDE_SPRING);
|
|
212
|
+
dragWidthDelta.value = (0, _reactNativeReanimated.withSpring)(0, SLIDE_SPRING);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
// Fold, do not zero — see `TabsDragController.release`.
|
|
216
|
+
indicatorX.value += dragOffset.value;
|
|
217
|
+
indicatorWidth.value += dragWidthDelta.value;
|
|
218
|
+
dragOffset.value = 0;
|
|
219
|
+
dragWidthDelta.value = 0;
|
|
220
|
+
}
|
|
221
|
+
}), [dragOffset, dragWidthDelta, indicatorX, indicatorWidth]);
|
|
79
222
|
const contextValue = (0, _react.useMemo)(() => ({
|
|
80
|
-
value,
|
|
223
|
+
selectedValue: value,
|
|
81
224
|
onValueChange,
|
|
82
225
|
variant,
|
|
83
226
|
fullWidth,
|
|
84
|
-
reportTriggerLayout
|
|
85
|
-
|
|
227
|
+
reportTriggerLayout,
|
|
228
|
+
reportFocused
|
|
229
|
+
}), [value, onValueChange, variant, fullWidth, reportTriggerLayout, reportFocused]);
|
|
86
230
|
const containerStyle = (0, _react.useMemo)(() => {
|
|
87
231
|
const base = {
|
|
88
232
|
flexDirection: 'row',
|
|
@@ -107,20 +251,42 @@ const TabsBarComponent = ({
|
|
|
107
251
|
}
|
|
108
252
|
return base;
|
|
109
253
|
}, [variant, theme]);
|
|
110
|
-
|
|
254
|
+
|
|
255
|
+
// Deps: every shared value the mapper READS is listed. On web WITHOUT the
|
|
256
|
+
// react-native-worklets babel plugin — the production reality for Bloom's
|
|
257
|
+
// Vite consumers — reanimated cannot auto-detect a worklet's reads and drives
|
|
258
|
+
// the mapper off this array instead: omit one and the mapper runs ONCE and
|
|
259
|
+
// freezes at the first frame while the shared value keeps animating
|
|
260
|
+
// underneath, with no error anywhere. Native (plugin present) auto-tracks and
|
|
261
|
+
// ignores the extras, so listing them is correct on both platforms. Same rule
|
|
262
|
+
// as `TabBarBase` and `BottomSheetBase`. Do NOT strip these.
|
|
263
|
+
const indicatorStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
264
|
+
// The drag deltas ADD to the settled values rather than replacing them,
|
|
265
|
+
// which is what lets a release fold them into the base with no jump.
|
|
266
|
+
width: Math.max(indicatorWidth.value + dragWidthDelta.value, 0),
|
|
267
|
+
opacity: indicatorOpacity.value,
|
|
268
|
+
transform: [{
|
|
269
|
+
translateX: indicatorX.value + dragOffset.value
|
|
270
|
+
}]
|
|
271
|
+
}), [indicatorWidth, dragWidthDelta, indicatorOpacity, indicatorX, dragOffset]);
|
|
272
|
+
|
|
273
|
+
// The underline is a sibling of the triggers INSIDE the scrollable content,
|
|
274
|
+
// so the two share one coordinate space: a trigger's `onLayout` x is already
|
|
275
|
+
// relative to the container the underline is absolutely positioned in. That
|
|
276
|
+
// is why nothing here subtracts a scroll offset — an underline parked outside
|
|
277
|
+
// the scroller would have to, and would lag by a frame on every scroll event.
|
|
278
|
+
const indicator = isUnderline ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
|
|
111
279
|
pointerEvents: "none",
|
|
112
280
|
testID: testID ? `${testID}-indicator` : undefined,
|
|
113
|
-
style: {
|
|
281
|
+
style: [{
|
|
114
282
|
position: 'absolute',
|
|
115
283
|
left: 0,
|
|
116
284
|
bottom: 0,
|
|
117
285
|
height: 2,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}]
|
|
123
|
-
}
|
|
286
|
+
borderTopLeftRadius: 2,
|
|
287
|
+
borderTopRightRadius: 2,
|
|
288
|
+
backgroundColor: theme.colors.primary
|
|
289
|
+
}, indicatorStyle]
|
|
124
290
|
}) : null;
|
|
125
291
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(TabsContext.Provider, {
|
|
126
292
|
value: contextValue,
|
|
@@ -129,41 +295,66 @@ const TabsBarComponent = ({
|
|
|
129
295
|
testID: testID,
|
|
130
296
|
children: [children, indicator]
|
|
131
297
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
|
|
298
|
+
ref: scrollRef,
|
|
132
299
|
horizontal: true,
|
|
133
300
|
showsHorizontalScrollIndicator: false,
|
|
134
301
|
contentContainerStyle: [containerStyle, style],
|
|
302
|
+
onLayout: e => {
|
|
303
|
+
viewportWidthRef.current = e.nativeEvent.layout.width;
|
|
304
|
+
},
|
|
135
305
|
testID: testID,
|
|
136
306
|
children: [children, indicator]
|
|
137
307
|
})
|
|
138
308
|
});
|
|
139
|
-
};
|
|
309
|
+
});
|
|
140
310
|
const TabComponent = ({
|
|
141
311
|
value,
|
|
142
312
|
label,
|
|
143
313
|
icon,
|
|
314
|
+
count,
|
|
315
|
+
isFocused,
|
|
144
316
|
disabled = false,
|
|
317
|
+
onPress: onPressProp,
|
|
145
318
|
style,
|
|
146
319
|
textStyle
|
|
147
320
|
}) => {
|
|
148
321
|
const theme = (0, _useTheme.useTheme)();
|
|
149
322
|
const {
|
|
150
|
-
|
|
323
|
+
selectedValue,
|
|
151
324
|
onValueChange,
|
|
152
325
|
variant,
|
|
153
326
|
fullWidth,
|
|
154
|
-
reportTriggerLayout
|
|
155
|
-
|
|
156
|
-
|
|
327
|
+
reportTriggerLayout,
|
|
328
|
+
reportFocused
|
|
329
|
+
} = useTabsContext('TabsTrigger');
|
|
330
|
+
// The two paths meet here: an explicit `isFocused` (router adapter) wins;
|
|
331
|
+
// otherwise selection comes from the bar's controlled `value`.
|
|
332
|
+
const isSelected = isFocused ?? value === selectedValue;
|
|
157
333
|
const {
|
|
158
334
|
scaleAnim,
|
|
159
335
|
onPressIn,
|
|
160
336
|
onPressOut
|
|
161
337
|
} = (0, _usePressAnimation.usePressAnimation)(0.97);
|
|
338
|
+
const resolvedCount = count ?? 0;
|
|
339
|
+
const showCount = resolvedCount > 0;
|
|
340
|
+
|
|
341
|
+
// FOCUS-DRIVEN path only. This covers programmatic navigation too — a deep
|
|
342
|
+
// link, a browser Back, a back gesture — because nothing here asks HOW the
|
|
343
|
+
// change happened: the trigger simply re-renders focused and the underline
|
|
344
|
+
// follows. On the controlled path the bar drives the underline instead, so
|
|
345
|
+
// this stays out of the way to avoid two writers on one shared value.
|
|
346
|
+
(0, _react.useEffect)(() => {
|
|
347
|
+
if (isFocused !== true) return;
|
|
348
|
+
reportFocused(value);
|
|
349
|
+
}, [isFocused, value, reportFocused]);
|
|
162
350
|
const handlePress = (0, _react.useCallback)(() => {
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
351
|
+
if (disabled) return;
|
|
352
|
+
onPressProp?.();
|
|
353
|
+
// On the focus-driven path navigation is the caller's job (the router
|
|
354
|
+
// adapter's trigger performs it), so reporting a selection here as well
|
|
355
|
+
// would fight the router for the same underline.
|
|
356
|
+
if (isFocused === undefined) onValueChange?.(value);
|
|
357
|
+
}, [value, disabled, onValueChange, onPressProp, isFocused]);
|
|
167
358
|
const tabStyle = (0, _react.useMemo)(() => {
|
|
168
359
|
const base = {
|
|
169
360
|
flexDirection: 'row',
|
|
@@ -238,6 +429,7 @@ const TabComponent = ({
|
|
|
238
429
|
onPressOut: onPressOut,
|
|
239
430
|
disabled: disabled,
|
|
240
431
|
accessibilityRole: "tab",
|
|
432
|
+
accessibilityLabel: showCount ? `${label}, ${resolvedCount}` : label,
|
|
241
433
|
accessibilityState: {
|
|
242
434
|
selected: isSelected,
|
|
243
435
|
disabled
|
|
@@ -245,7 +437,15 @@ const TabComponent = ({
|
|
|
245
437
|
children: [icon, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
246
438
|
style: [labelStyle, textStyle],
|
|
247
439
|
children: label
|
|
248
|
-
})
|
|
440
|
+
}), showCount ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
441
|
+
style: {
|
|
442
|
+
fontSize: 11,
|
|
443
|
+
fontWeight: '600',
|
|
444
|
+
color: theme.colors.textTertiary
|
|
445
|
+
},
|
|
446
|
+
numberOfLines: 1,
|
|
447
|
+
children: formatCount(resolvedCount)
|
|
448
|
+
}) : null]
|
|
249
449
|
})
|
|
250
450
|
});
|
|
251
451
|
};
|
|
@@ -255,8 +455,8 @@ const TabPanelComponent = ({
|
|
|
255
455
|
style
|
|
256
456
|
}) => {
|
|
257
457
|
const {
|
|
258
|
-
|
|
259
|
-
} = (
|
|
458
|
+
selectedValue
|
|
459
|
+
} = useTabsContext('TabsContent');
|
|
260
460
|
if (value !== selectedValue) return null;
|
|
261
461
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
262
462
|
style: style,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_usePressAnimation","_tokens","_shadows","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TabsContext","createContext","value","onValueChange","variant","fullWidth","reportTriggerLayout","TabsBarComponent","children","style","testID","theme","useTheme","isUnderline","indicatorX","useRef","Animated","Value","current","indicatorWidth","triggerLayoutsRef","indicatorPlacedRef","moveIndicator","useCallback","target","animate","parallel","timing","toValue","x","duration","easing","Easing","out","cubic","useNativeDriver","width","start","setValue","tabValue","layout","useEffect","contextValue","useMemo","containerStyle","base","flexDirection","alignItems","borderBottomWidth","borderBottomColor","colors","borderLight","backgroundColor","backgroundSecondary","borderRadius","sm","padding","borderWidth","borderColor","border","indicator","jsx","View","pointerEvents","undefined","position","left","bottom","height","primary","transform","translateX","Provider","jsxs","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","TabComponent","label","icon","disabled","textStyle","selectedValue","useContext","isSelected","scaleAnim","onPressIn","onPressOut","usePressAnimation","handlePress","tabStyle","justifyContent","paddingHorizontal","space","lg","paddingVertical","gap","xs","card","assign","bloomShadowStyle","labelStyle","fontSize","fontWeight","color","primaryForeground","textSecondary","onLayout","nativeEvent","scale","flex","Pressable","opacity","onPress","accessibilityRole","accessibilityState","selected","Text","TabPanelComponent","Tabs","exports","memo","displayName","TabsTrigger","TabsContent"],"sourceRoot":"../../../src","sources":["tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_useTheme","_usePressAnimation","_tokens","_shadows","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SLIDE_SPRING","duration","dampingRatio","HIGHLIGHT_FADE","COMMIT_THRESHOLD","EDGE_RUBBER_BAND_DAMPING","EDGE_RUBBER_BAND_MAX","MAX_DISPLAYED_COUNT","formatCount","count","String","TabsContext","createContext","useTabsContext","component","ctx","useContext","Error","TabsBarComponent","forwardRef","TabsBar","value","onValueChange","hasSelection","variant","fullWidth","children","style","testID","dragRef","theme","useTheme","isUnderline","indicatorX","useSharedValue","indicatorWidth","indicatorOpacity","dragOffset","dragWidthDelta","triggerLayoutsRef","useRef","indicatorPlacedRef","scrollRef","viewportWidthRef","selectedValueRef","moveIndicator","useCallback","target","animate","withSpring","x","width","withTiming","revealTrigger","viewport","current","centred","scrollTo","Math","max","animated","applySelection","tabValue","reportTriggerLayout","layout","reportFocused","useEffect","undefined","useImperativeHandle","drag","translationX","ordered","entries","sort","a","b","index","findIndex","from","travel","neighbour","damped","min","abs","sign","neighbourValue","to","distance","progress","release","committed","contextValue","useMemo","selectedValue","containerStyle","base","flexDirection","alignItems","borderBottomWidth","borderBottomColor","colors","borderLight","backgroundColor","backgroundSecondary","borderRadius","sm","padding","borderWidth","borderColor","border","indicatorStyle","useAnimatedStyle","opacity","transform","translateX","indicator","jsx","View","pointerEvents","position","left","bottom","height","borderTopLeftRadius","borderTopRightRadius","primary","Provider","jsxs","ScrollView","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","onLayout","nativeEvent","TabComponent","label","icon","isFocused","disabled","onPress","onPressProp","textStyle","isSelected","scaleAnim","onPressIn","onPressOut","usePressAnimation","resolvedCount","showCount","handlePress","tabStyle","justifyContent","paddingHorizontal","space","lg","paddingVertical","gap","xs","card","assign","bloomShadowStyle","labelStyle","fontSize","fontWeight","color","primaryForeground","textSecondary","Animated","scale","flex","Pressable","accessibilityRole","accessibilityLabel","accessibilityState","selected","Text","textTertiary","numberOfLines","TabPanelComponent","Tabs","exports","memo","displayName","TabsTrigger","TabsContent"],"sourceRoot":"../../../src","sources":["tabs/Tabs.tsx"],"mappings":"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","ignoreList":[]}
|