@@ -7,6 +7,8 @@ import {cn} from '../../utils/cn';
77import { useTypedDispatch , useTypedSelector } from '../../utils/hooks' ;
88import { Portal } from '../Portal/Portal' ;
99
10+ import { useFullscreenContext } from './FullscreenContext' ;
11+
1012import disableFullscreenIcon from '../../assets/icons/disableFullscreen.svg' ;
1113
1214import './Fullscreen.scss' ;
@@ -18,11 +20,10 @@ interface FullscreenProps {
1820 className ?: string ;
1921}
2022
21- const fullscreenRoot = document . getElementById ( 'fullscreen-root' ) ?? undefined ;
22-
23- function Fullscreen ( { children, className} : FullscreenProps ) {
23+ export function Fullscreen ( { children, className} : FullscreenProps ) {
2424 const isFullscreen = useTypedSelector ( ( state ) => state . fullscreen ) ;
2525 const dispatch = useTypedDispatch ( ) ;
26+ const fullscreenRootRef = useFullscreenContext ( ) ;
2627
2728 const onDisableFullScreen = React . useCallback ( ( ) => {
2829 dispatch ( disableFullscreen ( ) ) ;
@@ -44,20 +45,20 @@ function Fullscreen({children, className}: FullscreenProps) {
4445 const [ container , setContainer ] = React . useState < HTMLDivElement | null > ( null ) ;
4546 React . useEffect ( ( ) => {
4647 const div = document . createElement ( 'div' ) ;
47- fullscreenRoot ?. appendChild ( div ) ;
48+ fullscreenRootRef . current ?. appendChild ( div ) ;
4849 div . style . display = 'contents' ;
4950 setContainer ( div ) ;
5051 return ( ) => {
5152 setContainer ( null ) ;
5253 div . remove ( ) ;
5354 } ;
54- } , [ ] ) ;
55+ } , [ fullscreenRootRef ] ) ;
5556
5657 const ref = React . useRef < HTMLDivElement > ( null ) ;
5758 React . useLayoutEffect ( ( ) => {
5859 if ( container ) {
5960 if ( isFullscreen ) {
60- fullscreenRoot ?. appendChild ( container ) ;
61+ fullscreenRootRef . current ?. appendChild ( container ) ;
6162 } else {
6263 ref . current ?. appendChild ( container ) ;
6364 }
@@ -67,7 +68,7 @@ function Fullscreen({children, className}: FullscreenProps) {
6768 window . dispatchEvent ( new Event ( 'resize' ) ) ;
6869 } ) ;
6970 }
70- } , [ container , isFullscreen ] ) ;
71+ } , [ container , fullscreenRootRef , isFullscreen ] ) ;
7172
7273 if ( ! container ) {
7374 return null ;
@@ -90,5 +91,3 @@ function Fullscreen({children, className}: FullscreenProps) {
9091 </ div >
9192 ) ;
9293}
93-
94- export default Fullscreen ;
0 commit comments