"object"==typeof navigator&&function(a,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define("Plyr",n):(a=a||self).Plyr=n()}(this,function(){"use strict";function xe(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}function et(a,e){for(var t,l=0;le){var t=(n="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/))?Math.max(0,(n[1]?n[1].length:0)-(n[2]?+n[2]:0)):0;return parseFloat(a.toFixed(t))}var n;return Math.round(a/e)*e}function a(a,e){setTimeout(function(){try{a.hidden=!0,a.offsetHeight,a.hidden=!1}catch(t){}},e)}function f(d,e,c){var n=this,i=3=e?t:n)(i)};Object.assign(i,{onload:a,onerror:a,src:l})})}function Se(a){return new Promise(function(e,t){lt(a,{success:e,error:t})})}function qe(t){t&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===t&&(this.media.paused=!t,q.call(this,this.media,t?"play":"pause"))}function De(t){t&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===t&&(this.media.paused=!t,q.call(this,this.media,t?"play":"pause"))}function Ue(t){return t.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var je,ze,Be,Ke,nt={addCSS:!0,thumbWidth:15,watch:!0},r=function(t){return null==t?null:t.constructor},o=function(a,e){return!!(a&&e&&a instanceof e)},l=function(t){return null==t},c=function(t){return r(t)===Object},u=function(t){return r(t)===String},d=function(t){return Array.isArray(t)},h=function(t){return o(t,NodeList)},m={nullOrUndefined:l,object:c,number:function(t){return r(t)===Number&&!Number.isNaN(t)},string:u,boolean:function(t){return r(t)===Boolean},function:function(t){return r(t)===Function},array:d,nodeList:h,element:function(t){return o(t,Element)},event:function(t){return o(t,Event)},empty:function(t){return l(t)||(u(t)||d(t)||h(t))&&!t.length||c(t)&&!Object.keys(t).length}},p=function(){function d(e,t){xe(this,d),m.element(e)?this.element=e:m.string(e)&&(this.element=document.querySelector(e)),m.element(this.element)&&m.empty(this.element.rangeTouch)&&(this.config=Object.assign({},nt,t),this.init())}return e(d,[{key:"init",value:function(){d.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){d.enabled&&(this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(a){var l=this,t=a?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach(function(a){l.element[t](a,function(t){return l.set(t)},!1)})}},{key:"get",value:function(t){if(!d.enabled||!m.event(t))return null;var e,p=t.target,i=t.changedTouches[0],a=parseFloat(p.getAttribute("min"))||0,s=parseFloat(p.getAttribute("max"))||100,r=parseFloat(p.getAttribute("step"))||1,o=s-a,l=p.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return 0>(e=100/l.width*(i.clientX-l.left))?e=0:100e?e-=(100-2*e)*c:50n?n=0:100=Math.pow(2,32))return O(this.elements.display.currentTime,!0),void O(this.elements.progress,!0);P.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var t=P.element(this.elements.display.duration);!t&&this.config.displayDuration&&this.paused&&Te.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),t&&Te.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),Te.updateSeekTooltip.call(this)}},toggleMenuButton:function(a,e){O(this.elements.settings.buttons[a],!e)},updateSetting:function(l,e,t){var n=this.elements.settings.panels[l],i=null,o=e;if("captions"===l)i=this.currentTrack;else{if(i=P.empty(t)?this[l]:t,P.empty(i)&&(i=this.config[l].default),!P.empty(this.options[l])&&!this.options[l].includes(i))return void this.debug.warn("Unsupported value of '".concat(i,"' for ").concat(l));if(!this.config[l].options.includes(i))return void this.debug.warn("Disabled value of '".concat(i,"' for ").concat(l))}if(P.element(o)||(o=n&&n.querySelector("[role=\"menu\"]")),P.element(o)){this.elements.settings.buttons[l].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=Te.getLabel.call(this,l,i);var d=o&&o.querySelector("[value=\"".concat(i,"\"]"));P.element(d)&&(d.checked=!0)}},getLabel:function(a,e){switch(a){case"speed":return 1===e?fe("normal",this.config):"".concat(e,"×");case"quality":if(P.number(e)){var t=fe("qualityLabel.".concat(e),this.config);return t.length?t:"".concat(e,"p")}return re(e);case"captions":return Ae.getLabel.call(this);default:return null}},setQualityMenu:function(l){var o=this;if(P.element(this.elements.settings.panels.quality)){var t=this.elements.settings.panels.quality.querySelector("[role=\"menu\"]");P.array(l)&&(this.options.quality=ae(l).filter(function(t){return o.config.quality.options.includes(t)}));var e=!P.empty(this.options.quality)&&1a.indexOf(e)?1:-1}).forEach(function(a){Te.createMenuItem.call(o,{value:a,list:t,type:"quality",title:Te.getLabel.call(o,"quality",a),badge:n(a)})}),Te.updateSetting.call(this,"quality",t)}}},setCaptionsMenu:function(){var l=this;if(P.element(this.elements.settings.panels.captions)){var e=this.elements.settings.panels.captions.querySelector("[role=\"menu\"]"),t=Ae.getTracks.call(this),n=!!t.length;if(Te.toggleMenuButton.call(this,"captions",n),j(e),Te.checkMenu.call(this),n){var i=t.map(function(t,a){return{value:a,checked:l.captions.toggled&&l.currentTrack===a,title:Ae.getLabel.call(l,t),badge:t.language&&Te.createBadge.call(l,t.language.toUpperCase()),list:e,type:"language"}});i.unshift({value:-1,checked:!this.captions.toggled,title:fe("disabled",this.config),list:e,type:"language"}),i.forEach(Te.createMenuItem.bind(this)),Te.updateSetting.call(this,"captions",e)}}},setSpeedMenu:function(a){var l=this;if(P.element(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector("[role=\"menu\"]");P.array(a)?this.options.speed=a:(this.isHTML5||this.isVimeo)&&(this.options.speed=[.5,.75,1,1.25,1.5,1.75,2]),this.options.speed=this.options.speed.filter(function(t){return l.config.speed.options.includes(t)});var e=!P.empty(this.options.speed)&&1Date.now();this.toggleControls(!!(a||this.loading||this.paused||e.pressed||e.hover||t))}}},Fe=function(){function l(e){xe(this,l),this.player=e,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return e(l,[{key:"handleKey",value:function(l){var e=this.player,t=e.elements,n=l.keyCode?l.keyCode:l.which,i="keydown"===l.type,a=i&&n===this.lastKey;if(!(l.altKey||l.ctrlKey||l.metaKey||l.shiftKey)&&P.number(n))if(i){var s=document.activeElement;if(P.element(s)){var r=e.config.selectors.editable;if(s!==t.inputs.seek&&Y(s,r))return;if(32===l.which&&Y(s,"button, [role^=\"menuitem\"]"))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(n)&&(l.preventDefault(),l.stopPropagation()),n){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(e.currentTime=e.duration/10*(n-48));break;case 32:case 75:a||e.togglePlay();break;case 38:e.increaseVolume(.1);break;case 40:e.decreaseVolume(.1);break;case 77:a||(e.muted=!e.muted);break;case 39:e.forward();break;case 37:e.rewind();break;case 70:e.fullscreen.toggle();break;case 67:a||e.toggleCaptions();break;case 76:e.loop=!e.loop}27===n&&!e.fullscreen.usingNative&&e.fullscreen.active&&e.fullscreen.toggle(),this.lastKey=n}else this.lastKey=null}},{key:"toggleMenu",value:function(t){Te.toggleMenu.call(this.player,t)}},{key:"firstTouch",value:function(){var a=this.player,e=a.elements;a.touch=!0,B(e.container,a.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(l){var o=this.player,t=o.elements;if(clearTimeout(this.focusTimer),"keydown"!==l.type||9===l.which){"keydown"===l.type&&(this.lastKeyDown=l.timeStamp);var e,n=20>=l.timeStamp-this.lastKeyDown;("focus"!==l.type||n)&&(e=o.config.classNames.tabFocus,B(Q.call(o,".".concat(e)),e,!1),this.focusTimer=setTimeout(function(){var a=document.activeElement;t.container.contains(a)&&B(document.activeElement,o.config.classNames.tabFocus,!0)},10))}}},{key:"global",value:function(){var a=!(0Math.abs(i)?n:i);d.increaseVolume(s/50);var o=d.media.volume;(1===s&&1>o||-1===s&&0 ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);e&&(l.startTime=60*(60*+(e[1]||0))+60*+e[2]+ +e[3]+ +"0.".concat(e[4]),l.endTime=60*(60*+(e[6]||0))+60*+e[7]+ +e[8]+ +"0.".concat(e[9]))}else if(!P.empty(t.trim())&&P.empty(l.text)){var a=t.trim().split("#xywh="),n=tt(a,1);if(l.text=n[0],a[1]){var i=tt(a[1].split(","),4);l.x=i[0],l.y=i[1],l.w=i[2],l.h=i[3]}}}),l.text&&d.push(l)}),d),height:null,urlPrefix:""};c.frames[0].text.startsWith("/")||c.frames[0].text.startsWith("http://")||c.frames[0].text.startsWith("https://")||(c.urlPrefix=a.substring(0,a.lastIndexOf("/")+1));var o=new Image;o.onload=function(){c.height=o.naturalHeight,c.width=o.naturalWidth,e.thumbnails.push(c),t()},o.src=c.urlPrefix+c.frames[0].text})})}},{key:"startMove",value:function(a){if(this.loaded&&P.event(a)&&["touchmove","mousemove"].includes(a.type)&&this.player.media.duration){if("touchmove"===a.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var e=this.player.elements.progress.getBoundingClientRect(),t=100/e.width*(a.pageX-e.left);this.seekTime=this.player.media.duration*(t/100),0>this.seekTime&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=a.pageX,this.elements.thumb.time.innerText=me(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(t){!1!==t.button&&0!==t.button||(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var t=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):i.call(this.player,this.player.media,"timeupdate",function(){t.mouseDown||t.toggleScrubbingContainer(!1)})}},{key:"listeners",value:function(){var t=this;this.player.on("play",function(){t.toggleThumbContainer(!1,!0)}),this.player.on("seeked",function(){t.toggleThumbContainer(!1)}),this.player.on("timeupdate",function(){t.lastTime=t.player.media.currentTime})}},{key:"render",value:function(){this.elements.thumb.container=V("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=V("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var t=V("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=V("span",{},"00:00"),t.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(t),P.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=V("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"showImageAtCurrentTime",value:function(){var l=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var e=this.thumbnails[0].frames.findIndex(function(e){return l.seekTime>=e.startTime&&l.seekTime<=e.endTime}),t=0<=e,o=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(function(t,n){l.loadedImages.includes(t.frames[e].text)&&(o=n)}),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(o)))}},{key:"loadImage",value:function(){var d=this,e=0i&&(a=i),t.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){this.elements.scrubbing.container.style.width="".concat(this.player.media.clientWidth,"px"),this.elements.scrubbing.container.style.height="".concat(this.player.media.clientWidth/this.thumbAspectRatio,"px")}},{key:"setImageSizeAndOffset",value:function(a,e){if(this.usingSprites){var t=this.thumbContainerHeight/e.h;a.style.height="".concat(Math.floor(a.naturalHeight*t),"px"),a.style.width="".concat(Math.floor(a.naturalWidth*t),"px"),a.style.left="-".concat(e.x*t,"px"),a.style.top="-".concat(e.y*t,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?Math.floor(this.player.media.clientWidth/this.thumbAspectRatio):Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(t){this.mouseDown?this.currentScrubbingImageElement=t:this.currentThumbnailImageElement=t}}]),a}(),Je={insertElements:function(a,e){var l=this;P.string(e)?R(a,this.media,{src:e}):P.array(e)&&e.forEach(function(e){R(a,l.media,e)})},change:function(a){var e=this;s(a,"sources.length")?(ie.cancelRequests.call(this),this.destroy.call(this,function(){e.options.quality=[],U(e.media),e.media=null,P.element(e.elements.container)&&e.elements.container.removeAttribute("class");var t=a.sources,n=a.type,i=tt(t,1)[0],s=i.provider,r=void 0===s?Me.html5:s,o=i.src,l="html5"===r?n:"div",d="html5"===r?{}:{src:o};Object.assign(e,{provider:r,type:n,supported:ne.check(n,r,e.config.playsinline),media:V(l,d)}),e.elements.container.appendChild(e.media),P.boolean(a.autoplay)&&(e.config.autoplay=a.autoplay),e.isHTML5&&(e.config.crossorigin&&e.media.setAttribute("crossorigin",""),e.config.autoplay&&e.media.setAttribute("autoplay",""),P.empty(a.poster)||(e.poster=a.poster),e.config.loop.active&&e.media.setAttribute("loop",""),e.config.muted&&e.media.setAttribute("muted",""),e.config.playsinline&&e.media.setAttribute("playsinline","")),He.addStyleHook.call(e),e.isHTML5&&Je.insertElements.call(e,"source",t),e.config.title=a.title,Ye.setup.call(e),e.isHTML5&&Object.keys(a).includes("tracks")&&Je.insertElements.call(e,"track",a.tracks),(e.isHTML5||e.isEmbed&&!e.supported.ui)&&He.build.call(e),e.isHTML5&&e.media.load(),e.previewThumbnails&&e.previewThumbnails.load(),e.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}},$e=function(){function d(e,t){var n=this;if(!(xe(this,d),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=ne.touch,this.media=e,P.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||P.nodeList(this.media)||P.array(this.media))&&(this.media=this.media[0]),this.config=H({},Pe,d.defaults,t||{},function(){try{return JSON.parse(n.media.getAttribute("data-plyr-config"))}catch(t){return{}}}()),this.elements={container:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new _e(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",ne),!P.nullOrUndefined(this.media)&&P.element(this.media)))this.debug.error("Setup failed: no suitable element passed");else if(this.media.plyr)this.debug.warn("Target already setup");else if(!this.config.enabled)this.debug.error("Setup failed: disabled by config");else if(ne.check().api){var a=this.media.cloneNode(!0);a.autoplay=!1,this.elements.original=a;var i=this.media.tagName.toLowerCase(),s=null,r=null;switch(i){case"div":if(!(s=this.media.querySelector("iframe"),P.element(s)))this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);else if(r=he(s.getAttribute("src")),this.provider=function(t){return /^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(t)?Me.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(t)?Me.vimeo:null}(r.toString()),this.elements.container=this.media,this.media=s,this.elements.container.className="",r.search.length){var u=["1","true"];u.includes(r.searchParams.get("autoplay"))&&(this.config.autoplay=!0),u.includes(r.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=u.includes(r.searchParams.get("playsinline")),this.config.youtube.hl=r.searchParams.get("hl")):this.config.playsinline=!0}if(P.empty(this.provider)||!Object.keys(Me).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=Le.video;break;case"video":case"audio":this.type=i,this.provider=Me.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=ne.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new Fe(this),this.storage=new ge(this),this.media.plyr=this,P.element(this.elements.container)||(this.elements.container=V("div",{tabindex:0}),D(this.media,this.elements.container)),He.addStyleHook.call(this),Ye.setup.call(this),this.config.debug&&x.call(this,this.elements.container,this.config.events.join(" "),function(t){n.debug.log("event: ".concat(t.type))}),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&He.build.call(this),this.listeners.container(),this.listeners.global(),this.fullscreen=new Oe(this),this.config.ads.enabled&&(this.ads=new Qe(this)),this.isHTML5&&this.config.autoplay&&setTimeout(function(){return n.play()},10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Xe(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support")}return e(d,[{key:"play",value:function(){var t=this;return P.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(function(){return t.ads.play()}).catch(function(){return t.media.play()}),this.media.play()):null}},{key:"pause",value:function(){this.playing&&P.function(this.media.pause)&&this.media.pause()}},{key:"togglePlay",value:function(t){(P.boolean(t)?t:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):P.function(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(t){this.currentTime-=P.number(t)?t:this.config.seekTime}},{key:"forward",value:function(t){this.currentTime+=P.number(t)?t:this.config.seekTime}},{key:"increaseVolume",value:function(a){var e=this.media.muted?0:this.volume;this.volume=e+(P.number(a)?a:0)}},{key:"decreaseVolume",value:function(t){this.increaseVolume(-t)}},{key:"toggleCaptions",value:function(t){Ae.toggle.call(this,t,!1)}},{key:"airplay",value:function(){ne.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(l){if(this.supported.ui&&!this.isAudio){var e=K(this.elements.container,this.config.classNames.hideControls),t=void 0===l?void 0:!l,n=B(this.elements.container,this.config.classNames.hideControls,t);if(n&&this.config.controls.includes("settings")&&!P.empty(this.config.settings)&&Te.toggleMenu.call(this,!1),n!==e){var i=n?"controlshidden":"controlsshown";q.call(this,this.media,i)}return!n}return!1}},{key:"on",value:function(a,e){x.call(this,this.elements.container,a,e)}},{key:"once",value:function(a,e){i.call(this,this.elements.container,a,e)}},{key:"off",value:function(a,e){_(this.elements.container,a,e)}},{key:"destroy",value:function(a){var e=this,t=1e&&(e=0),this.config.volume=e,this.media.volume=e,!P.empty(a)&&this.muted&&0