@oxyhq/bloom 1.10.0 → 1.11.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/docs/layout.mdx +33 -1
- package/lib/commonjs/fab/Fab.js +42 -0
- package/lib/commonjs/fab/Fab.js.map +1 -1
- package/lib/commonjs/fab/Fab.web.js +18 -3
- package/lib/commonjs/fab/Fab.web.js.map +1 -1
- package/lib/commonjs/layout/bottom-edge.js +72 -24
- package/lib/commonjs/layout/bottom-edge.js.map +1 -1
- package/lib/commonjs/layout/index.js +6 -0
- package/lib/commonjs/layout/index.js.map +1 -1
- package/lib/commonjs/tab-bar/TabBarBase.js +22 -6
- package/lib/commonjs/tab-bar/TabBarBase.js.map +1 -1
- package/lib/commonjs/theme/color-scope/ColorScope.web.js +25 -13
- package/lib/commonjs/theme/color-scope/ColorScope.web.js.map +1 -1
- package/lib/module/fab/Fab.js +44 -2
- package/lib/module/fab/Fab.js.map +1 -1
- package/lib/module/fab/Fab.web.js +19 -4
- package/lib/module/fab/Fab.web.js.map +1 -1
- package/lib/module/layout/bottom-edge.js +71 -24
- package/lib/module/layout/bottom-edge.js.map +1 -1
- package/lib/module/layout/index.js +1 -1
- package/lib/module/layout/index.js.map +1 -1
- package/lib/module/tab-bar/TabBarBase.js +24 -8
- package/lib/module/tab-bar/TabBarBase.js.map +1 -1
- package/lib/module/theme/color-scope/ColorScope.web.js +25 -13
- package/lib/module/theme/color-scope/ColorScope.web.js.map +1 -1
- package/lib/typescript/commonjs/fab/Fab.d.ts.map +1 -1
- package/lib/typescript/commonjs/fab/Fab.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/layout/bottom-edge.d.ts +44 -10
- package/lib/typescript/commonjs/layout/bottom-edge.d.ts.map +1 -1
- package/lib/typescript/commonjs/layout/index.d.ts +1 -1
- package/lib/typescript/commonjs/layout/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/tab-bar/TabBarBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/ColorScope.web.d.ts.map +1 -1
- package/lib/typescript/module/fab/Fab.d.ts.map +1 -1
- package/lib/typescript/module/fab/Fab.web.d.ts.map +1 -1
- package/lib/typescript/module/layout/bottom-edge.d.ts +44 -10
- package/lib/typescript/module/layout/bottom-edge.d.ts.map +1 -1
- package/lib/typescript/module/layout/index.d.ts +1 -1
- package/lib/typescript/module/layout/index.d.ts.map +1 -1
- package/lib/typescript/module/tab-bar/TabBarBase.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/ColorScope.web.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/fab/Fab.tsx +41 -3
- package/src/fab/Fab.web.tsx +19 -4
- package/src/layout/bottom-edge.tsx +88 -31
- package/src/layout/index.ts +6 -1
- package/src/tab-bar/TabBarBase.tsx +31 -6
- package/src/theme/color-scope/ColorScope.web.tsx +23 -13
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
* react-native-screens, so this file is safe in a web bundle and in a
|
|
16
16
|
* consumer's type-check.
|
|
17
17
|
*/
|
|
18
|
-
import { Children, createContext, useCallback, useContext, useEffect, useMemo } from 'react';
|
|
18
|
+
import { Children, createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
19
19
|
import { Pressable, StyleSheet, useWindowDimensions, View } from 'react-native';
|
|
20
20
|
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
21
|
-
import Animated, { Extrapolation, interpolate, interpolateColor, runOnJS, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
|
|
21
|
+
import Animated, { Extrapolation, interpolate, interpolateColor, runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
|
|
22
22
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
23
23
|
import { useHaptics } from "../hooks/use-haptics.js";
|
|
24
24
|
import { useClaimBottomEdge } from "../layout/bottom-edge.js";
|
|
@@ -304,13 +304,29 @@ function TabBarBody({
|
|
|
304
304
|
// its own layout can never drift from where the bar actually sits.
|
|
305
305
|
const bottomOffset = windowEdgeGap(insets.bottom);
|
|
306
306
|
|
|
307
|
+
// Whether the bar has settled into its minimized size, as REACT state.
|
|
308
|
+
//
|
|
309
|
+
// Reacting on `target` rather than on `progress` is what keeps this cheap:
|
|
310
|
+
// `target` is the binary 0/1 the minimize spring is heading for, so this fires
|
|
311
|
+
// twice per scroll gesture instead of once per frame. Crossing `progress > 0.5`
|
|
312
|
+
// would work too and would cost the same, but it would report the change
|
|
313
|
+
// halfway through the animation rather than when it was decided.
|
|
314
|
+
const [isMinimized, setIsMinimized] = useState(false);
|
|
315
|
+
useAnimatedReaction(() => minimized.target.value, (target, previous) => {
|
|
316
|
+
if (target !== previous) runOnJS(setIsMinimized)(target === 1);
|
|
317
|
+
}, [minimized]);
|
|
318
|
+
|
|
307
319
|
// Publish what the bar occupies so anything else at this edge stacks above it
|
|
308
|
-
// rather than behind it. Same
|
|
309
|
-
// the same
|
|
310
|
-
// where the bar actually sits.
|
|
311
|
-
//
|
|
312
|
-
//
|
|
313
|
-
|
|
320
|
+
// rather than behind it. Same numbers `useTabBarFootprint` reports, derived
|
|
321
|
+
// from the same geometry, so a consumer reading either can never disagree with
|
|
322
|
+
// where the bar actually sits.
|
|
323
|
+
//
|
|
324
|
+
// RESERVED stays the EXPANDED height: the bar re-expands the moment the user
|
|
325
|
+
// scrolls back up, so anything that permanently reserves space (a list's
|
|
326
|
+
// bottom padding, a toast) must keep room for the full pill or it would jitter
|
|
327
|
+
// on every scroll. LIVE follows the minimize, so a surface sitting ON the edge
|
|
328
|
+
// rides down with the bar instead of leaving a 14px hole above it.
|
|
329
|
+
useClaimBottomEdge(bottomOffset + EXPANDED_HEIGHT, bottomOffset + (isMinimized ? MINIMIZED_HEIGHT : EXPANDED_HEIGHT));
|
|
314
330
|
|
|
315
331
|
// How centring and the animated inset compose: centring is STATIC and belongs
|
|
316
332
|
// to the wrap, the inset stays ANIMATED on the pill inside it. The wrap is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Children","createContext","useCallback","useContext","useEffect","useMemo","Pressable","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","Animated","Extrapolation","interpolate","interpolateColor","runOnJS","useAnimatedStyle","useSharedValue","withSpring","withTiming","useSafeAreaInsets","useHaptics","useClaimBottomEdge","windowEdgeGap","setMinimized","useMinimizeState","BAR_MARGIN","BLUR_BLEED","EXPANDED_HEIGHT","HIGHLIGHT_EXPANDED","HIGHLIGHT_FADE","HIGHLIGHT_MINIMIZED","ICON_SIZE","ITEM_GAP","ITEM_PAD_V","LABEL_FONT_SIZE","LONG_PRESS_MIN_DURATION","MINIMIZED_HEIGHT","MINIMIZED_INSET","ROW_PAD_H","SLIDE_SPRING","useTabBarTheme","jsx","_jsx","jsxs","_jsxs","BarContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","blur","maxWidth","style","viewProps","insets","width","windowWidth","minimized","progress","tabCount","Math","max","count","hasSelection","undefined","Number","isInteger","slideIndex","highlightOpacity","isDragging","lastTicked","impact","barOuterWidth","min","tick","selectIndex","index","longPressIndex","hasLongPress","value","gesture","indexAtX","x","minimizedValue","sideInset","CLAMP","barWidth","itemWidth","raw","pan","Pan","activeOffsetX","failOffsetY","onStart","event","round","onUpdate","rounded","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","barStyle","height","inset","marginLeft","marginRight","shapeStyle","borderRadius","highlightStyle","barHeight","top","opacity","transform","translateX","bottomOffset","bottom","constrainedWrapStyle","alignSelf","barContext","pointerEvents","styles","root","direction","intensity","position","left","right","barWrap","marginBottom","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","standaloneTheme","focused","activeGlyphStyle","proximity","abs","labelStyle","color","activeTint","inactiveTint","boxStyle","accessibilityLabel","label","state","button","itemBox","tint","size","active","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","marginHorizontal","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","paddingTop","overflow","fontSize","fontWeight","marginTop"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Children","createContext","useCallback","useContext","useEffect","useMemo","useState","Pressable","StyleSheet","useWindowDimensions","View","Gesture","GestureDetector","Animated","Extrapolation","interpolate","interpolateColor","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","withSpring","withTiming","useSafeAreaInsets","useHaptics","useClaimBottomEdge","windowEdgeGap","setMinimized","useMinimizeState","BAR_MARGIN","BLUR_BLEED","EXPANDED_HEIGHT","HIGHLIGHT_EXPANDED","HIGHLIGHT_FADE","HIGHLIGHT_MINIMIZED","ICON_SIZE","ITEM_GAP","ITEM_PAD_V","LABEL_FONT_SIZE","LONG_PRESS_MIN_DURATION","MINIMIZED_HEIGHT","MINIMIZED_INSET","ROW_PAD_H","SLIDE_SPRING","useTabBarTheme","jsx","_jsx","jsxs","_jsxs","BarContext","TabBarBody","Surface","Blur","children","activeIndex","onIndexChange","onIndexLongPress","theme","themeOverrides","haptics","blur","maxWidth","style","viewProps","insets","width","windowWidth","minimized","progress","tabCount","Math","max","count","hasSelection","undefined","Number","isInteger","slideIndex","highlightOpacity","isDragging","lastTicked","impact","barOuterWidth","min","tick","selectIndex","index","longPressIndex","hasLongPress","value","gesture","indexAtX","x","minimizedValue","sideInset","CLAMP","barWidth","itemWidth","raw","pan","Pan","activeOffsetX","failOffsetY","onStart","event","round","onUpdate","rounded","onFinalize","tap","Tap","maxDistance","maxDuration","onEnd","success","Race","longPress","LongPress","minDuration","barStyle","height","inset","marginLeft","marginRight","shapeStyle","borderRadius","highlightStyle","barHeight","top","opacity","transform","translateX","bottomOffset","bottom","isMinimized","setIsMinimized","target","previous","constrainedWrapStyle","alignSelf","barContext","pointerEvents","styles","root","direction","intensity","position","left","right","barWrap","marginBottom","highlight","backgroundColor","accessibilityRole","itemRow","Provider","TabBarButtonBody","Glyph","item","isFocused","onPress","pressableProps","bar","standaloneTheme","focused","activeGlyphStyle","proximity","abs","labelStyle","color","activeTint","inactiveTint","boxStyle","accessibilityLabel","label","state","button","itemBox","tint","size","active","absoluteFill","glyphLayer","Text","numberOfLines","createTabBar","TabBar","props","displayName","createTabBarButton","TabBarButton","create","marginHorizontal","borderCurve","flex","flexDirection","alignItems","paddingHorizontal","justifyContent","paddingTop","overflow","fontSize","fontWeight","marginTop"],"sourceRoot":"../../../src","sources":["tab-bar/TabBarBase.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,13 +17,21 @@ function buildWebScopeVars(colorPreset, mode) {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* On web, the single `asChild` child
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* react-native-web
|
|
24
|
-
*
|
|
25
|
-
* numeric indices as keys and
|
|
26
|
-
*
|
|
20
|
+
* On web, the single `asChild` child can be either kind of element, and the two
|
|
21
|
+
* kinds want different `style` shapes:
|
|
22
|
+
*
|
|
23
|
+
* - A react-native-web component (RN `<View>`, `<Pressable>`) may already
|
|
24
|
+
* carry a style ARRAY or a numeric registered-style id. Spreading that into
|
|
25
|
+
* an object literal copies its numeric indices as keys, and RNW then commits
|
|
26
|
+
* `0`, `1`, … to the DOM. RNW flattens arrays, so it gets an array.
|
|
27
|
+
* - Anything that ends on a DOM element — an `<a>`, a router `<Link>`, any
|
|
28
|
+
* component that forwards `style` to its host node — hands the prop straight
|
|
29
|
+
* to React DOM, which walks the own keys of whatever it is given. An array
|
|
30
|
+
* there throws `Failed to set an indexed property [0] on
|
|
31
|
+
* 'CSSStyleDeclaration'` during commit, blanking the tree.
|
|
32
|
+
*
|
|
33
|
+
* So the array form is used only when the child's own style is already
|
|
34
|
+
* RN-shaped; every other child gets a plain object, which both runtimes accept.
|
|
27
35
|
*/
|
|
28
36
|
|
|
29
37
|
export function BloomColorScope({
|
|
@@ -64,13 +72,17 @@ export function BloomColorScope({
|
|
|
64
72
|
if (! /*#__PURE__*/isValidElement(child)) {
|
|
65
73
|
throw new Error('BloomColorScope with `asChild` requires a single React element child that accepts a `style` prop.');
|
|
66
74
|
}
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
// object literal would copy numeric indices as keys and crash RNW.
|
|
75
|
+
// Scope vars first, then the caller's `style`, then the child's own so its
|
|
76
|
+
// explicit styles win. The shape follows the child: an array only when the
|
|
77
|
+
// child's style is already RN-shaped (see the note above), an object
|
|
78
|
+
// otherwise — an array reaching a DOM node throws on commit.
|
|
72
79
|
const childStyle = child.props.style;
|
|
73
|
-
const
|
|
80
|
+
const childIsRnStyled = Array.isArray(childStyle) || typeof childStyle === 'number';
|
|
81
|
+
const mergedStyle = childIsRnStyled ? [varsStyle, style, childStyle] : {
|
|
82
|
+
...varsStyle,
|
|
83
|
+
...style,
|
|
84
|
+
...(childStyle || undefined)
|
|
85
|
+
};
|
|
74
86
|
content = /*#__PURE__*/cloneElement(child, {
|
|
75
87
|
style: mergedStyle
|
|
76
88
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Children","cloneElement","isValidElement","useContext","useMemo","BloomThemeContext","buildTheme","buildScopeVars","Fragment","_Fragment","jsx","_jsx","buildWebScopeVars","colorPreset","mode","BloomColorScope","asChild","style","children","parent","resolvedMode","theme","contextValue","varsStyle","Error","content","child","only","childStyle","props","mergedStyle","Provider","value","useColorScopeStyle","scopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/ColorScope.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,YAAY,EAAEC,cAAc,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAE1F,SAASC,iBAAiB,QAAqC,0BAAuB;AACtF,SAASC,UAAU,QAAQ,mBAAgB;AAE3C,SAASC,cAAc,QAAQ,oBAAiB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AALA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAMA,SAASC,iBAAiBA,CACxBC,WAAyB,EACzBC,IAAsB,EACD;EACrB,OAAOP,cAAc,CAACM,WAAW,EAAEC,IAAI,CAAC;AAC1C;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAaA,OAAO,SAASC,eAAeA,CAAC;EAC9BF,WAAW;EACXG,OAAO,GAAG,KAAK;EACfC,KAAK;EACLC;AACoB,CAAC,EAAE;EACvB;EACA;EACA;EACA;EACA;EACA,MAAMC,MAAM,GAAGhB,UAAU,CAACE,iBAAiB,CAAC;EAC5C,MAAMe,YAAY,GAAGD,MAAM,EAAEE,KAAK,CAACP,IAAI,IAAI,OAAO;EAElD,MAAMQ,YAAY,GAAGlB,OAAO,CAAgC,MAAM;IAChE,IAAI,CAACe,MAAM,IAAI,CAACN,WAAW,EAAE,OAAO,IAAI;IACxC,MAAMQ,KAAK,GAAGf,UAAU,CAACO,WAAW,EAAEO,YAAY,CAAC;IACnD,OAAO;MAAE,GAAGD,MAAM;MAAEE,KAAK;MAAER;IAAY,CAAC;EAC1C,CAAC,EAAE,CAACA,WAAW,EAAEO,YAAY,EAAED,MAAM,CAAC,CAAC;EAEvC,MAAMI,SAAS,GAAGnB,OAAO,CACvB,MAAOS,WAAW,GAAGD,iBAAiB,CAACC,WAAW,EAAEO,YAAY,CAAC,GAAG,IAAK,EACzE,CAACP,WAAW,EAAEO,YAAY,CAC5B,CAAC;EAED,IAAI,CAACD,MAAM,EAAE;IACX,MAAM,IAAIK,KAAK,CAAC,4DAA4D,CAAC;EAC/E;EACA;EACA;EACA;EACA,IAAI,CAACF,YAAY,IAAI,CAACC,SAAS,EAAE,oBAAOZ,IAAA,CAAAF,SAAA;IAAAS,QAAA,EAAGA;EAAQ,CAAG,CAAC;EAEvD,IAAIO,OAAwB;EAC5B,IAAIT,OAAO,EAAE;IACX,MAAMU,KAAK,GAAG1B,QAAQ,CAAC2B,IAAI,CAACT,QAAQ,CAAC;IACrC,IAAI,eAAChB,cAAc,CAAiBwB,KAAK,CAAC,EAAE;MAC1C,MAAM,IAAIF,KAAK,CACb,mGACF,CAAC;IACH;IACA;IACA;IACA;IACA;IACA
|
|
1
|
+
{"version":3,"names":["React","Children","cloneElement","isValidElement","useContext","useMemo","BloomThemeContext","buildTheme","buildScopeVars","Fragment","_Fragment","jsx","_jsx","buildWebScopeVars","colorPreset","mode","BloomColorScope","asChild","style","children","parent","resolvedMode","theme","contextValue","varsStyle","Error","content","child","only","childStyle","props","childIsRnStyled","Array","isArray","mergedStyle","undefined","Provider","value","useColorScopeStyle","scopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/ColorScope.web.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAoBpF,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkT3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAqT3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
|
|
@@ -27,6 +27,21 @@
|
|
|
27
27
|
* edge, so two surfaces at that edge overlap rather than stack; the tallest is
|
|
28
28
|
* what a new surface has to clear. Summing would strand it at twice the height.
|
|
29
29
|
*
|
|
30
|
+
* ## Two numbers, because there are two questions
|
|
31
|
+
*
|
|
32
|
+
* A surface that collapses — the tab bar minimizes 58 -> 44 on scroll — occupies
|
|
33
|
+
* less than it reserves. Readers want different halves of that:
|
|
34
|
+
*
|
|
35
|
+
* - RESERVED (`useBottomEdgeInset`) never shrinks while the claimant is
|
|
36
|
+
* mounted. It is what must be kept permanently free: a list's bottom
|
|
37
|
+
* padding, a toast stack's offset. Tracking the collapse here would jitter a
|
|
38
|
+
* list's content size on every scroll and jump a toast 14px mid-display.
|
|
39
|
+
* - LIVE (`useBottomEdgeLiveInset`) follows the collapse. It is what a surface
|
|
40
|
+
* SITTING ON the edge wants, so it rides down with the bar instead of
|
|
41
|
+
* leaving a hole.
|
|
42
|
+
*
|
|
43
|
+
* A claimant that never collapses passes one number and both answers agree.
|
|
44
|
+
*
|
|
30
45
|
* ## Why an external store
|
|
31
46
|
*
|
|
32
47
|
* The claim set is mutable state living outside React. Reading it in a memoized
|
|
@@ -47,13 +62,15 @@ export declare namespace BottomEdgeProvider {
|
|
|
47
62
|
var displayName: string;
|
|
48
63
|
}
|
|
49
64
|
/**
|
|
50
|
-
* How much of the bottom edge is
|
|
65
|
+
* How much of the bottom edge is permanently RESERVED, in px.
|
|
51
66
|
*
|
|
52
|
-
*
|
|
67
|
+
* Never shrinks while its claimant is mounted, so it is the number for anything
|
|
68
|
+
* that must not move as the user scrolls — a list's bottom padding, a toast
|
|
69
|
+
* stack's offset:
|
|
53
70
|
*
|
|
54
71
|
* ```tsx
|
|
55
|
-
* const
|
|
56
|
-
* <
|
|
72
|
+
* const reserved = useBottomEdgeInset();
|
|
73
|
+
* <FlatList contentContainerStyle={{ paddingBottom: reserved + 12 }} />
|
|
57
74
|
* ```
|
|
58
75
|
*
|
|
59
76
|
* `0` outside a provider, and `0` on the first commit even inside one — a claim
|
|
@@ -63,15 +80,32 @@ export declare namespace BottomEdgeProvider {
|
|
|
63
80
|
*/
|
|
64
81
|
export declare function useBottomEdgeInset(): number;
|
|
65
82
|
/**
|
|
66
|
-
*
|
|
83
|
+
* How much of the bottom edge is occupied RIGHT NOW, in px — the same number as
|
|
84
|
+
* {@link useBottomEdgeInset} for a surface that does not collapse, and smaller
|
|
85
|
+
* while one does.
|
|
86
|
+
*
|
|
87
|
+
* This is what a surface sitting ON the edge wants, so it rides down with a
|
|
88
|
+
* minimizing tab bar rather than leaving a hole above it. It changes when the
|
|
89
|
+
* collapse STATE changes, not per frame: a claimant reports its settled
|
|
90
|
+
* footprint and the reader animates the difference itself, which keeps the
|
|
91
|
+
* motion on whatever animation system that reader already uses instead of
|
|
92
|
+
* forcing a shared one through React state.
|
|
93
|
+
*/
|
|
94
|
+
export declare function useBottomEdgeLiveInset(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Claim the bottom edge for as long as the caller is mounted.
|
|
67
97
|
*
|
|
68
98
|
* The claimant owns its own placement — claiming does not move it. It declares
|
|
69
|
-
* the space it occupies so that everything reading
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
99
|
+
* the space it occupies so that everything reading the edge stays off it. Pass
|
|
100
|
+
* the FULL footprint (the surface's height plus the gap it holds off the window
|
|
101
|
+
* edge), which is the same number the surface positions itself with.
|
|
102
|
+
*
|
|
103
|
+
* `current` is what the surface occupies right now; it defaults to `reserved`,
|
|
104
|
+
* which is correct for anything that does not collapse. A surface that shrinks
|
|
105
|
+
* on scroll passes its live footprint as `current` and keeps `reserved` at its
|
|
106
|
+
* full size — see the two channels above for why both are needed.
|
|
73
107
|
*
|
|
74
108
|
* A no-op outside a provider, so a surface stays usable standalone.
|
|
75
109
|
*/
|
|
76
|
-
export declare function useClaimBottomEdge(
|
|
110
|
+
export declare function useClaimBottomEdge(reserved: number, current?: number): void;
|
|
77
111
|
//# sourceMappingURL=bottom-edge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bottom-edge.d.ts","sourceRoot":"","sources":["../../../../src/layout/bottom-edge.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bottom-edge.d.ts","sourceRoot":"","sources":["../../../../src/layout/bottom-edge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AAqEf;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAGjE;yBAHe,kBAAkB;;;AAYlC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAiB,GAAG,IAAI,CASrF"}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* parked there". A surface that floats at the bottom needs both.
|
|
6
6
|
*/
|
|
7
7
|
export { EDGE_GAP, windowEdgeGap } from './edge';
|
|
8
|
-
export { BottomEdgeProvider, useBottomEdgeInset, useClaimBottomEdge } from './bottom-edge';
|
|
8
|
+
export { BottomEdgeProvider, useBottomEdgeInset, useBottomEdgeLiveInset, useClaimBottomEdge, } from './bottom-edge';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabBarBase.d.ts","sourceRoot":"","sources":["../../../../src/tab-bar/TabBarBase.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"TabBarBase.d.ts","sourceRoot":"","sources":["../../../../src/tab-bar/TabBarBase.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAoBf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAiBL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AA8kB3E;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC;YAElB,WAAW;;EAGnC;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC;YAC1C,iBAAiB;;EAG/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA+BD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,oBAAoB,2CAsDtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAYjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAoBpF,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkT3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAqT3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
|
|
@@ -27,6 +27,21 @@
|
|
|
27
27
|
* edge, so two surfaces at that edge overlap rather than stack; the tallest is
|
|
28
28
|
* what a new surface has to clear. Summing would strand it at twice the height.
|
|
29
29
|
*
|
|
30
|
+
* ## Two numbers, because there are two questions
|
|
31
|
+
*
|
|
32
|
+
* A surface that collapses — the tab bar minimizes 58 -> 44 on scroll — occupies
|
|
33
|
+
* less than it reserves. Readers want different halves of that:
|
|
34
|
+
*
|
|
35
|
+
* - RESERVED (`useBottomEdgeInset`) never shrinks while the claimant is
|
|
36
|
+
* mounted. It is what must be kept permanently free: a list's bottom
|
|
37
|
+
* padding, a toast stack's offset. Tracking the collapse here would jitter a
|
|
38
|
+
* list's content size on every scroll and jump a toast 14px mid-display.
|
|
39
|
+
* - LIVE (`useBottomEdgeLiveInset`) follows the collapse. It is what a surface
|
|
40
|
+
* SITTING ON the edge wants, so it rides down with the bar instead of
|
|
41
|
+
* leaving a hole.
|
|
42
|
+
*
|
|
43
|
+
* A claimant that never collapses passes one number and both answers agree.
|
|
44
|
+
*
|
|
30
45
|
* ## Why an external store
|
|
31
46
|
*
|
|
32
47
|
* The claim set is mutable state living outside React. Reading it in a memoized
|
|
@@ -47,13 +62,15 @@ export declare namespace BottomEdgeProvider {
|
|
|
47
62
|
var displayName: string;
|
|
48
63
|
}
|
|
49
64
|
/**
|
|
50
|
-
* How much of the bottom edge is
|
|
65
|
+
* How much of the bottom edge is permanently RESERVED, in px.
|
|
51
66
|
*
|
|
52
|
-
*
|
|
67
|
+
* Never shrinks while its claimant is mounted, so it is the number for anything
|
|
68
|
+
* that must not move as the user scrolls — a list's bottom padding, a toast
|
|
69
|
+
* stack's offset:
|
|
53
70
|
*
|
|
54
71
|
* ```tsx
|
|
55
|
-
* const
|
|
56
|
-
* <
|
|
72
|
+
* const reserved = useBottomEdgeInset();
|
|
73
|
+
* <FlatList contentContainerStyle={{ paddingBottom: reserved + 12 }} />
|
|
57
74
|
* ```
|
|
58
75
|
*
|
|
59
76
|
* `0` outside a provider, and `0` on the first commit even inside one — a claim
|
|
@@ -63,15 +80,32 @@ export declare namespace BottomEdgeProvider {
|
|
|
63
80
|
*/
|
|
64
81
|
export declare function useBottomEdgeInset(): number;
|
|
65
82
|
/**
|
|
66
|
-
*
|
|
83
|
+
* How much of the bottom edge is occupied RIGHT NOW, in px — the same number as
|
|
84
|
+
* {@link useBottomEdgeInset} for a surface that does not collapse, and smaller
|
|
85
|
+
* while one does.
|
|
86
|
+
*
|
|
87
|
+
* This is what a surface sitting ON the edge wants, so it rides down with a
|
|
88
|
+
* minimizing tab bar rather than leaving a hole above it. It changes when the
|
|
89
|
+
* collapse STATE changes, not per frame: a claimant reports its settled
|
|
90
|
+
* footprint and the reader animates the difference itself, which keeps the
|
|
91
|
+
* motion on whatever animation system that reader already uses instead of
|
|
92
|
+
* forcing a shared one through React state.
|
|
93
|
+
*/
|
|
94
|
+
export declare function useBottomEdgeLiveInset(): number;
|
|
95
|
+
/**
|
|
96
|
+
* Claim the bottom edge for as long as the caller is mounted.
|
|
67
97
|
*
|
|
68
98
|
* The claimant owns its own placement — claiming does not move it. It declares
|
|
69
|
-
* the space it occupies so that everything reading
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
99
|
+
* the space it occupies so that everything reading the edge stays off it. Pass
|
|
100
|
+
* the FULL footprint (the surface's height plus the gap it holds off the window
|
|
101
|
+
* edge), which is the same number the surface positions itself with.
|
|
102
|
+
*
|
|
103
|
+
* `current` is what the surface occupies right now; it defaults to `reserved`,
|
|
104
|
+
* which is correct for anything that does not collapse. A surface that shrinks
|
|
105
|
+
* on scroll passes its live footprint as `current` and keeps `reserved` at its
|
|
106
|
+
* full size — see the two channels above for why both are needed.
|
|
73
107
|
*
|
|
74
108
|
* A no-op outside a provider, so a surface stays usable standalone.
|
|
75
109
|
*/
|
|
76
|
-
export declare function useClaimBottomEdge(
|
|
110
|
+
export declare function useClaimBottomEdge(reserved: number, current?: number): void;
|
|
77
111
|
//# sourceMappingURL=bottom-edge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bottom-edge.d.ts","sourceRoot":"","sources":["../../../../src/layout/bottom-edge.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bottom-edge.d.ts","sourceRoot":"","sources":["../../../../src/layout/bottom-edge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AAqEf;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAGjE;yBAHe,kBAAkB;;;AAYlC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAiB,GAAG,IAAI,CASrF"}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* parked there". A surface that floats at the bottom needs both.
|
|
6
6
|
*/
|
|
7
7
|
export { EDGE_GAP, windowEdgeGap } from './edge';
|
|
8
|
-
export { BottomEdgeProvider, useBottomEdgeInset, useClaimBottomEdge } from './bottom-edge';
|
|
8
|
+
export { BottomEdgeProvider, useBottomEdgeInset, useBottomEdgeLiveInset, useClaimBottomEdge, } from './bottom-edge';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabBarBase.d.ts","sourceRoot":"","sources":["../../../../src/tab-bar/TabBarBase.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"TabBarBase.d.ts","sourceRoot":"","sources":["../../../../src/tab-bar/TabBarBase.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAoBf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAiBL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AA8kB3E;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAC1C,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC;YAElB,WAAW;;EAGnC;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC;YAC1C,iBAAiB;;EAG/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA+BD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,oBAAoB,2CAsDtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAYjF"}
|
package/package.json
CHANGED
package/src/fab/Fab.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { memo, useMemo, type ComponentType } from 'react';
|
|
1
|
+
import React, { memo, useEffect, useMemo, useRef, type ComponentType } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Animated,
|
|
4
4
|
Pressable,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from 'react-native';
|
|
12
12
|
import { styled } from 'react-native-css';
|
|
13
13
|
|
|
14
|
-
import { useBottomEdgeInset } from '../layout/bottom-edge';
|
|
14
|
+
import { useBottomEdgeInset, useBottomEdgeLiveInset } from '../layout/bottom-edge';
|
|
15
15
|
import { useTheme } from '../theme/use-theme';
|
|
16
16
|
import { animation, borderRadius } from '../styles/tokens';
|
|
17
17
|
import { bloomShadowStyle } from '../design-tokens/shadows';
|
|
@@ -57,6 +57,16 @@ function resolveSize(size: FabSize | number): ResolvedSize {
|
|
|
57
57
|
return SIZE_CONFIG[size];
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Matches the tab bar's own `MINIMIZE_SPRING` (380ms, critically damped) closely
|
|
62
|
+
* enough that the two read as one movement. It cannot be that exact config: the
|
|
63
|
+
* bar animates with reanimated, which takes duration/dampingRatio, while this is
|
|
64
|
+
* RN's Animated, which takes stiffness/damping/mass. `usePressAnimation` — and
|
|
65
|
+
* therefore Button, Chip, Tabs, Checkbox, Radio and FrostedIconButton — is built
|
|
66
|
+
* on RN's Animated too, so the FAB cannot switch systems on its own.
|
|
67
|
+
*/
|
|
68
|
+
const COLLAPSE_SPRING = { stiffness: 120, damping: 22, mass: 1 } as const;
|
|
69
|
+
|
|
60
70
|
const DEFAULT_OFFSET = 16;
|
|
61
71
|
const DEFAULT_Z_INDEX = 50;
|
|
62
72
|
const HIT_SLOP = { top: 8, bottom: 8, left: 8, right: 8 } as const;
|
|
@@ -73,6 +83,10 @@ const HIT_SLOP = { top: 8, bottom: 8, left: 8, right: 8 } as const;
|
|
|
73
83
|
* lands above a floating tab bar instead of behind it. A z-index cannot fix that
|
|
74
84
|
* pairing: the bar's host is the last sibling of the app shell and paints over
|
|
75
85
|
* every descendant, so the FAB has to be somewhere else, not merely on top.
|
|
86
|
+
*
|
|
87
|
+
* It is the RESERVED inset, so this stays a static layout value. Following a
|
|
88
|
+
* collapsing bar is a TRANSFORM (see `collapseAnim`), which costs no layout pass
|
|
89
|
+
* and can run on the native driver while the user is mid-scroll.
|
|
76
90
|
*/
|
|
77
91
|
function placementStyle(
|
|
78
92
|
placement: FabPlacement,
|
|
@@ -158,11 +172,35 @@ const FabComponent: React.FC<FabProps> = ({
|
|
|
158
172
|
zIndex = DEFAULT_Z_INDEX,
|
|
159
173
|
}) => {
|
|
160
174
|
const bottomEdgeInset = useBottomEdgeInset();
|
|
175
|
+
const bottomEdgeLive = useBottomEdgeLiveInset();
|
|
161
176
|
const theme = useTheme();
|
|
162
177
|
const sizeConfig = useMemo(() => resolveSize(size), [size]);
|
|
163
178
|
const isExtended = label != null && label.length > 0;
|
|
164
179
|
const content = icon ?? children;
|
|
165
180
|
|
|
181
|
+
// How far the edge's surface has collapsed below what it reserves: 0 while the
|
|
182
|
+
// tab bar is expanded, 14 while it is minimized. Deliberately the DIFFERENCE
|
|
183
|
+
// rather than the live inset itself — both are 0 before the registry settles
|
|
184
|
+
// and both are equal once it has, so this stays 0 across mount and the FAB
|
|
185
|
+
// never slides in from the window edge on its first frame. Only a real
|
|
186
|
+
// collapse moves it.
|
|
187
|
+
const collapse = placement === 'bottom-right' || placement === 'bottom-left'
|
|
188
|
+
? bottomEdgeInset - bottomEdgeLive
|
|
189
|
+
: 0;
|
|
190
|
+
const collapseAnim = useRef(new Animated.Value(0)).current;
|
|
191
|
+
|
|
192
|
+
// An effect because RN's Animated has no declarative form — starting an
|
|
193
|
+
// animation is imperative by construction. `useNativeDriver` is what makes this
|
|
194
|
+
// safe to run during a scroll: the whole point of moving the follow onto a
|
|
195
|
+
// transform is that it never touches the JS thread once started.
|
|
196
|
+
useEffect(() => {
|
|
197
|
+
Animated.spring(collapseAnim, {
|
|
198
|
+
toValue: collapse,
|
|
199
|
+
useNativeDriver: true,
|
|
200
|
+
...COLLAPSE_SPRING,
|
|
201
|
+
}).start();
|
|
202
|
+
}, [collapse, collapseAnim]);
|
|
203
|
+
|
|
166
204
|
const { scaleAnim, onPressIn, onPressOut } = usePressAnimation(
|
|
167
205
|
disabled ? undefined : animation.pressScale,
|
|
168
206
|
);
|
|
@@ -236,7 +274,7 @@ const FabComponent: React.FC<FabProps> = ({
|
|
|
236
274
|
// cost is that a caller who sets `transform` replaces the press scale
|
|
237
275
|
// instead of composing with it — when the transform sat on a separate
|
|
238
276
|
// wrapper node the two multiplied.
|
|
239
|
-
{ transform: [{ scale: scaleAnim }] },
|
|
277
|
+
{ transform: [{ translateY: collapseAnim }, { scale: scaleAnim }] },
|
|
240
278
|
style,
|
|
241
279
|
]}
|
|
242
280
|
onPress={disabled ? undefined : onPress}
|