@theoplayer/react-native-ui
Version:
A React Native UI for @theoplayer/react-native
44 lines (43 loc) • 1.48 kB
JavaScript
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