UNPKG

@theoplayer/react-native-ui

Version:

A React Native UI for @theoplayer/react-native

43 lines 1.47 kB
import React, { useCallback, useContext } from 'react'; import { Platform } from 'react-native'; import { PlayerContext } from '../util/PlayerContext'; import { isConnected } from './ChromecastButton'; import { ActionButton } from './actionbutton/ActionButton'; import { AirplaySvg } from './svg/AirplaySvg'; import { CastState } from 'react-native-theoplayer'; import { useAirplay } from '../../hooks/useAirplay'; import { TestIDs } from '../../utils/TestIDs'; import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; /** * The default button to enable Airplay for the `react-native-theoplayer` UI. */ export function AirplayButton(props) { const { icon } = props; const { player } = useContext(PlayerContext); const castState = useAirplay(); const onUIAirplayToggled = useCallback(() => { if (castState !== CastState.unavailable) { if (isConnected(castState)) { player.cast.airplay?.stop(); } else { player.cast.airplay?.start(); } } }, [player, castState]); if (castState === CastState.unavailable || Platform.isTV) { return /*#__PURE__*/_jsx(_Fragment, {}); } return /*#__PURE__*/_jsx(ActionButton, { style: props.style, testID: props.testID ?? TestIDs.AIRPLAY_BUTTON, svg: icon ?? /*#__PURE__*/_jsx(AirplaySvg, {}), touchable: true, onPress: onUIAirplayToggled, highlighted: isConnected(castState) }); } //# sourceMappingURL=AirplayButton.js.map