@oxyhq/bloom 0.6.2 → 0.6.4
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/loading/Loading.js +26 -85
- package/lib/commonjs/loading/Loading.js.map +1 -1
- package/lib/commonjs/loading/SpinnerIcon.js +20 -27
- package/lib/commonjs/loading/SpinnerIcon.js.map +1 -1
- package/lib/commonjs/segmented-control/index.js +48 -11
- package/lib/commonjs/segmented-control/index.js.map +1 -1
- package/lib/module/loading/Loading.js +15 -74
- package/lib/module/loading/Loading.js.map +1 -1
- package/lib/module/loading/SpinnerIcon.js +15 -22
- package/lib/module/loading/SpinnerIcon.js.map +1 -1
- package/lib/module/segmented-control/index.js +49 -12
- package/lib/module/segmented-control/index.js.map +1 -1
- package/lib/typescript/commonjs/loading/Loading.d.ts.map +1 -1
- package/lib/typescript/commonjs/loading/SpinnerIcon.d.ts +2 -2
- package/lib/typescript/commonjs/loading/SpinnerIcon.d.ts.map +1 -1
- package/lib/typescript/commonjs/segmented-control/index.d.ts +9 -4
- package/lib/typescript/commonjs/segmented-control/index.d.ts.map +1 -1
- package/lib/typescript/module/loading/Loading.d.ts.map +1 -1
- package/lib/typescript/module/loading/SpinnerIcon.d.ts +2 -2
- package/lib/typescript/module/loading/SpinnerIcon.d.ts.map +1 -1
- package/lib/typescript/module/segmented-control/index.d.ts +9 -4
- package/lib/typescript/module/segmented-control/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/loading/Loading.tsx +19 -74
- package/src/loading/SpinnerIcon.tsx +19 -22
- package/src/segmented-control/index.tsx +65 -14
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Loading = 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 _tokens = require("../styles/tokens.js");
|
|
11
|
-
var _lazyRequire = require("../utils/lazy-require.js");
|
|
12
12
|
var _SpinnerIcon = require("./SpinnerIcon.js");
|
|
13
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
14
|
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); }
|
|
@@ -26,10 +26,6 @@ const SIZE_CONFIG = {
|
|
|
26
26
|
text: 16
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
// Lazy-loaded reanimated for the top variant
|
|
31
|
-
|
|
32
|
-
const getReanimated = (0, _lazyRequire.lazyRequire)('react-native-reanimated');
|
|
33
29
|
const SpinnerLoading = ({
|
|
34
30
|
size = 'medium',
|
|
35
31
|
color,
|
|
@@ -64,58 +60,49 @@ const SpinnerLoading = ({
|
|
|
64
60
|
})]
|
|
65
61
|
});
|
|
66
62
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
* Extracted to a dedicated component so all hooks are called unconditionally,
|
|
71
|
-
* satisfying the Rules of Hooks and React Compiler requirements.
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
const AnimatedTopLoading = ({
|
|
75
|
-
showLoading,
|
|
76
|
-
targetHeight,
|
|
77
|
-
effectiveIconSize,
|
|
78
|
-
spinnerColor,
|
|
79
|
-
spinnerIcon,
|
|
63
|
+
const TopLoading = ({
|
|
64
|
+
size = 'medium',
|
|
65
|
+
color,
|
|
80
66
|
style,
|
|
81
|
-
|
|
82
|
-
|
|
67
|
+
showLoading = true,
|
|
68
|
+
iconSize,
|
|
69
|
+
heightOffset = 0,
|
|
70
|
+
spinnerIcon,
|
|
71
|
+
testID
|
|
83
72
|
}) => {
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
const opacity = useSharedValue(showLoading ? 1 : 0);
|
|
93
|
-
const translateY = useSharedValue(showLoading ? 0 : -targetHeight);
|
|
73
|
+
const theme = (0, _useTheme.useTheme)();
|
|
74
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
75
|
+
const effectiveIconSize = iconSize ?? sizeConfig.spinner;
|
|
76
|
+
const targetHeight = Math.max(0, effectiveIconSize + sizeConfig.spinner + heightOffset);
|
|
77
|
+
const spinnerColor = color ?? theme.colors.primary;
|
|
78
|
+
const height = (0, _reactNativeReanimated.useSharedValue)(showLoading ? targetHeight : 0);
|
|
79
|
+
const opacity = (0, _reactNativeReanimated.useSharedValue)(showLoading ? 1 : 0);
|
|
80
|
+
const translateY = (0, _reactNativeReanimated.useSharedValue)(showLoading ? 0 : -targetHeight);
|
|
94
81
|
(0, _react.useEffect)(() => {
|
|
95
82
|
const timingConfig = {
|
|
96
83
|
duration: _tokens.animation.duration.slow,
|
|
97
|
-
easing: Easing.out(Easing.cubic)
|
|
84
|
+
easing: _reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)
|
|
98
85
|
};
|
|
99
|
-
height.value = withTiming(showLoading ? targetHeight : 0, timingConfig);
|
|
100
|
-
opacity.value = withTiming(showLoading ? 1 : 0, timingConfig);
|
|
101
|
-
translateY.value = withTiming(showLoading ? 0 : -targetHeight, timingConfig);
|
|
102
|
-
// Easing, withTiming: module-level constants from
|
|
86
|
+
height.value = (0, _reactNativeReanimated.withTiming)(showLoading ? targetHeight : 0, timingConfig);
|
|
87
|
+
opacity.value = (0, _reactNativeReanimated.withTiming)(showLoading ? 1 : 0, timingConfig);
|
|
88
|
+
translateY.value = (0, _reactNativeReanimated.withTiming)(showLoading ? 0 : -targetHeight, timingConfig);
|
|
89
|
+
// Easing, withTiming: module-level constants from a static import, stable.
|
|
103
90
|
// height/opacity/translateY: shared value objects, stable references.
|
|
104
91
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
105
92
|
}, [showLoading, targetHeight]);
|
|
106
|
-
const containerAnimated = useAnimatedStyle(() => ({
|
|
93
|
+
const containerAnimated = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
107
94
|
height: height.value
|
|
108
95
|
}));
|
|
109
|
-
const innerAnimated = useAnimatedStyle(() => ({
|
|
96
|
+
const innerAnimated = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
110
97
|
opacity: opacity.value,
|
|
111
98
|
transform: [{
|
|
112
99
|
translateY: translateY.value
|
|
113
100
|
}]
|
|
114
101
|
}));
|
|
115
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
|
|
116
103
|
style: [styles.topContainer, containerAnimated],
|
|
117
104
|
testID: testID,
|
|
118
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
105
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
|
|
119
106
|
style: [styles.topLoadingView, {
|
|
120
107
|
height: targetHeight
|
|
121
108
|
}, innerAnimated, style],
|
|
@@ -126,52 +113,6 @@ const AnimatedTopLoading = ({
|
|
|
126
113
|
})
|
|
127
114
|
});
|
|
128
115
|
};
|
|
129
|
-
const TopLoading = ({
|
|
130
|
-
size = 'medium',
|
|
131
|
-
color,
|
|
132
|
-
style,
|
|
133
|
-
showLoading = true,
|
|
134
|
-
iconSize,
|
|
135
|
-
heightOffset = 0,
|
|
136
|
-
spinnerIcon,
|
|
137
|
-
testID
|
|
138
|
-
}) => {
|
|
139
|
-
const theme = (0, _useTheme.useTheme)();
|
|
140
|
-
const sizeConfig = SIZE_CONFIG[size];
|
|
141
|
-
const effectiveIconSize = iconSize ?? sizeConfig.spinner;
|
|
142
|
-
const targetHeight = Math.max(0, effectiveIconSize + sizeConfig.spinner + heightOffset);
|
|
143
|
-
const spinnerColor = color ?? theme.colors.primary;
|
|
144
|
-
const reanimated = getReanimated();
|
|
145
|
-
if (!reanimated) {
|
|
146
|
-
// Non-animated fallback when reanimated is not available
|
|
147
|
-
if (!showLoading) return null;
|
|
148
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
149
|
-
style: [styles.topContainer, {
|
|
150
|
-
height: targetHeight
|
|
151
|
-
}, style],
|
|
152
|
-
testID: testID,
|
|
153
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
154
|
-
style: [styles.topLoadingView, {
|
|
155
|
-
height: targetHeight
|
|
156
|
-
}],
|
|
157
|
-
children: spinnerIcon ?? /*#__PURE__*/(0, _jsxRuntime.jsx)(_SpinnerIcon.SpinnerIcon, {
|
|
158
|
-
size: effectiveIconSize,
|
|
159
|
-
color: spinnerColor
|
|
160
|
-
})
|
|
161
|
-
})
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedTopLoading, {
|
|
165
|
-
showLoading: showLoading,
|
|
166
|
-
targetHeight: targetHeight,
|
|
167
|
-
effectiveIconSize: effectiveIconSize,
|
|
168
|
-
spinnerColor: spinnerColor,
|
|
169
|
-
spinnerIcon: spinnerIcon,
|
|
170
|
-
style: style,
|
|
171
|
-
testID: testID,
|
|
172
|
-
reanimated: reanimated
|
|
173
|
-
});
|
|
174
|
-
};
|
|
175
116
|
const SkeletonLoading = ({
|
|
176
117
|
lines = 3,
|
|
177
118
|
width = '100%',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_useTheme","_tokens","_SpinnerIcon","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","spinner","text","medium","large","SpinnerLoading","size","color","className","textStyle","style","showText","iconSize","spinnerIcon","testID","theme","useTheme","sizeConfig","effectiveIconSize","spinnerColor","colors","primary","textColor","textSecondary","jsxs","View","styles","container","children","jsx","SpinnerIcon","Text","fontSize","marginTop","TopLoading","showLoading","heightOffset","targetHeight","Math","max","height","useSharedValue","opacity","translateY","useEffect","timingConfig","duration","animation","slow","easing","Easing","out","cubic","value","withTiming","containerAnimated","useAnimatedStyle","innerAnimated","transform","topContainer","topLoadingView","SkeletonLoading","lines","width","lineHeight","skeletonColor","backgroundSecondary","skeletonLines","useMemo","Array","from","length","_","index","skeletonLine","backgroundColor","marginBottom","skeletonContainer","InlineLoading","inlineContainer","marginLeft","LoadingComponent","props","variant","Loading","exports","memo","displayName","StyleSheet","create","alignItems","justifyContent","padding","textAlign","position","overflow","top","left","borderRadius","flexDirection"],"sourceRoot":"../../../src","sources":["loading/Loading.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,54 +6,49 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.SpinnerIcon = 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 _lazyRequire = require("../utils/lazy-require.js");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
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); }
|
|
12
|
-
//
|
|
13
|
-
//
|
|
13
|
+
// react-native-svg is loaded lazily so the loading module can fall back to
|
|
14
|
+
// ActivityIndicator when the host app doesn't ship SVG support. Reanimated,
|
|
15
|
+
// by contrast, MUST be statically imported: the worklets Babel plugin
|
|
16
|
+
// performs build-time closure analysis (`__closure` metadata) that fails on
|
|
17
|
+
// runtime requires, which would crash the UI thread with
|
|
18
|
+
// "Tried to synchronously call a non-worklet function `addListener`".
|
|
14
19
|
|
|
15
20
|
const getSvgModule = (0, _lazyRequire.lazyRequire)('react-native-svg');
|
|
16
|
-
const getReanimated = (0, _lazyRequire.lazyRequire)('react-native-reanimated');
|
|
17
21
|
/**
|
|
18
22
|
* Inner component that unconditionally calls Reanimated hooks.
|
|
19
|
-
* Only rendered when
|
|
23
|
+
* Only rendered when react-native-svg is available.
|
|
20
24
|
*/
|
|
21
25
|
const AnimatedSpinner = ({
|
|
22
26
|
color = 'currentColor',
|
|
23
27
|
size = 26,
|
|
24
28
|
className,
|
|
25
29
|
style,
|
|
26
|
-
svg
|
|
27
|
-
reanimated
|
|
30
|
+
svg
|
|
28
31
|
}) => {
|
|
29
32
|
const {
|
|
30
33
|
default: Svg,
|
|
31
34
|
Rect
|
|
32
35
|
} = svg;
|
|
33
|
-
const
|
|
34
|
-
default: Animated,
|
|
35
|
-
useAnimatedStyle,
|
|
36
|
-
useSharedValue,
|
|
37
|
-
withRepeat,
|
|
38
|
-
withTiming,
|
|
39
|
-
Easing
|
|
40
|
-
} = reanimated;
|
|
41
|
-
const rotation = useSharedValue(0);
|
|
36
|
+
const rotation = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
42
37
|
(0, _react.useEffect)(() => {
|
|
43
|
-
rotation.value = withRepeat(withTiming(360, {
|
|
38
|
+
rotation.value = (0, _reactNativeReanimated.withRepeat)((0, _reactNativeReanimated.withTiming)(360, {
|
|
44
39
|
duration: 400,
|
|
45
|
-
easing: Easing.linear
|
|
40
|
+
easing: _reactNativeReanimated.Easing.linear
|
|
46
41
|
}), -1, false);
|
|
47
|
-
//
|
|
48
|
-
// are module-level
|
|
42
|
+
// rotation is a stable shared value reference; withRepeat/withTiming/Easing
|
|
43
|
+
// are module-level constants from a static import and are stable too.
|
|
49
44
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
45
|
}, []);
|
|
51
|
-
const animatedStyle = useAnimatedStyle(() => ({
|
|
46
|
+
const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
52
47
|
transform: [{
|
|
53
48
|
rotate: `${rotation.value}deg`
|
|
54
49
|
}]
|
|
55
50
|
}));
|
|
56
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
51
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
|
|
57
52
|
style: [{
|
|
58
53
|
width: size,
|
|
59
54
|
height: size,
|
|
@@ -154,8 +149,8 @@ const AnimatedSpinner = ({
|
|
|
154
149
|
|
|
155
150
|
/**
|
|
156
151
|
* iOS-style SVG spinner with 8 rotating rectangles and an opacity gradient trail.
|
|
157
|
-
* Requires react-native-svg and react-native-reanimated
|
|
158
|
-
* Falls back to ActivityIndicator if
|
|
152
|
+
* Requires react-native-svg (lazy) and react-native-reanimated (static).
|
|
153
|
+
* Falls back to ActivityIndicator if react-native-svg is missing.
|
|
159
154
|
*/
|
|
160
155
|
const SpinnerIcon = ({
|
|
161
156
|
color = 'currentColor',
|
|
@@ -164,8 +159,7 @@ const SpinnerIcon = ({
|
|
|
164
159
|
style
|
|
165
160
|
}) => {
|
|
166
161
|
const svg = getSvgModule();
|
|
167
|
-
|
|
168
|
-
if (!svg || !reanimated) {
|
|
162
|
+
if (!svg) {
|
|
169
163
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
170
164
|
size: size > 30 ? 'large' : 'small',
|
|
171
165
|
color: color
|
|
@@ -176,8 +170,7 @@ const SpinnerIcon = ({
|
|
|
176
170
|
size: size,
|
|
177
171
|
className: className,
|
|
178
172
|
style: style,
|
|
179
|
-
svg: svg
|
|
180
|
-
reanimated: reanimated
|
|
173
|
+
svg: svg
|
|
181
174
|
});
|
|
182
175
|
};
|
|
183
176
|
exports.SpinnerIcon = SpinnerIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_lazyRequire","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getSvgModule","lazyRequire","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_lazyRequire","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getSvgModule","lazyRequire","AnimatedSpinner","color","size","className","style","svg","Svg","Rect","rotation","useSharedValue","useEffect","value","withRepeat","withTiming","duration","easing","Easing","linear","animatedStyle","useAnimatedStyle","transform","rotate","jsx","View","width","height","alignItems","justifyContent","children","jsxs","viewBox","fill","opacity","rx","ry","x","y","SpinnerIcon","ActivityIndicator","exports","displayName"],"sourceRoot":"../../../src","sources":["loading/SpinnerIcon.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,7 +11,6 @@ var _reactNative = require("react-native");
|
|
|
11
11
|
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
12
12
|
var _useTheme = require("../theme/use-theme.js");
|
|
13
13
|
var _index = require("../styles/index.js");
|
|
14
|
-
var _index2 = require("../button/index.js");
|
|
15
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
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); }
|
|
17
16
|
const InternalContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
@@ -67,13 +66,24 @@ function Root({
|
|
|
67
66
|
}
|
|
68
67
|
};
|
|
69
68
|
}, [value, selectedPosition, setSelectedPosition, onChange, type, size]);
|
|
69
|
+
|
|
70
|
+
// Height of the wrapping pill matches the active item height (item
|
|
71
|
+
// `minHeight` + 4px outer `p_xs` padding on both sides). Locking the
|
|
72
|
+
// outer View to this exact height keeps the control as a tight inline
|
|
73
|
+
// pill on every platform — without it, a parent column flex context
|
|
74
|
+
// (the default on a `<View>`) would let the Root stretch vertically
|
|
75
|
+
// and the items inside would inherit that stretched height, blowing
|
|
76
|
+
// the control up into a giant block on native.
|
|
77
|
+
const itemMinHeight = size === 'large' ? 40 : 32;
|
|
78
|
+
const pillHeight = itemMinHeight + 8;
|
|
70
79
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
71
80
|
accessibilityLabel: label,
|
|
72
81
|
accessibilityHint: accessibilityHint ?? '',
|
|
73
|
-
style: [_index.atoms.w_full, _index.atoms.
|
|
82
|
+
style: [_index.atoms.w_full, _index.atoms.relative, _index.atoms.flex_row, _index.atoms.align_center, {
|
|
74
83
|
backgroundColor: theme.colors.contrast50
|
|
75
84
|
}, {
|
|
76
|
-
borderRadius: 14
|
|
85
|
+
borderRadius: 14,
|
|
86
|
+
height: pillHeight
|
|
77
87
|
}, _index.atoms.p_xs, style],
|
|
78
88
|
role: type === 'tabs' ? 'tablist' : 'radiogroup',
|
|
79
89
|
children: [selectedPosition !== null && /*#__PURE__*/(0, _jsxRuntime.jsx)(Slider, {
|
|
@@ -91,7 +101,10 @@ function Item({
|
|
|
91
101
|
style,
|
|
92
102
|
children,
|
|
93
103
|
onPress: onPressProp,
|
|
94
|
-
|
|
104
|
+
accessibilityLabel,
|
|
105
|
+
accessibilityHint,
|
|
106
|
+
testID,
|
|
107
|
+
disabled
|
|
95
108
|
}) {
|
|
96
109
|
const [position, setPosition] = (0, _react.useState)(null);
|
|
97
110
|
const ctx = (0, _react.useContext)(InternalContext);
|
|
@@ -115,8 +128,22 @@ function Item({
|
|
|
115
128
|
ctx.onSelectValue(value, position);
|
|
116
129
|
onPressProp?.();
|
|
117
130
|
}, [ctx, value, position, onPressProp]);
|
|
131
|
+
|
|
132
|
+
// We render the segment as a flat `Pressable` (not Bloom's `Button`)
|
|
133
|
+
// for two reasons:
|
|
134
|
+
// 1. Layout: we need the touch target to participate directly in the
|
|
135
|
+
// Root's row flex layout so `flex: 1` distributes the items
|
|
136
|
+
// evenly on every platform. Bloom Button wraps its Pressable in
|
|
137
|
+
// an Animated.View that doesn't forward layout-affecting styles,
|
|
138
|
+
// which would collapse the segment to its natural text width.
|
|
139
|
+
// 2. Semantics: the Root carries `role="tablist"`/`"radiogroup"` and
|
|
140
|
+
// each item carries `role="tab"`/`"radio"`. Bloom Button always
|
|
141
|
+
// adds `accessibilityRole="button"` — that overrides the correct
|
|
142
|
+
// a11y role for tablist children.
|
|
143
|
+
const itemRole = ctx.type === 'tabs' ? 'tab' : 'radio';
|
|
144
|
+
const itemMinHeight = ctx.size === 'large' ? 40 : 32;
|
|
118
145
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
119
|
-
style: [_index.atoms.flex_1, _index.atoms.flex_row],
|
|
146
|
+
style: [_index.atoms.flex_1, _index.atoms.flex_row, _index.atoms.align_stretch],
|
|
120
147
|
onLayout: evt => {
|
|
121
148
|
const measuredPosition = {
|
|
122
149
|
x: evt.nativeEvent.layout.x,
|
|
@@ -127,14 +154,24 @@ function Item({
|
|
|
127
154
|
}
|
|
128
155
|
setPosition(measuredPosition);
|
|
129
156
|
},
|
|
130
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
131
|
-
...props,
|
|
157
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
132
158
|
onPress: onPress,
|
|
133
|
-
accessibilityLabel:
|
|
134
|
-
accessibilityHint:
|
|
135
|
-
|
|
136
|
-
|
|
159
|
+
accessibilityLabel: accessibilityLabel,
|
|
160
|
+
accessibilityHint: accessibilityHint,
|
|
161
|
+
accessibilityState: {
|
|
162
|
+
selected: active,
|
|
163
|
+
disabled: !!disabled
|
|
164
|
+
},
|
|
165
|
+
role: itemRole,
|
|
166
|
+
disabled: disabled,
|
|
167
|
+
testID: testID,
|
|
168
|
+
style: ({
|
|
169
|
+
pressed
|
|
170
|
+
}) => [_index.atoms.flex_1, _index.atoms.flex_row, _index.atoms.align_center, _index.atoms.justify_center, _index.atoms.bg_transparent, _index.atoms.px_sm, _index.atoms.py_xs, {
|
|
171
|
+
minHeight: itemMinHeight,
|
|
137
172
|
borderRadius: 10
|
|
173
|
+
}, pressed && !disabled && {
|
|
174
|
+
opacity: 0.7
|
|
138
175
|
}, style],
|
|
139
176
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(InternalItemContext.Provider, {
|
|
140
177
|
value: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_interopRequireWildcard","_useTheme","_index","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_reactNativeReanimated","_interopRequireWildcard","_useTheme","_index","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","InternalContext","createContext","Root","label","type","size","value","onChange","children","style","accessibilityHint","theme","useTheme","selectedPosition","setSelectedPosition","useState","contextValue","useMemo","selectedValue","onSelectValue","val","position","updatePosition","currPos","width","x","itemMinHeight","pillHeight","jsxs","View","accessibilityLabel","a","w_full","relative","flex_row","align_center","backgroundColor","colors","contrast50","borderRadius","height","p_xs","role","jsx","Slider","Provider","InternalItemContext","Item","onPress","onPressProp","testID","disabled","setPosition","ctx","useContext","Error","active","needsUpdate","updatePositionRef","useRef","current","positionRef","useLayoutEffect","useCallback","itemRole","flex_1","align_stretch","onLayout","evt","measuredPosition","nativeEvent","layout","Pressable","accessibilityState","selected","pressed","justify_center","bg_transparent","px_sm","py_xs","minHeight","opacity","ItemText","props","Text","text_center","text_md","font_medium","px_xs","color","text","textTertiary","nativeLayout","Platform","OS","LinearTransition","easing","Easing","out","exp","undefined","absolute","background","top","bottom","left","platform","web","boxShadow","ios","shadowColor","shadowOffset","shadowOpacity","shadowRadius","android","elevation","native","transform","translateX"],"sourceRoot":"../../../src","sources":["segmented-control/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { memo, useEffect, useMemo } from 'react';
|
|
4
4
|
import { View, Text, StyleSheet } from 'react-native';
|
|
5
|
+
import Animated, { Easing, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
|
|
5
6
|
import { useTheme } from "../theme/use-theme.js";
|
|
6
7
|
import { animation } from "../styles/tokens.js";
|
|
7
|
-
import { lazyRequire } from "../utils/lazy-require.js";
|
|
8
8
|
import { SpinnerIcon } from "./SpinnerIcon.js";
|
|
9
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
10
|
const SIZE_CONFIG = {
|
|
@@ -21,10 +21,6 @@ const SIZE_CONFIG = {
|
|
|
21
21
|
text: 16
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
|
|
25
|
-
// Lazy-loaded reanimated for the top variant
|
|
26
|
-
|
|
27
|
-
const getReanimated = lazyRequire('react-native-reanimated');
|
|
28
24
|
const SpinnerLoading = ({
|
|
29
25
|
size = 'medium',
|
|
30
26
|
color,
|
|
@@ -59,30 +55,21 @@ const SpinnerLoading = ({
|
|
|
59
55
|
})]
|
|
60
56
|
});
|
|
61
57
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* Extracted to a dedicated component so all hooks are called unconditionally,
|
|
66
|
-
* satisfying the Rules of Hooks and React Compiler requirements.
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
const AnimatedTopLoading = ({
|
|
70
|
-
showLoading,
|
|
71
|
-
targetHeight,
|
|
72
|
-
effectiveIconSize,
|
|
73
|
-
spinnerColor,
|
|
74
|
-
spinnerIcon,
|
|
58
|
+
const TopLoading = ({
|
|
59
|
+
size = 'medium',
|
|
60
|
+
color,
|
|
75
61
|
style,
|
|
76
|
-
|
|
77
|
-
|
|
62
|
+
showLoading = true,
|
|
63
|
+
iconSize,
|
|
64
|
+
heightOffset = 0,
|
|
65
|
+
spinnerIcon,
|
|
66
|
+
testID
|
|
78
67
|
}) => {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
Easing
|
|
85
|
-
} = reanimated;
|
|
68
|
+
const theme = useTheme();
|
|
69
|
+
const sizeConfig = SIZE_CONFIG[size];
|
|
70
|
+
const effectiveIconSize = iconSize ?? sizeConfig.spinner;
|
|
71
|
+
const targetHeight = Math.max(0, effectiveIconSize + sizeConfig.spinner + heightOffset);
|
|
72
|
+
const spinnerColor = color ?? theme.colors.primary;
|
|
86
73
|
const height = useSharedValue(showLoading ? targetHeight : 0);
|
|
87
74
|
const opacity = useSharedValue(showLoading ? 1 : 0);
|
|
88
75
|
const translateY = useSharedValue(showLoading ? 0 : -targetHeight);
|
|
@@ -94,7 +81,7 @@ const AnimatedTopLoading = ({
|
|
|
94
81
|
height.value = withTiming(showLoading ? targetHeight : 0, timingConfig);
|
|
95
82
|
opacity.value = withTiming(showLoading ? 1 : 0, timingConfig);
|
|
96
83
|
translateY.value = withTiming(showLoading ? 0 : -targetHeight, timingConfig);
|
|
97
|
-
// Easing, withTiming: module-level constants from
|
|
84
|
+
// Easing, withTiming: module-level constants from a static import, stable.
|
|
98
85
|
// height/opacity/translateY: shared value objects, stable references.
|
|
99
86
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
100
87
|
}, [showLoading, targetHeight]);
|
|
@@ -121,52 +108,6 @@ const AnimatedTopLoading = ({
|
|
|
121
108
|
})
|
|
122
109
|
});
|
|
123
110
|
};
|
|
124
|
-
const TopLoading = ({
|
|
125
|
-
size = 'medium',
|
|
126
|
-
color,
|
|
127
|
-
style,
|
|
128
|
-
showLoading = true,
|
|
129
|
-
iconSize,
|
|
130
|
-
heightOffset = 0,
|
|
131
|
-
spinnerIcon,
|
|
132
|
-
testID
|
|
133
|
-
}) => {
|
|
134
|
-
const theme = useTheme();
|
|
135
|
-
const sizeConfig = SIZE_CONFIG[size];
|
|
136
|
-
const effectiveIconSize = iconSize ?? sizeConfig.spinner;
|
|
137
|
-
const targetHeight = Math.max(0, effectiveIconSize + sizeConfig.spinner + heightOffset);
|
|
138
|
-
const spinnerColor = color ?? theme.colors.primary;
|
|
139
|
-
const reanimated = getReanimated();
|
|
140
|
-
if (!reanimated) {
|
|
141
|
-
// Non-animated fallback when reanimated is not available
|
|
142
|
-
if (!showLoading) return null;
|
|
143
|
-
return /*#__PURE__*/_jsx(View, {
|
|
144
|
-
style: [styles.topContainer, {
|
|
145
|
-
height: targetHeight
|
|
146
|
-
}, style],
|
|
147
|
-
testID: testID,
|
|
148
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
149
|
-
style: [styles.topLoadingView, {
|
|
150
|
-
height: targetHeight
|
|
151
|
-
}],
|
|
152
|
-
children: spinnerIcon ?? /*#__PURE__*/_jsx(SpinnerIcon, {
|
|
153
|
-
size: effectiveIconSize,
|
|
154
|
-
color: spinnerColor
|
|
155
|
-
})
|
|
156
|
-
})
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
return /*#__PURE__*/_jsx(AnimatedTopLoading, {
|
|
160
|
-
showLoading: showLoading,
|
|
161
|
-
targetHeight: targetHeight,
|
|
162
|
-
effectiveIconSize: effectiveIconSize,
|
|
163
|
-
spinnerColor: spinnerColor,
|
|
164
|
-
spinnerIcon: spinnerIcon,
|
|
165
|
-
style: style,
|
|
166
|
-
testID: testID,
|
|
167
|
-
reanimated: reanimated
|
|
168
|
-
});
|
|
169
|
-
};
|
|
170
111
|
const SkeletonLoading = ({
|
|
171
112
|
lines = 3,
|
|
172
113
|
width = '100%',
|