@@ -6,7 +6,7 @@ import React, {
66 forwardRef ,
77 useState ,
88} from 'react' ;
9- import { View } from 'react-native' ;
9+ import { View , StyleSheet } from 'react-native' ;
1010import WebView from 'react-native-webview' ;
1111import { PLAYER_STATES , PLAYER_ERROR } from './constants' ;
1212import { EventEmitter } from 'events' ;
@@ -17,6 +17,8 @@ const YoutubeIframe = (
1717 height,
1818 width,
1919 videoId,
20+ playList,
21+ playListStartIndex,
2022 play = false ,
2123 onChangeState,
2224 onReady,
@@ -27,6 +29,7 @@ const YoutubeIframe = (
2729 playbackRate = 1 ,
2830 onPlaybackRateChange,
2931 initialPlayerParams = { } ,
32+ webViewStyle,
3033 } ,
3134 ref ,
3235) => {
@@ -121,6 +124,11 @@ const YoutubeIframe = (
121124 case 'playerReady' :
122125 onReady ( ) ;
123126 setPlayerReady ( true ) ;
127+ if ( Array . isArray ( playList ) ) {
128+ webViewRef . current . injectJavaScript (
129+ PLAYER_FUNCTIONS . loadPlaylist ( playList , playListStartIndex ) ,
130+ ) ;
131+ }
124132 break ;
125133 case 'playerQualityChange' :
126134 onPlaybackQualityChange ( message . data ) ;
@@ -145,20 +153,27 @@ const YoutubeIframe = (
145153 onPlaybackQualityChange ,
146154 onError ,
147155 onPlaybackRateChange ,
156+ playListStartIndex ,
157+ playList ,
148158 ] ,
149159 ) ;
150160
151161 return (
152162 < View style = { { height, width} } >
153163 < WebView
164+ style = { [ webViewStyle , styles . webView ] }
154165 ref = { webViewRef }
155166 originWhitelist = { [ '*' ] }
156- source = { { html : MAIN_SCRIPT ( videoId , initialPlayerParams ) } }
167+ source = { { html : MAIN_SCRIPT ( videoId , playList , initialPlayerParams ) } }
157168 allowsInlineMediaPlayback
158169 onMessage = { onWebMessage }
159170 />
160171 </ View >
161172 ) ;
162173} ;
163174
175+ const styles = StyleSheet . create ( {
176+ webView : { backgroundColor : 'transparent' } ,
177+ } ) ;
178+
164179export default forwardRef ( YoutubeIframe ) ;
0 commit comments