11let ableplayer_selectors = [ ] ;
2- if ( ableplayer . settings . replace_video === 'true' ) {
3- ableplayer_selectors . push ( 'video' ) ;
4- }
5- if ( ableplayer . settings . replace_audio === 'true' ) {
6- ableplayer_selectors . push ( 'audio' ) ;
7- }
8- if ( 0 !== ableplayer_selectors . length ) {
9- const mediaEls = document . querySelectorAll ( ableplayer_selectors ) ;
10- let childTracks ;
11- if ( mediaEls ) {
12- mediaEls . forEach ( ( el , index , listObj ) => {
13- let excludeClass = ableplayer . settings . exclude_class ;
14- let parentEl = el . closest ( 'figure' ) ;
15- let parentDiv = el . closest ( 'div' ) ;
16- let parentHasClass = ( parentEl ) ? parentEl . classList . contains ( excludeClass ) : false ;
17- let parentDivHasClass = ( parentDiv ) ? parentDiv . classList . contains ( excludeClass ) : false ;
18- if ( excludeClass !== '' && el . classList . contains ( excludeClass ) || parentHasClass || parentDivHasClass ) {
19- el . classList . add ( 'ableplayer-skipped' ) ;
20- } else {
21- el . removeAttribute ( 'controls' ) ;
22- if ( ! el . hasAttribute ( 'data-able-player' ) ) {
23- el . setAttribute ( 'data-able-player' , 'true' ) ;
24- }
25- if ( ! el . hasAttribute ( 'id' ) ) {
26- el . setAttribute ( 'id' , 'able-player-id-' + index ) ;
27- }
28- if ( ! el . hasAttribute ( 'data-skin' ) ) {
29- el . setAttribute ( 'data-skin' , '2020' ) ;
30- }
31- }
32- childTracks = el . querySelectorAll ( 'track' ) ;
33- childTracks . forEach ( ( track , index , listObj ) => {
34- if ( ! track . hasAttribute ( 'kind' ) ) {
35- track . setAttribute ( 'kind' , 'subtitles' ) ;
2+ if ( ableplayer !== 'undefined' ) {
3+ if ( ableplayer . settings . replace_video === 'true' ) {
4+ ableplayer_selectors . push ( 'video' ) ;
5+ }
6+ if ( ableplayer . settings . replace_audio === 'true' ) {
7+ ableplayer_selectors . push ( 'audio' ) ;
8+ }
9+ if ( 0 !== ableplayer_selectors . length ) {
10+ const mediaEls = document . querySelectorAll ( ableplayer_selectors ) ;
11+ let childTracks ;
12+ if ( mediaEls ) {
13+ mediaEls . forEach ( ( el , index , listObj ) => {
14+ let excludeClass = ableplayer . settings . exclude_class ;
15+ let parentEl = el . closest ( 'figure' ) ;
16+ let parentDiv = el . closest ( 'div' ) ;
17+ let parentHasClass = ( parentEl ) ? parentEl . classList . contains ( excludeClass ) : false ;
18+ let parentDivHasClass = ( parentDiv ) ? parentDiv . classList . contains ( excludeClass ) : false ;
19+ if ( excludeClass !== '' && el . classList . contains ( excludeClass ) || parentHasClass || parentDivHasClass ) {
20+ el . classList . add ( 'ableplayer-skipped' ) ;
21+ } else {
22+ el . removeAttribute ( 'controls' ) ;
23+ if ( ! el . hasAttribute ( 'data-able-player' ) ) {
24+ el . setAttribute ( 'data-able-player' , 'true' ) ;
25+ }
26+ if ( ! el . hasAttribute ( 'id' ) ) {
27+ el . setAttribute ( 'id' , 'able-player-id-' + index ) ;
28+ }
29+ if ( ! el . hasAttribute ( 'data-skin' ) ) {
30+ el . setAttribute ( 'data-skin' , '2020' ) ;
31+ }
3632 }
33+ childTracks = el . querySelectorAll ( 'track' ) ;
34+ childTracks . forEach ( ( track , index , listObj ) => {
35+ if ( ! track . hasAttribute ( 'kind' ) ) {
36+ track . setAttribute ( 'kind' , 'subtitles' ) ;
37+ }
38+ } ) ;
3739 } ) ;
38- } ) ;
40+ }
3941 }
40- }
4142
42- if ( 'true' === ableplayer . settings . replace_playlists ) {
43- const playlists = document . querySelectorAll ( '.wp-playlist' ) ;
44- if ( playlists . length > 0 ) {
45- playlists . forEach ( ( playlist , index , listObj ) => {
46- renderPlaylist ( playlist ) ;
47- } ) ;
43+ if ( 'true' === ableplayer . settings . replace_playlists ) {
44+ const playlists = document . querySelectorAll ( '.wp-playlist' ) ;
45+ if ( playlists . length > 0 ) {
46+ playlists . forEach ( ( playlist , index , listObj ) => {
47+ renderPlaylist ( playlist ) ;
48+ } ) ;
49+ }
4850 }
49- }
5051
51- /**
52- * Render the AblePlayer playlist over WP Playlist data sources.
53- *
54- * @param Element el Playlist wrapper element.
55- */
56- function renderPlaylist ( el ) {
57- el . classList . add ( 'has-ableplayer' ) ;
58- let contents = JSON . parse ( el . querySelector ( '.wp-playlist-script' ) . textContent ) ;
59- let player = ( el . classList . contains ( 'wp-audio-playlist' ) ) ? el . querySelector ( 'audio' ) : el . querySelector ( 'video' ) ;
60- let tracks = contents . tracks ;
61- let list = document . createElement ( 'ul' ) ;
62- list . classList . add ( 'able-playlist' ) ;
63- list . setAttribute ( 'data-player' , player . getAttribute ( 'id' ) ) ;
64- list . setAttribute ( 'data-embedded' , true ) ;
65- let listItem , source , button ;
66- tracks . forEach ( ( track , index , listObj ) => {
67- listItem = document . createElement ( 'li' ) ;
68- listItem . setAttribute ( 'data-poster' , track . image . src ) ;
69- source = document . createElement ( 'span' ) ;
70- source . classList . add ( 'able-source' ) ;
71- source . setAttribute ( 'data-type' , track . type ) ;
72- source . setAttribute ( 'data-src' , track . src ) ;
73- button = document . createElement ( 'button' ) ;
74- button . setAttribute ( 'type' , 'button' ) ;
75- button . innerText = track . title ;
76- if ( track . image . src ) {
77- img = document . createElement ( 'img' ) ;
78- img . setAttribute ( 'src' , track . image . src ) ;
79- img . setAttribute ( 'alt' , '' ) ;
80- img . setAttribute ( 'height' , track . image . height ) ;
81- img . setAttribute ( 'width' , track . image . width ) ;
82- button . insertAdjacentElement ( 'afterbegin' , img ) ;
83- }
84- listItem . insertAdjacentElement ( 'afterbegin' , source ) ;
85- listItem . insertAdjacentElement ( 'beforeend' , button ) ;
86- list . insertAdjacentElement ( 'beforeend' , listItem ) ;
87- } ) ;
88- el . insertAdjacentElement ( 'beforeend' , list ) ;
52+ /**
53+ * Render the AblePlayer playlist over WP Playlist data sources.
54+ *
55+ * @param Element el Playlist wrapper element.
56+ */
57+ function renderPlaylist ( el ) {
58+ el . classList . add ( 'has-ableplayer' ) ;
59+ let contents = JSON . parse ( el . querySelector ( '.wp-playlist-script' ) . textContent ) ;
60+ let player = ( el . classList . contains ( 'wp-audio-playlist' ) ) ? el . querySelector ( 'audio' ) : el . querySelector ( 'video' ) ;
61+ let tracks = contents . tracks ;
62+ let list = document . createElement ( 'ul' ) ;
63+ list . classList . add ( 'able-playlist' ) ;
64+ list . setAttribute ( 'data-player' , player . getAttribute ( 'id' ) ) ;
65+ list . setAttribute ( 'data-embedded' , true ) ;
66+ let listItem , source , button ;
67+ tracks . forEach ( ( track , index , listObj ) => {
68+ listItem = document . createElement ( 'li' ) ;
69+ listItem . setAttribute ( 'data-poster' , track . image . src ) ;
70+ source = document . createElement ( 'span' ) ;
71+ source . classList . add ( 'able-source' ) ;
72+ source . setAttribute ( 'data-type' , track . type ) ;
73+ source . setAttribute ( 'data-src' , track . src ) ;
74+ button = document . createElement ( 'button' ) ;
75+ button . setAttribute ( 'type' , 'button' ) ;
76+ button . innerText = track . title ;
77+ if ( track . image . src ) {
78+ img = document . createElement ( 'img' ) ;
79+ img . setAttribute ( 'src' , track . image . src ) ;
80+ img . setAttribute ( 'alt' , '' ) ;
81+ img . setAttribute ( 'height' , track . image . height ) ;
82+ img . setAttribute ( 'width' , track . image . width ) ;
83+ button . insertAdjacentElement ( 'afterbegin' , img ) ;
84+ }
85+ listItem . insertAdjacentElement ( 'afterbegin' , source ) ;
86+ listItem . insertAdjacentElement ( 'beforeend' , button ) ;
87+ list . insertAdjacentElement ( 'beforeend' , listItem ) ;
88+ } ) ;
89+ el . insertAdjacentElement ( 'beforeend' , list ) ;
8990
90- let wpCurrent = el . querySelector ( '.wp-playlist-current-item' ) ;
91- if ( wpCurrent ) {
92- wpCurrent . remove ( ) ;
91+ let wpCurrent = el . querySelector ( '.wp-playlist-current-item' ) ;
92+ if ( wpCurrent ) {
93+ wpCurrent . remove ( ) ;
94+ }
9395 }
94- }
9596
96- const ablePlayers = document . querySelectorAll ( '[data-able-player]' ) ;
97- if ( ablePlayers ) {
98- ablePlayers . forEach ( ( el , index , listObj ) => {
99- if ( 'true' === ableplayer . settings . youtube_nocookie ) {
100- if ( ! el . hasAttribute ( 'data-youtube-nocookie' ) ) {
101- el . setAttribute ( 'data-youtube-nocookie' , 'true' ) ;
97+ const ablePlayers = document . querySelectorAll ( '[data-able-player]' ) ;
98+ if ( ablePlayers ) {
99+ ablePlayers . forEach ( ( el , index , listObj ) => {
100+ if ( 'true' === ableplayer . settings . youtube_nocookie ) {
101+ if ( ! el . hasAttribute ( 'data-youtube-nocookie' ) ) {
102+ el . setAttribute ( 'data-youtube-nocookie' , 'true' ) ;
103+ }
102104 }
103- }
104- if ( 'auto' !== ableplayer . settings . default_heading ) {
105- if ( ! el . hasAttribute ( 'data-heading-level' ) ) {
106- el . setAttribute ( 'data-heading-level' , ableplayer . settings . default_heading ) ;
105+ if ( 'auto' !== ableplayer . settings . default_heading ) {
106+ if ( ! el . hasAttribute ( 'data-heading-level' ) ) {
107+ el . setAttribute ( 'data-heading-level' , ableplayer . settings . default_heading ) ;
108+ }
107109 }
108- }
109- if ( 'animals' !== ableplayer . settings . default_heading ) {
110- if ( ! el . hasAttribute ( 'data-speed-icons' ) ) {
111- el . setAttribute ( 'data-speed-icons' , 'arrows' ) ;
110+ if ( 'animals' !== ableplayer . settings . default_heading ) {
111+ if ( ! el . hasAttribute ( 'data-speed-icons' ) ) {
112+ el . setAttribute ( 'data-speed-icons' , 'arrows' ) ;
113+ }
112114 }
113- }
114- if ( 'true' === ableplayer . settings . hide_controls ) {
115- if ( ! el . hasAttribute ( 'data-hide-controls' ) ) {
116- el . setAttribute ( 'data-hide-controls' , 'true' ) ;
115+ if ( 'true' === ableplayer . settings . hide_controls ) {
116+ if ( ! el . hasAttribute ( 'data-hide-controls' ) ) {
117+ el . setAttribute ( 'data-hide-controls' , 'true' ) ;
118+ }
117119 }
118- }
119- if ( ableplayer . settings . seek_interval ) {
120- if ( ! el . hasAttribute ( 'data-seek-interval' ) ) {
121- el . setAttribute ( 'data-seek-interval' , ableplayer . settings . seek_interval ) ;
120+ if ( ableplayer . settings . seek_interval ) {
121+ if ( ! el . hasAttribute ( 'data-seek-interval' ) ) {
122+ el . setAttribute ( 'data-seek-interval' , ableplayer . settings . seek_interval ) ;
123+ }
122124 }
123- }
124- if ( 'true' === ableplayer . settings . render_transcript ) {
125- if ( ! el . hasAttribute ( 'data-transcript-div ' ) ) {
126- let tracks = el . querySelectorAll ( 'track' ) ;
127- if ( tracks . length > 0 ) {
128- el . setAttribute ( 'data-transcript-div' , 'ableplayer-transcript-' + el . getAttribute ( 'id' ) ) ;
129- let transcriptContainer = document . createElement ( 'div' ) ;
130- transcriptContainer . setAttribute ( 'id' , ' ableplayer-transcript-' + el . getAttribute ( 'id' ) ) ;
131- transcriptContainer . classList . add ( 'ableplayer-transcript' ) ;
132- el . insertAdjacentElement ( 'afterend' , transcriptContainer ) ;
125+ if ( 'true' === ableplayer . settings . render_transcript ) {
126+ if ( ! el . hasAttribute ( 'data-transcript-div' ) ) {
127+ let tracks = el . querySelectorAll ( 'track ' ) ;
128+ if ( tracks . length > 0 ) {
129+ el . setAttribute ( 'data-transcript-div' , 'ableplayer-transcript-' + el . getAttribute ( 'id' ) ) ;
130+ let transcriptContainer = document . createElement ( 'div' ) ;
131+ transcriptContainer . setAttribute ( 'id' , 'ableplayer-transcript-' + el . getAttribute ( 'id' ) ) ;
132+ transcriptContainer . classList . add ( 'ableplayer-transcript' ) ;
133+ el . insertAdjacentElement ( 'afterend' , transcriptContainer ) ;
134+ }
133135 }
134136 }
135- }
136- } ) ;
137+ } ) ;
138+ }
137139}
0 commit comments