import { ActionButton } from './actionbutton/ActionButton'; import React, { type ReactNode, useCallback, useContext } from 'react'; import { PlayerContext } from '../util/PlayerContext'; import { PlaySvg } from './svg/PlaySvg'; import { PauseSvg } from './svg/PauseSvg'; import { ReplaySvg } from './svg/ReplaySvg'; import { usePaused } from '../../hooks/usePaused'; import { useEnded } from '../../hooks/useEnded'; import type { ButtonBaseProps } from './ButtonBaseProps'; import { TestIDs } from '../../utils/TestIDs'; export interface PlayButtonProps extends ButtonBaseProps { /** * The icon components used in the button. */ icon?: { play: ReactNode; pause: ReactNode; replay: ReactNode }; } /** * The default play/pause button for the `react-native-theoplayer` UI. */ export function PlayButton(props: PlayButtonProps) { const { icon, style } = props; const playSvg: ReactNode = icon?.play ?? ; const pauseSvg: ReactNode = icon?.pause ?? ; const replaySvg: ReactNode = icon?.replay ?? ; const { player } = useContext(PlayerContext); const paused = usePaused(); const ended = useEnded(); const togglePlayPause = useCallback(() => { if (player.paused) { player.play(); } else { player.pause(); } }, [player]); return ( ); }