// Metro module 8707 (f8708). import { useContext, useState, useCallback, useEffect } from "react"; import { Pressable, View } from "react-native"; import AuthenticationStore from "../../../stores/AuthenticationStore"; import UserStore from "../../../stores/UserStore"; import { ShopCtaEnum } from "../CollectiblesShopConstants"; import { ThemeTypes } from "../../../_bundle/Module505"; import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport"; import ReanimatedRexport, { useSharedValue, useAnimatedStyle, Easing } from "../../reanimated/ReanimatedRexport"; import { SMALL_BUTTON_HEIGHT, MEDIUM_BUTTON_HEIGHT } from "../../../design/components/Button/native/ButtonConstants.native"; import { createStyles } from "../../../design/components/Styles/native/createStyles"; import Module712 from "../../../_bundle/Module712"; import { useThemeContext, setColorOpacity } from "../../../_bundle/Module3901"; import { ICON_SIZE } from "../../../design/components/Icon/IconSize"; import * as _shared from "../../../design/shared"; import { AccessibilityPreferencesContext } from "../../../_bundle/Module3908"; import ToastActionCreators from "../../toast/native/ToastActionCreators"; import * as _index_native from "../../../intl/index.native"; import { intl } from "../../../intl/index.native"; import { withTiming } from "../../../design/animation/reanimated/timing/timing"; import * as _spring from "../../../design/animation/reanimated/spring/spring"; import * as _springPresets from "../../../design/animation/reanimated/spring/springPresets"; import { HeartOutlineIcon } from "../../../design/components/Icon/native/redesign/generated/HeartOutlineIcon"; import { HeartIcon } from "../../../design/components/Icon/native/redesign/generated/HeartIcon"; import { useStateFromStores } from "../../../_bundle/Module589"; import useWishlistNUXActionSheet from "./useWishlistNUXActionSheet"; import { useWishlistButtonState } from "../hooks/useWishlistButtonState"; import { useProductPurchaseState } from "../hooks/useProductPurchaseState"; import * as _CollectiblesWishlistUtils from "../../wishlists/CollectiblesWishlistUtils"; import { HermesBuiltin } from "../../../_hermes/prelude"; let c5676_14, c5676_15, c5676_16, useStyles, __initData, __initData2, __initData3, __initData4, WishlistButton; const WishlistButtonBase = function WishlistButtonBase(props) { const { isWishlisted, onPress, busy, disabled, accessibilityLabel, accessibilityHidden = false, style: style2, size = "sm", onTrackPress } = props; const styles = useStyles(size); const width = ICON_SIZE[c5676_16[size]]; const theme = useThemeContext().theme; const isThemeLight = _shared.isThemeLight(theme); let c16736_7 = theme === ThemeTypes.MIDNIGHT; const light = isThemeLight ? styles.light : styles.dark; const lightPressed = isThemeLight ? styles.lightPressed : styles.darkPressed; const enabled = useContext(AccessibilityPreferencesContext).reducedMotion.enabled; const [state, setState] = useState(false); const state2 = isWishlisted ? isWishlisted : state; const sharedValue = useSharedValue(isWishlisted ? 1 : 0); const callback = useCallback(() => { if (disabled) { ToastActionCreators.open({ key: "WISHLIST_DISABLED", content: intl.string(_index_native.t["50TX9k"]) }); } else if (!busy) { if (onTrackPress != null) { onTrackPress(isWishlisted ? ShopCtaEnum.REMOVE_FROM_WISHLIST : ShopCtaEnum.ADD_TO_WISHLIST); } let r15 = isWishlisted; if (!isWishlisted && !enabled) { setState(true); } else { if (isWishlisted) { r15 = state; } if (r15) { setState(false); } } if (onPress != null) { onPress(); } } }, [disabled, busy, onPress, isWishlisted, enabled, state, onTrackPress]); useEffect(() => { if (!state) { sharedValue.set(isWishlisted ? 1 : 0); } }, [isWishlisted, state, sharedValue]); useEffect(() => { if (state) { sharedValue.set(0); let c26273_0 = requestAnimationFrame(() => { const t = function t(a0) { if (a0) { _ReanimatedRexport.runOnJS(setState)(false); } }; t.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setIsClickAnimating: setState }; t.__workletHash = 13061953734403; t.__initData = __initData; sharedValue.set(withTiming(1, c5676_14, "animate-always", t)); }); return () => cancelAnimationFrame(c26273_0); } }, [state, sharedValue]); const J = () => { let r0 = 1; const r4 = { ...styles.animationFill, opacity: _spring.withSpring(state2 ? 0 : 1, _springPresets.SUBTLE_SPRING, "animate-always") }; if (state2) { r0 = 0.9; } r4.transform = [{ scale: _spring.withSpring(r0, _springPresets.SUBTLE_SPRING, "animate-always") }]; return r4; }; J.__closure = { styles, withSpring: _spring.withSpring, showFilled: state2, SUBTLE_SPRING: _springPresets.SUBTLE_SPRING }; J.__workletHash = 1357254413161; J.__initData = __initData2; const animatedStyle = useAnimatedStyle(J); const Y = function Y() { const r10 = sharedValue.get(); return { ...styles.animationFill, opacity: _spring.withSpring(state2 ? 1 : 0, _springPresets.SUBTLE_SPRING, "animate-always"), transform: [{ scale: _ReanimatedRexport.interpolate(r10, [0, 0.625, 1], [0, 1.35, 1], _ReanimatedRexport.Extrapolation.CLAMP) }] }; }; Y.__closure = { animationFillProgress: sharedValue, styles, withSpring: _spring.withSpring, showFilled: state2, SUBTLE_SPRING: _springPresets.SUBTLE_SPRING, interpolate: _ReanimatedRexport.interpolate, Extrapolation: _ReanimatedRexport.Extrapolation }; Y.__workletHash = 15039903885060; Y.__initData = __initData3; const animatedStyle2 = useAnimatedStyle(Y); const K = function K() { const r8 = sharedValue.get(); return { ...styles.animationFill, opacity: state2 ? _ReanimatedRexport.interpolate(r8, [0, 0.7], [1, 0], _ReanimatedRexport.Extrapolation.CLAMP) : 0, transform: [{ scale: _ReanimatedRexport.interpolate(r8, [0, 0.625, 1], [0, 1.35, 1], _ReanimatedRexport.Extrapolation.CLAMP) }] }; }; K.__closure = { animationFillProgress: sharedValue, styles, showFilled: state2, interpolate: _ReanimatedRexport.interpolate, Extrapolation: _ReanimatedRexport.Extrapolation }; K.__workletHash = 12429379889426; K.__initData = __initData4; return { const r6 = [styles.button, light, c16736_7 && styles.midnight, , , ,]; if (pressed) { pressed = !disabled; } if (pressed) { pressed = lightPressed; } r6[3] = pressed; let r10 = disabled; if (disabled) { r10 = styles.disabled; } r6[4] = r10; r6[5] = style2; return r6; }} onPress={callback} accessibilityRole={accessibilityHidden ? "none" : "togglebutton"} accessibilityLabel={accessibilityHidden ? void 0 : accessibilityLabel} accessibilityState={accessibilityHidden ? void 0 : { checked: isWishlisted, busy, disabled }} accessibilityElementsHidden={accessibilityHidden} importantForAccessibility={accessibilityHidden ? "no-hide-descendants" : "auto"}> ; }; WishlistButton = function WishlistButton(props) { let shouldShowWishlistNUXActionSheet, showWishlistNUXActionSheet, content, isWishlisted2, handleToggle; const { skuId, product, onPress: onPress2, onTrackPress: onTrackPress2 } = props; const r23 = {}; let r2 = null; const props2 = HermesBuiltin.copyDataProperties(r23, props, { __proto__: null, skuId: 0, product: 0, onPress: 0, onTrackPress: 0 }); shouldShowWishlistNUXActionSheet = void 0; showWishlistNUXActionSheet = void 0; content = void 0; isWishlisted2 = void 0; handleToggle = void 0; const stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId()); const stateFromStores2 = useStateFromStores([UserStore], () => UserStore.getCurrentUser()); const wishlistNUXActionSheet = useWishlistNUXActionSheet(); shouldShowWishlistNUXActionSheet = wishlistNUXActionSheet.shouldShowWishlistNUXActionSheet; showWishlistNUXActionSheet = wishlistNUXActionSheet.showWishlistNUXActionSheet; const accessibilityLabel = intl.formatToPlainString(_index_native.t["7kFjeK"], { productName: product.name }); const callback = useCallback(() => { if (shouldShowWishlistNUXActionSheet) { showWishlistNUXActionSheet(product); } }, [shouldShowWishlistNUXActionSheet, showWishlistNUXActionSheet, product]); content = intl.string(_index_native.t.F8FvUy); const wishlistButtonState = useWishlistButtonState({ userId: stateFromStores, skuId, onAddSuccess: callback, onError: useCallback(() => { ToastActionCreators.open({ key: "WISHLIST_ERROR", content }); }, [content]), skipAddAnnouncement: shouldShowWishlistNUXActionSheet }); isWishlisted2 = wishlistButtonState.isWishlisted; const isBusy = wishlistButtonState.isBusy; handleToggle = wishlistButtonState.handleToggle; const callback2 = useCallback(async () => { if (onTrackPress2 != null) { onTrackPress2(isWishlisted2 ? ShopCtaEnum.REMOVE_FROM_WISHLIST : ShopCtaEnum.ADD_TO_WISHLIST); } if (onPress2 != null) { onPress2(); } await handleToggle(); }, [onPress2, onTrackPress2, isWishlisted2, handleToggle]); if (stateFromStores2 != null) { r2 = ; } return r2; }; c5676_14 = { duration: 400, easing: Easing.bezier(0.67, 0, 0.26, 1) }; c5676_15 = { sm: SMALL_BUTTON_HEIGHT, md: MEDIUM_BUTTON_HEIGHT }; c5676_16 = { sm: "sm", md: "md" }; useStyles = createStyles((a0) => ({ button: { width: c5676_15[a0], height: c5676_15[a0], display: "flex", alignItems: "center", justifyContent: "center", borderRadius: Module712.radii.round, borderWidth: 1, borderColor: Module712.colors.CONTROL_SECONDARY_BORDER_DEFAULT }, light: { backgroundColor: setColorOpacity("white", 0.72) }, lightPressed: { backgroundColor: setColorOpacity("white", 0.62) }, dark: { backgroundColor: Module712.colors.CONTROL_OVERLAY_SECONDARY_BACKGROUND_DEFAULT }, darkPressed: { backgroundColor: Module712.colors.CONTROL_OVERLAY_SECONDARY_BACKGROUND_ACTIVE }, midnight: { borderColor: Module712.colors.BORDER_STRONG }, disabled: { opacity: 0.5 }, iconContainer: { position: "relative", alignItems: "center", justifyContent: "center" }, animationFill: { position: "absolute", inset: 0, alignItems: "center", justifyContent: "center" } })); __initData = { code: "function WishlistButtonTsx1(done){const{runOnJS,setIsClickAnimating}=this.__closure;if(done){runOnJS(setIsClickAnimating)(false);}}" }; __initData2 = { code: "function WishlistButtonTsx2(){const{styles,withSpring,showFilled,SUBTLE_SPRING}=this.__closure;return{...styles.animationFill,opacity:withSpring(showFilled?0:1,SUBTLE_SPRING,'animate-always'),transform:[{scale:withSpring(showFilled?0.9:1,SUBTLE_SPRING,'animate-always')}]};}" }; __initData3 = { code: "function WishlistButtonTsx3(){const{animationFillProgress,styles,withSpring,showFilled,SUBTLE_SPRING,interpolate,Extrapolation}=this.__closure;const progress=animationFillProgress.get();return{...styles.animationFill,opacity:withSpring(showFilled?1:0,SUBTLE_SPRING,'animate-always'),transform:[{scale:interpolate(progress,[0,0.625,1],[0,1.35,1],Extrapolation.CLAMP)}]};}" }; __initData4 = { code: "function WishlistButtonTsx4(){const{animationFillProgress,styles,showFilled,interpolate,Extrapolation}=this.__closure;const progress=animationFillProgress.get();return{...styles.animationFill,opacity:showFilled?interpolate(progress,[0,0.7],[1,0],Extrapolation.CLAMP):0,transform:[{scale:interpolate(progress,[0,0.625,1],[0,1.35,1],Extrapolation.CLAMP)}]};}" }; export default function CollectiblesWishlistButton(props) { const { selectedProduct, onTrackPress: onTrackPress3 } = props; const r14 = {}; let r2 = null; const props2 = HermesBuiltin.copyDataProperties(r14, props, { __proto__: null, selectedProduct: 0, onTrackPress: 0 }); const skuId = selectedProduct.skuId; const isPurchased = useProductPurchaseState(selectedProduct).isPurchased; const isWishlistableCollectiblesProduct = _CollectiblesWishlistUtils.isWishlistableCollectiblesProduct(selectedProduct); if (!isPurchased) { r2 = ; } return r2; }; export { WishlistButtonBase }; export { WishlistButton };