/
spirzen
/
it-knowledge-base
Обзор
Документация
Войти
/
spirzen
/
it-knowledge-base
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/components/shared/useDemoFullscreen.js
35 строк
996 B
Spirzen
Data pack - mass data reworks
25 май 2026, 04:19
25 май 2026, 04:19
2540895
Код
Авторство
О чём код?
import {useCallback, useEffect, useState} from 'react'; /** Полноэкранный режим для интерактивных демо (Escape — выход). */ export default function useDemoFullscreen() { const [isFullscreen, setIsFullscreen] = useState(false); useEffect(() => { if (!isFullscreen) { return undefined; } const prevOverflow = document.body.style.overflow; document.body.style.overflow = 'hidden'; const onKey = (e) => { if (e.key === 'Escape') { setIsFullscreen(false); } }; window.addEventListener('keydown', onKey); return () => { document.body.style.overflow = prevOverflow; window.removeEventListener('keydown', onKey); }; }, [isFullscreen]); const toggleFullscreen = useCallback(() => { setIsFullscreen((v) => !v); }, []); return { isFullscreen, setIsFullscreen, toggleFullscreen, fullscreenClass: isFullscreen ? 'it-demo--fullscreen' : undefined, }; }