import React, { useMemo } from 'react'; import { ButtonDisplayType } from '../../types'; import { HangUpIcon, MicOffIcon, MicOnIcon, CamOffIcon, CamOnIcon, ShareScreenIcon, ChatUnreadIcon, } from '../Icons'; import { Button } from '../Button'; import { Settings } from '../Settings/Settings'; import { VerticalDivider } from '../VerticalDivider'; import { hmsUiClassParserGenerator } from '../../utils/classes'; import { useHMSTheme } from '../../hooks/HMSThemeProvider'; export interface ControlBarClasses { root?: string; leftRoot?: string; centerRoot?: string; rightRoot?: string; } export interface ControlBarProps { isAudioMuted?: boolean; isVideoMuted?: boolean; isChatOpen?: boolean; buttonDisplay?: ButtonDisplayType; audioButtonOnClick: React.MouseEventHandler; videoButtonOnClick: React.MouseEventHandler; leaveButtonOnClick?: React.MouseEventHandler; chatButtonOnClick?: React.MouseEventHandler; screenshareButtonOnClick?: React.MouseEventHandler; leftComponents: Array; centerComponents: Array; rightComponents: Array; classes?: ControlBarClasses; } // Note: Column Gap is not supported in safari const defaultClasses: ControlBarClasses = { root: 'flex bg-white dark:bg-black h-full items-center p-3 mr-2 ml-2 justify-center md:justify-between relative', leftRoot: 'flex justify-center items-center z-10 space-x-2 md:space-x-3', centerRoot: 'flex md:flex-1 mr-4 ml-2 md:ml-0 md:mr-0 justify-center items-center md:absolute md:left-0 md:right-0', rightRoot: 'z-10 items-center flex', }; export const ControlBar = ({ isAudioMuted = false, isVideoMuted = false, isChatOpen = false, buttonDisplay = 'rectangle', audioButtonOnClick, videoButtonOnClick, leaveButtonOnClick, chatButtonOnClick, screenshareButtonOnClick, leftComponents = [ , , , , , ], centerComponents = [ , , ], rightComponents = [ , ], classes, }: ControlBarProps) => { const { tw } = useHMSTheme(); const styler = useMemo( () => hmsUiClassParserGenerator({ tw, classes, defaultClasses, tag: 'hmsui-controlbar', }), [], ); const leftItems = Array(); const centerItems = Array(); const rightItems = Array(); centerComponents.forEach(comp => { centerItems.push(comp); }); rightComponents.forEach(comp => { rightItems.push(comp); }); leftComponents.forEach(comp => { leftItems.push(comp); }); return (
{leftItems}
{centerItems}
{rightItems}
); };