// Metro module 5469 (f5470). import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react"; import { CompatAnimatedView } from "./Module5466"; import { ViewHolder } from "./Module5470"; import { PlatformConfig } from "./Module5431"; export const StickyHeaders = ({ stickyHeaderIndices, stickyHeaderOffset, renderItem, stickyHeaderRef, recyclerViewManager, scrollY, data, extraData, onChangeStickyIndex, inverted, stickyHeaderZIndex = 2 }) => { let c14868_14, callback, current, translateY, opacity; const zIndex = stickyHeaderZIndex; c14868_14 = void 0; callback = void 0; current = void 0; translateY = void 0; opacity = void 0; const [state, setState] = useState({ currentStickyIndex: -1, pushStartsAt: Number.MAX_SAFE_INTEGER }); const { currentStickyIndex, pushStartsAt } = state; const memo = useMemo(() => [...stickyHeaderIndices].sort((a, b) => a - b), [stickyHeaderIndices]); const r2 = memo.length === 0 || recyclerViewManager.getDataLength() <= memo[memo.length - 1]; c14868_14 = r2; callback = useCallback(() => { let r34, MAX_SAFE_INTEGER; if (!c14868_14) { const r19 = recyclerViewManager.getLastScrollOffset() + stickyHeaderOffset; let r1 = memo.length - 1; let r18 = -1; let r26 = 0; let r14 = -1; while (r26 <= r1) { const r23 = Math.floor((r26 + r1) / 2); const r31 = recyclerViewManager.getLayout(memo[r23]).y; let r32 = r18; const r3 = r1; let r33 = r26; if (r31 <= r19) { r33 = r23 + 1; r32 = r23; r34 = r3; } else { r34 = r23 - 1; } r18 = r32; r1 = r34; r26 = r33; r14 = r18; } let currentStickyIndex2 = memo[r14]; if (currentStickyIndex2 == null) { currentStickyIndex2 = -1; } let r37 = memo[r14 + 1]; if (r37 == null) { r37 = -1; } if (r37 > recyclerViewManager.getEngagedIndices().endIndex) { r37 = -1; } if (r37 === -1) { MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; } else { let r44 = recyclerViewManager.tryGetLayout(r37)?.y; if (r44 == null) { r44 = 0; } MAX_SAFE_INTEGER = r44 + recyclerViewManager.firstItemOffset; } let r51 = recyclerViewManager.tryGetLayout(currentStickyIndex2)?.height; if (r51 == null) { r51 = 0; } const r52 = MAX_SAFE_INTEGER - r51; if (!(currentStickyIndex2 === currentStickyIndex && r52 === pushStartsAt)) { setState({ currentStickyIndex: currentStickyIndex2, pushStartsAt: r52 - stickyHeaderOffset }); } if (currentStickyIndex2 !== currentStickyIndex && onChangeStickyIndex != null) { onChangeStickyIndex(currentStickyIndex2); } } }, [r2, recyclerViewManager, memo, currentStickyIndex, pushStartsAt, onChangeStickyIndex, stickyHeaderOffset]); useEffect(() => { callback(); }, [callback]); useImperativeHandle(stickyHeaderRef, () => ({ reportScrollEvent: () => { callback(); } }), [callback]); current = useRef(new Map()).current; const memo2 = useMemo(() => { let r10 = recyclerViewManager.tryGetLayout(currentStickyIndex)?.height; if (r10 == null) { r10 = 0; } return { translateY: scrollY.interpolate({ inputRange: [pushStartsAt, pushStartsAt + r10], outputRange: [0, -r10], extrapolate: "clamp" }), opacity: stickyHeaderOffset > 0 ? scrollY.interpolate({ inputRange: [pushStartsAt, pushStartsAt + r10], outputRange: [1, 0], extrapolate: "clamp" }) : void 0 }; }, [recyclerViewManager, currentStickyIndex, scrollY, pushStartsAt, stickyHeaderOffset]); translateY = memo2.translateY; opacity = memo2.opacity; const memo3 = useMemo(() => {currentStickyIndex !== -1 ? currentStickyIndex < data.length ? , [translateY, opacity, currentStickyIndex, data, renderItem, current, extraData, stickyHeaderOffset, zIndex, inverted]); return PlatformConfig.isRN083OrAbove ? currentStickyIndex !== -1 ? memo3 : null : memo3; };