// Metro module 14035 (f14036). import _slicedToArray from "../../../../_bundle/_slicedToArray"; import { useRef, useState, useCallback, useMemo, useEffect } from "react"; import { StyleSheet, View } from "react-native"; import BountyStore from "../../BountyStore"; import { DEFAULT_PLACEHOLDER_ENTRYPOINT_BOUNTY_ID, QuestsExperimentLocations } from "../../QuestConstants"; import { AnalyticEvents } from "../../../../Constants"; import { ContentDismissActionType } from "../../../dismissible_content/DismissibleContentConstants"; import * as _Module501 from "../../../../_bundle/Module501"; import Module712 from "../../../../_bundle/Module712"; import { createStyles } from "../../../../design/components/Styles/native/createStyles"; import * as _ReanimatedRexport from "../../../reanimated/ReanimatedRexport"; import ReanimatedRexport, { useAnimatedStyle, useSharedValue, useAnimatedScrollHandler, useAnimatedReaction, useDerivedValue } from "../../../reanimated/ReanimatedRexport"; import useWindowDimensions_native from "../../../screen/useWindowDimensions.native"; import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native"; import BountiesScrollPromptFooter, { BOUNTIES_MODAL_BASE_FOOTER_HEIGHT } from "./BountiesScrollPromptFooter"; import { useQuestHomeBounties } from "../../hooks/QuestHooks"; import { useBountiesExperience } from "../../experiments/useBountiesExperience"; import * as _BountiesVerticalScrollExperiment from "../../experiments/BountiesVerticalScrollExperiment"; import { useStateFromStores } from "../../../../_bundle/Module589"; import * as _useBountiesRecapScroll from "./useBountiesRecapScroll"; import { useBountiesRecapScroll } from "./useBountiesRecapScroll"; import { useBountySwipeUpNux } from "./useBountySwipeUpNux"; import { v4 } from "../../../../_bundle/Module514"; import * as _AnalyticsTypes from "../../lib/analytics/AnalyticsTypes"; import { BountyScrollingType, getQuestContentName } from "../../lib/analytics/AnalyticsTypes"; import { trackBountyAutoScrollDismissed, trackBountyVerticalScroll, trackAdContentEvent } from "../../lib/analytics/AnalyticsActions"; import { useBountiesAutoScroll, AUTO_SCROLL_PEEK_TOP_OFFSET, AUTO_SCROLL_PEEK_SCALE } from "./useBountiesAutoScroll"; import { useBountiesRecapOrbCount } from "./useBountiesRecapOrbCount"; import { markAdContentSeen } from "../../QuestActionCreators"; import { AdCreativeType } from "../../../../_bundle/Module6013"; import { QuestContent } from "../../../../_bundle/Module5038"; import { formatVideoProgressRatio } from "../../utils/VideoQuestUtils"; import BountiesModalActionCreators from "./BountiesModalActionCreators"; import { BountiesScrollVideoItem } from "./BountiesScrollVideoItem"; import BountiesScrollPromptNuxFooter from "./BountiesScrollPromptNuxFooter"; import { BountiesScrollRecapFooter } from "./BountiesScrollRecapFooter"; import BountiesAutoScrollOverlayNuxGradient from "./BountiesAutoScrollOverlayNuxGradient"; import { QuestContentImpressionTrackerNative } from "../QuestContentImpressionTracker.native"; import { BountiesScrollRecapPage } from "./BountiesScrollRecapPage"; import { AnimatedFlashList } from "../../../../_bundle/noop_6676"; import Module4611 from "../../../../_bundle/Module4611"; import BountiesModalCloseButton from "./BountiesModalCloseButton"; import BountiesAutoScrollIndicator from "./BountiesAutoScrollIndicator"; import { ThemeContextProvider } from "../../../../_bundle/Module3913"; import { ThemeTypes } from "../../../../_bundle/Module6678"; let isAndroid, zIndex, zIndex2, zIndex3, zIndex4, c9811_19, PX_8, _excluded, FOOTER_FADE_START_PROGRESS, FOOTER_FADE_END_PROGRESS, isScrollEventInBounds, BountiesRecapPullZone, useStyles, __initData, BountiesScrollVideoItemContainer, __initData2, __initData3, __initData4, __initData5, __initData6, __initData7, __initData8, __initData9, __initData10, __initData11, __initData12, __initData13, __initData14, __initData15, __initData16, __initData17, __initData18, __initData19, __initData20, BountiesModalContentScrollInner; const ItemSeparator = function ItemSeparator(props) { return props.trailingItem != null ? : null; }; BountiesRecapPullZone = function BountiesRecapPullZone(props) { return ; }; BountiesScrollVideoItemContainer = function BountiesScrollVideoItemContainer(props) { const { index, slotHeight, scrollY, style, isPeekEnabled, children: children2 } = props; const c = function c() { const r19 = (scrollY.get() - index * slotHeight) / slotHeight; return { opacity: _ReanimatedRexport.interpolate(Math.abs(r19), [0, 0.3, 1], [1, 1, isPeekEnabled ? r19 < 0 ? index === 1 ? 0.8 : 0 : 0 : 0], _ReanimatedRexport.Extrapolation.CLAMP) }; }; c.__closure = { scrollY, index, slotHeight, isPeekEnabled, PEEK_OPACITY: 0.8, interpolate: _ReanimatedRexport.interpolate, FADE_DEADBAND: 0.3, Extrapolation: _ReanimatedRexport.Extrapolation }; c.__workletHash = 6532652233494; c.__initData = __initData; return {children2}; }; BountiesModalContentScrollInner = function BountiesModalContentScrollInner(props) { let memo, questHomeBounties, state, orbAmount, ownedByVerticalScrollExperiment, rewardTimerSeconds, ownedByVerticalScrollExperiment2, isAutoScrollEnabled, c20862_13, height2, slotHeight2, c20862_16, c20862_17, height3, lastBounty, fullRecap, handleRecapMomentumEnd, state2, setState2, state3, setState3, setState4, setState5, state4, setState6, sharedValue, sharedValue2, sharedValue3, hasSingleUseSwipeUpNux, dismissSingleUseSwipeUpNux, hasRecurringSwipeUpNux, dismissRecurringSwipeUpNux, hasRecurringSwipeUpNux2, hasRecurringSwipeUpNux3, memo2, ref, ref2, peekScale, cancel, dismissOnClose, takeDidAutoScroll, onPlaybackTimeChange, onEndCardVisible, pauseCountdown, resumeCountdown, memo3, callback, callback2, bountiesRecapOrbCount, callback3, memo4, derivedValue; let state5, width, height4, c20863_3; const { initialBountyId, sourceQuestContent } = props; memo = void 0; questHomeBounties = void 0; state = void 0; orbAmount = void 0; ownedByVerticalScrollExperiment = void 0; rewardTimerSeconds = void 0; ownedByVerticalScrollExperiment2 = void 0; isAutoScrollEnabled = void 0; c20862_13 = void 0; height2 = void 0; slotHeight2 = void 0; c20862_16 = void 0; c20862_17 = void 0; height3 = void 0; lastBounty = void 0; fullRecap = void 0; handleRecapMomentumEnd = void 0; state2 = void 0; setState2 = void 0; state3 = void 0; setState3 = void 0; setState4 = void 0; setState5 = void 0; state4 = void 0; setState6 = void 0; sharedValue = void 0; sharedValue2 = void 0; sharedValue3 = void 0; hasSingleUseSwipeUpNux = void 0; dismissSingleUseSwipeUpNux = void 0; hasRecurringSwipeUpNux = void 0; dismissRecurringSwipeUpNux = void 0; hasRecurringSwipeUpNux2 = void 0; hasRecurringSwipeUpNux3 = void 0; memo2 = void 0; ref = void 0; ref2 = void 0; peekScale = void 0; cancel = void 0; dismissOnClose = void 0; takeDidAutoScroll = void 0; onPlaybackTimeChange = void 0; onEndCardVisible = void 0; pauseCountdown = void 0; resumeCountdown = void 0; memo3 = void 0; callback = void 0; callback2 = void 0; bountiesRecapOrbCount = void 0; callback3 = void 0; memo4 = void 0; derivedValue = void 0; const styles = useStyles(); const height = useWindowDimensions_native().height; const ref3 = useRef(null); const [state6, setState] = useState(BOUNTIES_MODAL_BASE_FOOTER_HEIGHT); const callback4 = useCallback((a0) => { setState(Math.ceil(a0.nativeEvent.layout.height)); }, []); state5 = state6; width = void 0; height4 = void 0; c20863_3 = void 0; const windowDimensions_native = useWindowDimensions_native(); width = windowDimensions_native.width; height4 = windowDimensions_native.height; const safeAreaInsets_native = useSafeAreaInsets_native(); c20863_3 = safeAreaInsets_native; memo = useMemo(() => { const r9 = width - c20863_3.left - c20863_3.right; const r16 = height4 - c20863_3.top - state5; let r18 = r9 / c9811_19; let r7 = r9; if (r18 > r16) { r7 = r16 * c9811_19; r18 = r16; } return { top: c20863_3.top, left: Math.floor(c20863_3.left + (r9 - r7) / 2), width: Math.floor(r7), height: Math.floor(r18) }; }, [width, height4, safeAreaInsets_native.top, safeAreaInsets_native.left, safeAreaInsets_native.right, state5]); questHomeBounties = useQuestHomeBounties().questHomeBounties; state = _slicedToArray(useState(() => { const r5 = questHomeBounties.findIndex((questHomeBounty) => questHomeBounty.id === initialBountyId); return r5 <= 0 ? questHomeBounties : [...questHomeBounties.slice(r5), ...questHomeBounties.slice(0, r5)]; }), 1)[0]; const bountiesExperience = useBountiesExperience(QuestsExperimentLocations.VIDEO_MODAL_MOBILE); orbAmount = bountiesExperience.orbAmount; ownedByVerticalScrollExperiment = bountiesExperience.ownedByVerticalScrollExperiment; rewardTimerSeconds = bountiesExperience.rewardTimerSeconds; const scrollAffordanceVariant = bountiesExperience.scrollAffordanceVariant; ownedByVerticalScrollExperiment2 = ownedByVerticalScrollExperiment; isAutoScrollEnabled = scrollAffordanceVariant === "auto"; const shouldUseScrollIndicatorOverlay = _BountiesVerticalScrollExperiment.shouldUseScrollIndicatorOverlay(scrollAffordanceVariant); const stateFromStores = useStateFromStores([BountyStore], () => BountyStore.getCompletedBountyCount(state) * orbAmount, [state, orbAmount]); const r121 = state[0]; c20862_13 = r121; const stateFromStores2 = useStateFromStores([BountyStore], () => { if (c20862_13 == null) { return false; } const bountyVideoProgress = BountyStore.getBountyVideoProgress(c20862_13.id); return bountyVideoProgress != null && bountyVideoProgress.maxTimestampSec >= rewardTimerSeconds; }, [r121, rewardTimerSeconds]); height2 = memo.height; slotHeight2 = height2 + PX_8; const lastBountyIndex = state.length - 1; c20862_16 = lastBountyIndex; const enabled = stateFromStores > 0; c20862_17 = enabled; height3 = height2; lastBounty = lastBountyIndex * slotHeight2; fullRecap = lastBounty + height2; handleRecapMomentumEnd = useBountiesRecapScroll({ listRef: ref3, enabled, offsets: useMemo(() => ({ lastBounty, fullRecap, revealHeight: height3 }), [fullRecap, lastBounty, height2]) }).handleRecapMomentumEnd; const memo5 = useMemo(() => { const r5 = state.map((item, index) => index * slotHeight2); if (c20862_17) { r5.push(fullRecap); } return r5; }, [state, fullRecap, enabled, slotHeight2]); [state2, setState2] = useState(false); [state3, setState3] = useState(false); let state7; [state7, setState4] = useState(true); let state8; [state8, setState5] = useState(false); [state4, setState6] = useState(0); sharedValue = useSharedValue(false); sharedValue2 = useSharedValue(false); sharedValue3 = useSharedValue(0); const bountySwipeUpNux = useBountySwipeUpNux({ isEligible: state.length > 1, location: QuestsExperimentLocations.VIDEO_MODAL_MOBILE }); hasSingleUseSwipeUpNux = bountySwipeUpNux.hasSingleUseSwipeUpNux; dismissSingleUseSwipeUpNux = bountySwipeUpNux.dismissSingleUseSwipeUpNux; hasRecurringSwipeUpNux = bountySwipeUpNux.hasRecurringSwipeUpNux; dismissRecurringSwipeUpNux = bountySwipeUpNux.dismissRecurringSwipeUpNux; const r179 = state4 === 0; let visible2 = r179 && hasSingleUseSwipeUpNux && stateFromStores2; hasRecurringSwipeUpNux2 = scrollAffordanceVariant === "peek" && hasRecurringSwipeUpNux; hasRecurringSwipeUpNux3 = shouldUseScrollIndicatorOverlay && hasRecurringSwipeUpNux; memo2 = useMemo(() => v4(), []); ref = useRef(0); ref2 = useRef(0); useEffect(() => { ref.current = Date.now(); }, []); const callback5 = useCallback((a0) => { if (a0 === _AnalyticsTypes.VerticalScrollingDirection.DOWN) { trackBountyAutoScrollDismissed({ verticalScrollingPosition: state4, scrollSessionId: memo2 }); } }, [state4, memo2]); const enabled2 = isAutoScrollEnabled ? state4 < lastBountyIndex : isAutoScrollEnabled; const mode = r179 ? hasRecurringSwipeUpNux ? "countdown" : "hint" : "hint"; let activeBountyId = state[state4]?.id; if (activeBountyId == null) { activeBountyId = null; } const bountiesAutoScroll = useBountiesAutoScroll({ listRef: ref3, enabled: enabled2, mode, activeIndex: state4, activeBountyId, slotHeight: slotHeight2, onCountdownCancelled: callback5 }); const { visible, peekActive, progress, showProgressRing } = bountiesAutoScroll; peekScale = bountiesAutoScroll.peekScale; cancel = bountiesAutoScroll.cancel; dismissOnClose = bountiesAutoScroll.dismissOnClose; takeDidAutoScroll = bountiesAutoScroll.takeDidAutoScroll; onPlaybackTimeChange = bountiesAutoScroll.onPlaybackTimeChange; onEndCardVisible = bountiesAutoScroll.onEndCardVisible; pauseCountdown = bountiesAutoScroll.pauseCountdown; resumeCountdown = bountiesAutoScroll.resumeCountdown; memo3 = useMemo(() => ({ onPlaybackTimeChange, onPaused: pauseCountdown, onResumed: resumeCountdown, onEndCardVisible }), [onEndCardVisible, onPlaybackTimeChange, pauseCountdown, resumeCountdown]); callback = useCallback(function(a0, scrollingType = BountyScrollingType.MANUAL) { const current = ref2.current; if (a0 !== current) { ref2.current = a0; const current2 = Date.now(); const timeWatchedPreScrollMs = current2 - ref.current; ref.current = current2; trackBountyVerticalScroll({ scrollingType, scrollingDirection: a0 > current ? _AnalyticsTypes.VerticalScrollingDirection.DOWN : _AnalyticsTypes.VerticalScrollingDirection.UP, verticalScrollingPosition: a0, scrollSessionId: memo2, timeWatchedPreScrollMs }); } }, [memo2]); callback2 = useCallback((a0) => { const r7 = takeDidAutoScroll(); setState6(a0); callback(a0, r7 ? BountyScrollingType.AUTO : BountyScrollingType.MANUAL); if (state4 === 0 && a0 > 0) { if (hasSingleUseSwipeUpNux) { dismissSingleUseSwipeUpNux(ContentDismissActionType.USER_DISMISS); } else if (hasRecurringSwipeUpNux) { dismissRecurringSwipeUpNux(ContentDismissActionType.USER_DISMISS); } } }, [takeDidAutoScroll, callback, state4, hasSingleUseSwipeUpNux, hasRecurringSwipeUpNux, dismissSingleUseSwipeUpNux, dismissRecurringSwipeUpNux]); bountiesRecapOrbCount = useBountiesRecapOrbCount({ scrollY: sharedValue3, lastBountyScrollOffset: lastBounty, recapRevealHeight: height2, targetOrbAmount: stateFromStores, enabled }); useEffect(() => { const r7 = state[state4]; if (r7 != null) { markAdContentSeen(AdCreativeType.BOUNTY, [r7.id]); } }, [state, state4]); const callback6 = useCallback(() => { dismissOnClose(); const r10 = state[state4]; if (r10 != null) { const bountyVideoProgress = BountyStore.getBountyVideoProgress(r10.id); let r11 = bountyVideoProgress?.maxTimestampSec; if (r11 == null) { r11 = 0; } let r14 = bountyVideoProgress?.duration; if (r14 == null) { r14 = 0; } const r1 = 1000 * rewardTimerSeconds; trackAdContentEvent({ adContentId: r10.id, adCreativeType: AdCreativeType.BOUNTY, event: AnalyticEvents.AD_VIDEO_MODAL_CLOSED, properties: { content_name: getQuestContentName(QuestContent.VIDEO_MODAL_MOBILE), content_id: QuestContent.VIDEO_MODAL_MOBILE, video_progress: formatVideoProgressRatio(r11, r14), threshold_met: 1000 * r11 >= r1, reward_timer_seconds: r1 / 1000 }, sourceQuestContent }); } BountiesModalActionCreators.hideModal(); }, [state, state4, dismissOnClose, rewardTimerSeconds, sourceQuestContent]); callback3 = useCallback(() => { trackAdContentEvent({ adContentId: DEFAULT_PLACEHOLDER_ENTRYPOINT_BOUNTY_ID, adCreativeType: AdCreativeType.BOUNTY, event: AnalyticEvents.AD_VIDEO_MODAL_CLOSED, properties: { content_name: getQuestContentName(QuestContent.BOUNTIES_END_INTERSTITIAL), content_id: QuestContent.BOUNTIES_END_INTERSTITIAL }, sourceQuestContent }); BountiesModalActionCreators.hideModal(); }, [sourceQuestContent]); const Tt = function Tt(a0) { sharedValue3.set(a0.contentOffset.y); if (sharedValue2.get()) { const r28 = Math.max(0, a0.contentSize.height - a0.layoutMeasurement.height); sharedValue.set(a0.contentOffset.y >= 0 && a0.contentOffset.y <= r28); } }; Tt.__closure = { scrollY: sharedValue3, isDraggingSharedValue: sharedValue2, isScrollingInBoundsSharedValue: sharedValue, isScrollEventInBounds }; Tt.__workletHash = 7942598540397; Tt.__initData = __initData2; const Bt = function Bt(a0) { sharedValue2.set(true); const r23 = Math.max(0, a0.contentSize.height - a0.layoutMeasurement.height); sharedValue.set(a0.contentOffset.y >= 0 && a0.contentOffset.y <= r23); }; Bt.__closure = { isDraggingSharedValue: sharedValue2, isScrollingInBoundsSharedValue: sharedValue, isScrollEventInBounds }; Bt.__workletHash = 14039038912528; Bt.__initData = __initData3; const Ct = function Ct(a0) { const r6 = a0.contentOffset.y < 0 ? _AnalyticsTypes.VerticalScrollingDirection.DOWN : _AnalyticsTypes.VerticalScrollingDirection.UP; _ReanimatedRexport.runOnJS(cancel)(r6); sharedValue2.set(false); if (!isAndroid) { sharedValue.set(false); } }; Ct.__closure = { VerticalScrollingDirection: _AnalyticsTypes.VerticalScrollingDirection, runOnJS: _ReanimatedRexport.runOnJS, cancelScrollAffordance: cancel, isDraggingSharedValue: sharedValue2, IS_ANDROID: isAndroid, isScrollingInBoundsSharedValue: sharedValue }; Ct.__workletHash = 10752087179842; Ct.__initData = __initData4; const It = function It(a0) { if (c20862_17) { _ReanimatedRexport.runOnJS(handleRecapMomentumEnd)(a0); } sharedValue.set(false); }; It.__closure = { showRecapPullZone: enabled, runOnJS: _ReanimatedRexport.runOnJS, handleRecapMomentumEnd, isScrollingInBoundsSharedValue: sharedValue }; It.__workletHash = 13684210320337; It.__initData = __initData5; const animatedScrollHandler = useAnimatedScrollHandler({ onScroll: Tt, onBeginDrag: Bt, onEndDrag: Ct, onMomentumEnd: It }); const xt = () => Math.min(Math.max(Math.round(sharedValue3.get() / slotHeight2), 0), c20862_16); xt.__closure = { scrollY: sharedValue3, slotHeight: slotHeight2, lastBountyIndex }; xt.__workletHash = 14048843158960; xt.__initData = __initData6; const mt = function mt(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(callback2)(a0); } }; mt.__closure = { runOnJS: _ReanimatedRexport.runOnJS, commitSwipe: callback2 }; mt.__workletHash = 14015091539518; mt.__initData = __initData7; useAnimatedReaction(xt, mt); const wt = () => c20862_17 && sharedValue3.get() >= lastBounty - _useBountiesRecapScroll.RECAP_SNAP_EPSILON; wt.__closure = { showRecapPullZone: enabled, scrollY: sharedValue3, lastBountyScrollOffset: lastBounty, RECAP_SNAP_EPSILON: _useBountiesRecapScroll.RECAP_SNAP_EPSILON }; wt.__workletHash = 6584708256992; wt.__initData = __initData8; const yt = function yt(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(setState5)(a0); } }; yt.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setShowRecapFooter: setState5 }; yt.__workletHash = 10788669301891; yt.__initData = __initData9; useAnimatedReaction(wt, yt); const Nt = () => c20862_17 && sharedValue3.get() > lastBounty; Nt.__closure = { showRecapPullZone: enabled, scrollY: sharedValue3, lastBountyScrollOffset: lastBounty }; Nt.__workletHash = 6186370630693; Nt.__initData = __initData10; const Mt = function Mt(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(setState2)(a0); } }; Mt.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setIsRecapPageRevealed: setState2 }; Mt.__workletHash = 12713474352874; Mt.__initData = __initData11; useAnimatedReaction(Nt, Mt); const Vt = () => c20862_17 && sharedValue3.get() >= fullRecap - _useBountiesRecapScroll.RECAP_SNAP_EPSILON; Vt.__closure = { showRecapPullZone: enabled, scrollY: sharedValue3, fullRecapScrollOffset: fullRecap, RECAP_SNAP_EPSILON: _useBountiesRecapScroll.RECAP_SNAP_EPSILON }; Vt.__workletHash = 5669564400667; Vt.__initData = __initData12; const bt = function bt(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(setState3)(a0); } }; bt.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setIsRecapPageOnTop: setState3 }; bt.__workletHash = 8102193741774; bt.__initData = __initData13; useAnimatedReaction(Vt, bt); const memo6 = useMemo(() => c20862_17 ? : null, [height2, enabled]); const memo7 = useMemo(() => [styles.listWrapper, { top: 0, left: memo.left, width: memo.width, height: memo.top + memo.height + 97 }], [styles.listWrapper, memo]); const memo8 = useMemo(() => ({ paddingTop: memo.top, paddingBottom: 97 }), [memo.top]); memo4 = useMemo(() => ({ width: memo.width, height: memo.height }), [memo.width, memo.height]); const memo9 = useMemo(() => [styles.closeButton, { top: memo.top + Module712.space.PX_8, left: memo.left + memo.width - Module712.space.PX_32 - Module712.space.PX_8 }], [styles.closeButton, memo.top, memo.left, memo.width]); const memo10 = useMemo(() => [styles.autoScrollIndicator, { top: memo.top + AUTO_SCROLL_PEEK_TOP_OFFSET + memo.height * AUTO_SCROLL_PEEK_SCALE + Module712.space.PX_32, left: memo.left, width: memo.width }], [styles.autoScrollIndicator, memo.top, memo.height, memo.left, memo.width]); const memo11 = useMemo(() => [styles.recapPage, { top: memo.top, left: memo.left, width: memo.width, height: height - memo.top, ...state3 ? { zIndex: zIndex4 } : null }], [state3, styles.recapPage, memo.top, memo.left, memo.width, height]); const Ft = () => _useBountiesRecapScroll.getRevealProgress(sharedValue3.get(), lastBounty, height3); Ft.__closure = { getRevealProgress: _useBountiesRecapScroll.getRevealProgress, scrollY: sharedValue3, lastBountyScrollOffset: lastBounty, recapRevealHeight: height2 }; Ft.__workletHash = 8427964721554; Ft.__initData = __initData14; derivedValue = useDerivedValue(Ft); const Yt = () => ({ opacity: _ReanimatedRexport.interpolate(derivedValue.get(), [0, 1], [0, 1], _ReanimatedRexport.Extrapolation.CLAMP) }); Yt.__closure = { interpolate: _ReanimatedRexport.interpolate, recapPullProgress: derivedValue, Extrapolation: _ReanimatedRexport.Extrapolation }; Yt.__workletHash = 1497321349449; Yt.__initData = __initData15; const animatedStyle = useAnimatedStyle(Yt); const Jt = () => ({ opacity: _ReanimatedRexport.interpolate(derivedValue.get(), [FOOTER_FADE_START_PROGRESS, FOOTER_FADE_END_PROGRESS], [1, 0], _ReanimatedRexport.Extrapolation.CLAMP) }); Jt.__closure = { interpolate: _ReanimatedRexport.interpolate, recapPullProgress: derivedValue, FOOTER_FADE_START_PROGRESS, FOOTER_FADE_END_PROGRESS, Extrapolation: _ReanimatedRexport.Extrapolation }; Jt.__workletHash = 3685190194249; Jt.__initData = __initData16; const animatedStyle2 = useAnimatedStyle(Jt); const Ut = function Ut() { return { opacity: _ReanimatedRexport.interpolate(sharedValue3.get() >= lastBounty - slotHeight2 / 2 ? derivedValue.get() : _useBountiesRecapScroll.getRevealProgress(sharedValue3.get(), 0, height3), [FOOTER_FADE_START_PROGRESS, FOOTER_FADE_END_PROGRESS], [1, 0], _ReanimatedRexport.Extrapolation.CLAMP) }; }; Ut.__closure = { scrollY: sharedValue3, lastBountyScrollOffset: lastBounty, slotHeight: slotHeight2, recapPullProgress: derivedValue, getRevealProgress: _useBountiesRecapScroll.getRevealProgress, recapRevealHeight: height2, interpolate: _ReanimatedRexport.interpolate, FOOTER_FADE_START_PROGRESS, FOOTER_FADE_END_PROGRESS, Extrapolation: _ReanimatedRexport.Extrapolation }; Ut.__workletHash = 15092194442650; Ut.__initData = __initData17; const animatedStyle3 = useAnimatedStyle(Ut); const memo12 = useMemo(() => [styles.peekGradient, { left: memo.left, width: memo.width, top: memo.top + memo.height, bottom: 0 }], [styles.peekGradient, memo.left, memo.width, memo.top, memo.height]); const Gt = () => ({ opacity: _ReanimatedRexport.interpolate(sharedValue3.get(), [0, slotHeight2], [1, 0], _ReanimatedRexport.Extrapolation.CLAMP) }); Gt.__closure = { interpolate: _ReanimatedRexport.interpolate, scrollY: sharedValue3, slotHeight: slotHeight2, Extrapolation: _ReanimatedRexport.Extrapolation }; Gt.__workletHash = 5908400559291; Gt.__initData = __initData18; const animatedStyle4 = useAnimatedStyle(Gt); const Zt = () => derivedValue.get() < FOOTER_FADE_END_PROGRESS; Zt.__closure = { recapPullProgress: derivedValue, FOOTER_FADE_END_PROGRESS }; Zt.__workletHash = 547045699209; Zt.__initData = __initData19; const Qt = function Qt(a0, a1) { if (a0 !== a1) { _ReanimatedRexport.runOnJS(setState4)(a0); } }; Qt.__closure = { runOnJS: _ReanimatedRexport.runOnJS, setIsCloseButtonPressable: setState4 }; Qt.__workletHash = 6290671204687; Qt.__initData = __initData20; useAnimatedReaction(Zt, Qt); const callback7 = useCallback(({ item, index: index2 }) => { const shouldLoadHls = ownedByVerticalScrollExperiment ? index2 === state4 || index2 === state4 + 1 : true; const isActive = index2 === state4; let isScrollIndicatorOverlayEnabled = hasRecurringSwipeUpNux3; if (hasRecurringSwipeUpNux3) { isScrollIndicatorOverlayEnabled = index2 === 0; } return ; }, [slotHeight2, sharedValue3, memo4, hasRecurringSwipeUpNux2, isAutoScrollEnabled, peekScale, sourceQuestContent, memo.width, memo.height, state4, state2, state3, sharedValue, hasRecurringSwipeUpNux3, memo3, ownedByVerticalScrollExperiment, ownedByVerticalScrollExperiment]); const memo13 = useMemo(() => ({ activeIndex: state4, isRecapPageRevealed: state2, isRecapPageOnTop: state3, width: memo.width, height: memo.height, isPeekEnabled: hasRecurringSwipeUpNux2, isAutoScrollEnabled, canShowScrollIndicatorOverlay: hasRecurringSwipeUpNux3, ownedByVerticalScrollExperiment, isSoftCapPreload: ownedByVerticalScrollExperiment2 }), [state4, state2, state3, memo.width, memo.height, hasRecurringSwipeUpNux2, isAutoScrollEnabled, hasRecurringSwipeUpNux3, ownedByVerticalScrollExperiment, ownedByVerticalScrollExperiment]); const callback8 = useCallback((a0) => { a0.size = height2; }, [height2]); if (state.length === 0) { return null; } const r496 = visible2 ? : state8 ? : null; const r515 = [, enabled ? {() => } : null, item.id} renderItem={callback7} extraData={memo13} overrideItemLayout={callback8} ItemSeparatorComponent={ItemSeparator} ListFooterComponent={memo6} snapToOffsets={memo5} snapToEnd={false} decelerationRate={0.85} showsVerticalScrollIndicator={false} drawDistance={slotHeight2} onScroll={animatedScrollHandler} scrollEventThrottle={16} contentContainerStyle={memo8} /> , hasRecurringSwipeUpNux2 ? state.length > 1 ? : null : null, {state7 ? : null} , visible ? : null, ,]; if (!visible2) { visible2 = state8; } r515[6] = {r496}; return {r515}; }; isAndroid = _Module501.isAndroid(); zIndex = 0; zIndex2 = 1; zIndex3 = 2; zIndex4 = 3; c9811_19 = 0.5625; PX_8 = Module712.space.PX_8; _excluded = ["rgba(0,0,0,0)", "rgba(0,0,0,0.75)"]; FOOTER_FADE_START_PROGRESS = 0.05; FOOTER_FADE_END_PROGRESS = 0.1; const isScrollEventInBounds2 = function isScrollEventInBounds(a0) { const r12 = Math.max(0, a0.contentSize.height - a0.layoutMeasurement.height); return a0.contentOffset.y >= 0 && a0.contentOffset.y <= r12; }; isScrollEventInBounds2.__closure = {}; isScrollEventInBounds2.__workletHash = 14148486927190; isScrollEventInBounds2.__initData = { code: "function isScrollEventInBounds_BountiesModalContentScrollTsx1(event){const maxOffset=Math.max(0,event.contentSize.height-event.layoutMeasurement.height);return event.contentOffset.y>=0&&event.contentOffset.y<=maxOffset;}" }; isScrollEventInBounds = isScrollEventInBounds2; useStyles = createStyles(() => ({ root: { flex: 1 }, recapPage: { position: "absolute", zIndex }, listWrapper: { position: "absolute", zIndex: zIndex2, overflow: "hidden" }, closeButton: { position: "absolute", zIndex: zIndex4 }, peekGradient: { position: "absolute", zIndex: zIndex3 }, autoScrollIndicator: { position: "absolute", zIndex: zIndex4, alignItems: "center" } })); __initData = { code: "function BountiesModalContentScrollTsx2(){const{scrollY,index,slotHeight,isPeekEnabled,PEEK_OPACITY,interpolate,FADE_DEADBAND,Extrapolation}=this.__closure;const signedDistance=(scrollY.get()-index*slotHeight)/slotHeight;const distance=Math.abs(signedDistance);const peekOpacity=isPeekEnabled&&signedDistance<0&&index===1?PEEK_OPACITY:0;const opacity=interpolate(distance,[0,FADE_DEADBAND,1],[1,1,peekOpacity],Extrapolation.CLAMP);return{opacity:opacity};}" }; __initData2 = { code: "function BountiesModalContentScrollTsx3(event){const{scrollY,isDraggingSharedValue,isScrollingInBoundsSharedValue,isScrollEventInBounds}=this.__closure;scrollY.set(event.contentOffset.y);if(isDraggingSharedValue.get()){isScrollingInBoundsSharedValue.set(isScrollEventInBounds(event));}}" }; __initData3 = { code: "function BountiesModalContentScrollTsx4(event){const{isDraggingSharedValue,isScrollingInBoundsSharedValue,isScrollEventInBounds}=this.__closure;isDraggingSharedValue.set(true);isScrollingInBoundsSharedValue.set(isScrollEventInBounds(event));}" }; __initData4 = { code: "function BountiesModalContentScrollTsx5(event){const{VerticalScrollingDirection,runOnJS,cancelScrollAffordance,isDraggingSharedValue,IS_ANDROID,isScrollingInBoundsSharedValue}=this.__closure;const scrollingDirection=event.contentOffset.y<0?VerticalScrollingDirection.DOWN:VerticalScrollingDirection.UP;runOnJS(cancelScrollAffordance)(scrollingDirection);isDraggingSharedValue.set(false);if(!IS_ANDROID){isScrollingInBoundsSharedValue.set(false);}}" }; __initData5 = { code: "function BountiesModalContentScrollTsx6(event){const{showRecapPullZone,runOnJS,handleRecapMomentumEnd,isScrollingInBoundsSharedValue}=this.__closure;if(showRecapPullZone){runOnJS(handleRecapMomentumEnd)(event);}isScrollingInBoundsSharedValue.set(false);}" }; __initData6 = { code: "function BountiesModalContentScrollTsx7(){const{scrollY,slotHeight,lastBountyIndex}=this.__closure;return Math.min(Math.max(Math.round(scrollY.get()/slotHeight),0),lastBountyIndex);}" }; __initData7 = { code: "function BountiesModalContentScrollTsx8(next,prev){const{runOnJS,commitSwipe}=this.__closure;if(next!==prev){runOnJS(commitSwipe)(next);}}" }; __initData8 = { code: "function BountiesModalContentScrollTsx9(){const{showRecapPullZone,scrollY,lastBountyScrollOffset,RECAP_SNAP_EPSILON}=this.__closure;return showRecapPullZone&&scrollY.get()>=lastBountyScrollOffset-RECAP_SNAP_EPSILON;}" }; __initData9 = { code: "function BountiesModalContentScrollTsx10(show,previousShow){const{runOnJS,setShowRecapFooter}=this.__closure;if(show!==previousShow){runOnJS(setShowRecapFooter)(show);}}" }; __initData10 = { code: "function BountiesModalContentScrollTsx11(){const{showRecapPullZone,scrollY,lastBountyScrollOffset}=this.__closure;return showRecapPullZone&&scrollY.get()>lastBountyScrollOffset;}" }; __initData11 = { code: "function BountiesModalContentScrollTsx12(revealed,previousRevealed){const{runOnJS,setIsRecapPageRevealed}=this.__closure;if(revealed!==previousRevealed){runOnJS(setIsRecapPageRevealed)(revealed);}}" }; __initData12 = { code: "function BountiesModalContentScrollTsx13(){const{showRecapPullZone,scrollY,fullRecapScrollOffset,RECAP_SNAP_EPSILON}=this.__closure;return showRecapPullZone&&scrollY.get()>=fullRecapScrollOffset-RECAP_SNAP_EPSILON;}" }; __initData13 = { code: "function BountiesModalContentScrollTsx14(onTop,previousOnTop){const{runOnJS,setIsRecapPageOnTop}=this.__closure;if(onTop!==previousOnTop){runOnJS(setIsRecapPageOnTop)(onTop);}}" }; __initData14 = { code: "function BountiesModalContentScrollTsx15(){const{getRevealProgress,scrollY,lastBountyScrollOffset,recapRevealHeight}=this.__closure;return getRevealProgress(scrollY.get(),lastBountyScrollOffset,recapRevealHeight);}" }; __initData15 = { code: "function BountiesModalContentScrollTsx16(){const{interpolate,recapPullProgress,Extrapolation}=this.__closure;return{opacity:interpolate(recapPullProgress.get(),[0,1],[0,1],Extrapolation.CLAMP)};}" }; __initData16 = { code: "function BountiesModalContentScrollTsx17(){const{interpolate,recapPullProgress,FOOTER_FADE_START_PROGRESS,FOOTER_FADE_END_PROGRESS,Extrapolation}=this.__closure;return{opacity:interpolate(recapPullProgress.get(),[FOOTER_FADE_START_PROGRESS,FOOTER_FADE_END_PROGRESS],[1,0],Extrapolation.CLAMP)};}" }; __initData17 = { code: "function BountiesModalContentScrollTsx18(){const{scrollY,lastBountyScrollOffset,slotHeight,recapPullProgress,getRevealProgress,recapRevealHeight,interpolate,FOOTER_FADE_START_PROGRESS,FOOTER_FADE_END_PROGRESS,Extrapolation}=this.__closure;const progress=scrollY.get()>=lastBountyScrollOffset-slotHeight/2?recapPullProgress.get():getRevealProgress(scrollY.get(),0,recapRevealHeight);return{opacity:interpolate(progress,[FOOTER_FADE_START_PROGRESS,FOOTER_FADE_END_PROGRESS],[1,0],Extrapolation.CLAMP)};}" }; __initData18 = { code: "function BountiesModalContentScrollTsx19(){const{interpolate,scrollY,slotHeight,Extrapolation}=this.__closure;return{opacity:interpolate(scrollY.get(),[0,slotHeight],[1,0],Extrapolation.CLAMP)};}" }; __initData19 = { code: "function BountiesModalContentScrollTsx20(){const{recapPullProgress,FOOTER_FADE_END_PROGRESS}=this.__closure;return recapPullProgress.get() ; };