3 lines
14 KiB
JavaScript
3 lines
14 KiB
JavaScript
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,t){for(var a=0;a<t.length;a++){var s=t[a];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}return function(t,a,s){return a&&e(t.prototype,a),s&&e(t,s),t}}();!function(){var e=[],t=function(){function t(e){var a=this;_classCallCheck(this,t),this.isMobile=navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i),this.isMobile&&(e.autoplay=!1);var s={element:document.getElementsByClassName("aplayer")[0],narrow:!1,autoplay:!1,mutex:!0,showlrc:0,theme:"#b7daff"};for(var i in s)s.hasOwnProperty(i)&&!e.hasOwnProperty(i)&&(e[i]=s[i]);this.playIndex="[object Array]"===Object.prototype.toString.call(e.music)?0:-1,this.option=e,this.audios=[],this.loop=!0,this.secondToTime=function(e){var t=function(e){return 10>e?"0"+e:""+e},a=parseInt(e/60),s=parseInt(e-60*a);return t(a)+":"+t(s)},this.parseLrc=function(e){for(var t=[],a=0;a<e.length;a++){for(var s=e[a].split("\n"),i=[],l=s.length,n=0;l>n;n++){var o=s[n].match(/\[(\d{2}):(\d{2})\.(\d{2,3})]/g),r=s[n].replace(/\[(\d{2}):(\d{2})\.(\d{2,3})]/g,"").replace(/^\s+|\s+$/g,"");if(null!=o)for(var u=o.length,d=0;u>d;d++){var p=/\[(\d{2}):(\d{2})\.(\d{2,3})]/.exec(o[d]),m=60*p[1]+parseInt(p[2])+parseInt(p[3])/(2===(p[3]+"").length?100:1e3);i.push([m,r])}}i.sort(function(e,t){return e[0]-t[0]}),t.push(i)}return t},this.updateBar=function(e,t,s){t=t>0?t:0,t=1>t?t:1,a[e+"Bar"].style[s]=100*t+"%"},this.updateLrc=function(){var e=arguments.length<=0||void 0===arguments[0]?a.audio.currentTime:arguments[0];if(a.lrcIndex>a.lrc.length-1||e<a.lrc[a.lrcIndex][0]||!a.lrc[a.lrcIndex+1]||e>=a.lrc[a.lrcIndex+1][0])for(var t=0;t<a.lrc.length;t++)e>=a.lrc[t][0]&&(!a.lrc[t+1]||e<a.lrc[t+1][0])&&(a.lrcIndex=t,a.lrcContents.style.transform="translateY("+20*-a.lrcIndex+"px)",a.lrcContents.style.webkitTransform="translateY("+20*-a.lrcIndex+"px)",a.lrcContents.getElementsByClassName("aplayer-lrc-current")[0].classList.remove("aplayer-lrc-current"),a.lrcContents.getElementsByTagName("p")[t].classList.add("aplayer-lrc-current"))}}return _createClass(t,[{key:"init",value:function(){function t(e){for(var t=e.offsetLeft,a=e.offsetParent,s=void 0;null!==a;)t+=a.offsetLeft,a=a.offsetParent;return s=document.body.scrollLeft+document.documentElement.scrollLeft,t-s}function a(e){for(var t=e.offsetTop,a=e.offsetParent,s=void 0;null!==a;)t+=a.offsetTop,a=a.offsetParent;return s=document.body.scrollTop+document.documentElement.scrollTop,t-s}var s=this;this.element=this.option.element,this.multiple=this.playIndex>-1,this.music=this.multiple?this.option.music[this.playIndex]:this.option.music;var i=void 0;if(this.option.showlrc){var l=[];if(1===this.option.showlrc)if(this.multiple)for(i=0;i<this.option.music.length;i++)l.push(this.option.music[i].lrc);else l.push(this.option.music.lrc);else if(2===this.option.showlrc||this.option.showlrc===!0)for(i=0;i<this.element.getElementsByClassName("aplayer-lrc-content").length;i++)l.push(this.element.getElementsByClassName("aplayer-lrc-content")[i].innerHTML);this.lrcs=this.parseLrc(l)}this.option.showlrc&&this.element.classList.add("aplayer-withlrc");var n='\n <div class="aplayer-pic" '+(this.music.pic?'style="background-image: url("'+encodeURI(this.music.pic)+'");"':"")+'>\n <div class="aplayer-button aplayer-play">\n <i class="demo-icon aplayer-icon-play"></i>\n </div>\n </div>\n <div class="aplayer-info">\n <div class="aplayer-music">\n <span class="aplayer-title"></span>\n <span class="aplayer-author"></span>\n </div>\n <div class="aplayer-lrc">\n <div class="aplayer-lrc-contents" style="transform: translateY(0); -webkit-transform: translateY(0);"></div>\n </div>\n <div class="aplayer-controller">\n <div class="aplayer-bar-wrap">\n <div class="aplayer-bar">\n <div class="aplayer-loaded" style="width: 0"></div>\n <div class="aplayer-played" style="width: 0; background: '+this.option.theme+';">\n <span class="aplayer-thumb" style="border: 1px solid '+this.option.theme+';"></span>\n </div>\n </div>\n </div>\n <div class="aplayer-time">\n - <span class="aplayer-ptime">00:00</span> / <span class="aplayer-dtime">00:00</span>\n <div class="aplayer-volume-wrap">\n <i class="demo-icon aplayer-icon-volume-down"></i>\n <div class="aplayer-volume-bar-wrap">\n <div class="aplayer-volume-bar">\n <div class="aplayer-volume" style="height: 80%; background: '+this.option.theme+';"></div>\n </div>\n </div>\n </div>\n <i class="demo-icon aplayer-icon-loop"></i>'+(this.multiple?'<i class="demo-icon aplayer-icon-menu"></i>':"")+"\n </div>\n </div>\n </div>";if(this.multiple){for(n+='\n <div class="aplayer-list">\n <ol>',i=0;i<this.option.music.length;i++)n+='\n <li>\n <span class="aplayer-list-cur" style="background: '+this.option.theme+';"></span>\n <span class="aplayer-list-index">'+(i+1)+'</span>\n <span class="aplayer-list-title">'+this.option.music[i].title+'</span>\n <span class="aplayer-list-author">'+this.option.music[i].author+"</span>\n </li>";n+="\n </ol>\n </div>"}this.element.innerHTML=n,this.element.getElementsByClassName("aplayer-info")[0].offsetWidth<200&&this.element.getElementsByClassName("aplayer-time")[0].classList.add("aplayer-time-narrow"),this.element.getElementsByClassName("aplayer-bar-wrap")[0].style.marginRight=this.element.getElementsByClassName("aplayer-time")[0].offsetWidth+5+"px",this.option.narrow&&this.element.classList.add("aplayer-narrow"),this.button=this.element.getElementsByClassName("aplayer-button")[0],this.button.addEventListener("click",function(e){s.button.classList.contains("aplayer-play")?s.play():s.button.classList.contains("aplayer-pause")&&s.pause()}),this.multiple&&!function(){for(var e=s.element.getElementsByClassName("aplayer-list")[0].getElementsByTagName("li"),t=function(t){e[t].addEventListener("click",function(){var a=parseInt(e[t].getElementsByClassName("aplayer-list-index")[0].innerHTML)-1;a!==s.playIndex&&s.setMusic(a),s.play()})},a=0;a<s.option.music.length;a++)t(a)}(),this.playedBar=this.element.getElementsByClassName("aplayer-played")[0],this.loadedBar=this.element.getElementsByClassName("aplayer-loaded")[0],this.thumb=this.element.getElementsByClassName("aplayer-thumb")[0],this.bar=this.element.getElementsByClassName("aplayer-bar")[0];var o=void 0;this.bar.addEventListener("click",function(e){var a=e||window.event;o=s.bar.clientWidth;var i=(a.clientX-t(s.bar))/o;s.updateBar("played",i,"width"),s.element.getElementsByClassName("aplayer-ptime")[0].innerHTML=s.secondToTime(i*s.audio.duration),s.audio.currentTime=parseFloat(s.playedBar.style.width)/100*s.audio.duration}),this.thumb.addEventListener("mouseover",function(){s.thumb.style.background=s.option.theme}),this.thumb.addEventListener("mouseout",function(){s.thumb.style.background="#fff"});var r=function(e){var a=e||window.event,i=(a.clientX-t(s.bar))/o;i=i>0?i:0,i=1>i?i:1,s.updateBar("played",i,"width"),s.option.showlrc&&s.updateLrc(parseFloat(s.playedBar.style.width)/100*s.audio.duration),s.element.getElementsByClassName("aplayer-ptime")[0].innerHTML=s.secondToTime(i*s.audio.duration)},u=function h(){document.removeEventListener("mouseup",h),document.removeEventListener("mousemove",r),s.audio.currentTime=parseFloat(s.playedBar.style.width)/100*s.audio.duration,s.play()};this.thumb.addEventListener("mousedown",function(){o=s.bar.clientWidth,clearInterval(s.playedTime),document.addEventListener("mousemove",r),document.addEventListener("mouseup",u)}),this.volumeBar=this.element.getElementsByClassName("aplayer-volume")[0];var d=this.element.getElementsByClassName("aplayer-volume-bar")[0],p=this.element.getElementsByClassName("aplayer-time")[0].getElementsByTagName("i")[0],m=35;this.element.getElementsByClassName("aplayer-volume-bar-wrap")[0].addEventListener("click",function(e){var t=e||window.event,i=(m-t.clientY+a(d))/m;i=i>0?i:0,i=1>i?i:1,s.updateBar("volume",i,"height"),s.audio.volume=i,s.audio.muted&&(s.audio.muted=!1),1===i?p.className="demo-icon aplayer-icon-volume-up":p.className="demo-icon aplayer-icon-volume-down"}),p.addEventListener("click",function(){s.audio.muted?(s.audio.muted=!1,p.className=1===s.audio.volume?"demo-icon aplayer-icon-volume-up":"demo-icon aplayer-icon-volume-down",s.updateBar("volume",s.audio.volume,"height")):(s.audio.muted=!0,p.className="demo-icon aplayer-icon-volume-off",s.updateBar("volume",0,"height"))});var c=this.element.getElementsByClassName("aplayer-icon-loop")[0];c.addEventListener("click",function(){s.loop?(c.classList.add("aplayer-noloop"),s.loop=!1,s.audio.loop=s.multiple?!1:s.loop):(c.classList.remove("aplayer-noloop"),s.loop=!0,s.audio.loop=s.multiple?!1:s.loop)}),this.multiple&&this.element.getElementsByClassName("aplayer-icon-menu")[0].addEventListener("click",function(){var e=s.element.getElementsByClassName("aplayer-list")[0];e.classList.contains("aplayer-list-hide")?e.classList.remove("aplayer-list-hide"):e.classList.add("aplayer-list-hide")}),this.setMusic(0),e.push(this)}},{key:"setMusic",value:function(e){var t=this;this.multiple&&"undefined"!=typeof e&&(this.playIndex=e);var a=this.playIndex;if(this.music=this.multiple?this.option.music[a]:this.option.music,this.music.pic&&(this.element.getElementsByClassName("aplayer-pic")[0].style.backgroundImage="url("+encodeURI(this.music.pic)+")"),this.element.getElementsByClassName("aplayer-title")[0].innerHTML=this.music.title,this.element.getElementsByClassName("aplayer-author")[0].innerHTML=" - "+this.music.author,this.multiple&&(this.element.getElementsByClassName("aplayer-list-light")[0]&&this.element.getElementsByClassName("aplayer-list-light")[0].classList.remove("aplayer-list-light"),this.element.getElementsByClassName("aplayer-list")[0].getElementsByTagName("li")[a].classList.add("aplayer-list-light")),this.audio&&(this.pause(),this.audio.currentTime=0),this.multiple&&!this.audios[a]||-1===this.playIndex?(this.audio=document.createElement("audio"),this.audio.src=this.music.url,this.audio.preload=this.isMobile?"none":"metadata",this.audio.addEventListener("durationchange",function(){1!==t.audio.duration&&(t.element.getElementsByClassName("aplayer-dtime")[0].innerHTML=t.secondToTime(t.audio.duration))}),this.audio.addEventListener("progress",function(){var e=t.audio.buffered.length?t.audio.buffered.end(t.audio.buffered.length-1)/t.audio.duration:0;t.updateBar("loaded",e,"width")}),this.audio.addEventListener("error",function(){t.element.getElementsByClassName("aplayer-author")[0].innerHTML=" - Error happens ╥﹏╥"}),this.multiple?this.audio.addEventListener("ended",function(){t.playIndex<t.option.music.length-1?t.setMusic(++t.playIndex):t.loop?t.setMusic(0):t.loop||t.pause()}):this.audio.addEventListener("ended",function(){t.loop||t.pause()}),this.audio.volume=parseInt(this.element.getElementsByClassName("aplayer-volume")[0].style.height)/100,this.audio.loop=this.multiple?!1:this.loop,this.multiple&&(this.audios[a]=this.audio)):(this.audio=this.audios[a],this.audio.volume=parseInt(this.element.getElementsByClassName("aplayer-volume")[0].style.height)/100,this.audio.currentTime=0),this.option.showlrc){this.lrc=this.multiple?this.lrcs[a]:this.lrcs[0];var s="";this.lrcContents=this.element.getElementsByClassName("aplayer-lrc-contents")[0];for(var i=0;i<this.lrc.length;i++)s+="<p>"+this.lrc[i][1]+"</p>";this.lrcContents.innerHTML=s,this.lrcIndex||(this.lrcIndex=0),this.lrcContents.getElementsByTagName("p")[0].classList.add("aplayer-lrc-current"),this.lrcContents.style.transform="translateY(0px)",this.lrcContents.style.webkitTransform="translateY(0px)"}1!==this.audio.duration&&(this.element.getElementsByClassName("aplayer-dtime")[0].innerHTML=this.audio.duration?this.secondToTime(this.audio.duration):"00:00"),this.option.autoplay&&!this.isMobile&&this.play(),this.option.autoplay=!0,this.isMobile&&this.pause()}},{key:"play",value:function(){var t=this;if(this.audio.paused){if(this.button.classList.remove("aplayer-play"),this.button.classList.add("aplayer-pause"),this.button.innerHTML="",setTimeout(function(){t.button.innerHTML='<i class="demo-icon aplayer-icon-pause"></i>'},100),this.option.mutex)for(var a=0;a<e.length;a++)this!=e[a]&&e[a].pause();this.audio.play(),this.playedTime&&clearInterval(this.playedTime),this.playedTime=setInterval(function(){t.updateBar("played",t.audio.currentTime/t.audio.duration,"width"),t.option.showlrc&&t.updateLrc(),t.element.getElementsByClassName("aplayer-ptime")[0].innerHTML=t.secondToTime(t.audio.currentTime)},100)}}},{key:"pause",value:function(){var e=this;this.audio.paused||(this.button.classList.remove("aplayer-pause"),this.button.classList.add("aplayer-play"),this.button.innerHTML="",setTimeout(function(){e.button.innerHTML='<i class="demo-icon aplayer-icon-play"></i>'},100),this.audio.pause(),clearInterval(this.playedTime))}}]),t}();"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=t:window.APlayer=t}();
|
|
//# sourceMappingURL=APlayer.min.js.map
|