From e72a91de6e5a89d92c5e10a8c725df5d543c31e9 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Thu, 21 Jul 2016 21:59:16 +1000 Subject: [PATCH] Fix for seek issues introduced in v1.8.9 --- changelog.md | 3 +++ dist/plyr.js | 4 ++-- package.json | 2 +- readme.md | 6 +++--- src/js/plyr.js | 6 +++--- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/changelog.md b/changelog.md index 6d49b7e6..b2db3855 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## v1.8.10 +- Fix for seek issues introduced in v1.8.9 + ## v1.8.9 - Fix for fullscreen not being defined (Fixes #295) - Fix for multiline captions (Fixes #314) diff --git a/dist/plyr.js b/dist/plyr.js index 0886a217..8a6d80fa 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t(e,document):"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):e.plyr=t(e,document)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10),l=!1,u=!1,c=!1,d=!1;return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(l=!0,a="IE",o="11"):-1!==(n=s.indexOf("MSIE"))?(l=!0,a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(c=!0,a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(d=!0,a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(u=!0,a="Firefox",o=s.substring(n+8)):(e=s.lastIndexOf(" ")+1)<(n=s.lastIndexOf("/"))&&(a=s.substring(e,n),o=s.substring(n+1),a.toLowerCase()==a.toUpperCase()&&(a=navigator.appName)),-1!==(r=o.indexOf(";"))&&(o=o.substring(0,r)),-1!==(r=o.indexOf(" "))&&(o=o.substring(0,r)),i=parseInt(""+o,10),isNaN(i)&&(o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10)),{name:a,version:i,isIE:l,isFirefox:u,isChrome:c,isSafari:d,isIos:/(iPad|iPhone|iPod)/g.test(navigator.platform),isTouch:"ontouchstart"in t.documentElement}}function r(e,t){var n=e.media;if("video"==e.type)switch(t){case"video/webm":return!(!n.canPlayType||!n.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/,""));case"video/mp4":return!(!n.canPlayType||!n.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/,""));case"video/ogg":return!(!n.canPlayType||!n.canPlayType('video/ogg; codecs="theora"').replace(/no/,""))}else if("audio"==e.type)switch(t){case"audio/mpeg":return!(!n.canPlayType||!n.canPlayType("audio/mpeg;").replace(/no/,""));case"audio/ogg":return!(!n.canPlayType||!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/,""));case"audio/wav":return!(!n.canPlayType||!n.canPlayType('audio/wav; codecs="1"').replace(/no/,""))}return!1}function s(e){if(!t.querySelectorAll('script[src="'+e+'"]').length){var n=t.createElement("script");n.src=e;var r=t.getElementsByTagName("script")[0];r.parentNode.insertBefore(n,r)}}function a(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function o(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function i(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,s=e[n],a=s.parentNode,o=s.nextSibling;return r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r),r}}function l(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function u(e){e&&e.parentNode.removeChild(e)}function c(e,t){e.insertBefore(t,e.firstChild)}function d(e,t){for(var n in t)e.setAttribute(n,L["boolean"](t[n])&&t[n]?"":t[n])}function p(e,n,r){var s=t.createElement(e);d(s,r),c(n,s)}function m(e){return e.replace(".","")}function f(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=r+(n?" "+t:"")}}function y(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function b(e,n){var r=Element.prototype,s=r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.msMatchesSelector||function(e){return-1!==[].indexOf.call(t.querySelectorAll(e),this)};return s.call(e,n)}function v(e,t,n,r){e&&k(e,t,n,!0,r)}function g(e,t,n,r){e&&k(e,t,n,!1,r)}function h(e,t,n,r,s){v(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])},s)}function k(e,t,n,r,s){var a=t.split(" ");if(L["boolean"](s)||(s=!1),e instanceof NodeList)for(var o=0;or;r++){var s=e[r];for(var a in s)s[a]&&s[a].constructor&&s[a].constructor===Object?(t[a]=t[a]||{},_(t[a],s[a])):t[a]=s[a]}return t}}function S(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},n="webkit moz o ms khtml".split(" ");if(L.undefined(t.cancelFullScreen))for(var r=0,s=n.length;s>r;r++){if(e.prefix=n[r],!L.undefined(t[e.prefix+"CancelFullScreen"])){e.supportsFullScreen=!0;break}if(!L.undefined(t.msExitFullscreen)&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}else e.supportsFullScreen=!0;return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch(L.undefined(e)&&(e=t.body),this.prefix){case"":return t.fullscreenElement==e;case"moz":return t.mozFullScreenElement==e;default:return t[this.prefix+"FullscreenElement"]==e}},e.requestFullScreen=function(e){return L.undefined(e)&&(e=t.body),""===this.prefix?e.requestFullScreen():e[this.prefix+("ms"==this.prefix?"RequestFullscreen":"RequestFullScreen")]()},e.cancelFullScreen=function(){return""===this.prefix?t.cancelFullScreen():t[this.prefix+("ms"==this.prefix?"ExitFullscreen":"CancelFullScreen")]()},e.element=function(){return""===this.prefix?t.fullscreenElement:t[this.prefix+"FullscreenElement"]}),e}function E(){var t={supported:function(){if(!("localStorage"in e))return!1;try{e.localStorage.setItem("___test","OK");var t=e.localStorage.getItem("___test");return e.localStorage.removeItem("___test"),"OK"===t}catch(n){return!1}return!1}()};return t}function C(b,k){function _(){k.debug&&e.console&&console.log.apply(console,arguments)}function C(){k.debug&&e.console&&console.warn.apply(console,arguments)}function I(){return{url:k.iconUrl,absolute:0===k.iconUrl.indexOf("http")||Ve.browser.isIE}}function P(){var e=[],t=I(),n=(t.absolute?"":t.url)+"#"+k.iconPrefix;return a(k.controls,"play-large")&&e.push('"),e.push('
'),a(k.controls,"restart")&&e.push('"),a(k.controls,"rewind")&&e.push('"),a(k.controls,"play")&&e.push('",'"),a(k.controls,"fast-forward")&&e.push('"),a(k.controls,"progress")&&(e.push('','','','','',"0% "+k.i18n.buffered,""),k.tooltips.seek&&e.push('00:00'),e.push("")),a(k.controls,"current-time")&&e.push('',''+k.i18n.currentTime+"",'00:00',""),a(k.controls,"duration")&&e.push('',''+k.i18n.duration+"",'00:00',""),a(k.controls,"mute")&&e.push('"),a(k.controls,"volume")&&e.push('','",'','',""),a(k.controls,"captions")&&e.push('"),a(k.controls,"fullscreen")&&e.push('"),e.push("
"),e.join("")}function O(){if(Ve.supported.full&&("audio"!=Ve.type||k.fullscreen.allowAudio)&&k.fullscreen.enabled){var e=N.supportsFullScreen;e||k.fullscreen.fallback&&!W()?(_((e?"Native":"Fallback")+" fullscreen enabled"),f(Ve.container,k.classes.fullscreen.enabled,!0)):_("Fullscreen not supported and fallback disabled"),Ve.buttons&&Ve.buttons.fullscreen&&T(Ve.buttons.fullscreen,!1),Y()}}function j(){if("video"===Ve.type){D(k.selectors.captions)||Ve.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ve.usingTextTracks=!1,Ve.media.textTracks&&(Ve.usingTextTracks=!0);for(var e,t="",n=Ve.media.childNodes,r=0;r=10||Ve.browser.isFirefox&&Ve.browser.version>=31)&&(_("Detected browser with known TextTrack issues - using manual fallback"),Ve.usingTextTracks=!1),Ve.usingTextTracks){_("TextTracks supported");for(var o=0;o ");for(var r=0;rVe.captions.length-1){Ve.subcount=Ve.captions.length-1;break}Ve.media.currentTime.toFixed(1)>=n(Ve.captions[Ve.subcount][0])&&Ve.media.currentTime.toFixed(1)<=r(Ve.captions[Ve.subcount][0])?(Ve.currentCaption=Ve.captions[Ve.subcount][1],q(Ve.currentCaption)):q()}}function R(){Ve.buttons.captions&&(f(Ve.container,k.classes.captions.enabled,!0),k.captions.defaultActive&&(f(Ve.container,k.classes.captions.active,!0),T(Ve.buttons.captions,!0)))}function H(e){return Ve.container.querySelectorAll(e)}function D(e){return H(e)[0]}function W(){try{return e.self!==e.top}catch(t){return!0}}function Y(){function e(e){9===e.which&&Ve.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=H("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];v(Ve.container,"keydown",e)}function X(e,t){if(L.string(t))p(e,Ve.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)p(e,Ve.media,t[n])}function B(){if(k.loadSprite){var e=I();e.absolute?(_("AJAX loading absolute SVG sprite"+(Ve.browser.isIE?" (due to IE)":"")),F(e.url,"sprite-plyr")):_("Sprite will be used as external resource directly")}var n=k.html;_("Injecting custom controls"),n||(n=P()),n=o(n,"{seektime}",k.seekTime),n=o(n,"{id}",Math.floor(1e4*Math.random()));var r;if(null!==k.selectors.controls.container&&(r=k.selectors.controls.container,L.string(selector)&&(r=t.querySelector(r))),r instanceof HTMLElement||(r=Ve.container),r.insertAdjacentHTML("beforeend",n),k.tooltips.controls)for(var s=H([k.selectors.controls.wrapper," ",k.selectors.labels," .",k.classes.hidden].join("")),a=s.length-1;a>=0;a--){var i=s[a];f(i,k.classes.hidden,!1),f(i,k.classes.tooltip,!0)}}function U(){try{return Ve.controls=D(k.selectors.controls.wrapper),Ve.buttons={},Ve.buttons.seek=D(k.selectors.buttons.seek),Ve.buttons.play=H(k.selectors.buttons.play),Ve.buttons.pause=D(k.selectors.buttons.pause),Ve.buttons.restart=D(k.selectors.buttons.restart),Ve.buttons.rewind=D(k.selectors.buttons.rewind),Ve.buttons.forward=D(k.selectors.buttons.forward),Ve.buttons.fullscreen=D(k.selectors.buttons.fullscreen),Ve.buttons.mute=D(k.selectors.buttons.mute),Ve.buttons.captions=D(k.selectors.buttons.captions),Ve.progress={},Ve.progress.container=D(k.selectors.progress.container),Ve.progress.buffer={},Ve.progress.buffer.bar=D(k.selectors.progress.buffer),Ve.progress.buffer.text=Ve.progress.buffer.bar&&Ve.progress.buffer.bar.getElementsByTagName("span")[0],Ve.progress.played=D(k.selectors.progress.played),Ve.progress.tooltip=Ve.progress.container&&Ve.progress.container.querySelector("."+k.classes.tooltip),Ve.volume={},Ve.volume.input=D(k.selectors.volume.input),Ve.volume.display=D(k.selectors.volume.display),Ve.duration=D(k.selectors.duration),Ve.currentTime=D(k.selectors.currentTime),Ve.seekTime=H(k.selectors.seekTime),!0}catch(e){return C("It looks like there is a problem with your controls HTML"),z(!0),!1}}function $(){f(Ve.container,k.selectors.container.replace(".",""),Ve.supported.full)}function z(e){e&&a(k.types.html5,Ve.type)?Ve.media.setAttribute("controls",""):Ve.media.removeAttribute("controls")}function G(e){var t=k.i18n.play;if(!L.undefined(k.title)&&k.title.length&&(t+=", "+k.title),Ve.supported.full&&Ve.buttons.play)for(var n=Ve.buttons.play.length-1;n>=0;n--)Ve.buttons.play[n].setAttribute("aria-label",t);e instanceof HTMLElement&&e.setAttribute("title",k.i18n.frameTitle.replace("{title}",k.title))}function J(){if(!Ve.media)return void C("No media element found!");if(Ve.supported.full&&(f(Ve.container,k.classes.type.replace("{0}",Ve.type),!0),a(k.types.embed,Ve.type)&&f(Ve.container,k.classes.type.replace("{0}","video"),!0),f(Ve.container,k.classes.stopped,k.autoplay),f(Ve.container,k.classes.isIos,Ve.browser.isIos),f(Ve.container,k.classes.isTouch,Ve.browser.isTouch),"video"===Ve.type)){var e=t.createElement("div");e.setAttribute("class",k.classes.videoWrapper),i(Ve.media,e),Ve.videoContainer=e}a(k.types.embed,Ve.type)&&(K(),Ve.embedId=null)}function K(){for(var n=t.createElement("div"),r=Ve.embedId,a=Ve.type+"-"+Math.floor(1e4*Math.random()),o=H('[id^="'+Ve.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(f(Ve.media,k.classes.videoWrapper,!0),f(Ve.media,k.classes.embedWrapper,!0),"youtube"===Ve.type)Ve.media.appendChild(n),n.setAttribute("id",a),L.object(YT)?Z(r,n):(s(k.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){Z(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ve.type){var l=t.createElement("iframe");l.loaded=!1,v(l,"load",function(){l.loaded=!0}),d(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,allowfullscreen:"",frameborder:0}),Ve.supported.full?(n.appendChild(l),Ve.media.appendChild(n)):Ve.media.appendChild(l),"$f"in e||s(k.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),ee.call(l))},50)}else if("soundcloud"===Ve.type){var p=t.createElement("iframe");p.loaded=!1,v(p,"load",function(){p.loaded=!0}),d(p,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+r,id:a}),n.appendChild(p),Ve.media.appendChild(n),e.SC||s(k.urls.soundcloud.api);var m=e.setInterval(function(){e.SC&&p.loaded&&(e.clearInterval(m),te.call(p))},50)}}function Q(){Ve.container.plyr.embed=Ve.embed,Ve.supported.full&&qe(),G(D("iframe"))}function Z(t,n){"timer"in Ve||(Ve.timer={}),Ve.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:k.autoplay?1:0,controls:Ve.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:k.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){w(Ve.container,"error",!0,{code:e.data,embed:e.target})},onReady:function(t){var n=t.target;Ve.media.play=function(){n.playVideo(),Ve.media.paused=!1},Ve.media.pause=function(){n.pauseVideo(),Ve.media.paused=!0},Ve.media.stop=function(){n.stopVideo(),Ve.media.paused=!0},Ve.media.duration=n.getDuration(),Ve.media.paused=!0,Ve.media.currentTime=n.getCurrentTime(),Ve.media.muted=n.isMuted(),k.title=n.getVideoData().title,w(Ve.media,"timeupdate"),e.clearInterval(Ve.timer.buffering),Ve.timer.buffering=e.setInterval(function(){Ve.media.buffered=n.getVideoLoadedFraction(),w(Ve.media,"progress"),1===Ve.media.buffered&&(e.clearInterval(Ve.timer.buffering),w(Ve.media,"canplaythrough"))},200),Q(),_e()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ve.timer.playing),t.data){case 0:Ve.media.paused=!0,w(Ve.media,"ended");break;case 1:Ve.media.paused=!1,Ve.media.seeking=!1,w(Ve.media,"play"),w(Ve.media,"playing"),Ve.timer.playing=e.setInterval(function(){Ve.media.currentTime=n.getCurrentTime(),w(Ve.media,"timeupdate")},100);break;case 2:Ve.media.paused=!0,w(Ve.media,"pause")}w(Ve.container,"statechange",!1,{code:t.data})}}})}function ee(){Ve.embed=$f(this),Ve.embed.addEvent("ready",function(){Ve.media.play=function(){Ve.embed.api("play"),Ve.media.paused=!1},Ve.media.pause=function(){Ve.embed.api("pause"),Ve.media.paused=!0},Ve.media.stop=function(){Ve.embed.api("stop"),Ve.media.paused=!0},Ve.media.paused=!0,Ve.media.currentTime=0,Q(),Ve.embed.api("getCurrentTime",function(e){Ve.media.currentTime=e,w(Ve.media,"timeupdate")}),Ve.embed.api("getDuration",function(e){Ve.media.duration=e,_e()}),Ve.embed.addEvent("play",function(){Ve.media.paused=!1,w(Ve.media,"play"),w(Ve.media,"playing")}),Ve.embed.addEvent("pause",function(){Ve.media.paused=!0,w(Ve.media,"pause")}),Ve.embed.addEvent("playProgress",function(e){Ve.media.seeking=!1,Ve.media.currentTime=e.seconds,w(Ve.media,"timeupdate")}),Ve.embed.addEvent("loadProgress",function(e){Ve.media.buffered=e.percent,w(Ve.media,"progress"),1===parseInt(e.percent)&&w(Ve.media,"canplaythrough")}),Ve.embed.addEvent("finish",function(){Ve.media.paused=!0,w(Ve.media,"ended")}),k.autoplay&&Ve.embed.api("play")})}function te(){Ve.embed=e.SC.Widget(this),Ve.embed.bind(e.SC.Widget.Events.READY,function(){Ve.media.play=function(){Ve.embed.play(),Ve.media.paused=!1},Ve.media.pause=function(){Ve.embed.pause(),Ve.media.paused=!0},Ve.media.stop=function(){Ve.embed.seekTo(0),Ve.embed.pause(),Ve.media.paused=!0},Ve.media.paused=!0,Ve.media.currentTime=0,Q(),Ve.embed.getPosition(function(e){Ve.media.currentTime=e,w(Ve.media,"timeupdate")}),Ve.embed.getDuration(function(e){Ve.media.duration=e/1e3,_e()}),Ve.embed.bind(e.SC.Widget.Events.PLAY,function(){Ve.media.paused=!1,w(Ve.media,"play"),w(Ve.media,"playing")}),Ve.embed.bind(e.SC.Widget.Events.PAUSE,function(){Ve.media.paused=!0,w(Ve.media,"pause")}),Ve.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS,function(e){Ve.media.seeking=!1,Ve.media.currentTime=e.currentPosition/1e3,w(Ve.media,"timeupdate")}),Ve.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS,function(e){Ve.media.buffered=e.loadProgress,w(Ve.media,"progress"),1===parseInt(e.loadProgress)&&w(Ve.media,"canplaythrough")}),Ve.embed.bind(e.SC.Widget.Events.FINISH,function(){Ve.media.paused=!0,w(Ve.media,"ended")}),k.autoplay&&Ve.embed.play()})}function ne(){"play"in Ve.media&&Ve.media.play()}function re(){"pause"in Ve.media&&Ve.media.pause()}function se(e){e===!0?ne():e===!1?re():Ve.media[Ve.media.paused?"play":"pause"]()}function ae(e){L.number(e)||(e=k.seekTime),ie(Ve.media.currentTime-e)}function oe(e){L.number(e)||(e=k.seekTime),ie(Ve.media.currentTime+e)}function ie(e){var t=0,n=Ve.media.paused,r=le();L.number(e)?t=e:L.object(e)&&a(["input","change"],e.type)&&(t=e.target.value/e.target.max*r),0>t?t=0:t>r&&(t=r),Ee(t);try{Ve.media.currentTime=t.toFixed(4)}catch(s){}if(a(k.types.embed,Ve.type)){switch(Ve.type){case"youtube":Ve.embed.seekTo(t);break;case"vimeo":Ve.embed.api("seekTo",t.toFixed(0));break;case"soundcloud":Ve.embed.seekTo(1e3*t)}n&&re(),w(Ve.media,"timeupdate"),Ve.media.seeking=!0}_("Seeking to "+Ve.media.currentTime+" seconds"),V(t)}function le(){var e=parseInt(k.duration),t=0;return null===Ve.media.duration||isNaN(Ve.media.duration)||(t=Ve.media.duration),isNaN(e)?t:e}function ue(){f(Ve.container,k.classes.playing,!Ve.media.paused),f(Ve.container,k.classes.stopped,Ve.media.paused),Fe(Ve.media.paused)}function ce(){M={x:e.pageXOffset||0,y:e.pageYOffset||0}}function de(){e.scrollTo(M.x,M.y)}function pe(e){var n=N.supportsFullScreen;e&&e.type===N.fullScreenEventName?Ve.isFullscreen=N.isFullScreen(Ve.container):n?(N.isFullScreen(Ve.container)?N.cancelFullScreen():(ce(),N.requestFullScreen(Ve.container)),Ve.isFullscreen=N.isFullScreen(Ve.container)):(Ve.isFullscreen=!Ve.isFullscreen,Ve.isFullscreen?(v(t,"keyup",me),t.body.style.overflow="hidden"):(g(t,"keyup",me),t.body.style.overflow="")),f(Ve.container,k.classes.fullscreen.active,Ve.isFullscreen),Ve.isFullscreen?Ve.container.setAttribute("tabindex","-1"):Ve.container.removeAttribute("tabindex"),Y(Ve.isFullscreen),Ve.buttons&&Ve.buttons.fullscreen&&T(Ve.buttons.fullscreen,Ve.isFullscreen),w(Ve.container,Ve.isFullscreen?"enterfullscreen":"exitfullscreen",!0),!Ve.isFullscreen&&n&&de()}function me(e){27===(e.which||e.charCode||e.keyCode)&&Ve.isFullscreen&&pe()}function fe(e){if(L["boolean"](e)||(e=!Ve.media.muted),T(Ve.buttons.mute,e),Ve.media.muted=e,0===Ve.media.volume&&ye(k.volume),a(k.types.embed,Ve.type)){switch(Ve.type){case"youtube":Ve.embed[Ve.media.muted?"mute":"unMute"]();break;case"vimeo":Ve.embed.api("setVolume",Ve.media.muted?0:parseFloat(k.volume/k.volumeMax));break;case"soundcloud":Ve.embed.setVolume(Ve.media.muted?0:parseFloat(k.volume/k.volumeMax))}w(Ve.media,"volumechange")}}function ye(t){var n=k.volumeMax,r=k.volumeMin;if(L.undefined(t)&&(t=k.volume,k.storage.enabled&&E().supported&&(t=e.localStorage.getItem(k.storage.key),e.localStorage.removeItem("plyr-volume"))),(null===t||isNaN(t))&&(t=k.volume),t>n&&(t=n),r>t&&(t=r),Ve.media.volume=parseFloat(t/n),Ve.volume.display&&(Ve.volume.display.value=t),a(k.types.embed,Ve.type)){switch(Ve.type){case"youtube":Ve.embed.setVolume(100*Ve.media.volume);break;case"vimeo":Ve.embed.api("setVolume",Ve.media.volume);break;case"soundcloud":Ve.embed.setVolume(Ve.media.volume)}w(Ve.media,"volumechange")}Ve.media.muted&&t>0&&fe()}function be(){var e=Ve.media.muted?0:Ve.media.volume*k.volumeMax;ye(e+k.volumeStep/5)}function ve(){var e=Ve.media.muted?0:Ve.media.volume*k.volumeMax;ye(e-k.volumeStep/5)}function ge(){var t=Ve.media.muted?0:Ve.media.volume*k.volumeMax;Ve.supported.full&&(Ve.volume.input&&(Ve.volume.input.value=t),Ve.volume.display&&(Ve.volume.display.value=t)),k.storage.enabled&&E().supported&&!isNaN(t)&&e.localStorage.setItem(k.storage.key,t),f(Ve.container,k.classes.muted,0===t),Ve.supported.full&&Ve.buttons.mute&&T(Ve.buttons.mute,0===t)}function he(e){Ve.supported.full&&Ve.buttons.captions&&(L["boolean"](e)||(e=-1===Ve.container.className.indexOf(k.classes.captions.active)),Ve.captionsEnabled=e,T(Ve.buttons.captions,Ve.captionsEnabled),f(Ve.container,k.classes.captions.active,Ve.captionsEnabled),w(Ve.container,Ve.captionsEnabled?"captionsenabled":"captionsdisabled",!0))}function ke(e){var t="waiting"===e.type;clearTimeout(Ve.timers.loading),Ve.timers.loading=setTimeout(function(){f(Ve.container,k.classes.loading,t)},t?250:0)}function we(e){if(Ve.supported.full){var t=Ve.progress.played,n=0,r=le();if(e)switch(e.type){case"timeupdate":case"seeking":if(Ve.controls.pressed)return;n=x(Ve.media.currentTime,r),"timeupdate"==e.type&&Ve.buttons.seek&&(Ve.buttons.seek.value=n);break;case"playing":case"progress":t=Ve.progress.buffer,n=function(){var e=Ve.media.buffered;return e&&e.length?x(e.end(0),r):L.number(e)?100*e:0}()}Te(t,n)}}function Te(e,t){if(Ve.supported.full){if(L.undefined(t)&&(t=0),L.undefined(e)){if(!Ve.progress||!Ve.progress.buffer)return;e=Ve.progress.buffer}e instanceof HTMLElement?e.value=t:e&&(e.bar&&(e.bar.value=t),e.text&&(e.text.innerHTML=t))}}function xe(e,t){if(t){isNaN(e)&&(e=0),Ve.secs=parseInt(e%60),Ve.mins=parseInt(e/60%60),Ve.hours=parseInt(e/60/60%60);var n=parseInt(le()/60/60%60)>0;Ve.secs=("0"+Ve.secs).slice(-2),Ve.mins=("0"+Ve.mins).slice(-2),t.innerHTML=(n?Ve.hours+":":"")+Ve.mins+":"+Ve.secs}}function _e(){if(Ve.supported.full){var e=le()||0;!Ve.duration&&k.displayDuration&&Ve.media.paused&&xe(e,Ve.currentTime),Ve.duration&&xe(e,Ve.duration),Ce()}}function Se(e){xe(Ve.media.currentTime,Ve.currentTime),e&&"timeupdate"==e.type&&Ve.media.seeking||we(e)}function Ee(e){L.number(e)||(e=0);var t=le(),n=x(e,t);Ve.progress&&Ve.progress.played&&(Ve.progress.played.value=n),Ve.buttons&&Ve.buttons.seek&&(Ve.buttons.seek.value=n)}function Ce(e){var t=le();if(k.tooltips.seek&&Ve.progress.container&&0!==t){var n=Ve.progress.container.getBoundingClientRect(),r=0,s=k.classes.tooltip+"--visible";if(e)r=100/n.width*(e.pageX-n.left);else{if(!y(Ve.progress.tooltip,s))return;r=Ve.progress.tooltip.style.left.replace("%","")}0>r?r=0:r>100&&(r=100),xe(t/100*r,Ve.progress.tooltip),Ve.progress.tooltip.style.left=r+"%",e&&a(["mouseenter","mouseleave"],e.type)&&f(Ve.progress.tooltip,s,"mouseenter"===e.type)}}function Fe(t){if(k.hideControls&&"audio"!==Ve.type){var n=0,r=!1,s=t;if(L["boolean"](t)||(t&&t.type?(r="enterfullscreen"===t.type,s=a(["mousemove","touchstart","mouseenter","focus"],t.type),a(["mousemove","touchmove"],t.type)&&(n=2e3),"focus"===t.type&&(n=3e3)):s=y(Ve.container,k.classes.hideControls)),e.clearTimeout(Ve.timers.hover),s||Ve.media.paused){if(f(Ve.container,k.classes.hideControls,!1),Ve.media.paused)return;Ve.browser.isTouch&&(n=3e3)}s&&Ve.media.paused||(Ve.timers.hover=e.setTimeout(function(){(!Ve.controls.pressed&&!Ve.controls.hover||r)&&f(Ve.container,k.classes.hideControls,!0)},n))}}function Ae(e){if(!L.undefined(e))return void Ie(e);var t;switch(Ve.type){case"youtube":t=Ve.embed.getVideoUrl();break;case"vimeo":Ve.embed.api("getVideoUrl",function(e){t=e});break;case"soundcloud":Ve.embed.getCurrentSound(function(e){t=e.permalink_url});break;default:t=Ve.media.currentSrc}return t||""}function Ie(n){if(!(L.object(n)&&"sources"in n&&n.sources.length))return void C("Invalid source format");if(re(),Ee(),Te(),Le(),"youtube"===Ve.type?(Ve.embed.destroy(),e.clearInterval(Ve.timer.buffering),e.clearInterval(Ve.timer.playing)):"video"===Ve.type&&Ve.videoContainer&&u(Ve.videoContainer),Ve.embed=null,u(Ve.media),"type"in n&&(Ve.type=n.type,"video"===Ve.type)){var r=n.sources[0];"type"in r&&a(k.types.embed,r.type)&&(Ve.type=r.type)}switch(Ve.supported=A(Ve.type),Ve.type){case"video":Ve.media=t.createElement("video");break;case"audio":Ve.media=t.createElement("audio");break;case"youtube":case"vimeo":case"soundcloud":Ve.media=t.createElement("div"),Ve.embedId=n.sources[0].src}c(Ve.container,Ve.media),L["boolean"](n.autoplay)&&(k.autoplay=n.autoplay),a(k.types.html5,Ve.type)&&(k.crossorigin&&Ve.media.setAttribute("crossorigin",""),k.autoplay&&Ve.media.setAttribute("autoplay",""),"poster"in n&&Ve.media.setAttribute("poster",n.poster),k.loop&&Ve.media.setAttribute("loop","")),Ve.container.className=Ve.originalClassName,f(Ve.container,k.classes.fullscreen.active,Ve.isFullscreen),f(Ve.container,k.classes.captions.active,Ve.captionsEnabled),$(),a(k.types.html5,Ve.type)&&X("source",n.sources),J(),a(k.types.html5,Ve.type)?("tracks"in n&&X("track",n.tracks),Ve.media.load(),qe(),_e()):a(k.types.embed,Ve.type)&&!Ve.supported.full&&qe(),k.title=n.title,G(),Ve.container.plyr.media=Ve.media}function Ne(e){"video"===Ve.type&&Ve.media.setAttribute("poster",e)}function Me(){function n(){var e=Ve.media.paused;e?ne():re();var t=Ve.buttons[e?"play":"pause"],n=Ve.buttons[e?"pause":"play"];if(n=n&&n.length>1?n[n.length-1]:n[0]){var r=y(t,k.classes.tabFocus);setTimeout(function(){n.focus(),r&&(f(t,k.classes.tabFocus,!1),f(n,k.classes.tabFocus,!0))},100)}}function r(){var e=t.activeElement;e&&e!=t.body?t.querySelector&&(e=t.querySelector(":focus")):e=null;for(var n in Ve.buttons){var r=Ve.buttons[n];if(r instanceof NodeList)for(var s=0;s0)&&(t?ve():be()),(e.deltaY>0||e.deltaX<0)&&(t?be():ve()); -})}function Pe(){if(v(Ve.media,"timeupdate seeking",Se),v(Ve.media,"timeupdate",V),v(Ve.media,"durationchange loadedmetadata",_e),v(Ve.media,"ended",function(){"video"===Ve.type&&q(),ue(),ie(0),_e(),"video"===Ve.type&&k.showPosterOnEnd&&Ve.media.load()}),v(Ve.media,"progress playing",we),v(Ve.media,"volumechange",ge),v(Ve.media,"play pause",ue),v(Ve.media,"waiting canplay seeked",ke),k.clickToPlay&&"audio"!==Ve.type){var e=D("."+k.classes.videoWrapper);if(!e)return;e.style.cursor="pointer",v(e,"click",function(){k.hideControls&&Ve.browser.isTouch&&!Ve.media.paused||(Ve.media.paused?ne():Ve.media.ended?(ie(),ne()):re())})}k.disableContextMenu&&v(Ve.media,"contextmenu",function(e){e.preventDefault()}),v(Ve.media,k.events.join(" "),function(e){w(Ve.container,e.type,!0)})}function Le(){if(a(k.types.html5,Ve.type)){for(var e=Ve.media.querySelectorAll("source"),t=0;t1)for(var c=0;c=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;return r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r),r}}function l(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function u(e){e&&e.parentNode.removeChild(e)}function c(e,t){e.insertBefore(t,e.firstChild)}function d(e,t){for(var n in t)e.setAttribute(n,L["boolean"](t[n])&&t[n]?"":t[n])}function p(e,n,r){var a=t.createElement(e);d(a,r),c(n,a)}function m(e){return e.replace(".","")}function f(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=r+(n?" "+t:"")}}function y(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function b(e,n){var r=Element.prototype,a=r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.msMatchesSelector||function(e){return-1!==[].indexOf.call(t.querySelectorAll(e),this)};return a.call(e,n)}function v(e,t,n,r){e&&k(e,t,n,!0,r)}function g(e,t,n,r){e&&k(e,t,n,!1,r)}function h(e,t,n,r,a){v(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])},a)}function k(e,t,n,r,a){var s=t.split(" ");if(L["boolean"](a)||(a=!1),e instanceof NodeList)for(var o=0;or;r++){var a=e[r];for(var s in a)a[s]&&a[s].constructor&&a[s].constructor===Object?(t[s]=t[s]||{},_(t[s],a[s])):t[s]=a[s]}return t}}function S(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},n="webkit moz o ms khtml".split(" ");if(L.undefined(t.cancelFullScreen))for(var r=0,a=n.length;a>r;r++){if(e.prefix=n[r],!L.undefined(t[e.prefix+"CancelFullScreen"])){e.supportsFullScreen=!0;break}if(!L.undefined(t.msExitFullscreen)&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}else e.supportsFullScreen=!0;return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch(L.undefined(e)&&(e=t.body),this.prefix){case"":return t.fullscreenElement==e;case"moz":return t.mozFullScreenElement==e;default:return t[this.prefix+"FullscreenElement"]==e}},e.requestFullScreen=function(e){return L.undefined(e)&&(e=t.body),""===this.prefix?e.requestFullScreen():e[this.prefix+("ms"==this.prefix?"RequestFullscreen":"RequestFullScreen")]()},e.cancelFullScreen=function(){return""===this.prefix?t.cancelFullScreen():t[this.prefix+("ms"==this.prefix?"ExitFullscreen":"CancelFullScreen")]()},e.element=function(){return""===this.prefix?t.fullscreenElement:t[this.prefix+"FullscreenElement"]}),e}function E(){var t={supported:function(){if(!("localStorage"in e))return!1;try{e.localStorage.setItem("___test","OK");var t=e.localStorage.getItem("___test");return e.localStorage.removeItem("___test"),"OK"===t}catch(n){return!1}return!1}()};return t}function C(b,k){function _(){k.debug&&e.console&&console.log.apply(console,arguments)}function C(){k.debug&&e.console&&console.warn.apply(console,arguments)}function I(){return{url:k.iconUrl,absolute:0===k.iconUrl.indexOf("http")||je.browser.isIE}}function P(){var e=[],t=I(),n=(t.absolute?"":t.url)+"#"+k.iconPrefix;return s(k.controls,"play-large")&&e.push('"),e.push('
'),s(k.controls,"restart")&&e.push('"),s(k.controls,"rewind")&&e.push('"),s(k.controls,"play")&&e.push('",'"),s(k.controls,"fast-forward")&&e.push('"),s(k.controls,"progress")&&(e.push('','','','','',"0% "+k.i18n.buffered,""),k.tooltips.seek&&e.push('00:00'),e.push("")),s(k.controls,"current-time")&&e.push('',''+k.i18n.currentTime+"",'00:00',""),s(k.controls,"duration")&&e.push('',''+k.i18n.duration+"",'00:00',""),s(k.controls,"mute")&&e.push('"),s(k.controls,"volume")&&e.push('','",'','',""),s(k.controls,"captions")&&e.push('"),s(k.controls,"fullscreen")&&e.push('"),e.push("
"),e.join("")}function O(){if(je.supported.full&&("audio"!=je.type||k.fullscreen.allowAudio)&&k.fullscreen.enabled){var e=N.supportsFullScreen;e||k.fullscreen.fallback&&!W()?(_((e?"Native":"Fallback")+" fullscreen enabled"),f(je.container,k.classes.fullscreen.enabled,!0)):_("Fullscreen not supported and fallback disabled"),je.buttons&&je.buttons.fullscreen&&T(je.buttons.fullscreen,!1),Y()}}function q(){if("video"===je.type){D(k.selectors.captions)||je.videoContainer.insertAdjacentHTML("afterbegin",'
'),je.usingTextTracks=!1,je.media.textTracks&&(je.usingTextTracks=!0);for(var e,t="",n=je.media.childNodes,r=0;r=10||je.browser.isFirefox&&je.browser.version>=31)&&(_("Detected browser with known TextTrack issues - using manual fallback"),je.usingTextTracks=!1),je.usingTextTracks){_("TextTracks supported");for(var o=0;o ");for(var r=0;rje.captions.length-1){je.subcount=je.captions.length-1;break}je.media.currentTime.toFixed(1)>=n(je.captions[je.subcount][0])&&je.media.currentTime.toFixed(1)<=r(je.captions[je.subcount][0])?(je.currentCaption=je.captions[je.subcount][1],V(je.currentCaption)):V()}}function R(){je.buttons.captions&&(f(je.container,k.classes.captions.enabled,!0),k.captions.defaultActive&&(f(je.container,k.classes.captions.active,!0),T(je.buttons.captions,!0)))}function H(e){return je.container.querySelectorAll(e)}function D(e){return H(e)[0]}function W(){try{return e.self!==e.top}catch(t){return!0}}function Y(){function e(e){9===e.which&&je.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=H("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];v(je.container,"keydown",e)}function X(e,t){if(L.string(t))p(e,je.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)p(e,je.media,t[n])}function B(){if(k.loadSprite){var e=I();e.absolute?(_("AJAX loading absolute SVG sprite"+(je.browser.isIE?" (due to IE)":"")),F(e.url,"sprite-plyr")):_("Sprite will be used as external resource directly")}var n=k.html;_("Injecting custom controls"),n||(n=P()),n=o(n,"{seektime}",k.seekTime),n=o(n,"{id}",Math.floor(1e4*Math.random()));var r;if(null!==k.selectors.controls.container&&(r=k.selectors.controls.container,L.string(selector)&&(r=t.querySelector(r))),r instanceof HTMLElement||(r=je.container),r.insertAdjacentHTML("beforeend",n),k.tooltips.controls)for(var a=H([k.selectors.controls.wrapper," ",k.selectors.labels," .",k.classes.hidden].join("")),s=a.length-1;s>=0;s--){var i=a[s];f(i,k.classes.hidden,!1),f(i,k.classes.tooltip,!0)}}function U(){try{return je.controls=D(k.selectors.controls.wrapper),je.buttons={},je.buttons.seek=D(k.selectors.buttons.seek),je.buttons.play=H(k.selectors.buttons.play),je.buttons.pause=D(k.selectors.buttons.pause),je.buttons.restart=D(k.selectors.buttons.restart),je.buttons.rewind=D(k.selectors.buttons.rewind),je.buttons.forward=D(k.selectors.buttons.forward),je.buttons.fullscreen=D(k.selectors.buttons.fullscreen),je.buttons.mute=D(k.selectors.buttons.mute),je.buttons.captions=D(k.selectors.buttons.captions),je.progress={},je.progress.container=D(k.selectors.progress.container),je.progress.buffer={},je.progress.buffer.bar=D(k.selectors.progress.buffer),je.progress.buffer.text=je.progress.buffer.bar&&je.progress.buffer.bar.getElementsByTagName("span")[0],je.progress.played=D(k.selectors.progress.played),je.progress.tooltip=je.progress.container&&je.progress.container.querySelector("."+k.classes.tooltip),je.volume={},je.volume.input=D(k.selectors.volume.input),je.volume.display=D(k.selectors.volume.display),je.duration=D(k.selectors.duration),je.currentTime=D(k.selectors.currentTime),je.seekTime=H(k.selectors.seekTime),!0}catch(e){return C("It looks like there is a problem with your controls HTML"),z(!0),!1}}function $(){f(je.container,k.selectors.container.replace(".",""),je.supported.full)}function z(e){e&&s(k.types.html5,je.type)?je.media.setAttribute("controls",""):je.media.removeAttribute("controls")}function G(e){var t=k.i18n.play;if(!L.undefined(k.title)&&k.title.length&&(t+=", "+k.title),je.supported.full&&je.buttons.play)for(var n=je.buttons.play.length-1;n>=0;n--)je.buttons.play[n].setAttribute("aria-label",t);e instanceof HTMLElement&&e.setAttribute("title",k.i18n.frameTitle.replace("{title}",k.title))}function J(){if(!je.media)return void C("No media element found!");if(je.supported.full&&(f(je.container,k.classes.type.replace("{0}",je.type),!0),s(k.types.embed,je.type)&&f(je.container,k.classes.type.replace("{0}","video"),!0),f(je.container,k.classes.stopped,k.autoplay),f(je.container,k.classes.isIos,je.browser.isIos),f(je.container,k.classes.isTouch,je.browser.isTouch),"video"===je.type)){var e=t.createElement("div");e.setAttribute("class",k.classes.videoWrapper),i(je.media,e),je.videoContainer=e}s(k.types.embed,je.type)&&(K(),je.embedId=null)}function K(){for(var n=t.createElement("div"),r=je.embedId,s=je.type+"-"+Math.floor(1e4*Math.random()),o=H('[id^="'+je.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(f(je.media,k.classes.videoWrapper,!0),f(je.media,k.classes.embedWrapper,!0),"youtube"===je.type)je.media.appendChild(n),n.setAttribute("id",s),L.object(YT)?Z(r,n):(a(k.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){Z(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===je.type){var l=t.createElement("iframe");l.loaded=!1,v(l,"load",function(){l.loaded=!0}),d(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,allowfullscreen:"",frameborder:0}),je.supported.full?(n.appendChild(l),je.media.appendChild(n)):je.media.appendChild(l),"$f"in e||a(k.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),ee.call(l))},50)}else if("soundcloud"===je.type){var p=t.createElement("iframe");p.loaded=!1,v(p,"load",function(){p.loaded=!0}),d(p,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+r,id:s}),n.appendChild(p),je.media.appendChild(n),e.SC||a(k.urls.soundcloud.api);var m=e.setInterval(function(){e.SC&&p.loaded&&(e.clearInterval(m),te.call(p))},50)}}function Q(){je.container.plyr.embed=je.embed,je.supported.full&&Ve(),G(D("iframe"))}function Z(t,n){"timer"in je||(je.timer={}),je.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:k.autoplay?1:0,controls:je.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:k.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){w(je.container,"error",!0,{code:e.data,embed:e.target})},onReady:function(t){var n=t.target;je.media.play=function(){n.playVideo(),je.media.paused=!1},je.media.pause=function(){n.pauseVideo(),je.media.paused=!0},je.media.stop=function(){n.stopVideo(),je.media.paused=!0},je.media.duration=n.getDuration(),je.media.paused=!0,je.media.currentTime=n.getCurrentTime(),je.media.muted=n.isMuted(),k.title=n.getVideoData().title,w(je.media,"timeupdate"),e.clearInterval(je.timer.buffering),je.timer.buffering=e.setInterval(function(){je.media.buffered=n.getVideoLoadedFraction(),w(je.media,"progress"),1===je.media.buffered&&(e.clearInterval(je.timer.buffering),w(je.media,"canplaythrough"))},200),Q(),_e()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(je.timer.playing),t.data){case 0:je.media.paused=!0,w(je.media,"ended");break;case 1:je.media.paused=!1,je.media.seeking=!1,w(je.media,"play"),w(je.media,"playing"),je.timer.playing=e.setInterval(function(){je.media.currentTime=n.getCurrentTime(),w(je.media,"timeupdate")},100);break;case 2:je.media.paused=!0,w(je.media,"pause")}w(je.container,"statechange",!1,{code:t.data})}}})}function ee(){je.embed=$f(this),je.embed.addEvent("ready",function(){je.media.play=function(){je.embed.api("play"),je.media.paused=!1},je.media.pause=function(){je.embed.api("pause"),je.media.paused=!0},je.media.stop=function(){je.embed.api("stop"),je.media.paused=!0},je.media.paused=!0,je.media.currentTime=0,Q(),je.embed.api("getCurrentTime",function(e){je.media.currentTime=e,w(je.media,"timeupdate")}),je.embed.api("getDuration",function(e){je.media.duration=e,_e()}),je.embed.addEvent("play",function(){je.media.paused=!1,w(je.media,"play"),w(je.media,"playing")}),je.embed.addEvent("pause",function(){je.media.paused=!0,w(je.media,"pause")}),je.embed.addEvent("playProgress",function(e){je.media.seeking=!1,je.media.currentTime=e.seconds,w(je.media,"timeupdate")}),je.embed.addEvent("loadProgress",function(e){je.media.buffered=e.percent,w(je.media,"progress"),1===parseInt(e.percent)&&w(je.media,"canplaythrough")}),je.embed.addEvent("finish",function(){je.media.paused=!0,w(je.media,"ended")}),k.autoplay&&je.embed.api("play")})}function te(){je.embed=e.SC.Widget(this),je.embed.bind(e.SC.Widget.Events.READY,function(){je.media.play=function(){je.embed.play(),je.media.paused=!1},je.media.pause=function(){je.embed.pause(),je.media.paused=!0},je.media.stop=function(){je.embed.seekTo(0),je.embed.pause(),je.media.paused=!0},je.media.paused=!0,je.media.currentTime=0,Q(),je.embed.getPosition(function(e){je.media.currentTime=e,w(je.media,"timeupdate")}),je.embed.getDuration(function(e){je.media.duration=e/1e3,_e()}),je.embed.bind(e.SC.Widget.Events.PLAY,function(){je.media.paused=!1,w(je.media,"play"),w(je.media,"playing")}),je.embed.bind(e.SC.Widget.Events.PAUSE,function(){je.media.paused=!0,w(je.media,"pause")}),je.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS,function(e){je.media.seeking=!1,je.media.currentTime=e.currentPosition/1e3,w(je.media,"timeupdate")}),je.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS,function(e){je.media.buffered=e.loadProgress,w(je.media,"progress"),1===parseInt(e.loadProgress)&&w(je.media,"canplaythrough")}),je.embed.bind(e.SC.Widget.Events.FINISH,function(){je.media.paused=!0,w(je.media,"ended")}),k.autoplay&&je.embed.play()})}function ne(){"play"in je.media&&je.media.play()}function re(){"pause"in je.media&&je.media.pause()}function ae(e){e===!0?ne():e===!1?re():je.media[je.media.paused?"play":"pause"]()}function se(e){L.number(e)||(e=k.seekTime),ie(je.media.currentTime-e)}function oe(e){L.number(e)||(e=k.seekTime),ie(je.media.currentTime+e)}function ie(e){var t=0,n=je.media.paused,r=le();L.number(e)?t=e:L.object(e)&&s(["input","change"],e.type)&&(t=e.target.value/e.target.max*r),0>t?t=0:t>r&&(t=r),Ee(t);try{je.media.currentTime=t.toFixed(4)}catch(a){}if(s(k.types.embed,je.type)){switch(je.type){case"youtube":je.embed.seekTo(t);break;case"vimeo":je.embed.api("seekTo",t.toFixed(0));break;case"soundcloud":je.embed.seekTo(1e3*t)}n&&re(),w(je.media,"timeupdate"),je.media.seeking=!0}_("Seeking to "+je.media.currentTime+" seconds"),j(t)}function le(){var e=parseInt(k.duration),t=0;return null===je.media.duration||isNaN(je.media.duration)||(t=je.media.duration),isNaN(e)?t:e}function ue(){f(je.container,k.classes.playing,!je.media.paused),f(je.container,k.classes.stopped,je.media.paused),Fe(je.media.paused)}function ce(){M={x:e.pageXOffset||0,y:e.pageYOffset||0}}function de(){e.scrollTo(M.x,M.y)}function pe(e){var n=N.supportsFullScreen;e&&e.type===N.fullScreenEventName?je.isFullscreen=N.isFullScreen(je.container):n?(N.isFullScreen(je.container)?N.cancelFullScreen():(ce(),N.requestFullScreen(je.container)),je.isFullscreen=N.isFullScreen(je.container)):(je.isFullscreen=!je.isFullscreen,je.isFullscreen?(v(t,"keyup",me),t.body.style.overflow="hidden"):(g(t,"keyup",me),t.body.style.overflow="")),f(je.container,k.classes.fullscreen.active,je.isFullscreen),je.isFullscreen?je.container.setAttribute("tabindex","-1"):je.container.removeAttribute("tabindex"),Y(je.isFullscreen),je.buttons&&je.buttons.fullscreen&&T(je.buttons.fullscreen,je.isFullscreen),w(je.container,je.isFullscreen?"enterfullscreen":"exitfullscreen",!0),!je.isFullscreen&&n&&de()}function me(e){27===(e.which||e.charCode||e.keyCode)&&je.isFullscreen&&pe()}function fe(e){if(L["boolean"](e)||(e=!je.media.muted),T(je.buttons.mute,e),je.media.muted=e,0===je.media.volume&&ye(k.volume),s(k.types.embed,je.type)){switch(je.type){case"youtube":je.embed[je.media.muted?"mute":"unMute"]();break;case"vimeo":je.embed.api("setVolume",je.media.muted?0:parseFloat(k.volume/k.volumeMax));break;case"soundcloud":je.embed.setVolume(je.media.muted?0:parseFloat(k.volume/k.volumeMax))}w(je.media,"volumechange")}}function ye(t){var n=k.volumeMax,r=k.volumeMin;if(L.undefined(t)&&(t=k.volume,k.storage.enabled&&E().supported&&(t=e.localStorage.getItem(k.storage.key),e.localStorage.removeItem("plyr-volume"))),(null===t||isNaN(t))&&(t=k.volume),t>n&&(t=n),r>t&&(t=r),je.media.volume=parseFloat(t/n),je.volume.display&&(je.volume.display.value=t),s(k.types.embed,je.type)){switch(je.type){case"youtube":je.embed.setVolume(100*je.media.volume);break;case"vimeo":je.embed.api("setVolume",je.media.volume);break;case"soundcloud":je.embed.setVolume(je.media.volume)}w(je.media,"volumechange")}je.media.muted&&t>0&&fe()}function be(){var e=je.media.muted?0:je.media.volume*k.volumeMax;ye(e+k.volumeStep/5)}function ve(){var e=je.media.muted?0:je.media.volume*k.volumeMax;ye(e-k.volumeStep/5)}function ge(){var t=je.media.muted?0:je.media.volume*k.volumeMax;je.supported.full&&(je.volume.input&&(je.volume.input.value=t),je.volume.display&&(je.volume.display.value=t)),k.storage.enabled&&E().supported&&!isNaN(t)&&e.localStorage.setItem(k.storage.key,t),f(je.container,k.classes.muted,0===t),je.supported.full&&je.buttons.mute&&T(je.buttons.mute,0===t)}function he(e){je.supported.full&&je.buttons.captions&&(L["boolean"](e)||(e=-1===je.container.className.indexOf(k.classes.captions.active)),je.captionsEnabled=e,T(je.buttons.captions,je.captionsEnabled),f(je.container,k.classes.captions.active,je.captionsEnabled),w(je.container,je.captionsEnabled?"captionsenabled":"captionsdisabled",!0))}function ke(e){var t="waiting"===e.type;clearTimeout(je.timers.loading),je.timers.loading=setTimeout(function(){f(je.container,k.classes.loading,t)},t?250:0)}function we(e){if(je.supported.full){var t=je.progress.played,n=0,r=le();if(e)switch(e.type){case"timeupdate":case"seeking":if(je.controls.pressed)return;n=x(je.media.currentTime,r),"timeupdate"==e.type&&je.buttons.seek&&(je.buttons.seek.value=n);break;case"playing":case"progress":t=je.progress.buffer,n=function(){var e=je.media.buffered;return e&&e.length?x(e.end(0),r):L.number(e)?100*e:0}()}Te(t,n)}}function Te(e,t){if(je.supported.full){if(L.undefined(t)&&(t=0),L.undefined(e)){if(!je.progress||!je.progress.buffer)return;e=je.progress.buffer}e instanceof HTMLElement?e.value=t:e&&(e.bar&&(e.bar.value=t),e.text&&(e.text.innerHTML=t))}}function xe(e,t){if(t){isNaN(e)&&(e=0),je.secs=parseInt(e%60),je.mins=parseInt(e/60%60),je.hours=parseInt(e/60/60%60);var n=parseInt(le()/60/60%60)>0;je.secs=("0"+je.secs).slice(-2),je.mins=("0"+je.mins).slice(-2),t.innerHTML=(n?je.hours+":":"")+je.mins+":"+je.secs}}function _e(){if(je.supported.full){var e=le()||0;!je.duration&&k.displayDuration&&je.media.paused&&xe(e,je.currentTime),je.duration&&xe(e,je.duration),Ce()}}function Se(e){xe(je.media.currentTime,je.currentTime),e&&"timeupdate"==e.type&&je.media.seeking||we(e)}function Ee(e){L.number(e)||(e=0);var t=le(),n=x(e,t);je.progress&&je.progress.played&&(je.progress.played.value=n),je.buttons&&je.buttons.seek&&(je.buttons.seek.value=n)}function Ce(e){var t=le();if(k.tooltips.seek&&je.progress.container&&0!==t){var n=je.progress.container.getBoundingClientRect(),r=0,a=k.classes.tooltip+"--visible";if(e)r=100/n.width*(e.pageX-n.left);else{if(!y(je.progress.tooltip,a))return;r=je.progress.tooltip.style.left.replace("%","")}0>r?r=0:r>100&&(r=100),xe(t/100*r,je.progress.tooltip),je.progress.tooltip.style.left=r+"%",e&&s(["mouseenter","mouseleave"],e.type)&&f(je.progress.tooltip,a,"mouseenter"===e.type)}}function Fe(t){if(k.hideControls&&"audio"!==je.type){var n=0,r=!1,a=t;if(L["boolean"](t)||(t&&t.type?(r="enterfullscreen"===t.type,a=s(["mousemove","touchstart","mouseenter","focus"],t.type),s(["mousemove","touchmove"],t.type)&&(n=2e3),"focus"===t.type&&(n=3e3)):a=y(je.container,k.classes.hideControls)),e.clearTimeout(je.timers.hover),a||je.media.paused){if(f(je.container,k.classes.hideControls,!1),je.media.paused)return;je.browser.isTouch&&(n=3e3)}a&&je.media.paused||(je.timers.hover=e.setTimeout(function(){(!je.controls.pressed&&!je.controls.hover||r)&&f(je.container,k.classes.hideControls,!0)},n))}}function Ae(e){if(!L.undefined(e))return void Ie(e);var t;switch(je.type){case"youtube":t=je.embed.getVideoUrl();break;case"vimeo":je.embed.api("getVideoUrl",function(e){t=e});break;case"soundcloud":je.embed.getCurrentSound(function(e){t=e.permalink_url});break;default:t=je.media.currentSrc}return t||""}function Ie(n){if(!(L.object(n)&&"sources"in n&&n.sources.length))return void C("Invalid source format");if(re(),Ee(),Te(),Le(),"youtube"===je.type?(je.embed.destroy(),e.clearInterval(je.timer.buffering),e.clearInterval(je.timer.playing)):"video"===je.type&&je.videoContainer&&u(je.videoContainer),je.embed=null,u(je.media),"type"in n&&(je.type=n.type,"video"===je.type)){var r=n.sources[0];"type"in r&&s(k.types.embed,r.type)&&(je.type=r.type)}switch(je.supported=A(je.type),je.type){case"video":je.media=t.createElement("video");break;case"audio":je.media=t.createElement("audio");break;case"youtube":case"vimeo":case"soundcloud":je.media=t.createElement("div"),je.embedId=n.sources[0].src}c(je.container,je.media),L["boolean"](n.autoplay)&&(k.autoplay=n.autoplay),s(k.types.html5,je.type)&&(k.crossorigin&&je.media.setAttribute("crossorigin",""),k.autoplay&&je.media.setAttribute("autoplay",""),"poster"in n&&je.media.setAttribute("poster",n.poster),k.loop&&je.media.setAttribute("loop","")),je.container.className=je.originalClassName,f(je.container,k.classes.fullscreen.active,je.isFullscreen),f(je.container,k.classes.captions.active,je.captionsEnabled),$(),s(k.types.html5,je.type)&&X("source",n.sources),J(),s(k.types.html5,je.type)?("tracks"in n&&X("track",n.tracks),je.media.load(),Ve(),_e()):s(k.types.embed,je.type)&&!je.supported.full&&Ve(),k.title=n.title,G(),je.container.plyr.media=je.media}function Ne(e){"video"===je.type&&je.media.setAttribute("poster",e)}function Me(){function n(){var e=je.media.paused;e?ne():re();var t=je.buttons[e?"play":"pause"],n=je.buttons[e?"pause":"play"];if(n=n&&n.length>1?n[n.length-1]:n[0]){var r=y(t,k.classes.tabFocus);setTimeout(function(){n.focus(),r&&(f(t,k.classes.tabFocus,!1),f(n,k.classes.tabFocus,!0))},100)}}function r(){var e=t.activeElement;e&&e!=t.body?t.querySelector&&(e=t.querySelector(":focus")):e=null;for(var n in je.buttons){var r=je.buttons[n];if(r instanceof NodeList)for(var a=0;a0)&&(t?ve():be()),(e.deltaY>0||e.deltaX<0)&&(t?be():ve()); +})}function Pe(){if(v(je.media,"timeupdate seeking",Se),v(je.media,"timeupdate",j),v(je.media,"durationchange loadedmetadata",_e),v(je.media,"ended",function(){"video"===je.type&&V(),ue(),ie(0),_e(),"video"===je.type&&k.showPosterOnEnd&&je.media.load()}),v(je.media,"progress playing",we),v(je.media,"volumechange",ge),v(je.media,"play pause",ue),v(je.media,"waiting canplay seeked",ke),k.clickToPlay&&"audio"!==je.type){var e=D("."+k.classes.videoWrapper);if(!e)return;e.style.cursor="pointer",v(e,"click",function(){k.hideControls&&je.browser.isTouch&&!je.media.paused||(je.media.paused?ne():je.media.ended?(ie(),ne()):re())})}k.disableContextMenu&&v(je.media,"contextmenu",function(e){e.preventDefault()}),v(je.media,k.events.join(" "),function(e){w(je.container,e.type,!0)})}function Le(){if(s(k.types.html5,je.type)){for(var e=je.media.querySelectorAll("source"),t=0;t1)for(var c=0;c` tag and then call `ply If you want to use our CDN for the JavaScript, you can use the following: ```html - + ``` ### CSS @@ -134,11 +134,11 @@ Include the `plyr.css` stylsheet into your `` If you want to use our CDN for the default CSS, you can use the following: ```html - + ``` ### SVG Sprite -The SVG sprite is loaded automatically from our CDN. To change this, see the [#options](Options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/1.8.9/plyr.svg`. +The SVG sprite is loaded automatically from our CDN. To change this, see the [#options](Options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/1.8.10/plyr.svg`. ## Advanced diff --git a/src/js/plyr.js b/src/js/plyr.js index 4afc78a6..a9c923f7 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1,6 +1,6 @@ // ========================================================================== // Plyr -// plyr.js v1.8.9 +// plyr.js v1.8.10 // https://github.com/selz/plyr // License: The MIT License (MIT) // ========================================================================== @@ -44,7 +44,7 @@ displayDuration: true, loadSprite: true, iconPrefix: 'plyr', - iconUrl: 'https://cdn.plyr.io/1.8.9/plyr.svg', + iconUrl: 'https://cdn.plyr.io/1.8.10/plyr.svg', clickToPlay: true, hideControls: true, showPosterOnEnd: false, @@ -573,7 +573,7 @@ // Check variable types var _is = { object: function(input) { - return input !== null && typeof(input) === 'object' && input.constructor === Object; + return input !== null && typeof(input) === 'object'; }, array: function(input) { return input !== null && typeof(input) === 'object' && input.constructor === Array;