import { useState } from 'react' import Box from '@mui/material/Box' import Videocam from '@mui/icons-material/Videocam' import VideocamOff from '@mui/icons-material/VideocamOff' import List from '@mui/material/List' import ListItem from '@mui/material/ListItem' import ListItemText from '@mui/material/ListItemText' import Menu from '@mui/material/Menu' import MenuItem from '@mui/material/MenuItem' import Fab from '@mui/material/Fab' import Tooltip from '@mui/material/Tooltip' import { PeerRoom } from 'services/PeerRoom/PeerRoom' import { useRoomVideo } from './useRoomVideo' export interface RoomVideoControlsProps { peerRoom: PeerRoom } export function RoomVideoControls({ peerRoom }: RoomVideoControlsProps) { const { videoDevices, isCameraEnabled, setIsCameraEnabled, handleVideoDeviceSelect, } = useRoomVideo({ peerRoom }) const [videoAnchorEl, setVideoAnchorEl] = useState(null) const isVideoDeviceSelectOpen = Boolean(videoAnchorEl) const [selectedVideoDeviceIdx, setSelectedVideoDeviceIdx] = useState(0) const handleEnableCameraClick = () => { setIsCameraEnabled(!isCameraEnabled) } const handleVideoDeviceListItemClick = ( event: React.MouseEvent ) => { setVideoAnchorEl(event.currentTarget) } const handleVideoDeviceMenuItemClick = ( _event: React.MouseEvent, idx: number ) => { setSelectedVideoDeviceIdx(idx) handleVideoDeviceSelect(videoDevices[idx]) setVideoAnchorEl(null) } const handleVideoInputSelectMenuClose = () => { setVideoAnchorEl(null) } return ( {isCameraEnabled ? : } {videoDevices.length > 0 && ( {videoDevices.map((videoDevice, idx) => ( handleVideoDeviceMenuItemClick(event, idx)} > {videoDevice.label} ))} )} ) }