!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.artplayer={})}(this,function(t){"use strict";function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=e(function(n){function i(t,e){return n.exports=i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},i(t,e)}n.exports=i}),o=e(function(i){function o(t,e,n){return!function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?i.exports=o=function(t,e,n){var i=[null];i.push.apply(i,e);var o=new(Function.bind.apply(t,i));return n&&r(o,n.prototype),o}:i.exports=o=Reflect.construct,o.apply(null,arguments)}i.exports=o});var n=function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
[x]
\n
\n \n ',t.$player=t.$container.querySelector(".artplayer-video-player"),t.$video=t.$container.querySelector(".artplayer-video"),t.$subtitle=t.$container.querySelector(".artplayer-subtitle"),t.$bottom=t.$container.querySelector(".artplayer-bottom"),t.$progress=t.$container.querySelector(".artplayer-progress"),t.$controls=t.$container.querySelector(".artplayer-controls"),t.$controlsLeft=t.$container.querySelector(".artplayer-controls-left"),t.$controlsRight=t.$container.querySelector(".artplayer-controls-right"),t.$layers=t.$container.querySelector(".artplayer-layers"),t.$loading=t.$container.querySelector(".artplayer-loading"),t.$notice=t.$container.querySelector(".artplayer-notice"),t.$mask=t.$container.querySelector(".artplayer-mask"),t.$info=t.$container.querySelector(".artplayer-info"),t.$infoPanel=t.$container.querySelector(".artplayer-info-panel"),t.$infoClose=t.$container.querySelector(".artplayer-info-close")}}]),e}(),O={"zh-cn":{"About author":"关于作者","Video info":"视频统计信息",Close:"关闭","Video load failed":"视频加载失败",Volume:"音量",Play:"播放",Pause:"暂停",Rate:"速度",Mute:"静音"},"zh-tw":{"About author":"關於作者","Video info":"影片統計訊息",Close:"關閉","Video load failed":"影片載入失敗",Volume:"音量",Play:"播放",Pause:"暫停",Rate:"速度",Mute:"靜音"}},H=function(){function n(t){var e=t.option;s(this,n),this.option=e,this.init()}return c(n,[{key:"init",value:function(){this.language=O[this.option.lang.toLowerCase()]||{}}},{key:"get",value:function(t){return this.language[t]||t}},{key:"update",value:function(t){O=t(O),this.init()}}]),n}(),j=function(){function e(t){s(this,e),this.art=t,this.init(),this.eventBind(),this.firstLoad=!1}return c(e,[{key:"init",value:function(){var t=this.art,n=t.option,i=t.refs.$video;Object.keys(n.moreVideoAttr).forEach(function(t){var e=n.moreVideoAttr[t];i[t]=e}),i.volume=$(n.volume,0,1),i.poster=n.poster,i.autoplay=n.autoplay,i.src=n.url}},{key:"eventBind",value:function(){var e=this,t=this.art,n=t.events.proxy,i=t.refs,o=i.$player,r=i.$video,a=t.i18n,s=t.notice;L.video.events.forEach(function(t){n(r,t,function(t){e.art.emit("video:".concat(t.type),t)})}),this.art.on("video:loadstart",function(){e.art.loading.show()}),this.art.on("video:loadeddata",function(){e.art.loading.hide()}),this.art.on("video:waiting",function(){e.art.loading.show()}),this.art.on("video:seeking",function(){e.art.loading.show()}),this.art.on("video:canplay",function(){if(e.firstLoad||(e.firstLoad=!0,e.art.emit("video:firstload")),e.art.controls.show(),e.art.mask.show(),e.art.loading.hide(),e.art.option.autoplay){var t=e.play();void 0!==t&&t.then().catch(function(t){console.warn(t)})}}),this.art.on("video:playing",function(){e.art.isPlaying=!0,e.art.controls.hide(),e.art.mask.hide()}),this.art.on("video:pause",function(){e.art.isPlaying=!1,e.art.controls.show(),e.art.mask.show()}),this.art.on("video:ended",function(){e.art.isPlaying=!1,e.art.controls.show(),e.art.mask.show(),e.art.option.loop&&(e.seek(0),e.play())}),this.art.on("video:error",function(){e.art.isError=!0,e.art.isPlaying=!1,e.art.loading.hide(),e.art.controls.hide(),o.classList.add("artplayer-error"),s.show(a.get("Video load failed"),!1),e.art.destroy()})}},{key:"play",value:function(){var t=this.art,e=t.refs.$video,n=t.i18n,i=t.notice,o=e.play();return i.show(n.get("Play")),this.art.emit("play",e),o}},{key:"pause",value:function(){var t=this.art,e=t.refs.$video,n=t.i18n,i=t.notice;e.pause(),i.show(n.get("Pause")),this.art.emit("pause",e)}},{key:"toggle",value:function(){this.art.isPlaying?this.pause():this.play()}},{key:"seek",value:function(t){var e=this.art,n=e.refs.$video,i=e.notice,o=Math.max(t,0);n.duration&&(o=Math.min(o,n.duration)),n.currentTime=o,i.show("".concat(T(o)," / ").concat(T(n.duration))),this.art.emit("seek",o)}},{key:"volume",value:function(t){var e,n,i,o=this.art,r=o.refs.$video,a=o.i18n,s=o.notice;return void 0!==t&&(r.volume=$(t,0,1),s.show("".concat(a.get("Volume"),": ").concat(parseInt(100*r.volume))),0!==r.volume&&(e="volume",n=r.volume,i=Object.assign({},E(),y({},e,n)),localStorage.setItem("artplayer_settings",JSON.stringify(i))),this.art.emit("volume",r.volume)),r.volume||0}},{key:"currentTime",value:function(){return this.art.refs.$video.currentTime||0}},{key:"duration",value:function(){return this.art.refs.$video.duration||0}},{key:"playbackRate",value:function(t){var e=this.art,n=e.refs.$video,i=e.i18n,o=e.notice,r=$(t,.1,10);n.playbackRate=r,o.show("".concat(i.get("Rate"),": ").concat(r,"x")),this.art.emit("playbackRate",r)}}]),e}(),V=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t}}]),e}(),R=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t}}]),e}(),q=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t}}]),e}();var B=function(t){if(Array.isArray(t))return t};var D=function(t,e){var n=[],i=!0,o=!1,r=void 0;try{for(var a,s=t[Symbol.iterator]();!(i=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){o=!0,r=t}finally{try{i||null==s.return||s.return()}finally{if(o)throw r}}return n};var N=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")};var z=function(t,e){return B(t)||D(t,e)||N()};var F,W,_=(F={loading:'\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n',playBig:'\n \n \n \n \n',play:'\n \n',pause:'\n \n',volume:'\n \n',volumeClose:'\n \n \n'},W={},Object.keys(F).forEach(function(t){var e=document.createElement("div");e.innerHTML='').concat(F[t],"");var n=z(e.childNodes,1);W[t]=n[0]}),W),I=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t,this.init()}},{key:"init",value:function(){var t=this,e=this.art,n=e.events.proxy,i=e.player,o=e.i18n;this.$play=w(this.option.$control,_.play),this.$pause=w(this.option.$control,_.pause),C(this.$play,o.get("Play")),C(this.$pause,o.get("Pause")),this.$pause.style.display="none",n(this.$play,"click",function(){i.play()}),n(this.$pause,"click",function(){i.pause()}),this.art.on("video:playing",function(){t.$play.style.display="none",t.$pause.style.display="block"}),this.art.on("video:pause",function(){t.$play.style.display="block",t.$pause.style.display="none"})}}]),e}(),U=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t,this.isDroging=!1,this.getLoaded=this.getLoaded.bind(this),this.getPlayed=this.getPlayed.bind(this),this.set=this.set.bind(this),this.init()}},{key:"init",value:function(){var o=this,t=this.art,e=t.option,n=e.highlight,i=e.theme,r=t.events.proxy,a=t.refs.$video,s=t.player;w(this.option.$control,'\n
\n
\n
\n
\n
\n
\n
\n ')),this.$loaded=this.option.$control.querySelector(".art-progress-loaded"),this.$played=this.option.$control.querySelector(".art-progress-played"),this.$highlight=this.option.$control.querySelector(".art-progress-highlight"),this.$indicator=this.option.$control.querySelector(".art-progress-indicator"),this.$tip=this.option.$control.querySelector(".art-progress-tip"),this.set("loaded",this.getLoaded()),n.forEach(function(t){var e=Number(t.time)/a.duration;w(o.$highlight,'\n \n '))}),this.art.on("video:progress",function(){o.set("loaded",o.getLoaded())}),this.art.on("video:timeupdate",function(){o.set("played",o.getPlayed())}),this.art.on("video:ended",function(){o.set("played",1)}),r(this.option.$control,"mousemove",function(t){o.$tip.style.display="block",-1this.option.$control.clientWidth-o/2?this.$tip.style.left="".concat(this.option.$control.clientWidth-o,"px"):this.$tip.style.left="".concat(n-o/2,"px")}},{key:"getPlayed",value:function(){var t=this.art.refs.$video;return t.currentTime/t.duration}},{key:"getLoaded",value:function(){var t=this.art.refs.$video;return t.buffered.length?t.buffered.end(t.buffered.length-1)/t.duration:0}},{key:"getPosFromEvent",value:function(t){var e=this.art.refs,n=e.$video,i=e.$progress,o=i.getBoundingClientRect().left,r=$(t.x-o,0,i.clientWidth),a=r/i.clientWidth*n.duration;return{second:a,time:T(a),width:r,percentage:$(r/i.clientWidth,0,1)}}},{key:"set",value:function(t,e){this["$".concat(t)].style.width="".concat(100*e,"%"),"played"===t&&(this.$indicator.style.left="calc(".concat(100*e,"% - 6.5px)"))}}]),e}(),Y=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t}}]),e}(),J=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t,this.init()}},{key:"init",value:function(){var t=this;this.option.$control.innerHTML="00:00 / 00:00",this.art.on("video:canplay",function(){t.option.$control.innerHTML=t.getTime()}),this.art.on("video:timeupdate",function(){t.option.$control.innerHTML=t.getTime()}),this.art.on("video:seeking",function(){t.option.$control.innerHTML=t.getTime()})}},{key:"getTime",value:function(){var t=this.art.player;return"".concat(T(t.currentTime())," / ").concat(T(t.duration()))}}]),e}(),X=function(){function e(t){s(this,e),this.option=t}return c(e,[{key:"apply",value:function(t){this.art=t,this.isDroging=!1,this.init()}},{key:"init",value:function(){var e=this,t=this.art,n=t.events.proxy,i=t.player,o=t.i18n;this.$volume=w(this.option.$control,_.volume),this.$volumeClose=w(this.option.$control,_.volumeClose),this.$volumePanel=w(this.option.$control,'
'),this.$volumeHandle=w(this.$volumePanel,'
'),C(this.$volume,o.get("Mute")),this.$volumeClose.style.display="none";var r=E("volume");this.setVolumeHandle(r),i.volume(r),n(this.$volume,"click",function(){e.$volume.style.display="none",e.$volumeClose.style.display="block",i.volume(0)}),n(this.$volumeClose,"click",function(){e.$volume.style.display="block",e.$volumeClose.style.display="none",i.volume(E("volume"))}),n(this.option.$control,"mouseenter",function(){e.$volumePanel.classList.add("art-volume-panel-hover"),setTimeout(function(){e.setVolumeHandle(i.volume())},200)}),n(this.option.$control,"mouseleave",function(){e.$volumePanel.classList.remove("art-volume-panel-hover")}),n(this.$volumePanel,"click",function(t){e.volumeChangeFromEvent(t)}),n(this.$volumeHandle,"mousedown",function(){e.isDroging=!0}),n(this.$volumeHandle,"mousemove",function(t){e.isDroging&&e.volumeChangeFromEvent(t)}),n(document,"mouseup",function(){e.isDroging&&(e.isDroging=!1)}),this.art.on("video:volumechange",function(){var t=i.volume();e.setVolumeHandle(t),e.$volumeClose.style.display=0===t?(e.$volume.style.display="none","block"):(e.$volume.style.display="block","none")})}},{key:"volumeChangeFromEvent",value:function(t){var e=this.art.player,n=this.$volumePanel.getBoundingClientRect(),i=n.left,o=n.width,r=this.$volumeHandle.getBoundingClientRect().width,a=$(t.x-i-r/2,0,o-r/2)/(o-r);e.volume(a)}},{key:"setVolumeHandle",value:function(){var t=0n.clientWidth-s/2?this.option.$control.style.left="".concat(n.clientWidth-s,"px"):this.option.$control.style.left="".concat(i-s/2,"px")}}]),e}(),Q=0,Z=function(){function n(t){var e=this;s(this,n),this.art=t,this.$map={},this.art.on("video:firstload",function(){e.init(),e.mount()})}return c(n,[{key:"init",value:function(){var e=this;this.add(new U({disable:!1,position:"top",index:10})),this.add(new K({disable:!this.art.option.thumbnails.url,position:"top",index:20})),this.add(new I({disable:!1,position:"left",index:10})),this.add(new X({disable:!1,position:"left",index:20})),this.add(new J({disable:!1,position:"left",index:30})),this.add(new V({disable:!1,position:"right",index:10})),this.add(new Y({disable:!1,position:"right",index:20})),this.add(new G({disable:!1,position:"right",index:30})),this.add(new q({disable:!1,position:"right",index:40})),this.add(new R({disable:!1,position:"right",index:50})),this.art.option.controls.forEach(function(t){e.add(t)})}},{key:"add",value:function(t){var e=t.option;if(e&&!e.disable){Q++;var n=t.constructor.name.toLowerCase()||"control".concat(Q),i=document.createElement("div");i.setAttribute("class","art-control art-control-".concat(n)),i.setAttribute("data-control-index",String(e.index)||Q),e.$control=i,this.commonMethod(t),(this.$map[e.position]||(this.$map[e.position]=[])).push(i),t.apply&&t.apply(this.art),this[n]=t}}},{key:"mount",value:function(){var t=this,e=this.art.refs,n=e.$progress,i=e.$controlsLeft,o=e.$controlsRight;Object.keys(this.$map).forEach(function(e){t.$map[e].sort(function(t,e){return Number(t.dataset.controlIndex)-Number(e.dataset.controlIndex)}).forEach(function(t){switch(e){case"top":n.appendChild(t);break;case"left":i.appendChild(t);break;case"right":o.appendChild(t)}})})}},{key:"commonMethod",value:function(t){var e=this;Object.defineProperty(t,"hide",{value:function(){t.option.$control.style.display="none",e.art.emit("control:hide",t.option.$control)}}),Object.defineProperty(t,"show",{value:function(){t.option.$control.style.display="block",e.art.emit("control:show",t.option.$control)}})}},{key:"show",value:function(){this.art.refs.$player.classList.add("controls-show")}},{key:"hide",value:function(){this.art.refs.$player.classList.remove("controls-show")}}]),n}(),tt=0,et=function(){function e(t){s(this,e),this.art=t,this.init()}return c(e,[{key:"init",value:function(){var e=this,t=this.art,n=t.option,i=t.i18n,o=t.refs,r=t.events.proxy;n.contextmenu.push({name:"info",html:i.get("Video info"),click:function(){e.art.info.show()}},{name:"version",html:'ArtPlayer 1.0.0'},{name:"close",html:i.get("Close"),click:function(){e.hide()}}),r(o.$player,"contextmenu",function(t){t.preventDefault(),e.art.isFocus=!0,o.$contextmenu||e.creatMenu(),e.show(),e.setPos(t)}),r(o.$player,"click",function(t){o.$contextmenu&&!t.path.includes(o.$contextmenu)&&e.hide()})}},{key:"creatMenu",value:function(){var i=this,t=this.art,e=t.option,o=t.refs,r=t.events.proxy;o.$contextmenu=document.createElement("div"),o.$contextmenu.classList.add("artplayer-contextmenu"),e.contextmenu.forEach(function(e){tt++;var n=document.createElement("div");n.setAttribute("data-art-menu-id",tt),n.setAttribute("class","art-menu art-menu-".concat(e.name||tt)),w(n,e.html),x(n,e.style||{}),e.click&&r(n,"click",function(t){t.preventDefault(),e.click(i.art,t),i.hide(),i.art.emit("contextmenu:click",n)}),w(o.$contextmenu,n)}),w(o.$player,o.$contextmenu)}},{key:"setPos",value:function(t){var e=this.art.refs,n=t.clientX,i=t.clientY,o=e.$player.getBoundingClientRect(),r=o.height,a=o.width,s=o.left,l=o.top,c=e.$contextmenu.getBoundingClientRect(),u=c.height,h=c.width,d=n-s,f=i-l;s+a\n
Player version:
\n
1.0.0
\n \n '),t.push('\n
\n
Video url:
\n
\n
\n '),t.push('\n
\n
Video type:
\n
loading...
\n
\n '),t.push('\n
\n
Video size:
\n
loading...
\n
\n '),t.push('\n
\n
Video volume:
\n
\n
\n '),t.push('\n
\n
Video time:
\n
\n
\n '),t.push('\n
\n
Video duration:
\n
\n
\n '),t.push('\n
\n
Video resolution:
\n
\n x \n
\n
\n '),t.join("")}},{key:"getHeader",value:function(){var t=this.art,e=t.option.url,n=t.refs.$infoPanel,i=Array.from(n.querySelectorAll("[data-head]"));fetch(e,{method:"HEAD"}).then(function(n){i.forEach(function(t){var e=n.headers.get(t.dataset.head);t.innerHTML=void 0!==e?e:"unknown"})}).catch(function(){i.forEach(function(t){t.innerHTML="unknown"})})}},{key:"loop",value:function(){var t=this,e=this.art.refs,n=e.$infoPanel,i=e.$video;this.timer=setTimeout(function(){Array.from(n.querySelectorAll("[data-video]")).forEach(function(t){var e=i[t.dataset.video];t.innerHTML=void 0!==e?e:"unknown"}),t.loop()},1e3)}},{key:"hide",value:function(){var t=this.art.refs.$info;t.style.display="none",clearTimeout(this.timer),this.art.emit("info:hide",t)}}]),e}(),ot=function(){function n(t){s(this,n),this.art=t;var e=this.art.option.subtitle.url;e&&(this.checkExt(e),this.init())}return c(n,[{key:"init",value:function(){var i=this,t=this.art,e=t.events.proxy,n=t.option.subtitle,o=t.refs,r=o.$video,a=o.$subtitle;x(a,n.style||{});var s=document.createElement("track");s.default=!0,s.kind="metadata",this.load(n.url).then(function(t){if(s.src=t,r.appendChild(s),i.art.refs.$track=s,r.textTracks&&r.textTracks[0]){var n=z(r.textTracks,1)[0];e(n,"cuechange",function(){var t=z(n.activeCues,1)[0];if(a.innerHTML="",t){var e=document.createElement("div");e.appendChild(t.getCueAsHTML()),a.innerHTML=e.innerHTML.split(/\r?\n/).map(function(t){return"

".concat(t,"

")}).join("")}i.art.emit("subtitle:update",a)})}})}},{key:"load",value:function(e){var n,i=this;return fetch(e).then(function(t){return n=t.headers.get("Content-Type"),t.text()}).then(function(t){return/x-subrip/gi.test(n)?i.srtToVtt(t):e}).catch(function(t){throw t})}},{key:"srtToVtt",value:function(t){var e="WEBVTT \r\n\r\n".concat(t.replace(/\{\\([ibu])\}/g,"").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").concat("\r\n\r\n"));return URL.createObjectURL(new Blob([e],{type:"text/vtt"}))}},{key:"checkExt",value:function(t){var e=function t(e){return e.includes("?")?t(e.split("?")[0]):e.includes("#")?t(e.split("#")[0]):e.trim().toLowerCase().split(".").pop()}(t);b("vtt"===e||"srt"===e,"'subtitle.url' option require 'vtt' or 'srt' format, but got '".concat(e,"'."))}},{key:"show",value:function(){var t=this.art.refs.$subtitle;t.style.display="block",this.art.emit("subtitle:show",t)}},{key:"hide",value:function(){var t=this.art.refs.$subtitle;t.style.display="none",this.art.emit("subtitle:hide",t)}},{key:"switch",value:function(e){var n=this,i=this.art.refs.$track;this.checkExt(e),b(i,"You need to initialize the subtitle option first."),this.load(e).then(function(t){e!==t&&(i.src=t,n.art.emit("subtitle:switch",e))})}}]),n}(),rt=function(){function e(t){s(this,e),this.art=t,this.destroyEvents=[],this.proxy=this.proxy.bind(this)}return c(e,[{key:"proxy",value:function(e,t,n){var i=this,o=3