UNPKG

@100mslive/roomkit-react

Version:

![Banner](https://github.com/100mslive/web-sdks/blob/06c65259912db6ccd8617f2ecb6fef51429251ec/prebuilt-banner.png)

47 lines (42 loc) 1.34 kB
import { useCallback, useEffect, useState } from 'react'; import screenfull from 'screenfull'; // @ts-ignore: No implicit any import { ToastManager } from '../Toast/ToastManager'; import { DEFAULT_PORTAL_CONTAINER } from '../../common/constants'; export const useFullscreen = () => { const [isFullScreenEnabled, setIsFullScreenEnabled] = useState(screenfull.isFullscreen); const toggle = useCallback(async () => { if (!screenfull.isEnabled) { ToastManager.addToast({ title: 'Fullscreen feature not supported' }); return; } try { const container = document.querySelector(DEFAULT_PORTAL_CONTAINER); if (isFullScreenEnabled) { await screenfull.exit(); } else if (container) { await screenfull.request(container); } } catch (err) { ToastManager.addToast({ title: (err as Error).message }); } }, [isFullScreenEnabled]); useEffect(() => { const onChange = () => { setIsFullScreenEnabled(screenfull.isFullscreen); }; if (screenfull.isEnabled) { screenfull.on('change', onChange); } return () => { if (screenfull.isEnabled) { screenfull.off('change', onChange); } }; }, []); return { allowed: screenfull.isEnabled, isFullscreen: isFullScreenEnabled, toggleFullscreen: toggle, }; };