Files
discord-decomp/design/components/Card/native/Card.native.tsx
T
2026-11-01 12:12:55 +02:00

128 lines
7.0 KiB
TypeScript

// Metro module 5222 (f5223).
import _objectWithoutProperties from "../../../../_bundle/_objectWithoutProperties";
import { useMemo, useCallback } from "react";
import { View, Pressable } from "react-native";
import * as _ReanimatedRexport from "../../../../modules/reanimated/ReanimatedRexport";
import ReanimatedRexport, { useSharedValue, useAnimatedStyle } from "../../../../modules/reanimated/ReanimatedRexport";
import Module712 from "../../../../_bundle/Module712";
import { createStyleProperties, createStyles } from "../../Styles/native/createStyles";
import { createCardShadowToken } from "./CardTokens.native";
import MobileVisualRefreshExperiment from "../../../../modules/themes/experiments/MobileVisualRefreshExperiment";
import { useToken } from "../../../tokens/native/useToken";
import { isAndroid } from "../../../../utils/PlatformUtils";
import * as _spring from "../../../animation/reanimated/spring/spring";
import * as _springPresets from "../../../animation/reanimated/spring/springPresets";
import { AnimatedPressableHighlight } from "../../experimental/Pressables/native/AnimatedPressableHighlight.native";
let _excluded, AnimatedComponent, styleProperties, useStyles, PressableCard, __initData;
export function Card(props) {
const { start: start2 = true, end: end2 = true, shadow = "none", border = "faint", variant = "primary", ...props2 } = props;
const isRefreshEnabled = MobileVisualRefreshExperiment("Card");
const token = useToken(Module712.modules.mobile.CARD_DEFAULT_RADIUS);
let radius2 = props2.radius;
if (radius2 == null) {
radius2 = token;
}
const styles = useStyles(start2, end2, variant, shadow, border, radius2);
const style = [styles.spacing, styles.card, props2.style];
const r2 = "onPress" in props2;
const radius3 = radius2;
if (r2 && props2.onPress != null) {
let accessibilityRole = props2.accessibilityRole;
const rest = _objectWithoutProperties(props2, _excluded);
if (accessibilityRole == null) {
accessibilityRole = "button";
}
return <PressableCard accessibilityRole={accessibilityRole} {...rest} start={start2} end={end2} style={style} variant={variant} isRefreshEnabled={isRefreshEnabled} radius={radius3} />;
}
return <View {...props2} style={style} />;
}
PressableCard = function PressableCard(props) {
let r67;
if (isAndroid()) {
const { children: children2, start, end, radius, isRefreshEnabled: _isRefreshEnabled, ...props3 } = props;
props.isRefreshEnabled;
r67 = <AnimatedPressableHighlight androidRippleConfig={useMemo(() => ({
cornerRadius: start ? radius : end ? radius : 0
}), [start, end, radius])} {...props3}>{children2}</AnimatedPressableHighlight>;
} else {
let backgroundColor, backgroundColorPressed;
const { children, style, variant, onPressIn, onPressOut, isRefreshEnabled, radius: _radius, start: _start, end: _end, ...props2 } = props;
props.radius;
props.start;
props.end;
backgroundColor = void 0;
backgroundColorPressed = void 0;
const sharedValue = useSharedValue(0);
const callback = useCallback((a0) => {
sharedValue.set(1);
if (onPressIn != null) {
onPressIn(a0);
}
}, [sharedValue, onPressIn]);
const callback2 = useCallback((a0) => {
sharedValue.set(0);
if (onPressOut != null) {
onPressOut(a0);
}
}, [sharedValue, onPressOut]);
const r40 = styleProperties(variant, isRefreshEnabled);
backgroundColor = r40.backgroundColor;
backgroundColorPressed = r40.backgroundColorPressed;
const B = function B() {
return {
backgroundColor: _spring.withSpring(_ReanimatedRexport.interpolateColor(sharedValue.get(), [0, 1], [backgroundColor, backgroundColorPressed]), _springPresets.ON_PRESS_SPRING, "animate-always")
};
};
B.__closure = {
withSpring: _spring.withSpring,
interpolateColor: _ReanimatedRexport.interpolateColor,
pressed: sharedValue,
backgroundColor,
backgroundColorPressed,
ON_PRESS_SPRING: _springPresets.ON_PRESS_SPRING
};
B.__workletHash = 14943431549291;
B.__initData = __initData;
r67 = <AnimatedComponent {...props2} onPressIn={callback} onPressOut={callback2} style={[style, useAnimatedStyle(B)]} unstable_pressDelay={130}>{children}</AnimatedComponent>;
}
return r67;
};
_excluded = ["accessibilityRole"];
AnimatedComponent = ReanimatedRexport.createAnimatedComponent(Pressable);
styleProperties = createStyleProperties(function(a0, r5 = false) {
const backgroundColor2 = a0 === "primary" ? Module712.colors.TABLEROW_BACKGROUND_DEFAULT : a0 === "secondary" ? Module712.colors.CARD_SECONDARY_BACKGROUND_DEFAULT : a0 === "muted" ? Module712.colors.CARD_MUTED_BG : a0 === "transparent" ? Module712.unsafe_rawColors.TRANSPARENT : a0 === "control-secondary" ? Module712.colors.CONTROL_SECONDARY_BACKGROUND_DEFAULT : a0 === "surface-high" ? Module712.colors.BACKGROUND_SURFACE_HIGH : void 0;
if (r5 === void 0) {
r5 = false;
}
return {
backgroundColor: backgroundColor2,
backgroundColorPressed: a0 === "primary" ? Module712.colors.TABLEROW_BACKGROUND_PRESSED : a0 === "secondary" ? Module712.colors.CARD_SECONDARY_BACKGROUND_ACTIVE : a0 === "muted" ? Module712.colors.CARD_MUTED_PRESSED_BG : a0 === "transparent" ? r5 ? Module712.colors.BACKGROUND_MOD_SUBTLE : Module712.unsafe_rawColors.TRANSPARENT : a0 === "control-secondary" ? Module712.colors.CONTROL_SECONDARY_BACKGROUND_ACTIVE : a0 === "surface-high" ? Module712.colors.BACKGROUND_BASE_LOW : void 0
};
});
useStyles = createStyles((a0, a1, a2, a3, a4, a5) => {
const backgroundColor2 = a2 === "primary" ? Module712.colors.TABLEROW_BACKGROUND_DEFAULT : a2 === "secondary" ? Module712.colors.CARD_SECONDARY_BACKGROUND_DEFAULT : a2 === "muted" ? Module712.colors.CARD_MUTED_BG : a2 === "transparent" ? Module712.unsafe_rawColors.TRANSPARENT : a2 === "control-secondary" ? Module712.colors.CONTROL_SECONDARY_BACKGROUND_DEFAULT : a2 === "surface-high" ? Module712.colors.BACKGROUND_SURFACE_HIGH : void 0;
let borderColor = a4 !== "none" ? a4 === "subtle" ? Module712.colors.BORDER_SUBTLE : a4 === "strong" ? Module712.colors.BORDER_STRONG : a4 === "faint" ? Module712.colors.BORDER_MUTED : a4 === "control-secondary" ? Module712.colors.CONTROL_SECONDARY_BORDER_DEFAULT : void 0 : null;
if (borderColor == null) {
borderColor = backgroundColor2;
}
return {
card: {
...createCardShadowToken(a3),
borderTopStartRadius: a0 ? a5 : void 0,
borderTopEndRadius: a0 ? a5 : void 0,
borderBottomStartRadius: a1 ? a5 : void 0,
borderBottomEndRadius: a1 ? a5 : void 0,
borderColor,
borderWidth: a4 !== "none" ? 1 : 0,
backgroundColor: backgroundColor2
},
spacing: {
padding: 16
}
};
});
__initData = {
code: "function CardNativeTsx1(){const{withSpring,interpolateColor,pressed,backgroundColor,backgroundColorPressed,ON_PRESS_SPRING}=this.__closure;const pressedColor=withSpring(interpolateColor(pressed.get(),[0,1],[backgroundColor,backgroundColorPressed]),ON_PRESS_SPRING,'animate-always');return{backgroundColor:pressedColor};}"
};
export { Card as InternalCard };