import type { FC } from 'react' import Animated, { interpolate, useAnimatedRef, useAnimatedStyle, useScrollViewOffset, } from 'react-native-reanimated' import { useTheme } from '../../../../providers/native' import View from '../View' import { createStyles } from './styles' import { ParallaxScrollViewProps } from './types' const HEADER_HEIGHT = 250 const ParallaxScrollView: FC = ({ children, headerImage }) => { const scrollRef = useAnimatedRef() const scrollOffset = useScrollViewOffset(scrollRef) const theme = useTheme() const styles = createStyles(theme) const headerAnimatedStyle = useAnimatedStyle(() => ({ transform: [ { translateY: interpolate( scrollOffset.value, [-HEADER_HEIGHT, 0, HEADER_HEIGHT], [-HEADER_HEIGHT / 2, 0, HEADER_HEIGHT * 0.75], ), }, { scale: interpolate(scrollOffset.value, [-HEADER_HEIGHT, 0, HEADER_HEIGHT], [2, 1, 1]), }, ], })) return ( {headerImage} {children} ) } export default ParallaxScrollView