import { useRef, useState } from 'react';
import { BREAKPOINTS } from '../../../../constants';
import { CAMERA_LAYER_NAME } from '../../../../contexts/Broadcast/useLayers';
import { Close, AccountBox } from '../../../../assets/icons';
import { clsm } from '../../../../utils';
import { MICROPHONE_AUDIO_INPUT_NAME } from '../../../../contexts/Broadcast/useAudioMixer';
import {
MODAL_CLOSE_BUTTON_CLASSES,
MODAL_OVERFLOW_DIVIDER_CLASSES,
getFormHeaderClasses,
getModalContainerClasses,
getModalFormClasses
} from '../StreamManagerModalTheme';
import { MODAL_TYPE, useModal } from '../../../../contexts/Modal';
import { streamManager as $streamManagerContent } from '../../../../content';
import { useResponsiveDevice } from '../../../../contexts/ResponsiveDevice';
import { useBroadcast } from '../../../../contexts/Broadcast';
import Button from '../../../../components/Button';
import Dropdown from '../../../../components/Dropdown';
import Modal from '../../../../components/Modal';
import ResponsivePanel from '../../../../components/ResponsivePanel';
import SwitchGroup from './formElements/SwitchGroup';
import useResizeObserver from '../../../../hooks/useResizeObserver';
const $content = $streamManagerContent.web_broadcast_audio_video_settings_modal;
const WebBroadcastSettingsModal = () => {
const { closeModal, handleConfirm, isModalOpen, type } = useModal();
const { isTouchscreenDevice, isMobileView, isLandscape } =
useResponsiveDevice();
const {
activeDevices,
devices,
isCameraHidden,
isMicrophoneMuted,
shouldShowCameraOnScreenShare,
updateActiveDevice,
updateShouldShowCameraOnScreenShare
} = useBroadcast();
const [isContentOverflowing, setIsContentOverflowing] = useState(false);
const mainContentRef = useRef();
useResizeObserver(
mainContentRef,
(entry) => {
if (entry) {
const { scrollHeight, clientHeight } = entry.target;
setIsContentOverflowing(scrollHeight > clientHeight);
}
},
isModalOpen
);
const renderStreamBroadcastingSettingsModal = (children) => (
<>
{
/**
* We mount/unmount the responsive panel to skip the enter and exit
* animations when switching between desktop and mobile views
*/
isMobileView && (