import React, { useMemo } from 'react'; import { StyleSheet, View } from 'react-native'; import ControlTouchable from './ControlTouchable'; import useControlsVideoState from '../hooks/useControlsVideoState'; import type { ControlVideoStateProps } from './types'; const ControlVideoState = ({ components, onPause, onPlay, onForward, onRewind, isPlaying, spacing = 15, }: ControlVideoStateProps) => { const { setPressedButton, ...stateMethods } = useControlsVideoState({ onPause, onPlay, onForward, onRewind, }); const { play: PlayElement, pause: PauseElement, forward: ForwardElement, rewind: RewindElement, } = components; const containerStyle = useMemo(() => { switch (spacing) { case 'space-around': case 'space-between': return { width: '100%', justifyContent: spacing, }; default: return {}; } }, [spacing]); const itemSpacingStyle = useMemo(() => { switch (spacing) { case 'space-around': case 'space-between': return { marginRight: 0, }; default: return {}; } }, [spacing]); return ( {!!RewindElement && ( {({ pressed }) => { setPressedButton('rewind', pressed); return ( ); }} )} {!isPlaying && !!PlayElement && ( {({ pressed }) => { setPressedButton('play', pressed); return ( ); }} )} {isPlaying && !!PauseElement && ( {({ pressed }) => { setPressedButton('pause', pressed); return ( ); }} )} {!!ForwardElement && ( {({ pressed }) => { setPressedButton('forward', pressed); return ( ); }} )} ); }; export default ControlVideoState; const styles = StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', }, item: { marginRight: 15, }, });