You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 lines
12 KiB

5 years ago
/*! handsome 2019-01-01 */
"use strict";function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),Util={leftDistance:function(a){for(var b=a.offsetLeft,c=void 0;a.offsetParent;)a=a.offsetParent,b+=a.offsetLeft;return c=document.body.scrollLeft+document.documentElement.scrollLeft,b-c},timeFormat:function(a){var b=parseInt(a/60),c=parseInt(a%60);return(b<10?"0"+b:b)+":"+(c<10?"0"+c:c)},percentFormat:function(a){return(100*a).toFixed(2)+"%"},ajax:function(a){a.beforeSend&&a.beforeSend();var b=new XMLHttpRequest;b.onreadystatechange=function(){4===b.readyState&&(b.status>=200&&b.status<300?a.success&&a.success(b.responseText):a.fail&&a.fail(b.status))},b.open("GET",a.url),b.send(null)}},instance=!1,baseUrl=LocalConst.BASE_SCRIPT_URL+"libs/Get.php",skPlayer=function(){function a(b){var c=this;if(_classCallCheck(this,a),instance)return console.error("SKPlayer只能存在一个实例!"),Object.create(null);instance=!0;var d={element:document.getElementById("skPlayer"),autoplay:!1,mode:"listloop",listshow:!0};for(var e in d)b.hasOwnProperty(e)||(b[e]=d[e]);if(this.option=b,!(this.option.music&&this.option.music.type&&this.option.music.source))return console.error("请正确配置对象!"),Object.create(null);this.root=this.option.element,this.type=this.option.music.type,this.music=this.option.music.source,this.media=this.option.music.media,this.isMobile=/mobile/i.test(window.navigator.userAgent),this.isReady=!1,this.toggle=this.toggle.bind(this),this.toggleList=this.toggleList.bind(this),this.toggleMute=this.toggleMute.bind(this),this.switchMode=this.switchMode.bind(this),"file"===this.type?(this.root.innerHTML=this.template(),this.init(),this.bind(),this.isReady=!0):"cloud"===this.type&&(this.root.innerHTML='<p class="skPlayer-tip-loading"><span></span> <span></span> <span></span> <span></span><span></span></p>',Util.ajax({url:baseUrl+"?type=collect&media="+this.media+"&id="+this.music,beforeSend:function(){},success:function(a){c.music=JSON.parse(a),c.root.innerHTML=c.template(),c.init(),c.bind()},fail:function(a){console.error("歌单拉取失败! 错误码:"+a)}}))}return _createClass(a,[{key:"notice",value:function(a,b){$.message({title:LocalConst.MUSIC_NOTICE,message:a,type:b})}},{key:"template",value:function(){var a='\n <audio class="skPlayer-source" src="'+("file"===this.type?this.music[0].src:"")+'" preload="auto"></audio>\n <div class="skPlayer-picture">\n <img class="skPlayer-cover" src="'+this.music[0].cover+'" alt="">\n \n </div>\n <div class="skPlayer-control">\n <p class="skPlayer-name">'+this.music[0].name+'</p>\n <div class="playController"><div onclick="player.prev();" class="lastMusic music-off "><i class="fontello fontello-angle-double-left"></i></div> &nbsp;&nbsp;\n <div class="runMusic music-off skPlayer-play-btn"><i class="fontello fontello-play-circle-o runMusicIcon"></i></div>&nbsp;&nbsp; \n <div onclick="player.next();" class="nextMusic music-off "><i class="fontello fontello-angle-double-right"></i></div></div>\n <p class="skPlayer-author">'+this.music[0].author+'</p>\n <div class="skPlayer-percent">\n <div class="skPlayer-line-loading"></div>\n <div class="skPlayer-line lter"></div>\n </div>\n <p class="skPlayer-time">\n <span class="skPlayer-cur">00:00</span>/<span class="skPlayer-total">00:00</span>\n </p>\n <div class="skPlayer-volume" style="'+(this.isMobile?"display:none;":"")+'">\n <i class="skPlayer-icon glyphicon glyphicon-volume-up"></i>\n <div class="skPlayer-percent">\n <div class="skPlayer-line"></div>\n