11import React , { Component } from 'react' ;
22import PropTypes from 'prop-types' ;
3- import Fullscreen from 'react-full-screen' ;
3+ import { FullScreen , useFullScreenHandle } from 'react-full-screen' ;
44import { I18nextProvider } from 'react-i18next' ;
55import { LiveAnnouncer } from 'react-aria-live' ;
66import {
@@ -12,6 +12,7 @@ import HTML5toTouch from 'react-dnd-multi-backend/dist/cjs/HTML5toTouch';
1212import { create } from 'jss' ;
1313import rtl from 'jss-rtl' ;
1414import createI18nInstance from '../i18n' ;
15+ import FullScreenContext from '../contexts/FullScreenContext' ;
1516
1617/**
1718 * Allow applications to opt-out of (or provide their own) drag and drop context
@@ -46,6 +47,25 @@ MaybeDndProvider.propTypes = {
4647 ] ) . isRequired ,
4748} ;
4849
50+ /**
51+ * Shim to inject the full screen handle into a context
52+ */
53+ const FullScreenShim = ( { children } ) => {
54+ const handle = useFullScreenHandle ( ) ;
55+
56+ return (
57+ < FullScreen handle = { handle } >
58+ < FullScreenContext . Provider value = { handle } >
59+ { children }
60+ </ FullScreenContext . Provider >
61+ </ FullScreen >
62+ ) ;
63+ } ;
64+
65+ FullScreenShim . propTypes = {
66+ children : PropTypes . node . isRequired ,
67+ } ;
68+
4969/**
5070 * This component adds viewer-specific providers.
5171 * @prop {Object } manifests
@@ -81,8 +101,8 @@ export class AppProviders extends Component {
81101 /** */
82102 render ( ) {
83103 const {
84- children, createGenerateClassNameOptions, isFullscreenEnabled ,
85- setWorkspaceFullscreen , theme, translations,
104+ children, createGenerateClassNameOptions,
105+ theme, translations,
86106 dndManager,
87107 } = this . props ;
88108
@@ -93,10 +113,7 @@ export class AppProviders extends Component {
93113 } ) ;
94114
95115 return (
96- < Fullscreen
97- enabled = { isFullscreenEnabled }
98- onChange = { setWorkspaceFullscreen }
99- >
116+ < FullScreenShim >
100117 < I18nextProvider i18n = { this . i18n } >
101118 < LiveAnnouncer >
102119 < ThemeProvider
@@ -113,7 +130,7 @@ export class AppProviders extends Component {
113130 </ ThemeProvider >
114131 </ LiveAnnouncer >
115132 </ I18nextProvider >
116- </ Fullscreen >
133+ </ FullScreenShim >
117134 ) ;
118135 }
119136}
@@ -122,9 +139,7 @@ AppProviders.propTypes = {
122139 children : PropTypes . node ,
123140 createGenerateClassNameOptions : PropTypes . object , // eslint-disable-line react/forbid-prop-types
124141 dndManager : PropTypes . object , // eslint-disable-line react/forbid-prop-types
125- isFullscreenEnabled : PropTypes . bool ,
126142 language : PropTypes . string . isRequired ,
127- setWorkspaceFullscreen : PropTypes . func . isRequired ,
128143 theme : PropTypes . object . isRequired , // eslint-disable-line react/forbid-prop-types
129144 translations : PropTypes . object . isRequired , // eslint-disable-line react/forbid-prop-types
130145} ;
@@ -133,5 +148,4 @@ AppProviders.defaultProps = {
133148 children : null ,
134149 createGenerateClassNameOptions : { } ,
135150 dndManager : undefined ,
136- isFullscreenEnabled : false ,
137151} ;
0 commit comments