import React, {Dispatch, SetStateAction} from 'react'; import { ImageBackground, SafeAreaView, StyleSheet, GestureResponderHandlers, } from 'react-native'; import {Timer} from './Timer'; import {Title} from './Title'; import {NullControl} from './NullControl'; import {Fullscreen} from './Fullscreen'; import {Seekbar} from './Seekbar'; import {calculateTime} from '../utils'; import type {VideoAnimations} from '../types'; import {styles} from './styles'; interface BottomControlsProps { showControls: boolean; animations: VideoAnimations; panHandlers: GestureResponderHandlers; disableTimer: boolean; disableSeekbar: boolean; showDuration: boolean; showHours: boolean; paused: boolean; showTimeRemaining: boolean; currentTime: number; duration: number; seekColor: string; title: string; toggleTimer: () => void; resetControlTimeout: () => void; seekerFillWidth: number; seekerPosition: number; setSeekerWidth: Dispatch>; isFullscreen: boolean; disableFullscreen: boolean; toggleFullscreen: () => void; } export const BottomControls = ({ showControls, animations: {AnimatedView, ...animations}, panHandlers, disableSeekbar, disableTimer, duration, seekColor, showDuration, showHours, showTimeRemaining, currentTime, title, toggleTimer, resetControlTimeout, seekerFillWidth, seekerPosition, setSeekerWidth, isFullscreen, disableFullscreen, toggleFullscreen, }: BottomControlsProps) => { const timerControl = disableTimer ? ( ) : ( {calculateTime({ showDuration, showHours, showTimeRemaining, time: currentTime, duration, })} ); const seekbarControl = disableSeekbar ? ( ) : ( ); const fullscreenControl = disableFullscreen ? ( ) : ( ); return ( {timerControl} {fullscreenControl} </SafeAreaView> <SafeAreaView style={styles.seekBarContainer}> {seekbarControl} </SafeAreaView> </ImageBackground> </AnimatedView> ); }; const _styles = StyleSheet.create({ bottom: { alignItems: 'stretch', flex: 2, justifyContent: 'flex-end', }, bottomControlGroup: { alignSelf: 'stretch', alignItems: 'center', justifyContent: 'space-between', marginLeft: 12, marginRight: 12, marginBottom: 0, }, });