UNPKG

1.6 kBJavaScriptView Raw
1import { useTheme } from '@react-navigation/native';
2import * as React from 'react';
3import { StatusBar, StyleSheet } from 'react-native';
4export default function ModalStatusBarManager(_ref) {
5 var _flattenedStyle$trans, _flattenedStyle$trans2;
6
7 let {
8 dark,
9 layout,
10 insets,
11 style
12 } = _ref;
13 const {
14 dark: darkTheme
15 } = useTheme();
16 const [overlapping, setOverlapping] = React.useState(true);
17 const scale = 1 - 20 / layout.width;
18 const offset = (insets.top - 34) * scale;
19 const flattenedStyle = StyleSheet.flatten(style);
20 const translateY = flattenedStyle === null || flattenedStyle === void 0 ? void 0 : (_flattenedStyle$trans = flattenedStyle.transform) === null || _flattenedStyle$trans === void 0 ? void 0 : (_flattenedStyle$trans2 = _flattenedStyle$trans.find(s => s.translateY !== undefined)) === null || _flattenedStyle$trans2 === void 0 ? void 0 : _flattenedStyle$trans2.translateY;
21 React.useEffect(() => {
22 const listener = _ref2 => {
23 let {
24 value
25 } = _ref2;
26 setOverlapping(value < offset);
27 };
28
29 const sub = translateY === null || translateY === void 0 ? void 0 : translateY.addListener(listener);
30 return () => translateY === null || translateY === void 0 ? void 0 : translateY.removeListener(sub);
31 }, [offset, translateY]);
32 const darkContent = dark !== null && dark !== void 0 ? dark : !darkTheme;
33 return /*#__PURE__*/React.createElement(StatusBar, {
34 animated: true,
35 barStyle: overlapping && darkContent ? 'dark-content' : 'light-content'
36 });
37}
38//# sourceMappingURL=ModalStatusBarManager.js.map
\No newline at end of file