1(function($) { 2 var toMinutes = function(seconds) { 3 seconds = Math.floor(seconds); 4 min_part = Math.floor(seconds/60); 5 sec_part = seconds % 60; 6 if (sec_part < 10) { 7 sec_part = '0' + sec_part; 8 } 9 return min_part + ":" + sec_part; 10 } 11 12 var handleSlidePlayer = function($scope, player_selector) { 13 $scope.find(player_selector).each(function() { 14 15 var item_hover_color = $(this).data("entryhbgcolor"); 16 $(this).find('.swp_music_player_entry.wpb_smc_elt').each(function(){ 17 $(this).hover( 18 function() { 19 $(this).css("background-color", item_hover_color); 20 }, function() { 21 $(this).css("background-color", "transparent"); 22 } 23 ); 24 }); 25 26 var $player = $(this); 27 var player_id = $player.attr("id"); 28 var $play_btn = $player.find('.fa-play.player_play'); 29 var $pause_btn = $player.find('.fa-pause'); 30 var $fwd_btn = $player.find('.fa-step-forward'); 31 var $bkw_btn = $player.find('.fa-step-backward'); 32 var $first_song = $player.find('.swp_music_player_entry').first(); 33 var $last_song = $player.find('.swp_music_player_entry').last(); 34 var $playing_song_name = $player.find('.current_song_name'); 35 var $playing_album_name = $player.find('.current_album_name'); 36 var $time_slider = $player.find('.player_time_slider'); 37 var $song_duration = $player.find('.song_duration'); 38 var $song_current_progress = $player.find('.song_current_progress'); 39 var autoplay = $player.data('autoplay'); 40 var playmode = $player.data('playmode'); 41 var stop_on_playlist_end = $player.data('stopplaylistend'); 42 var repeatmode = $player.data("repeatmode"); 43 var shuffle_btn_on = false, repeat_btn_on = false; 44 var $ps_elt = $player.find('.compact-playback-speed'); 45 var $ps_val = $ps_elt.find('.ps-val'); 46 var $ps_opts = $player.find('ul.compact-ps-opts'); 47 var other_mpfe = new Array(); 48 49 50 $('.swp_music_player').not('#' + player_id).each(function(){ 51 other_mpfe.push($(this).attr('id')); 52 }); 53 54 $ps_val.click(function(){ 55 $ps_opts.toggle(); 56 }) 57 $('.compact-ps-opt').click(function(){ 58 var new_pstext = $(this).text(); 59 var new_psval = new_pstext.substring(0,new_pstext.length - 1) 60 $ps_opts.toggle(); 61 $ps_val.text(new_pstext); 62 $player.find('audio').each(function() { 63 $(this).get(0).playbackRate = new_psval; 64 }); 65 }) 66 67 function handleCoverImg($crt_elt) { 68 if(!$player.data('playerimg')) { 69 return; 70 } 71 72 if (!$crt_elt.data('trackimg')) { 73 /*set the album default img*/ 74 $player.find('.music_player_left').removeAttr("style"); 75 return; 76 } 77 78 /*song individual cover*/ 79 $player.find('.music_player_left').css('background-image', 'url(' + $crt_elt.data('trackimg') + ')'); 80 } 81 82 function handleAlbumInfoForCompact($crt_elt) { 83 if (!$player.hasClass('compact-player')) { 84 return; 85 } 86 87 $playing_album_name.text($crt_elt.find('.player_song_name').data('albumname')); 88 } 89 90 function stopOtherPlayers() { 91 other_mpfe.forEach(function(mpfe_player_id){ 92 var $crt_play = $('#' + mpfe_player_id).find('.swp_music_player_entry.now_playing'); 93 if ($crt_play.length){ 94 $crt_play.find('audio').get(0).pause(); 95 $('#' + mpfe_player_id).find('.fa-play.player_play').removeClass("display_none"); 96 $('#' + mpfe_player_id).find('.fa-pause').addClass("display_none"); 97 } 98 }); 99 } 100 101 $player.find('.swp_music_player_entry').each(function(){ 102 var $player_entry = $(this); 103 var audio = new Audio($player_entry.data("mediafile")); 104 audio.type= 'audio/mpeg'; 105 audio.preload = 'metadata'; 106 $(this).append(audio); 107 108 109 110 audio.onloadedmetadata = function() { 111 $player_entry.find('.entry_duration').text(toMinutes(audio.duration)); 112 if ($first_song.is($player_entry)) { 113 $song_duration.text(toMinutes(audio.duration)); 114 } 115 }; 116 117 audio.onended = function() { 118 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 119 var $next_elt = get_next_player_elt($crt_elt); 120 121 $playing_song_name.text($next_elt.find('.player_song_name').text()); 122 $song_duration.text(toMinutes($next_elt.find('audio').get(0).duration)); 123 $crt_elt.removeClass('now_playing'); 124 $next_elt.addClass('now_playing'); 125 126 if (("yes" == stop_on_playlist_end) && (!$crt_elt.next().length)) { 127 $play_btn.removeClass("display_none"); 128 $pause_btn.addClass("display_none"); 129 130 return; 131 } 132 133 $next_elt.find('audio').get(0).play(); 134 stopOtherPlayers(); 135 handleCoverImg($next_elt); 136 handleAlbumInfoForCompact($next_elt); 137 $play_btn.addClass("display_none"); 138 $pause_btn.removeClass("display_none"); 139 }; 140 141 audio.addEventListener("timeupdate", function() { 142 var currentTime = audio.currentTime; 143 var duration = audio.duration; 144 $time_slider.stop(true,true).css('width', (currentTime +.25)/duration*100+'%'); 145 $song_current_progress.text(toMinutes(currentTime)); 146 }); 147 }); 148 149 /*load the 1st song*/ 150 $first_song.addClass("now_playing"); 151 $playing_song_name.text($first_song.find('.player_song_name').text()); 152 handleAlbumInfoForCompact($first_song); 153 154 $song_current_progress.text("0:00"); 155 if ("yes" == autoplay) { 156 var fp_response = $first_song.find('audio').get(0).play(); 157 handleCoverImg($first_song); 158 if (fp_response!== undefined) { 159 fp_response.then(_ => { 160 $play_btn.toggleClass("display_none"); 161 $pause_btn.toggleClass("display_none"); 162 stopOtherPlayers(); 163 }).catch(error => { 164 $(document).click(function(e) { 165 if (!$first_song.hasClass("autoplay_loaded")) { 166 $first_song.find('audio').get(0).play(); 167 $play_btn.toggleClass("display_none"); 168 $pause_btn.toggleClass("display_none"); 169 $first_song.addClass("autoplay_loaded"); 170 } 171 }); 172 }); 173 } 174 } 175 176 $play_btn.unbind().click(function() { 177 stopOtherPlayers(); 178 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 179 $crt_elt.find('audio').get(0).play(); 180 stopOtherPlayers(); 181 handleCoverImg($crt_elt); 182 handleAlbumInfoForCompact($crt_elt); 183 $play_btn.addClass("display_none"); 184 $pause_btn.removeClass("display_none"); 185 }); 186 $pause_btn.unbind().click(function() { 187 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 188 $crt_elt.find('audio').get(0).pause(); 189 $play_btn.removeClass("display_none"); 190 $pause_btn.addClass("display_none"); 191 }); 192 193 $fwd_btn.unbind().click(function() { 194 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 195 $crt_elt.find('audio').get(0).pause(); 196 197 var $next_elt = get_next_player_elt($crt_elt); 198 199 $playing_song_name.text($next_elt.find('.player_song_name').text()); 200 $next_elt.find('audio').get(0).play(); 201 stopOtherPlayers(); 202 handleCoverImg($next_elt); 203 handleAlbumInfoForCompact($next_elt); 204 $song_duration.text(toMinutes($next_elt.find('audio').get(0).duration)); 205 $crt_elt.removeClass('now_playing'); 206 $next_elt.addClass('now_playing'); 207 $play_btn.addClass("display_none"); 208 $pause_btn.removeClass("display_none"); 209 }); 210 211 $bkw_btn.unbind().click(function() { 212 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 213 $crt_elt.find('audio').get(0).pause(); 214 var $prev_elt = $crt_elt.prev(); 215 if (!$prev_elt.length) { 216 $prev_elt = $last_song; 217 } 218 $playing_song_name.text($prev_elt.find('.player_song_name').text()); 219 $prev_elt.find('audio').get(0).play(); 220 stopOtherPlayers(); 221 handleCoverImg($prev_elt); 222 handleAlbumInfoForCompact($prev_elt); 223 $song_duration.text(toMinutes($prev_elt.find('audio').get(0).duration)); 224 $crt_elt.removeClass('now_playing'); 225 $prev_elt.addClass('now_playing'); 226 $play_btn.addClass("display_none"); 227 $pause_btn.removeClass("display_none"); 228 }); 229 230 $player.find('.player_entry_left').click(function(){ 231 var $next_elt = $(this).parent(); 232 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 233 $crt_elt.find('audio').get(0).pause(); 234 $crt_elt.removeClass('now_playing'); 235 236 $next_elt.addClass('now_playing'); 237 $next_elt.find('audio').get(0).play(); 238 stopOtherPlayers(); 239 handleCoverImg($next_elt); 240 handleAlbumInfoForCompact($next_elt); 241 $song_duration.text(toMinutes($(this).parent().find('audio').get(0).duration)); 242 $playing_song_name.text($(this).find('.player_song_name').text()); 243 244 $play_btn.addClass("display_none"); 245 $pause_btn.removeClass("display_none"); 246 }); 247 248 $player.find('.player_time_slider_base').click(function(e){ 249 var $slider_elt = $(this); 250 var click_pos = e.pageX - Math.floor($slider_elt.offset().left); 251 var elt_width = $slider_elt.width(); 252 var percent_progress = Math.floor(click_pos/elt_width*100); 253 $time_slider.width(percent_progress + "%"); 254 255 var $crt_elt = $player.find('.swp_music_player_entry.now_playing'); 256 $crt_elt.find('audio').get(0).currentTime = $crt_elt.find('audio').get(0).duration * (percent_progress/100); 257 }); 258 259 var get_next_player_elt = function($crt_elt) { 260 if ("repeat" == playmode) { 261 if (("current_song" == repeatmode) && repeat_btn_on) { 262 return $crt_elt; 263 } 264 265 var $next_elt = $crt_elt.next(); 266 if (!$next_elt.length) { 267 $next_elt = $first_song; 268 } 269 return $next_elt; 270 } 271 /*shuffle*/ 272 var $playlist = $player.find('.swp_music_player_entry').not('.now_playing').toArray(); 273 return jQuery($playlist[Math.floor(Math.random() * $playlist.length)]); 274 } 275 276 $player.find('i.playback-shuffle').click(function(e){ 277 if(shuffle_btn_on) { 278 $player.attr('data-playmode', "repeat"); 279 playmode = "repeat"; 280 shuffle_btn_on = false;
281 } else { 282 $player.attr('data-playmode', "shuffle"); 283 playmode = "shuffle"; 284 shuffle_btn_on = true; 285 } 286 $(this).toggleClass("is_active"); 287 }); 288 $player.find('i.playback-repeat').click(function(e){ 289 if (repeat_btn_on) { 290 if (shuffle_btn_on) { 291 $player.attr('data-playmode', "shuffle"); 292 playmode = "shuffle"; 293 } 294 repeat_btn_on = false; 295 } else { 296 $player.attr('data-playmode', "repeat"); 297 playmode = "repeat"; 298 repeat_btn_on = true; 299 } 300 $(this).toggleClass("is_active"); 301 }); 302 303 }); 304 } 305 306 var MPFESlideMusicPlayer = function($scope, $) { 307 $scope.find('.mpfe-sr-helper').click(function(e){ 308 e.preventDefault(); 309 }); 310 311 handleSlidePlayer($scope, '.swp_music_player'); 312 313 } 314 315 var MPFESlideCompactPlayer = function($scope, $) { 316 handleSlidePlayer($scope, '.swp_music_player.compact-player'); 317 318 $('.mpfe-compact-list').click(function(){ 319 $(this).closest('.swp_music_player').find('.swp-compact-playlist').addClass('list-visible'); 320 $(window).addClass('swp-overflow-y-hidden'); 321 }); 322 $('.compact-close-playlist-container').click(function(){ 323 $(this).closest('.swp-compact-playlist').removeClass('list-visible'); 324 $(window).removeClass('swp-overflow-y-hidden'); 325 }); 326 } 327 328 329 $(window).on("elementor/frontend/init", function() { 330 elementorFrontend.hooks.addAction( 331 "frontend/element_ready/slide-music-player-free.default", 332 MPFESlideMusicPlayer 333 ); 334 elementorFrontend.hooks.addAction( 335 "frontend/element_ready/slide-compact-player.default", 336 MPFESlideCompactPlayer 337 ); 338 }); 339 340})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.