59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
// Metro module 15021 (f15022).
|
|
import { useState } from "react";
|
|
import { StyleSheet } from "react-native";
|
|
import Module38 from "../../../_bundle/Module38";
|
|
import { ScreenContainer, Screen } from "../../../_bundle/Module4536";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
const useStyles = createStyles({
|
|
screens: {
|
|
flex: 1,
|
|
overflow: "hidden"
|
|
}
|
|
});
|
|
export function NativeFreezeScreens(props) {
|
|
const { children, activeIndex, detachInactiveScreens = true } = props;
|
|
const enabled = detachInactiveScreens;
|
|
let lazy = props.lazy;
|
|
if (lazy === void 0) {
|
|
lazy = true;
|
|
}
|
|
let c21532_2 = lazy;
|
|
let unmountOnBlur = props.unmountOnBlur;
|
|
if (unmountOnBlur === void 0) {
|
|
unmountOnBlur = false;
|
|
}
|
|
let c21532_3 = unmountOnBlur;
|
|
let freezeOnBlur2 = props.freezeOnBlur;
|
|
if (freezeOnBlur2 === void 0) {
|
|
freezeOnBlur2 = true;
|
|
}
|
|
const freezeOnBlur = freezeOnBlur2;
|
|
let preloadIndices = props.preloadIndices;
|
|
if (preloadIndices === void 0) {
|
|
preloadIndices = [];
|
|
}
|
|
let c21532_5 = preloadIndices;
|
|
const styles = useStyles();
|
|
Module38(activeIndex >= 0 && activeIndex < (Array.isArray(children) ? children.length : 1), "NativeFreezeScreens: invalid activeIndex");
|
|
const [state, setState] = useState([activeIndex]);
|
|
if (!state.includes(activeIndex)) {
|
|
setState([...state, activeIndex]);
|
|
}
|
|
return <ScreenContainer enabled={enabled} hasTwoStates style={styles.screens} nativeID="native-freeze-screens-container">
|
|
{(Array.isArray(children) ? children : [children]).map((item, index) => {
|
|
const r4 = activeIndex === index;
|
|
if (c21532_3 && !r4) {
|
|
return null;
|
|
}
|
|
if (c21532_2 && !state.includes(index) && !r4 && !c21532_5.includes(index)) {
|
|
return null;
|
|
}
|
|
return <Screen key={index} style={[StyleSheet.absoluteFill, {
|
|
zIndex: r4 ? 0 : -1
|
|
}]} activityState={r4 ? 2 : 0} enabled={enabled} freezeOnBlur={freezeOnBlur}>
|
|
{item}
|
|
</Screen>;
|
|
})}
|
|
</ScreenContainer>;
|
|
}
|