@@ -38,15 +38,20 @@ if ( 0 !== ableplayer_selectors.length ) {
3838}
3939
4040if ( 'true' === ableplayer . settings . replace_playlists ) {
41- const audioPlaylists = document . querySelectorAll ( '.wp-audio -playlist' ) ;
42- if ( audioPlaylists . length > 0 ) {
43- audioPlaylists . forEach ( ( playlist , index , listObj ) => {
44- renderPlaylist ( playlist , index ) ;
41+ const playlists = document . querySelectorAll ( '.wp-playlist' ) ;
42+ if ( playlists . length > 0 ) {
43+ playlists . forEach ( ( playlist , index , listObj ) => {
44+ renderPlaylist ( playlist ) ;
4545 } ) ;
4646 }
4747}
4848
49- function renderPlaylist ( el , index ) {
49+ /**
50+ * Render the AblePlayer playlist over WP Playlist data sources.
51+ *
52+ * @param Element el Playlist wrapper element.
53+ */
54+ function renderPlaylist ( el ) {
5055 let contents = JSON . parse ( el . querySelector ( '.wp-playlist-script' ) . textContent ) ;
5156 let player = ( el . classList . contains ( 'wp-audio-playlist' ) ) ? el . querySelector ( 'audio' ) : el . querySelector ( 'video' ) ;
5257 let tracks = contents . tracks ;
@@ -57,20 +62,32 @@ function renderPlaylist( el, index ) {
5762 let listItem , source , button ;
5863 tracks . forEach ( ( track , index , listObj ) => {
5964 listItem = document . createElement ( 'li' ) ;
65+ listItem . setAttribute ( 'data-poster' , track . image . src ) ;
6066 source = document . createElement ( 'span' ) ;
6167 source . classList . add ( 'able-source' ) ;
6268 source . setAttribute ( 'data-type' , track . type ) ;
6369 source . setAttribute ( 'data-src' , track . src ) ;
6470 button = document . createElement ( 'button' ) ;
6571 button . setAttribute ( 'type' , 'button' ) ;
6672 button . innerText = track . title ;
73+ if ( track . image . src ) {
74+ img = document . createElement ( 'img' ) ;
75+ img . setAttribute ( 'src' , track . image . src ) ;
76+ img . setAttribute ( 'alt' , '' ) ;
77+ img . setAttribute ( 'height' , track . image . height ) ;
78+ img . setAttribute ( 'width' , track . image . width ) ;
79+ button . insertAdjacentElement ( 'afterbegin' , img ) ;
80+ }
6781 listItem . insertAdjacentElement ( 'afterbegin' , source ) ;
6882 listItem . insertAdjacentElement ( 'beforeend' , button ) ;
6983 list . insertAdjacentElement ( 'beforeend' , listItem ) ;
7084 } ) ;
7185 el . insertAdjacentElement ( 'beforeend' , list ) ;
7286
73- el . querySelector ( '.wp-playlist-current-item' ) . remove ( ) ;
87+ let wpCurrent = el . querySelector ( '.wp-playlist-current-item' ) ;
88+ if ( wpCurrent ) {
89+ wpCurrent . remove ( ) ;
90+ }
7491}
7592
7693const ablePlayers = document . querySelectorAll ( '[data-able-player]' ) ;
0 commit comments