Files
discord-decomp/modules/quests/native/BountiesModal/BountiesScrollPromptFooter.tsx
T
2026-11-01 12:12:55 +02:00

104 lines
4.8 KiB
TypeScript

// Metro module 14036 (f14037).
import { useMemo, useCallback } from "react";
import { StyleSheet } from "react-native";
import AccessibilityStore from "../../../a11y/AccessibilityStore";
import { QuestsExperimentLocations } from "../../QuestConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import * as _timing from "../../../../design/animation/reanimated/timing/timing";
import * as _timingPresets from "../../../../design/animation/reanimated/timing/timingPresets";
import { useStateFromStores } from "../../../../_bundle/Module589";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import ReanimatedRexport from "../../../reanimated/ReanimatedRexport";
import { BountiesScrollGradientRive } from "../../../../_bundle/Module3901";
import { useIsBountiesModalTransitionsRefactorEnabled } from "../../experiments/BountiesModalTransitionsRefactorExperiment";
import { useVisibilityTransition } from "./useVisibilityTransition";
import AnimatedEnterExitItem from "../../../../design/components/AnimatedEnterExitItem/native/AnimatedEnterExitItem";
let useStyles, t, n;
const BountiesScrollPromptFooterContent = function BountiesScrollPromptFooterContent(props) {
let c20864_1;
const { children, onContentLayout, zIndex, opacityStyle, visibilityOpacityStyle } = props;
c20864_1 = void 0;
const styles = useStyles();
const memo = useMemo(() => zIndex != null ? {
zIndex
} : void 0, [zIndex]);
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
const safeAreaInsets_native = useSafeAreaInsets_native();
c20864_1 = safeAreaInsets_native;
return <ReanimatedRexport.View style={[styles.root, visibilityOpacityStyle, memo]} pointerEvents="none">
<ReanimatedRexport.View style={[styles.gradient, opacityStyle]}>
<BountiesScrollGradientRive stateMachine="State Machine 1" fit="fill" alignment="bottom-center" withReducedMotion={stateFromStores ? "halt" : "play"} />
</ReanimatedRexport.View>
<ReanimatedRexport.View style={[styles.content, useMemo(() => ({
paddingBottom: Math.max(c20864_1.bottom, Module712.space.PX_8)
}), [safeAreaInsets_native.bottom]), opacityStyle]} onLayout={onContentLayout}>{children}</ReanimatedRexport.View>
</ReanimatedRexport.View>;
};
useStyles = createStyles(() => ({
root: {
position: "absolute",
bottom: 0,
left: 0,
right: 0
},
content: {
flex: 1,
minHeight: 97,
alignItems: "center",
justifyContent: "center",
paddingHorizontal: Module712.space.PX_16
},
gradient: {
...StyleSheet.absoluteFillObject
}
}));
const r34 = function t(a0) {
return {
opacity: _timing.withTiming(a0, _timingPresets.timingStandard, "respect-motion-settings")
};
};
r34.__closure = {
withTiming: _timing.withTiming,
timingStandard: _timingPresets.timingStandard
};
r34.__workletHash = 11416950434629;
r34.__initData = {
code: "function BountiesScrollPromptFooterTsx1(visible){const{withTiming,timingStandard}=this.__closure;return{opacity:withTiming(visible,timingStandard,'respect-motion-settings')};}"
};
t = r34;
const r43 = function n(a0, a1) {
return {
opacity: _timing.withTiming(a0, _timingPresets.timingStandard, "respect-motion-settings", a1)
};
};
r43.__closure = {
withTiming: _timing.withTiming,
timingStandard: _timingPresets.timingStandard
};
r43.__workletHash = 9928471408966;
r43.__initData = {
code: "function BountiesScrollPromptFooterTsx2(visible,cleanUp){const{withTiming,timingStandard}=this.__closure;return{opacity:withTiming(visible,timingStandard,'respect-motion-settings',cleanUp)};}"
};
n = r43;
export default function BountiesScrollPromptFooter(props) {
const { visible, ...props2 } = props;
const isBountiesModalTransitionsRefactorEnabled = useIsBountiesModalTransitionsRefactorEnabled(QuestsExperimentLocations.VIDEO_MODAL_MOBILE);
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
const callback = useCallback((a0, a1) => <BountiesScrollPromptFooterContent {...a0} visibilityOpacityStyle={a1} />, []);
const visibilityTransition = useVisibilityTransition({
visible,
entranceTiming: _timingPresets.timingStandard,
exitTiming: _timingPresets.timingStandard
});
const opacityStyle = visibilityTransition.opacityStyle;
let shouldRender = visibilityTransition.shouldRender;
if (isBountiesModalTransitionsRefactorEnabled) {
shouldRender = <AnimatedEnterExitItem useReducedMotion={stateFromStores} item={visible ? props2 : void 0} entering={t} exiting={n} renderItem={callback} />;
} else if (shouldRender) {
shouldRender = <BountiesScrollPromptFooterContent {...props2} visibilityOpacityStyle={opacityStyle} />;
}
return shouldRender;
};
export const BOUNTIES_MODAL_BASE_FOOTER_HEIGHT = 97;