123 lines
3.7 KiB
React
123 lines
3.7 KiB
React
// Metro module 1585 (f1586).
|
|
import { createContext, useContext, useState, useCallback, forwardRef } from "react";
|
|
import { Dimensions, StyleSheet } from "react-native";
|
|
import { NativeSafeAreaProvider } from "./Module1586";
|
|
const context = createContext(null);
|
|
const context2 = createContext(null);
|
|
const styles = StyleSheet.create({
|
|
fill: {
|
|
flex: 1
|
|
}
|
|
});
|
|
let c1263_9 = "No safe area value available. Make sure you are rendering `<SafeAreaProvider>` at the top of your app.";
|
|
const Consumer = context.Consumer;
|
|
export { context as SafeAreaInsetsContext };
|
|
export { context2 as SafeAreaFrameContext };
|
|
export function SafeAreaProvider(props) {
|
|
const { children, initialMetrics, initialSafeAreaInsets, style, ...props2 } = props;
|
|
const context3 = useContext(context);
|
|
const context4 = useContext(context2);
|
|
let r25 = initialMetrics?.insets;
|
|
if (r25 == null) {
|
|
r25 = initialSafeAreaInsets;
|
|
}
|
|
if (r25 == null) {
|
|
r25 = context3;
|
|
}
|
|
if (r25 == null) {
|
|
r25 = null;
|
|
}
|
|
const [value, setState] = useState(r25);
|
|
let r33 = initialMetrics?.frame;
|
|
if (r33 == null) {
|
|
r33 = context4;
|
|
}
|
|
if (r33 == null) {
|
|
r33 = {
|
|
x: 0,
|
|
y: 0,
|
|
width: Dimensions.get("window").width,
|
|
height: Dimensions.get("window").height
|
|
};
|
|
}
|
|
const [value2, setState2] = useState(r33);
|
|
return <NativeSafeAreaProvider style={[styles.fill, style]} onInsetsChange={useCallback(({ nativeEvent }) => {
|
|
const { frame, insets } = nativeEvent;
|
|
setState2((prevState2) => {
|
|
let r5;
|
|
L6: {
|
|
if (frame) {
|
|
const height2 = frame.height;
|
|
const height = prevState2.height;
|
|
r5 = frame;
|
|
if (height2 !== height) {
|
|
break L6;
|
|
}
|
|
const width = frame.width;
|
|
const width2 = prevState2.width;
|
|
r5 = frame;
|
|
if (width !== width2) {
|
|
break L6;
|
|
}
|
|
const r8 = frame.x;
|
|
const r9 = prevState2.x;
|
|
r5 = frame;
|
|
if (r8 !== r9) {
|
|
break L6;
|
|
}
|
|
r5 = frame.y === prevState2.y ? prevState2 : frame;
|
|
} else {
|
|
r5 = prevState2;
|
|
}
|
|
}
|
|
return r5;
|
|
});
|
|
setState((prevState) => prevState && (insets.bottom === prevState.bottom && (insets.left === prevState.left && (insets.right === prevState.right && insets.top === prevState.top))) ? prevState : insets);
|
|
}, [])} {...props2}>
|
|
{value != null ? <context2.Provider value={value2}>
|
|
<context.Provider value={value}>{children}</context.Provider>
|
|
</context2.Provider> : null}
|
|
</NativeSafeAreaProvider>;
|
|
}
|
|
export function SafeAreaListener(props) {
|
|
const { onChange, style, children, ...rest } = props;
|
|
return <NativeSafeAreaProvider {...rest} style={[styles.fill, style]} onInsetsChange={(event) => {
|
|
onChange({
|
|
insets: event.nativeEvent.insets,
|
|
frame: event.nativeEvent.frame
|
|
});
|
|
}}>{children}</NativeSafeAreaProvider>;
|
|
}
|
|
export function useSafeAreaInsets() {
|
|
const context3 = useContext(context);
|
|
if (context3 == null) {
|
|
throw new Error(c1263_9);
|
|
}
|
|
return context3;
|
|
}
|
|
export function useSafeAreaFrame() {
|
|
const context3 = useContext(context2);
|
|
if (context3 == null) {
|
|
throw new Error(c1263_9);
|
|
}
|
|
return context3;
|
|
}
|
|
export function withSafeAreaInsets(Component) {
|
|
return forwardRef((a0, a1) => {
|
|
const context3 = useContext(context);
|
|
if (context3 == null) {
|
|
throw new Error(c1263_9);
|
|
}
|
|
return <Component {...a0} insets={context3} ref={a1} />;
|
|
});
|
|
}
|
|
export function useSafeArea() {
|
|
const context3 = useContext(context);
|
|
if (context3 == null) {
|
|
throw new Error(c1263_9);
|
|
}
|
|
return context3;
|
|
}
|
|
export { Consumer as SafeAreaConsumer };
|
|
export { context as SafeAreaContext };
|