97 lines
3.3 KiB
TypeScript
97 lines
3.3 KiB
TypeScript
// Metro module 8743 (f8744).
|
|
import { memo } from "react";
|
|
import { View } from "react-native";
|
|
import { isAvatarDecorationRecord } from "../records/AvatarDecorationRecord";
|
|
import { isNameplateRecord } from "../records/NameplateRecord";
|
|
import { isProfileEffectRecord } from "../records/ProfileEffectRecord";
|
|
import { isProfileFrameRecord } from "../records/ProfileFrameRecord";
|
|
import { PROFILE_FRAME_ASPECT_RATIO } from "../profile_frames/native/ProfileFrameConstants";
|
|
import { SAMPLE_PROFILE_ASPECT_RATIO } from "./CollectiblesPreviewConstants";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import AvatarDecorationSampleV2 from "./AvatarDecorationSampleV2";
|
|
import ProfileFrameSamplePreview from "../profile_frames/native/previews/ProfileFrameSamplePreview";
|
|
import FastImage from "../../../components_native/common/FastImage";
|
|
import Module8695 from "../../../_bundle/Module8695";
|
|
import ProfileEffect from "../profile_effects/native/ProfileEffect";
|
|
import { getNameplateData } from "../nameplates/utils";
|
|
import Nameplate from "../nameplates/native/Nameplate";
|
|
const PX_8 = Module712.space.PX_8;
|
|
const useStyles = createStyles({
|
|
tile: {
|
|
overflow: "hidden",
|
|
alignItems: "center",
|
|
justifyContent: "center"
|
|
},
|
|
framePreview: {
|
|
width: "100%",
|
|
height: "100%",
|
|
paddingVertical: PX_8,
|
|
overflow: "hidden",
|
|
alignItems: "center",
|
|
justifyContent: "center"
|
|
},
|
|
profileEffect: {
|
|
overflow: "hidden",
|
|
width: "100%",
|
|
height: "100%",
|
|
borderRadius: Module712.radii.sm
|
|
},
|
|
sampleProfile: {
|
|
aspectRatio: SAMPLE_PROFILE_ASPECT_RATIO,
|
|
width: "100%"
|
|
},
|
|
nameplate: {
|
|
overflow: "hidden",
|
|
borderTopRightRadius: Module712.radii.xs,
|
|
borderBottomRightRadius: Module712.radii.xs
|
|
},
|
|
nameplateTile: {
|
|
alignItems: "flex-start"
|
|
},
|
|
nameplateStrip: {
|
|
width: "90%",
|
|
aspectRatio: 1.6,
|
|
position: "relative"
|
|
}
|
|
});
|
|
const r70 = memo(function CollectiblesItemMiniPreview(props) {
|
|
const { item, size } = props;
|
|
const styles = useStyles();
|
|
const style = [styles.tile, {
|
|
width: size,
|
|
height: size
|
|
}];
|
|
if (isAvatarDecorationRecord(item)) {
|
|
return <View style={style}>
|
|
<AvatarDecorationSampleV2 item={item} size={0.75 * size} />
|
|
</View>;
|
|
}
|
|
if (isProfileFrameRecord(item)) {
|
|
return <View style={style}>
|
|
<View style={styles.framePreview}>
|
|
<ProfileFrameSamplePreview profileFrame={item} previewWidth={size * PROFILE_FRAME_ASPECT_RATIO} previewHeight={size - 2 * PX_8} profileBackgroundColor={Module712.colors.BACKGROUND_BASE_LOW} />
|
|
</View>
|
|
</View>;
|
|
}
|
|
if (isProfileEffectRecord(item)) {
|
|
return <View style={style}>
|
|
<View style={styles.profileEffect} accessible={false} importantForAccessibility="no">
|
|
<FastImage source={{
|
|
uri: Module8695
|
|
}} style={styles.sampleProfile} resizeMode="cover" />
|
|
<ProfileEffect skuId={item.skuId} bannerAdjustment={0} useThumbnail />
|
|
</View>
|
|
</View>;
|
|
}
|
|
if (isNameplateRecord(item)) {
|
|
return <View style={[style, styles.nameplateTile]}>
|
|
<View style={styles.nameplateStrip}>
|
|
<Nameplate nameplate={getNameplateData(item)} fullOpacity style={styles.nameplate} />
|
|
</View>
|
|
</View>;
|
|
}
|
|
return null;
|
|
});
|
|
export default r70;
|