Files
discord-decomp/modules/freeze/native/NativeFreezeScreens.tsx
T
2026-11-01 12:12:55 +02:00

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>;
}