File tree Expand file tree Collapse file tree 5 files changed +33
-1
lines changed
Expand file tree Collapse file tree 5 files changed +33
-1
lines changed Original file line number Diff line number Diff line change 1212 onChangeState= {event => console .log (event )}
1313 onReady= {() => console .log (" ready" )}
1414 onError= {e => console .log (e)}
15+ onFullScreenChange= {status => console .log (status)}
1516 onPlaybackQualityChange= {q => console .log (q)}
1617 volume= {50 }
1718 playbackRate= {1 }
3738- [ onChangeState] ( #onChangeState )
3839- [ onReady] ( #onReady )
3940- [ onError] ( #onError )
41+ - [ onFullScreenChange] ( #onFullScreenChange )
4042- [ onPlaybackQualityChange] ( #onPlaybackQualityChange )
4143- [ mute] ( #mute )
4244- [ volume] ( #volume )
@@ -192,6 +194,16 @@ Possible values are:
192194| video_not_found | The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private. |
193195| embed_not_allowed | The owner of the requested video does not allow it to be played in embedded players. |
194196
197+ ## onFullScreenChange
198+
199+ ** _ function(status: boolean)_ **
200+
201+ ** note: android only, see ` issue #45 ` for work on ios support**
202+
203+ This event fires whenever the fullscreen option is clicked in the player.
204+
205+ The data value that the API passes to the event listener function will be a boolean that identifies the new fullscreen status.
206+
195207## onPlaybackQualityChange
196208
197209** _ function(quality: string)_ **
Original file line number Diff line number Diff line change @@ -102,6 +102,10 @@ export interface YoutubeIframeProps {
102102 * callback for when the player's state changes.
103103 */
104104 onChangeState ?: ( event : String ) => void ;
105+ /**
106+ * callback for when the fullscreen option is clicked in the player. It signals the new fullscreen state of the player.
107+ */
108+ onFullScreenChange ?: ( status : Boolean ) => void ;
105109 /**
106110 * callback for when the video playback quality changes. It might signal a change in the viewer's playback environment.
107111 */
Original file line number Diff line number Diff line change @@ -54,6 +54,7 @@ const [playing, setPlaying] = useState(true);
5454 onChangeState= {event => console .log (event )}
5555 onReady= {() => console .log (" ready" )}
5656 onError= {e => console .log (e)}
57+ onFullScreenChange= {status => console .log (status)}
5758 onPlaybackQualityChange= {q => console .log (q)}
5859 volume= {50 }
5960 playbackRate= {1 }
@@ -79,6 +80,7 @@ list of available APIs -
7980- onChangeState
8081- onReady
8182- onError
83+ - onFullScreenChange
8284- onPlaybackQualityChange
8385- mute
8486- volume
Original file line number Diff line number Diff line change @@ -98,7 +98,6 @@ export const MAIN_SCRIPT = (
9898 var firstScriptTag = document.getElementsByTagName('script')[0];
9999 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
100100
101-
102101 var player;
103102 function onYouTubeIframeAPIReady() {
104103 player = new YT.Player('player', {
@@ -152,6 +151,17 @@ export const MAIN_SCRIPT = (
152151 function onPlayerStateChange(event) {
153152 window.ReactNativeWebView.postMessage(JSON.stringify({eventType: 'playerStateChange', data: event.data}))
154153 }
154+
155+ var isFullScreen = false;
156+ function onFullScreenChange() {
157+ isFullScreen = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
158+ window.ReactNativeWebView.postMessage(JSON.stringify({eventType: 'fullScreenChange', data: Boolean(isFullScreen)}));
159+ }
160+
161+ document.addEventListener('fullscreenchange', onFullScreenChange)
162+ document.addEventListener('mozfullscreenchange', onFullScreenChange)
163+ document.addEventListener('msfullscreenchange', onFullScreenChange)
164+ document.addEventListener('webkitfullscreenchange', onFullScreenChange)
155165 </script>
156166 </body>
157167</html>` ;
Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ const YoutubeIframe = (
3131 allowWebViewZoom = false ,
3232 forceAndroidAutoplay = false ,
3333 onChangeState = _event => { } ,
34+ onFullScreenChange = _status => { } ,
3435 onPlaybackQualityChange = _quality => { } ,
3536 onPlaybackRateChange = _playbackRate => { } ,
3637 } ,
@@ -117,6 +118,9 @@ const YoutubeIframe = (
117118 const message = JSON . parse ( event . nativeEvent . data ) ;
118119 try {
119120 switch ( message . eventType ) {
121+ case 'fullScreenChange' :
122+ onFullScreenChange ( message . data ) ;
123+ break ;
120124 case 'playerStateChange' :
121125 onChangeState ( PLAYER_STATES [ message . data ] ) ;
122126 break ;
You can’t perform that action at this time.
0 commit comments