Files
discord-decomp/_bundle/Module5628.jsx
T
2026-11-01 12:12:55 +02:00

234 lines
7.4 KiB
React

// Metro module 5628 (f5629).
import * as Module19 from "react";
import { useContext, useCallback, useState, useEffect, useMemo } from "react";
import { StyleSheet, View } from "react-native";
import { HeaderHeightContext, getHeaderTitle, HeaderBackContext, HeaderShownContext } from "./Module5579";
import useKeyboardManager from "./useKeyboardManager";
import { useTheme } from "./Module1481";
import Card from "./Card";
import Module5605 from "./Module5605";
let styles;
const r27 = Module19.memo(function CardContainer(props) {
let onPageChangeStart, onPageChangeCancel, onPageChangeConfirm, setState, headerTitle;
const { interpolationIndex, index, active, closing, gesture, focused, modal, getPreviousScene, getFocusedRoute, headerDarkContent, hasAbsoluteFloatHeader } = props;
let headerHeight = props.headerHeight;
const onHeaderHeightChange = props.onHeaderHeightChange;
let isParentHeaderShown = props.isParentHeaderShown;
const { isNextScreenTransparent, detachCurrentScreen, layout, onCloseRoute, onOpenRoute, onGestureCancel, onGestureEnd: onGestureEnd2, onGestureStart, onTransitionEnd, onTransitionStart, renderHeader, renderScene, safeAreaInsetBottom, safeAreaInsetLeft, safeAreaInsetRight, safeAreaInsetTop, scene } = props;
onPageChangeStart = void 0;
onPageChangeCancel = void 0;
onPageChangeConfirm = void 0;
setState = void 0;
headerTitle = void 0;
let r26 = useContext(HeaderHeightContext);
const keyboardManager = useKeyboardManager(useCallback(() => {
const descriptor = scene.descriptor;
const options = descriptor.options;
return descriptor.navigation.isFocused() && options.keyboardHandlingEnabled !== false;
}, [scene.descriptor]));
onPageChangeStart = keyboardManager.onPageChangeStart;
onPageChangeCancel = keyboardManager.onPageChangeCancel;
onPageChangeConfirm = keyboardManager.onPageChangeConfirm;
const insets = {
top: safeAreaInsetTop,
right: safeAreaInsetRight,
bottom: safeAreaInsetBottom,
left: safeAreaInsetLeft
};
const colors = useTheme().colors;
let pointerEvents = "box-none";
let state;
[state, setState] = useState("box-none");
useEffect(() => {
const next = scene.progress.next;
const r2 = next == null;
let r8 = void 0;
if (!r2) {
const addListener = next.addListener;
r8 = addListener == null ? void 0 : addListener.call(next, (a0) => {
setState(a0.value <= 0.1 ? "box-none" : "none");
});
}
let c25512_0 = r8;
return () => {
if (c25512_0) {
const next = scene.progress.next;
if (next != null) {
const removeListener = next.removeListener;
if (removeListener != null) {
removeListener.call(next, c25512_0);
}
}
}
};
}, [state, scene.progress.next]);
const options = scene.descriptor.options;
const { presentation, animationEnabled, cardOverlay, cardOverlayEnabled, cardShadowEnabled, cardStyle, cardStyleInterpolator, gestureDirection, gestureEnabled, gestureResponseDistance, gestureVelocityImpact, headerMode, headerShown, transitionSpec } = options;
const r99 = getPreviousScene({
route: scene.descriptor.route
});
let r100 = void 0;
if (r99) {
const descriptor = r99.descriptor;
headerTitle = getHeaderTitle(descriptor.options, descriptor.route.name);
r100 = headerTitle;
}
const memo = useMemo(() => headerTitle !== void 0 ? {
title: headerTitle
} : void 0, [r100]);
const props2 = {
interpolationIndex,
gestureDirection,
layout,
insets,
gesture,
current: scene.progress.current,
next: scene.progress.next,
closing,
onOpen: () => {
const route = scene.descriptor.route;
onTransitionEnd({
route
}, false);
onOpenRoute({
route
});
},
onClose: () => {
const route = scene.descriptor.route;
onTransitionEnd({
route
}, true);
onCloseRoute({
route
});
},
overlay: cardOverlay,
overlayEnabled: cardOverlayEnabled,
shadowEnabled: cardShadowEnabled,
onTransition: (a0) => {
let closing, route;
L9: {
closing = a0.closing;
const gesture = a0.gesture;
route = scene.descriptor.route;
if (gesture) {
if (active && closing) {
if (onPageChangeConfirm == null) {
break L9;
}
onPageChangeConfirm(false);
break L9;
}
if (onPageChangeCancel != null) {
onPageChangeCancel();
}
} else if (onPageChangeConfirm != null) {
onPageChangeConfirm(true);
}
}
if (onTransitionStart != null) {
onTransitionStart({
route
}, closing);
}
},
onGestureBegin: () => {
const route = scene.descriptor.route;
onPageChangeStart();
onGestureStart({
route
});
},
onGestureCanceled: () => {
const route = scene.descriptor.route;
onPageChangeCancel();
onGestureCancel({
route
});
},
onGestureEnd: () => {
onGestureEnd2({
route: scene.descriptor.route
});
},
gestureEnabled: index !== 0 && gestureEnabled,
gestureResponseDistance,
gestureVelocityImpact,
transitionSpec,
styleInterpolator: cardStyleInterpolator,
accessibilityElementsHidden: !focused,
importantForAccessibility: focused ? "auto" : "no-hide-descendants",
pointerEvents: null,
pageOverflowEnabled: null,
headerDarkContent: null,
containerStyle: null,
contentStyle: null,
style: null,
children: null
};
if (!active) {
pointerEvents = state;
}
props2.pointerEvents = pointerEvents;
const r129 = headerMode !== "float";
props2.pageOverflowEnabled = r129 && presentation !== "modal";
props2.headerDarkContent = headerDarkContent;
props2.containerStyle = hasAbsoluteFloatHeader ? headerMode !== "screen" ? {
marginTop: headerHeight
} : null : null;
props2.contentStyle = [{
backgroundColor: presentation !== "transparentModal" ? colors.background : "transparent"
}, cardStyle];
props2.style = [{
overflow: active ? void 0 : "hidden",
display: animationEnabled === false && isNextScreenTransparent === false && detachCurrentScreen !== false ? focused ? "flex" : "none" : "flex"
}, StyleSheet.absoluteFill];
const Provider = HeaderBackContext.Provider;
const Provider2 = HeaderShownContext.Provider;
if (!isParentHeaderShown) {
isParentHeaderShown = headerShown !== false;
}
const Provider3 = HeaderHeightContext.Provider;
if (!headerShown) {
if (r26 == null) {
r26 = 0;
}
headerHeight = r26;
}
props2.children = <View style={styles.container}>
<Module5605.Provider value={modal}>
<View style={styles.scene}>
<Provider value={memo}>
<Provider2 value={isParentHeaderShown}>
<Provider3 value={headerHeight}>
{renderScene({
route: scene.descriptor.route
})}
</Provider3>
</Provider2>
</Provider>
</View>
{r129 ? renderHeader({
mode: "screen",
layout,
scenes: [r99, scene],
getPreviousScene,
getFocusedRoute,
onContentHeightChange: onHeaderHeightChange
}) : null}
</Module5605.Provider>
</View>;
return <Card {...props2} />;
});
styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: "column-reverse"
},
scene: {
flex: 1
}
});
export default r27;