1 | import { useTheme } from '@react-navigation/native';
|
2 | import * as React from 'react';
|
3 | import { StatusBar, StyleSheet } from 'react-native';
|
4 | export 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 React.createElement(StatusBar, {
|
34 | animated: true,
|
35 | barStyle: overlapping && darkContent ? 'dark-content' : 'light-content'
|
36 | });
|
37 | }
|
38 |
|
\ | No newline at end of file |