UNPKG

@theoplayer/react-native-ui

Version:

A React Native UI for @theoplayer/react-native

44 lines (43 loc) 1.48 kB
import { CastState } from 'react-native-theoplayer'; import { ActionButton } from '@theoplayer/react-native-ui'; import React, { useCallback, useContext } from 'react'; import { PlayerContext } from '../util/PlayerContext'; import { ChromecastSvg } from './svg/ChromecastSvg'; import { Platform } from 'react-native'; import { useChromecast } from '../../hooks/useChromecast'; import { TestIDs } from '../../utils/TestIDs'; import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; export function isConnected(state) { return state === 'connecting' || state === 'connected'; } /** * The button to enable Chromecast for web for the `react-native-theoplayer` UI */ export function ChromecastButton(props) { const { player } = useContext(PlayerContext); const castState = useChromecast(); const { icon } = props; const onPress = useCallback(() => { if (isConnected(castState)) { player.cast.chromecast?.stop(); } else { player.cast.chromecast?.start(); } }, [player, castState]); if (Platform.OS === 'web' && castState === CastState.unavailable) { return /*#__PURE__*/_jsx(_Fragment, {}); } return /*#__PURE__*/_jsx(ActionButton, { style: props.style, testID: props.testID ?? TestIDs.CHROMECAST_BUTTON, svg: icon ?? /*#__PURE__*/_jsx(ChromecastSvg, {}), touchable: true, onPress: onPress, highlighted: isConnected(castState) }); } //# sourceMappingURL=ChromecastButton.web.js.map