UNPKG

@theoplayer/react-native-ui

Version:

A React Native UI for @theoplayer/react-native

42 lines 1.38 kB
import { ActionButton } from './actionbutton/ActionButton'; import React, { 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 { TestIDs } from '../../utils/TestIDs'; import { jsx as _jsx } from "react/jsx-runtime"; /** * The default play/pause button for the `react-native-theoplayer` UI. */ export function PlayButton(props) { const { icon, style } = props; const playSvg = icon?.play ?? /*#__PURE__*/_jsx(PlaySvg, {}); const pauseSvg = icon?.pause ?? /*#__PURE__*/_jsx(PauseSvg, {}); const replaySvg = icon?.replay ?? /*#__PURE__*/_jsx(ReplaySvg, {}); const { player } = useContext(PlayerContext); const paused = usePaused(); const ended = useEnded(); const togglePlayPause = useCallback(() => { if (player.paused) { player.play(); } else { player.pause(); } }, [player]); return /*#__PURE__*/_jsx(ActionButton, { style: style, testID: props.testID ?? TestIDs.PLAY_BUTTON, touchable: true, svg: ended ? replaySvg : paused ? playSvg : pauseSvg, onPress: togglePlayPause }); } //# sourceMappingURL=PlayButton.js.map