/* ===== Globals ====== */ window.preview_max_volume = 1 /* ===== Locals ===== */ let preview_track = document.getElementById('preview-track') let preview_stopped = true // init stuff export function initTrackPreview(){ preview_track.volume = 1 /*preview_max_volume = parseFloat(localStorage.getItem("previewVolume")) if (preview_max_volume === null){ preview_max_volume = 0.8 localStorage.setItem("previewVolume", preview_max_volume) }*/ // start playing when track loaded preview_track.addEventListener('canplay', function(){ preview_track.play() preview_stopped = false $(preview_track).animate({volume: preview_max_volume}, 500) }) // auto fadeout when at the end of the song preview_track.addEventListener('timeupdate', function(){ if (preview_track.currentTime > preview_track.duration-1){ $(preview_track).animate({volume: 0}, 800) preview_stopped = true $('a[playing] > .preview_controls').css({opacity:0}) $("*").removeAttr("playing") $('.preview_controls').text("play_arrow") $('.preview_playlist_controls').text("play_arrow") } }) } // on modal closing export function stopStackedTabsPreview(){ if ($('.preview_playlist_controls').filter(function(){return $(this).attr("playing")}).length > 0){ $(preview_track).animate({volume: 0}, 800) preview_stopped = true $(".preview_playlist_controls").removeAttr("playing") $('.preview_playlist_controls').text("play_arrow") } } // on hover event export function previewMouseEnter(e){ $(e.currentTarget).css({opacity: 1}) } export function previewMouseLeave(e){ let obj = e.currentTarget if (($(obj).parent().attr("playing") && preview_stopped) || !$(obj).parent().attr("playing")){ $(obj).css({opacity: 0}, 200) } } // on click event export function playPausePreview(e){ e.preventDefault() console.log("PlayPause") let obj = e.currentTarget var icon = (obj.tagName == "I" ? $(obj) : $(obj).children('i')) if ($(obj).attr("playing")){ if (preview_track.paused){ preview_track.play() preview_stopped = false icon.text("pause") $(preview_track).animate({volume: preview_max_volume}, 500) }else{ preview_stopped = true icon.text("play_arrow") $(preview_track).animate({volume: 0}, 250, "swing", ()=>{ preview_track.pause() }) } }else{ $("*").removeAttr("playing") $(obj).attr("playing",true) $('.preview_controls').text("play_arrow") $('.preview_playlist_controls').text("play_arrow") $('.preview_controls').css({opacity:0}) icon.text("pause") icon.css({opacity: 1}) preview_stopped = false $(preview_track).animate({volume: 0}, 250, "swing", ()=>{ preview_track.pause() $('#preview-track_source').prop("src", $(obj).data("preview")) preview_track.load() }) } }