From b904e640f7a04721e7e69f5178a4c1c9cfb8db94 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 16 Jan 2016 13:45:41 +1100 Subject: [PATCH 01/87] Docs update --- readme.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index d79885cb..73a6b16f 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,7 @@ # Plyr -A simple, accessible HTML5 media player. +A simple, accessible and customizable HTML5, YouTube and Vimeo media player. [Checkout the demo](http://plyr.io) -Checkout the [demo](http://plyr.io). - -[![Image of Plyr](https://cdn.plyr.io/static/plyr.jpg)](http://plyr.io) +[![Image of Plyr](https://cdn.plyr.io/static/plyr_v1.5.0.jpg)](http://plyr.io) ## Why? We wanted a lightweight, accessible and customizable media player that just supports [*modern*](#browser-support) browsers. Sure, there are many other players out there but we wanted to keep things simple, using the right elements for the job. From bf2b6c3c96403938f7ceb9e5474930d67bb69ed7 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 16 Jan 2016 13:46:09 +1100 Subject: [PATCH 02/87] Update readme.md --- readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 73a6b16f..7ea72b30 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,7 @@ # Plyr -A simple, accessible and customizable HTML5, YouTube and Vimeo media player. [Checkout the demo](http://plyr.io) +A simple, accessible and customizable HTML5, YouTube and Vimeo media player. + +[Checkout the demo](http://plyr.io) [![Image of Plyr](https://cdn.plyr.io/static/plyr_v1.5.0.jpg)](http://plyr.io) From 6edc6ac680b9e913bb480cbdf3161df4f8196ddd Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 16 Jan 2016 13:48:11 +1100 Subject: [PATCH 03/87] Image --- readme.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 73a6b16f..b36fbe5c 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,9 @@ # Plyr -A simple, accessible and customizable HTML5, YouTube and Vimeo media player. [Checkout the demo](http://plyr.io) +A simple, accessible and customizable HTML5, YouTube and Vimeo media player. -[![Image of Plyr](https://cdn.plyr.io/static/plyr_v1.5.0.jpg)](http://plyr.io) +[Checkout the demo](http://plyr.io) + +[![Image of Plyr](https://cdn.plyr.io/static/plyr-v1.5.0.jpg)](http://plyr.io) ## Why? We wanted a lightweight, accessible and customizable media player that just supports [*modern*](#browser-support) browsers. Sure, there are many other players out there but we wanted to keep things simple, using the right elements for the job. From f18fb3f26d78f05a31c00e80f446723af5f3709f Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 16 Jan 2016 13:51:18 +1100 Subject: [PATCH 04/87] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index b36fbe5c..7ad56720 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,7 @@ A simple, accessible and customizable HTML5, YouTube and Vimeo media player. [Checkout the demo](http://plyr.io) -[![Image of Plyr](https://cdn.plyr.io/static/plyr-v1.5.0.jpg)](http://plyr.io) +[![Image of Plyr](https://cdn.plyr.io/static/plyr-v1.5.jpg)](http://plyr.io) ## Why? We wanted a lightweight, accessible and customizable media player that just supports [*modern*](#browser-support) browsers. Sure, there are many other players out there but we wanted to keep things simple, using the right elements for the job. From f87a10ae0b59df0f30d017fe85975c757487a198 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 17 Jan 2016 01:25:11 +1100 Subject: [PATCH 05/87] Fix for event listeners being duplicated on source change --- changelog.md | 3 ++ dist/plyr.js | 2 +- docs/dist/docs.js | 2 +- docs/src/js/docs.js | 8 +++++ package.json | 2 +- readme.md | 10 +++--- src/js/plyr.js | 75 ++++++++++++++++++++++++++------------------- 7 files changed, 62 insertions(+), 40 deletions(-) diff --git a/changelog.md b/changelog.md index 45de7747..0b541a95 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## v1.5.1 +- Fix for event listeners being duplicated on source change + # v1.5.0 - Vimeo support (fixes #8) - New options for initialization (you can now pass a selector, HTMLElement or NodeList) (fixes #118) diff --git a/dist/plyr.js b/dist/plyr.js index 716e82c6..5e7b4690 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1 +1 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",o="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",o=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),o=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=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:s,version:i,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&T(e,t,n,!0)}function h(e,t,n){e&&T(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function T(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Fe.usingTextTracks&&"video"===Fe.type&&Fe.supported.full&&(Fe.subcount=0,e="number"==typeof e?e:Fe.media.currentTime,Fe.captions[Fe.subcount])){for(;O(Fe.captions[Fe.subcount][0])Fe.captions.length-1){Fe.subcount=Fe.captions.length-1;break}if(Fe.media.currentTime.toFixed(1)>=L(Fe.captions[Fe.subcount][0])&&Fe.media.currentTime.toFixed(1)<=O(Fe.captions[Fe.subcount][0])){Fe.currentCaption=Fe.captions[Fe.subcount][1];var t=Fe.currentCaption.trim();Fe.captionsContainer.innerHTML!=t&&(Fe.captionsContainer.innerHTML="",Fe.captionsContainer.innerHTML=t)}else Fe.captionsContainer.innerHTML=""}}function M(){Fe.buttons.captions&&(b(Fe.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Fe.container,N.classes.captions.active,!0),x(Fe.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Fe.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Fe.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Fe.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Fe.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Fe.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Fe.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),o=s.length-1;o>=0;o--){var i=s[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function Y(){try{return Fe.controls=H(N.selectors.controls.wrapper),Fe.buttons={},Fe.buttons.seek=H(N.selectors.buttons.seek),Fe.buttons.play=H(N.selectors.buttons.play),Fe.buttons.pause=H(N.selectors.buttons.pause),Fe.buttons.restart=H(N.selectors.buttons.restart),Fe.buttons.rewind=H(N.selectors.buttons.rewind),Fe.buttons.forward=H(N.selectors.buttons.forward),Fe.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Fe.buttons.volume=H(N.selectors.buttons.volume),Fe.buttons.mute=H(N.selectors.buttons.mute),Fe.buttons.captions=H(N.selectors.buttons.captions),Fe.checkboxes=q('[type="checkbox"]'),Fe.progress={},Fe.progress.container=H(N.selectors.progress.container),Fe.progress.buffer={},Fe.progress.buffer.bar=H(N.selectors.progress.buffer),Fe.progress.buffer.text=Fe.progress.buffer.bar&&Fe.progress.buffer.bar.getElementsByTagName("span")[0],Fe.progress.played={},Fe.progress.played.bar=H(N.selectors.progress.played),Fe.progress.played.text=Fe.progress.played.bar&&Fe.progress.played.bar.getElementsByTagName("span")[0],Fe.volume=H(N.selectors.buttons.volume),Fe.duration=H(N.selectors.duration),Fe.currentTime=H(N.selectors.currentTime),Fe.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Fe.container,P.selectors.container.replace(".",""),Fe.supported.full)}function $(e){e?Fe.media.setAttribute("controls",""):Fe.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Fe.supported.full&&Fe.buttons.play&&Fe.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Fe.media)return r("No audio or video element found",!0),!1;if(Fe.supported.full&&(b(Fe.container,N.classes.type.replace("{0}",Fe.type),!0),b(Fe.container,N.classes.stopped,N.autoplay),b(Fe.container,N.classes.isIos,Fe.browser.ios),b(Fe.container,N.classes.isTouch,Fe.browser.touch),"video"===Fe.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Fe.media,e),Fe.videoContainer=e}i(N.types.embed,Fe.type)?(U(),Fe.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Fe.embedId,a=Fe.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Fe.type+'-"]'),i=s.length-1;i>=0;i--)p(s[i]);if(b(Fe.media,N.classes.videoWrapper,!0),b(Fe.media,N.classes.embedWrapper,!0),"youtube"===Fe.type)Fe.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Fe.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Fe.supported.full?(n.appendChild(l),Fe.media.appendChild(n)):Fe.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){_e(),z(H("iframe"))}function J(t,n){"timer"in Fe||(Fe.timer={}),Fe.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Fe.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Fe.media.play=function(){n.playVideo(),Fe.media.paused=!1},Fe.media.pause=function(){n.pauseVideo(),Fe.media.paused=!0},Fe.media.stop=function(){n.stopVideo(),Fe.media.paused=!0},Fe.media.duration=n.getDuration(),Fe.media.paused=!0,Fe.media.currentTime=n.getCurrentTime(),Fe.media.muted=n.isMuted(),w(Fe.media,"timeupdate"),e.clearInterval(Fe.timer.buffering),Fe.timer.buffering=e.setInterval(function(){Fe.media.buffered=n.getVideoLoadedFraction(),w(Fe.media,"progress"),1===Fe.media.buffered&&e.clearInterval(Fe.timer.buffering)},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Fe.timer.playing),t.data){case 0:Fe.media.paused=!0,w(Fe.media,"ended");break;case 1:Fe.media.paused=!1,Fe.media.seeking=!1,w(Fe.media,"play"),Fe.timer.playing=e.setInterval(function(){Fe.media.currentTime=n.getCurrentTime(),w(Fe.media,"timeupdate")},100);break;case 2:Fe.media.paused=!0,w(Fe.media,"pause")}}}})}function G(){Fe.embed=$f(this),Fe.embed.addEvent("ready",function(){Fe.media.play=function(){Fe.embed.api("play"),Fe.media.paused=!1},Fe.media.pause=function(){Fe.embed.api("pause"),Fe.media.paused=!0},Fe.media.stop=function(){Fe.embed.api("stop"),Fe.media.paused=!0},Fe.media.paused=!0,Fe.media.currentTime=0,X(),Fe.embed.api("getCurrentTime",function(e){Fe.media.currentTime=e,w(Fe.media,"timeupdate")}),Fe.embed.api("getDuration",function(e){Fe.media.duration=e,be()}),Fe.embed.addEvent("play",function(){Fe.media.paused=!1,w(Fe.media,"play")}),Fe.embed.addEvent("pause",function(){Fe.media.paused=!0,w(Fe.media,"pause")}),Fe.embed.addEvent("playProgress",function(e){Fe.media.seeking=!1,Fe.media.currentTime=e.seconds,w(Fe.media,"timeupdate")}),Fe.embed.addEvent("loadProgress",function(e){Fe.media.buffered=e.percent,w(Fe.media,"progress")}),Fe.embed.addEvent("finish",function(){Fe.media.paused=!0,w(Fe.media,"ended")})})}function Q(){if("video"===Fe.type){H(N.selectors.captions)||Fe.videoContainer.insertAdjacentHTML("afterbegin",'
'),Fe.captionsContainer=H(N.selectors.captions).querySelector("span"),Fe.usingTextTracks=!1,Fe.media.textTracks&&(Fe.usingTextTracks=!0);for(var e,t="",n=Fe.media.childNodes,a=0;a=10||"Firefox"===Fe.browser.name&&Fe.browser.version>=31||"Chrome"===Fe.browser.name&&Fe.browser.version>=43||"Safari"===Fe.browser.name&&Fe.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Fe.usingTextTracks=!1),Fe.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),s=Fe.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Fe.media.duration&&(t=Fe.media.duration);try{Fe.media.currentTime=t.toFixed(1)}catch(a){}if(i(N.types.embed,Fe.type)){switch(Fe.type){case"youtube":Fe.embed.seekTo(t);break;case"vimeo":Fe.embed.api("seekTo",t)}n&&te(),w(Fe.media,"timeupdate"),Fe.media.seeking=!0}r("Seeking to "+Fe.media.currentTime+" seconds"),S(t)}function oe(){b(Fe.container,N.classes.playing,!Fe.media.paused),b(Fe.container,N.classes.stopped,Fe.media.paused)}function ie(n){function r(){b(Fe.container,N.classes.hover,!0),e.clearTimeout(o),i||(o=e.setTimeout(function(){b(Fe.container,N.classes.hover,!1)},2e3))}function a(e){i="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Fe.isFullscreen=A.isFullScreen(Fe.container):s?(A.isFullScreen(Fe.container)?A.cancelFullScreen():A.requestFullScreen(Fe.container),Fe.isFullscreen=A.isFullScreen(Fe.container)):(Fe.isFullscreen=!Fe.isFullscreen,Fe.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Fe.container,N.classes.fullscreen.active,Fe.isFullscreen),Fe.isFullscreen?Fe.container.setAttribute("tabindex","-1"):Fe.container.removeAttribute("tabindex"),j(Fe.isFullscreen),x(Fe.buttons.fullscreen,Fe.isFullscreen);var o,i=!1;N.fullscreen.hideControls&&(b(Fe.controls,N.classes.hover,!1),T(Fe.controls,"mouseenter mouseleave",a,Fe.isFullscreen),T(Fe.container,"mousemove",r,Fe.isFullscreen))}function le(e){27===(e.which||e.charCode||e.keyCode)&&Fe.isFullscreen&&ie()}function ue(e){if("boolean"!=typeof e&&(e=!Fe.media.muted),x(Fe.buttons.mute,e),Fe.media.muted=e,i(N.types.embed,Fe.type)){switch(Fe.type){case"youtube":Fe.embed[Fe.media.muted?"mute":"unMute"]();break;case"vimeo":Fe.embed.api("setVolume",Fe.media.muted?0:parseFloat(N.volume/10))}w(Fe.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Fe.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Fe.type)){switch(Fe.type){case"youtube":Fe.embed.setVolume(100*Fe.media.volume);break;case"vimeo":Fe.embed.api("setVolume",Fe.media.volume)}w(Fe.media,"volumechange")}Fe.media.muted&&t>0&&ue()}function pe(){var t=Fe.media.muted?0:10*Fe.media.volume;Fe.supported.full&&Fe.volume&&(Fe.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Fe.container,N.classes.muted,0===t),Fe.supported.full&&Fe.buttons.mute&&x(Fe.buttons.mute,0===t)}function de(e){Fe.supported.full&&Fe.buttons.captions&&("boolean"!=typeof e&&(e=-1===Fe.container.className.indexOf(N.classes.captions.active)),Fe.captionsEnabled=e,x(Fe.buttons.captions,Fe.captionsEnabled),b(Fe.container,N.classes.captions.active,Fe.captionsEnabled))}function fe(e){var t="waiting"===e.type;clearTimeout(Fe.loadingTimer),Fe.loadingTimer=setTimeout(function(){b(Fe.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Fe.progress.played.bar,n=Fe.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Fe.media.currentTime,Fe.media.duration),"timeupdate"==e.type&&Fe.buttons.seek&&(Fe.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Fe.progress.buffer.bar,n=Fe.progress.buffer.text,r=function(){var e=Fe.media.buffered;return e&&e.length?_(e.end(0),Fe.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Fe.secs=parseInt(e%60),Fe.mins=parseInt(e/60%60),Fe.hours=parseInt(e/60/60%60);var n=parseInt(Fe.media.duration/60/60%60)>0;Fe.secs=("0"+Fe.secs).slice(-2),Fe.mins=("0"+Fe.mins).slice(-2),t.innerHTML=(n?Fe.hours+":":"")+Fe.mins+":"+Fe.secs}}function be(){if(Fe.supported.full){var e=Fe.media.duration||0;!Fe.duration&&N.displayDuration&&Fe.media.paused&&ye(e,Fe.currentTime),Fe.duration&&ye(e,Fe.duration)}}function ve(e){ye(Fe.media.currentTime,Fe.currentTime),e&&"timeupdate"==e.type&&Fe.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Fe.type){case"youtube":t=Fe.embed.getVideoUrl();break;case"vimeo":Fe.embed.api("getVideoUrl",function(e){t=e});break;default:t=Fe.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Fe.type?(Fe.embed.destroy(),e.clearInterval(Fe.timer.buffering),e.clearInterval(Fe.timer.playing)):"video"===Fe.type&&Fe.videoContainer&&p(Fe.videoContainer),p(Fe.media),"type"in n&&(Fe.type=n.type,"video"===Fe.type)){var a=n.sources[0];"type"in a&&i(N.types.embed,a.type)&&(Fe.type=a.type)}switch(Fe.supported=I.supported(Fe.type),Fe.type){case"video":Fe.media=t.createElement("video");break;case"audio":Fe.media=t.createElement("audio");break;case"youtube":case"vimeo":Fe.media=t.createElement("div"),Fe.embedId=n.sources[0].src}d(Fe.container,Fe.media),i(N.types.html5,Fe.type)&&(N.crossorigin&&Fe.media.setAttribute("crossorigin",""),N.autoplay&&Fe.media.setAttribute("autoplay",""),"poster"in n&&Fe.media.setAttribute("poster",n.poster),N.loop&&Fe.media.setAttribute("loop","")),Fe.container.className=Fe.originalClassName,b(Fe.container,N.classes.fullscreen.active,Fe.isFullscreen),b(Fe.container,N.classes.captions.active,Fe.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Fe.type)&&D("source",n.sources),K(),i(N.types.html5,Fe.type)&&("tracks"in n&&D("track",n.tracks),Fe.media.load(),be(),_e()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Fe.type&&Fe.media.setAttribute("poster",e)}function Te(){function n(e){e?ee():te();var t=Fe.buttons[e?"play":"pause"],n=Fe.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Fe.buttons){var r=Fe.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Fe.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Fe.buttons){var o=Fe.buttons[s];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Fe.buttons.play,"click",N.handlers.play,function(){n(!0)}),k(Fe.buttons.pause,"click",N.handlers.pause,function(){n()}),k(Fe.buttons.restart,"click",N.handlers.restart,se),k(Fe.buttons.rewind,"click",N.handlers.rewind,re),k(Fe.buttons.forward,"click",N.handlers.forward,ae),k(Fe.buttons.seek,a,N.handlers.seek,se),k(Fe.volume,a,N.handlers.volume,function(){ce(Fe.volume.value)}),k(Fe.buttons.mute,"click",N.handlers.mute,ue),k(Fe.buttons.fullscreen,"click",N.handlers.fullscreen,ie),A.supportsFullScreen&&g(t,A.fullScreenEventName,ie),g(Fe.media,"timeupdate seeking",ve),g(Fe.media,"timeupdate",S),g(Fe.media,"loadedmetadata",be),g(Fe.buttons.captions,"click",de),g(Fe.media,"ended",function(){"video"===Fe.type&&(Fe.captionsContainer.innerHTML=""),oe()}),g(Fe.media,"progress playing",me),g(Fe.media,"volumechange",pe),g(Fe.media,"play pause",oe),g(Fe.media,"waiting canplay seeked",fe),"video"===Fe.type&&N.click&&g(Fe.videoContainer,"click",function(){Fe.media.paused?ee():Fe.media.ended?(se(),ee()):te()})}function we(){if(!Fe.init)return null;if(Fe.container.setAttribute("class",y(N.selectors.container)),Fe.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Fe.type)return void Fe.embed.destroy();"video"===Fe.type&&(p(H(N.selectors.captions)),c(Fe.videoContainer)),$(!0);var e=Fe.media.cloneNode(!0);Fe.media.parentNode.replaceChild(e,Fe.media)}function xe(){if(Fe.init)return null;A=C(),Fe.browser=a(),Fe.media=Fe.container.querySelectorAll("audio, video, div")[0],Fe.originalClassName=Fe.container.className;var e=Fe.media.tagName.toLowerCase();if("div"===e?(Fe.type=Fe.media.getAttribute("data-type"),Fe.embedId=Fe.media.getAttribute("data-video-id"),Fe.media.removeAttribute("data-type"),Fe.media.removeAttribute("data-video-id")):(Fe.type=e,N.crossorigin=null!==Fe.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Fe.media.getAttribute("autoplay"),N.loop=N.loop||null!==Fe.media.getAttribute("loop")),Fe.supported=I.supported(Fe.type),W(),!Fe.supported.basic)return!1;if(r(Fe.browser.name+" "+Fe.browser.version),K(),i(N.types.html5,Fe.type)){if(!Fe.supported.full)return void(Fe.init=!0);_e(),z()}Fe.init=!0}function _e(){return Fe.supported.full?(q(N.selectors.controls.wrapper).length||B(),$(),void(Y()&&(Z(),Te(),Q(),ce(),pe(),ve(),oe()))):(r("No full support for this media type ("+Fe.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0))}var Fe=this;return Fe.container=F,xe(),Fe.init?{media:Fe.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:ie,isFullscreen:function(){return Fe.isFullscreen||!1},support:function(e){return s(Fe,e)},destroy:we,restore:xe}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},handlers:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}}};return I.supported=function(e){var n,r,s=a(),o="IE"===s.name&&s.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var o=new S(s);s.plyr=Object.keys(o).length?o:!1,"function"==typeof N.onSetup&&N.onSetup.apply(s.plyr)}r.push(s.plyr)}return r},I}); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",o="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",o=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),o=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=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:s,version:i,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&T(e,t,n,!0)}function h(e,t,n){e&&T(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function T(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),o=s.length-1;o>=0;o--){var i=s[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}i(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),i=s.length-1;i>=0;i--)p(s[i]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),w(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),w(Ce.media,"progress"),1===Ce.media.buffered&&e.clearInterval(Ce.timer.buffering)},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,w(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,w(Ce.media,"play"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),w(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,w(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,w(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,w(Ce.media,"play")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,w(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,w(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,w(Ce.media,"progress")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,w(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t)}n&&te(),w(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function oe(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function ie(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(o),i||(o=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){i="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var o,i=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),T(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),T(Ce.container,"mousemove",r,Ce.isFullscreen))}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&ie()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}w(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}w(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&i(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),i(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ce.type)&&D("source",n.sources),K(),i(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function Te(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var o=Ce.buttons[s];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.handlers.play,n),k(Ce.buttons.pause,"click",N.handlers.pause,n),k(Ce.buttons.restart,"click",N.handlers.restart,se),k(Ce.buttons.rewind,"click",N.handlers.rewind,re),k(Ce.buttons.forward,"click",N.handlers.forward,ae),k(Ce.buttons.seek,a,N.handlers.seek,se),k(Ce.volume,a,N.handlers.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.handlers.mute,ue),k(Ce.buttons.fullscreen,"click",N.handlers.fullscreen,ie),A.supportsFullScreen&&g(t,A.fullScreenEventName,ie),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function we(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),oe()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",oe),g(Ce.media,"waiting canplay seeked",fe)}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),i(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&Te(),we(),$(),Z(),Q(),ce(),pe(),ve(),oe())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:ie,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},handlers:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}}};return I.supported=function(e){var n,r,s=a(),o="IE"===s.name&&s.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var o=new S(s);s.plyr=Object.keys(o).length?o:!1,"function"==typeof N.onSetup&&N.onSetup.apply(s.plyr)}r.push(s.plyr)}return r},I}); \ No newline at end of file diff --git a/docs/dist/docs.js b/docs/dist/docs.js index 5ee05293..6543b2da 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var n,s=arguments.length;for(n=0;s>n;n++)e=arguments[n],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",n="prototype",s=e.Element[n],i=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},o=Array[n].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return o.call(e,t)},l=function(e){for(var t=r.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],s=0,i=n.length;i>s;s++)this.push(n[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[n]=[],p=function(){return new l(this)};if(a[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,n=0,s=t.length,i=!1;do e=t[n]+"",-1===c(this,e)&&(this.push(e),i=!0);while(++n=0;r--)e(n[r].parentElement,"active",!1);e((event.target||event.srcElement).parentElement,"active",!0)}for(var n=document.querySelectorAll("[data-source]"),s=n.length-1;s>=0;s--)n[s].addEventListener("click",t)}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,n,s,i,r,o){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.async=1,r.src=s,o.parentNode.insertBefore(r,o)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var n,s=arguments.length;for(n=0;s>n;n++)e=arguments[n],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",n="prototype",s=e.Element[n],i=Object,o=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[n].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],s=0,i=n.length;i>s;s++)this.push(n[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[n]=[],p=function(){return new l(this)};if(a[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,n=0,s=t.length,i=!1;do e=t[n]+"",-1===c(this,e)&&(this.push(e),i=!0);while(++n=0;o--)e(n[o].parentElement,"active",!1);e((event.target||event.srcElement).parentElement,"active",!0)}for(var n=document.querySelectorAll("[data-source]"),s=n.length-1;s>=0;s--)n[s].addEventListener("click",t);window.addEventListener("popstate",function(e){console.log(e)})}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,n,s,i,o,r){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,o=t.createElement(n),r=t.getElementsByTagName(n)[0],o.async=1,o.src=s,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/src/js/docs.js b/docs/src/js/docs.js index 34bb418f..8b61e3d1 100644 --- a/docs/src/js/docs.js +++ b/docs/src/js/docs.js @@ -33,6 +33,10 @@ shr.setup({ buttons[i].addEventListener('click', newSource); } + window.addEventListener('popstate', function(event) { + console.log(event); + }); + function toggleClass(element, className, state) { if (element) { if (element.classList) { @@ -113,6 +117,10 @@ shr.setup({ break; } + if (window.history && window.history.pushState) { + history.pushState({ 'type': type }, '', '#' + type); + } + for (var x = buttons.length - 1; x >= 0; x--) { toggleClass(buttons[x].parentElement, 'active', false); } diff --git a/package.json b/package.json index 751ce67e..1a19ce7e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.0", + "version": "1.5.1", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index 7ad56720..794ecfd2 100644 --- a/readme.md +++ b/readme.md @@ -39,7 +39,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.0/plyr.js` to `https://cdn.plyr.io/1.5.0/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.1/plyr.js` to `https://cdn.plyr.io/1.5.1/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -59,11 +59,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.0/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.1/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -155,7 +155,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 52f4b9d9..ca160ac6 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -2196,13 +2196,15 @@ } } - // Listen for events - function _listeners() { + // Listen for control events + function _controlListeners() { // IE doesn't support input event, so we fallback to change var inputEvent = (plyr.browser.name == 'IE' ? 'change' : 'input'); // Click play/pause helper - function _togglePlay(play) { + function _togglePlay() { + var play = plyr.media.paused; + // Toggle playback if (play) { _play(); @@ -2264,10 +2266,10 @@ } // Play - _proxyHandler(plyr.buttons.play, 'click', config.handlers.play, function() { _togglePlay(true); }); + _proxyHandler(plyr.buttons.play, 'click', config.handlers.play, _togglePlay); // Pause - _proxyHandler(plyr.buttons.pause, 'click', config.handlers.pause, function() { _togglePlay(); }); + _proxyHandler(plyr.buttons.pause, 'click', config.handlers.pause, _togglePlay); // Restart _proxyHandler(plyr.buttons.restart, 'click', config.handlers.restart, _seek); @@ -2297,6 +2299,28 @@ _on(document, fullscreen.fullScreenEventName, _toggleFullscreen); } + // Captions + _on(plyr.buttons.captions, 'click', _toggleCaptions); + + // Click video + if (plyr.type === 'video' && config.click) { + _on(plyr.videoContainer, 'click', function() { + if (plyr.media.paused) { + _play(); + } + else if (plyr.media.ended) { + _seek(); + _play(); + } + else { + _pause(); + } + }); + } + } + + // Listen for media events + function _mediaListeners() { // Time change on media _on(plyr.media, 'timeupdate seeking', _timeUpdate); @@ -2306,9 +2330,6 @@ // Display duration _on(plyr.media, 'loadedmetadata', _displayDuration); - // Captions - _on(plyr.buttons.captions, 'click', _toggleCaptions); - // Handle the media finishing _on(plyr.media, 'ended', function() { // Clear @@ -2331,22 +2352,6 @@ // Loading _on(plyr.media, 'waiting canplay seeked', _checkLoading); - - // Click video - if (plyr.type === 'video' && config.click) { - _on(plyr.videoContainer, 'click', function() { - if (plyr.media.paused) { - _play(); - } - else if (plyr.media.ended) { - _seek(); - _play(); - } - else { - _pause(); - } - }); - } } // Destroy an instance @@ -2482,26 +2487,32 @@ return; } - // Inject custom controls - if (!_getElements(config.selectors.controls.wrapper).length) { + // Inject custom controls if not present + var controlsMissing = !_getElements(config.selectors.controls.wrapper).length; + if (controlsMissing) { // Inject custom controls _injectControls(); } - // Remove native controls - _toggleControls(); - // Find the elements if (!_findElements()) { return; } + // If the controls are injected, re-bind listeners for controls + if (controlsMissing) { + _controlListeners(); + } + + // Media element listeners + _mediaListeners(); + + // Remove native controls + _toggleControls(); + // Setup fullscreen _setupFullscreen(); - // Listeners - _listeners(); - // Captions _setupCaptions(); From a277224ef4b197870f3c912de8bc6135281f0856 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 17 Jan 2016 01:29:34 +1100 Subject: [PATCH 06/87] Reverted docs.js changes --- docs/dist/docs.js | 2 +- docs/src/js/docs.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/dist/docs.js b/docs/dist/docs.js index 6543b2da..5ee05293 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var n,s=arguments.length;for(n=0;s>n;n++)e=arguments[n],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",n="prototype",s=e.Element[n],i=Object,o=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[n].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],s=0,i=n.length;i>s;s++)this.push(n[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[n]=[],p=function(){return new l(this)};if(a[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,n=0,s=t.length,i=!1;do e=t[n]+"",-1===c(this,e)&&(this.push(e),i=!0);while(++n=0;o--)e(n[o].parentElement,"active",!1);e((event.target||event.srcElement).parentElement,"active",!0)}for(var n=document.querySelectorAll("[data-source]"),s=n.length-1;s>=0;s--)n[s].addEventListener("click",t);window.addEventListener("popstate",function(e){console.log(e)})}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,n,s,i,o,r){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,o=t.createElement(n),r=t.getElementsByTagName(n)[0],o.async=1,o.src=s,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var n,s=arguments.length;for(n=0;s>n;n++)e=arguments[n],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",n="prototype",s=e.Element[n],i=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},o=Array[n].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return o.call(e,t)},l=function(e){for(var t=r.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],s=0,i=n.length;i>s;s++)this.push(n[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[n]=[],p=function(){return new l(this)};if(a[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,n=0,s=t.length,i=!1;do e=t[n]+"",-1===c(this,e)&&(this.push(e),i=!0);while(++n=0;r--)e(n[r].parentElement,"active",!1);e((event.target||event.srcElement).parentElement,"active",!0)}for(var n=document.querySelectorAll("[data-source]"),s=n.length-1;s>=0;s--)n[s].addEventListener("click",t)}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,n,s,i,r,o){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.async=1,r.src=s,o.parentNode.insertBefore(r,o)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/src/js/docs.js b/docs/src/js/docs.js index 8b61e3d1..dd891f07 100644 --- a/docs/src/js/docs.js +++ b/docs/src/js/docs.js @@ -33,9 +33,9 @@ shr.setup({ buttons[i].addEventListener('click', newSource); } - window.addEventListener('popstate', function(event) { + /*window.addEventListener('popstate', function(event) { console.log(event); - }); + });*/ function toggleClass(element, className, state) { if (element) { @@ -117,9 +117,9 @@ shr.setup({ break; } - if (window.history && window.history.pushState) { + /*if (window.history && window.history.pushState) { history.pushState({ 'type': type }, '', '#' + type); - } + }*/ for (var x = buttons.length - 1; x >= 0; x--) { toggleClass(buttons[x].parentElement, 'active', false); From d6b67c3388950f56e28ce2aa59b4eef7de76c005 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 17 Jan 2016 10:39:05 +1100 Subject: [PATCH 07/87] Docs pushstate for tabs --- docs/dist/docs.js | 2 +- docs/src/js/docs.js | 58 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/docs/dist/docs.js b/docs/dist/docs.js index 5ee05293..cc9b8395 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var n,s=arguments.length;for(n=0;s>n;n++)e=arguments[n],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",n="prototype",s=e.Element[n],i=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},o=Array[n].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return o.call(e,t)},l=function(e){for(var t=r.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],s=0,i=n.length;i>s;s++)this.push(n[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[n]=[],p=function(){return new l(this)};if(a[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,n=0,s=t.length,i=!1;do e=t[n]+"",-1===c(this,e)&&(this.push(e),i=!0);while(++n=0;r--)e(n[r].parentElement,"active",!1);e((event.target||event.srcElement).parentElement,"active",!0)}for(var n=document.querySelectorAll("[data-source]"),s=n.length-1;s>=0;s--)n[s].addEventListener("click",t)}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,n,s,i,r,o){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.async=1,r.src=s,o.parentNode.insertBefore(r,o)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,n=arguments.length;for(i=0;n>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",n=e.Element[i],s=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],n=0,s=i.length;s>n;n++)this.push(i[n]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],p=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,n=t.length,s=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),s=!0);while(++i=0;r--)e(i[r].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),n={video:0,audio:1,youtube:2,vimeo:3},s=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o&&(s.length||(s="video"),s in n&&history.replaceState({type:s},"","#"+s),"video"!=s&&t(s))}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,n,s,o,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=n,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/src/js/docs.js b/docs/src/js/docs.js index dd891f07..d342f9c4 100644 --- a/docs/src/js/docs.js +++ b/docs/src/js/docs.js @@ -26,16 +26,48 @@ shr.setup({ // General functions (function() { - var buttons = document.querySelectorAll('[data-source]'); + var buttons = document.querySelectorAll('[data-source]'), + types = { + video: 0, + audio: 1, + youtube: 2, + vimeo: 3 + }, + currentType = window.location.hash.replace('#', ''), + historySupport = (window.history && window.history.pushState); // Bind to each button for (var i = buttons.length - 1; i >= 0; i--) { - buttons[i].addEventListener('click', newSource); + buttons[i].addEventListener('click', function() { + var type = this.getAttribute('data-source'); + + newSource(type); + + if (historySupport) { + history.pushState({ 'type': type }, '', '#' + type); + } + }); } - /*window.addEventListener('popstate', function(event) { - console.log(event); - });*/ + // List for backwards/forwards + window.addEventListener('popstate', function(event) { + if(event.state && 'type' in event.state) { + newSource(event.state.type); + } + }); + + // On load + if(historySupport) { + if(!currentType.length) { + currentType = 'video'; + } + if(currentType in types) { + history.replaceState({ 'type': currentType }, '', '#' + currentType); + } + if(currentType != 'video') { + newSource(currentType); + } + } function toggleClass(element, className, state) { if (element) { @@ -50,10 +82,12 @@ shr.setup({ } // Set a new source - function newSource() { - var trigger = this, - type = trigger.getAttribute('data-source'), - player = document.querySelector('.js-media-player').plyr; + function newSource(type) { + if(!(type in types)) { + return; + } + + var player = document.querySelector('.js-media-player').plyr; switch(type) { case 'video': @@ -117,15 +151,13 @@ shr.setup({ break; } - /*if (window.history && window.history.pushState) { - history.pushState({ 'type': type }, '', '#' + type); - }*/ + currentType = type; for (var x = buttons.length - 1; x >= 0; x--) { toggleClass(buttons[x].parentElement, 'active', false); } - toggleClass((event.target || event.srcElement).parentElement, 'active', true); + toggleClass(document.querySelector('[data-source="'+ type +'"]').parentElement, 'active', true); } })(); From 54b0dc5273546e812456e5ab201cc5b2e1f2adca Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 17 Jan 2016 10:41:13 +1100 Subject: [PATCH 08/87] Docs tweak --- readme.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/readme.md b/readme.md index 794ecfd2..f0896467 100644 --- a/readme.md +++ b/readme.md @@ -6,20 +6,20 @@ A simple, accessible and customizable HTML5, YouTube and Vimeo media player. [![Image of Plyr](https://cdn.plyr.io/static/plyr-v1.5.jpg)](http://plyr.io) ## Why? -We wanted a lightweight, accessible and customizable media player that just supports [*modern*](#browser-support) browsers. Sure, there are many other players out there but we wanted to keep things simple, using the right elements for the job. +We wanted a lightweight, accessible and customizable media player that supports [*modern*](#browser-support) browsers. Sure, there are many other players out there but we wanted to keep things simple, using the right elements for the job. ## Features -- **Accessible** - full support for VTT captions and screen readers. -- **Lightweight** - just 8KB minified and gzipped. -- **[Customisable](#html)** - make the player look how you want with the markup you want. -- **Semantic** - uses the *right* elements. `` for volume and `` for progress and well, `"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("",""),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",o="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",o=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),o=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=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:s,version:i,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&T(e,t,n,!0)}function h(e,t,n){e&&T(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function T(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),o=s.length-1;o>=0;o--){var i=s[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}i(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),i=s.length-1;i>=0;i--)p(s[i]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),w(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),w(Ce.media,"progress"),1===Ce.media.buffered&&e.clearInterval(Ce.timer.buffering)},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,w(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,w(Ce.media,"play"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),w(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,w(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,w(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,w(Ce.media,"play")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,w(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,w(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,w(Ce.media,"progress")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,w(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t)}n&&te(),w(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function oe(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function ie(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(o),i||(o=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){i="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var o,i=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),T(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),T(Ce.container,"mousemove",r,Ce.isFullscreen))}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&ie()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}w(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}w(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&i(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),i(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ce.type)&&D("source",n.sources),K(),i(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function Te(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var o=Ce.buttons[s];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.handlers.play,n),k(Ce.buttons.pause,"click",N.handlers.pause,n),k(Ce.buttons.restart,"click",N.handlers.restart,se),k(Ce.buttons.rewind,"click",N.handlers.rewind,re),k(Ce.buttons.forward,"click",N.handlers.forward,ae),k(Ce.buttons.seek,a,N.handlers.seek,se),k(Ce.volume,a,N.handlers.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.handlers.mute,ue),k(Ce.buttons.fullscreen,"click",N.handlers.fullscreen,ie),A.supportsFullScreen&&g(t,A.fullScreenEventName,ie),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function we(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),oe()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",oe),g(Ce.media,"waiting canplay seeked",fe)}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),i(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&Te(),we(),$(),Z(),Q(),ce(),pe(),ve(),oe())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:ie,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},handlers:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}}};return I.supported=function(e){var n,r,s=a(),o="IE"===s.name&&s.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var o=new S(s);s.plyr=Object.keys(o).length?o:!1,"function"==typeof N.onSetup&&N.onSetup.apply(s.plyr)}r.push(s.plyr)}return r},I}); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",o="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",o=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),o=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=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:s,version:i,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&T(e,t,n,!0)}function h(e,t,n){e&&T(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function T(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),o=s.length-1;o>=0;o--){var i=s[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}i(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),i=s.length-1;i>=0;i--)p(s[i]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),w(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),w(Ce.media,"progress"),1===Ce.media.buffered&&e.clearInterval(Ce.timer.buffering)},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,w(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,w(Ce.media,"play"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),w(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,w(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,w(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,w(Ce.media,"play")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,w(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,w(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,w(Ce.media,"progress")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,w(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),w(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function oe(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function ie(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(o),i||(o=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){i="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var o,i=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),T(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),T(Ce.container,"mousemove",r,Ce.isFullscreen))}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&ie()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}w(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}w(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&i(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),i(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ce.type)&&D("source",n.sources),K(),i(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function Te(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var o=Ce.buttons[s];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.handlers.play,n),k(Ce.buttons.pause,"click",N.handlers.pause,n),k(Ce.buttons.restart,"click",N.handlers.restart,se),k(Ce.buttons.rewind,"click",N.handlers.rewind,re),k(Ce.buttons.forward,"click",N.handlers.forward,ae),k(Ce.buttons.seek,a,N.handlers.seek,se),k(Ce.volume,a,N.handlers.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.handlers.mute,ue),k(Ce.buttons.fullscreen,"click",N.handlers.fullscreen,ie),A.supportsFullScreen&&g(t,A.fullScreenEventName,ie),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function we(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),oe()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",oe),g(Ce.media,"waiting canplay seeked",fe)}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),i(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&Te(),we(),$(),Z(),Q(),ce(),pe(),ve(),oe())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:ie,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},handlers:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}}};return I.supported=function(e){var n,r,s=a(),o="IE"===s.name&&s.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var o=new S(s);s.plyr=Object.keys(o).length?o:!1,"function"==typeof N.onSetup&&N.onSetup.apply(s.plyr)}r.push(s.plyr)}return r},I}); \ No newline at end of file diff --git a/src/js/plyr.js b/src/js/plyr.js index ca160ac6..a1b4de27 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1646,7 +1646,8 @@ break; case 'vimeo': - plyr.embed.api('seekTo', targetTime); + // Round to nearest second for vimeo + plyr.embed.api('seekTo', targetTime.toFixed(0)); break; } @@ -2214,8 +2215,8 @@ } // Determine which buttons - var trigger = plyr.buttons[play ? "play" : "pause"], - target = plyr.buttons[play ? "pause" : "play"]; + var trigger = plyr.buttons[play ? 'play' : 'pause'], + target = plyr.buttons[play ? 'pause' : 'play']; // Setup focus and tab focus if(target) { @@ -2475,7 +2476,7 @@ function _setupInterface() { // Don't setup interface if no support if (!plyr.supported.full) { - _log("No full support for this media type (" + plyr.type + ")", true); + _log('No full support for this media type (' + plyr.type + ')', true); // Remove controls _remove(_getElement(config.selectors.controls.wrapper)); diff --git a/src/less/plyr.less b/src/less/plyr.less index 955bd824..7cb768a8 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -599,7 +599,7 @@ } // Full screen mode - &--fullscreen, + &.plyr--fullscreen, &--fullscreen-active { position: fixed; top: 0; @@ -627,24 +627,25 @@ } // Hide controls when playing in full screen - &--fullscreen--hide-controls&--fullscreen-active&--playing { + &--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing, + &.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing { .plyr__controls { transform: translateY(100%) translateY(@plyr-control-spacing / 2); transition: transform .3s .2s ease; } - &.plyr--hover .plyr__controls { - transform: translateY(0); - } .plyr__captions { bottom: (@plyr-control-spacing / 2); transition: bottom .3s .2s ease; } + &.plyr--hover .plyr__controls { + transform: translateY(0); + } } // Captions - &--fullscreen .plyr__captions, + &.plyr--fullscreen .plyr__captions, &--fullscreen-active .plyr__captions, - &--fullscreen--hide-controls&--fullscreen-active&--playing&--hover &__captions { + &--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions { top: auto; bottom: 90px; diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index bbd52579..5a94d17d 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -626,24 +626,25 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la } // Hide controls when playing in full screen - &--fullscreen--hide-controls&--fullscreen-active&--playing { + &--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing, + &.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing { .plyr__controls { transform: translateY(100%) translateY($plyr-control-spacing / 2); transition: transform .3s .2s ease; } - &.plyr--hover .plyr__controls { - transform: translateY(0); - } .plyr__captions { bottom: ($plyr-control-spacing / 2); transition: bottom .3s .2s ease; } + &.plyr--hover .plyr__controls { + transform: translateY(0); + } } // Captions - &--fullscreen .plyr__captions, + &.plyr--fullscreen .plyr__captions, &--fullscreen-active .plyr__captions, - &--fullscreen--hide-controls&--fullscreen-active&--playing&--hover &__captions { + &--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions { top: auto; bottom: 90px; From 02d312f2d2764a423279203b0652ab685272a338 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 18 Jan 2016 18:27:01 +1100 Subject: [PATCH 13/87] Style tweaks --- src/less/plyr.less | 3 +++ src/sass/plyr.scss | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/less/plyr.less b/src/less/plyr.less index 7cb768a8..c3240242 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -417,14 +417,17 @@ &--played[value] { &::-webkit-progress-bar { background: transparent; + transition: width .2s ease; } // Inherit from currentColor; &::-webkit-progress-value { background: currentColor; + transition: width .2s ease; } &::-moz-progress-bar { background: currentColor; + transition: width .2s ease; } } &--played[value] { diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index 5a94d17d..a94aeaf5 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -417,14 +417,17 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la &--played[value] { &::-webkit-progress-bar { background: transparent; + transition: width .2s ease; } // Inherit from currentColor; &::-webkit-progress-value { background: currentColor; + transition: width .2s ease; } &::-moz-progress-bar { background: currentColor; + transition: width .2s ease; } } &--played[value] { From a665121b52ad7860b0a96f6b0c5f2aa741e06d62 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 18 Jan 2016 19:48:14 +1100 Subject: [PATCH 14/87] Types enum --- docs/dist/docs.js | 2 +- docs/src/js/docs.js | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/dist/docs.js b/docs/dist/docs.js index 39abad8f..0ec7b586 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,n=arguments.length;for(i=0;n>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",n=e.Element[i],s=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],n=0,s=i.length;s>n;n++)this.push(i[n]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],p=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,n=t.length,s=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),s=!0);while(++i=0;r--)e(i[r].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),n={video:0,audio:1,youtube:2,vimeo:3},s=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!s.length;a&&(s="video"),s in n&&history.replaceState({type:s},"",a?"":"#"+s),a||t(s)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,n,s,o,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=n,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,n=arguments.length;for(i=0;n>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",n=e.Element[i],s=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],n=0,s=i.length;s>n;n++)this.push(i[n]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],p=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,n=t.length,s=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),s=!0);while(++i=0;r--)e(i[r].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},s=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!s.length;a&&(s=n.video),s in n&&history.replaceState({type:s},"",a?"":"#"+s),a||t(s)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,n,s,o,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=n,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/src/js/docs.js b/docs/src/js/docs.js index 471915cb..ec5566d9 100644 --- a/docs/src/js/docs.js +++ b/docs/src/js/docs.js @@ -28,10 +28,10 @@ shr.setup({ (function() { var buttons = document.querySelectorAll('[data-source]'), types = { - video: 0, - audio: 1, - youtube: 2, - vimeo: 3 + video: 'video', + audio: 'audio', + youtube: 'youtube', + vimeo: 'vimeo' }, currentType = window.location.hash.replace('#', ''), historySupport = (window.history && window.history.pushState); @@ -60,7 +60,7 @@ shr.setup({ if(historySupport) { var video = !currentType.length; if(video) { - currentType = 'video'; + currentType = types.video; } if(currentType in types) { history.replaceState({ 'type': currentType }, '', (video ? '' : '#' + currentType)); @@ -70,6 +70,7 @@ shr.setup({ } } + // Toggle class on an element function toggleClass(element, className, state) { if (element) { if (element.classList) { @@ -91,7 +92,7 @@ shr.setup({ var player = document.querySelector('.js-media-player').plyr; switch(type) { - case 'video': + case types.video: player.source({ type: 'video', title: 'View From A Blue Moon', @@ -114,7 +115,7 @@ shr.setup({ }); break; - case 'audio': + case types.audio: player.source({ type: 'audio', title: 'Kishi Bashi – “It All Began With A Burst”', @@ -129,7 +130,7 @@ shr.setup({ }); break; - case 'youtube': + case types.youtube: player.source({ type: 'video', title: 'View From A Blue Moon', @@ -140,7 +141,7 @@ shr.setup({ }); break; - case 'vimeo': + case types.vimeo: player.source({ type: 'video', title: 'View From A Blue Moon', From b81b8c1d31b2e980ab610a4a42e02a22b9832955 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 00:30:25 +1100 Subject: [PATCH 15/87] Event listeners --- changelog.md | 10 +++- dist/plyr.css | 2 +- dist/plyr.js | 3 +- readme.md | 144 +++++++++++++++++++++++++++++++++++++++++++------ src/js/plyr.js | 126 ++++++++++++++++++++++++++++--------------- 5 files changed, 223 insertions(+), 62 deletions(-) diff --git a/changelog.md b/changelog.md index 0b541a95..77269ae2 100644 --- a/changelog.md +++ b/changelog.md @@ -1,7 +1,15 @@ # Changelog +## v1.5.2 +- `handlers` option renamed to `listeners` +- Added event listeners for all types to the plyr container (playback, fullscreen, captions etc - see docs) +- Removed onSetup config option (use the 'setup' event instead, plyr element is event.plyr) +- Style bug fixes +- Vimeo seek bug fix (requires whole seconds when seeking) +- Fix for fullscreen player (using class hook, not browser fullscreen) + ## v1.5.1 -- Fix for event listeners being duplicated on source change +- Fix for event listeners being duplicated on source change # v1.5.0 - Vimeo support (fixes #8) diff --git a/dist/plyr.css b/dist/plyr.css index 76434bdc..e3207d81 100644 --- a/dist/plyr.css +++ b/dist/plyr.css @@ -1 +1 @@ -.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(52,63,74,.1),0 0 0 1px rgba(52,63,74,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,30px) scale(.8);transform:translate(-50%,30px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(52,63,74,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip{opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen,.plyr--fullscreen-active{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen video,.plyr--fullscreen-active video{height:100%}.plyr--fullscreen .plyr__video-wrapper,.plyr--fullscreen-active .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen .plyr__controls,.plyr--fullscreen-active .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen .plyr__captions,.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen .plyr__captions,.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file +.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(52,63,74,.1),0 0 0 1px rgba(52,63,74,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,30px) scale(.8);transform:translate(-50%,30px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(52,63,74,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip{opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file diff --git a/dist/plyr.js b/dist/plyr.js index 1bacd9f8..708386d3 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",o="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",o=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),o=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=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:s,version:i,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&T(e,t,n,!0)}function h(e,t,n){e&&T(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function T(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),o=s.length-1;o>=0;o--){var i=s[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}i(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),i=s.length-1;i>=0;i--)p(s[i]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),w(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),w(Ce.media,"progress"),1===Ce.media.buffered&&e.clearInterval(Ce.timer.buffering)},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,w(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,w(Ce.media,"play"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),w(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,w(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,w(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,w(Ce.media,"play")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,w(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,w(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,w(Ce.media,"progress")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,w(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),w(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function oe(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function ie(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(o),i||(o=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){i="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var o,i=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),T(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),T(Ce.container,"mousemove",r,Ce.isFullscreen))}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&ie()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}w(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}w(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&i(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),i(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ce.type)&&D("source",n.sources),K(),i(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function Te(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var o=Ce.buttons[s];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.handlers.play,n),k(Ce.buttons.pause,"click",N.handlers.pause,n),k(Ce.buttons.restart,"click",N.handlers.restart,se),k(Ce.buttons.rewind,"click",N.handlers.rewind,re),k(Ce.buttons.forward,"click",N.handlers.forward,ae),k(Ce.buttons.seek,a,N.handlers.seek,se),k(Ce.volume,a,N.handlers.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.handlers.mute,ue),k(Ce.buttons.fullscreen,"click",N.handlers.fullscreen,ie),A.supportsFullScreen&&g(t,A.fullScreenEventName,ie),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function we(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),oe()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",oe),g(Ce.media,"waiting canplay seeked",fe)}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),i(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&Te(),we(),$(),Z(),Q(),ce(),pe(),ve(),oe())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:ie,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},handlers:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}}};return I.supported=function(e){var n,r,s=a(),o="IE"===s.name&&s.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var o=new S(s);s.plyr=Object.keys(o).length?o:!1,"function"==typeof N.onSetup&&N.onSetup.apply(s.plyr)}r.push(s.plyr)}return r},I}); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return o(N.controls,"restart")&&e.push('"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r},I}),function(){ +function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/readme.md b/readme.md index cd398a7c..84e55db5 100644 --- a/readme.md +++ b/readme.md @@ -305,12 +305,6 @@ Options must be passed as an object to the `setup()` method as above. — Two properties; enabled which toggles if local storage should be enabled (if the browser supports it). The default value is `true`. This enables storing user settings, currently it only stores volume but more will be added later. The second property key is the key used for the local storage. The default is plyr_volume until more settings are stored. - - onSetup - Function - — - This callback function is called on every new plyr instance created. The context (this) is the plyr instance itself. - @@ -370,7 +364,7 @@ Or you can use the returned object from your call to the setup method: var player = plyr.setup('.js-plyr')[0]; ``` -This will return an array of plyr instances setup, so you need to specify the index of the instance you want. This is less useful if you are setting up mutliple instances. You can also use the `onSetup` callback documented below which will return each instance one by one, as they are setup. +This will return an array of plyr instances setup, so you need to specify the index of the instance you want. This is less useful if you are setting up mutliple instances. You can listen for the `setup` [event](#events) documented below which will return each instance one by one, as they are setup (in the `plyr` key of the event object). Once you have your instance, you can use the API methods below on it. For example to pause it: @@ -605,19 +599,139 @@ Some more details on the object parameters -## Events/Callbacks +## Events -The `plyr` object on the player element also contains a `media` property which is a reference to the `
canplay + canplay ✔ - Sent when enough data is available that the media can be played, at least for a couple of frames.  This corresponds to the HAVE_ENOUGH_DATA readyState. + Sent when enough data is available that the media can be played, at least for a couple of frames. This corresponds to the HAVE_ENOUGH_DATA readyState. - canplaythrough + canplaythrough Sent when the ready state changes to CAN_PLAY_THROUGH, indicating that the entire media can be played without interruption, assuming the download rate remains at least at the current level. Note: Manually setting the currentTime will eventually fire a canplaythrough event in firefox. Other browsers might not fire this event. - emptied + emptied ✔ - The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it. + The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it. ended @@ -635,70 +635,70 @@ You can listen for events on the element you setup Plyr on. Some events only app error ✔ - Sent when an error occurs.  The element's error attribute contains more information. See Error handling for details. + Sent when an error occurs.  The element's error attribute contains more information. - loadeddata + loadeddata/code> ✔ The first frame of the media has finished loading. - loadedmetadata + loadedmetadata ✔ The media's metadata has finished loading; all attributes now contain as much useful information as they're going to. - loadstart + loadstart ✔ Sent when loading of the media begins. - pause + pause Sent when playback is paused. - play + play Sent when playback of the media starts after having been paused; that is, when playback is resumed after a prior pause event. - playing + playing Sent when the media begins to play (either for the first time, after having been paused, or after ending and then restarting). - progress + progress Sent periodically to inform interested parties of progress downloading the media. Information about the current amount of the media that has been downloaded is available in the media element's buffered attribute. - seeked + seeked ✔ Sent when a seek operation completes. - seeking + seeking ✔ Sent when a seek operation begins. - stalled + stalled ✔ Sent when the user agent is trying to fetch media data, but data is unexpectedly not forthcoming. - timeupdate + timeupdate The time indicated by the element's currentTime attribute has changed. - volumechange + volumechange Sent when the audio volume changes (both when the volume is set and when the muted attribute is changed). - waiting + waiting ✔ Sent when the requested operation (such as playback) is delayed pending the completion of another operation (such as a seek). @@ -725,6 +725,8 @@ You can listen for events on the element you setup Plyr on. Some events only app +Details borrowed from: [https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events](https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events) + Here's an example of binding an event listener: ```javascript From 0c52fe0c7c3c160c3e9621a87708895a01808e19 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 00:43:22 +1100 Subject: [PATCH 19/87] Added events line --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index e8a5ee49..1e880137 100644 --- a/readme.md +++ b/readme.md @@ -17,6 +17,7 @@ We wanted a lightweight, accessible and customizable media player that supports - **HTML Video & Audio** - support for both formats - **[Embedded Video](#embeds)** - support for YouTube and Vimeo (beta) - **[API](#api)** - toggle playback, volume, seeking, and more +- **[Universal events](#events)** - no messing around with Vimeo and YouTube APIs, all events are universal across formats - **[Fullscreen](#fullscreen)** - supports native fullscreen with fallback to "full window" modes - **i18n support** - support for internationalization of controls - **No dependencies** - written in "vanilla" JavaScript, no jQuery required From 8d1e014a4078d0bea6b90ec4fb478a760c324205 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 00:46:00 +1100 Subject: [PATCH 20/87] Docs --- readme.md | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/readme.md b/readme.md index 1e880137..7d33e89a 100644 --- a/readme.md +++ b/readme.md @@ -15,9 +15,9 @@ We wanted a lightweight, accessible and customizable media player that supports - **Semantic** - uses the *right* elements. `` for volume and `` for progress and well, `"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("",""),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r},I}),function(){ -function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return o(N.controls,"restart")&&e.push('"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"durationchange loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r; +},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/src/js/plyr.js b/src/js/plyr.js index 9d80a9e8..9657f21e 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -2347,7 +2347,7 @@ _on(plyr.media, 'timeupdate', _seekManualCaptions); // Display duration - _on(plyr.media, 'loadedmetadata', _displayDuration); + _on(plyr.media, 'durationchange loadedmetadata', _displayDuration); // Handle the media finishing _on(plyr.media, 'ended', function() { From a87e87f93ce41cea527265e64d2f38dcfbdc1384 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 09:32:04 +1100 Subject: [PATCH 23/87] Version bump --- package.json | 2 +- readme.md | 10 +++++----- src/js/plyr.js | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 4b298020..f0e8df54 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.2", + "version": "1.5.3", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index f610d29f..c1d9cfc1 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.2/plyr.js` to `https://cdn.plyr.io/1.5.2/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.3/plyr.js` to `https://cdn.plyr.io/1.5.3/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.2/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.3/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -162,7 +162,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 9657f21e..6bf77be3 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1,6 +1,6 @@ // ========================================================================== // Plyr -// plyr.js v1.5.0 +// plyr.js v1.5.3 // https://github.com/selz/plyr // License: The MIT License (MIT) // ========================================================================== From 70c5b24678b9c569e3600df632f94973aa1d07c0 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 09:35:10 +1100 Subject: [PATCH 24/87] Added reference --- src/js/plyr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/plyr.js b/src/js/plyr.js index 6bf77be3..280d5f19 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -2680,7 +2680,7 @@ })); // Custom event polyfill -// +// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent (function () { function CustomEvent (event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; From 20a71300a5c7623a1a8d92325faef178d5a457a7 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 09:54:23 +1100 Subject: [PATCH 25/87] Controls --- controls.md | 64 ++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/controls.md b/controls.md index c58c966b..1e9fef0b 100644 --- a/controls.md +++ b/controls.md @@ -46,64 +46,64 @@ You can include only the controls you need when specifying custom html. This is an example `html` option with all controls. ```javascript -["
", - "
", - "", - "", - "", +["
", + "
", + "", + "", + "", "0% played", "", - "", + "", "0% buffered", "", "
", - "", - "", - "", - "", - "", - "", - "", + "", "Current time", - "00:00", + "00:00", "", - "", + "", "Duration", - "00:00", + "00:00", "", "", - "", - "", - "", - "", - "", - "", "", "
"].join("\n"); From fd12247a62f2493b176d77d2b80fcde114589a4f Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 11:34:04 +1100 Subject: [PATCH 26/87] Fix for video click --- src/js/plyr.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/js/plyr.js b/src/js/plyr.js index 280d5f19..2a86c003 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -2320,22 +2320,6 @@ // Captions _on(plyr.buttons.captions, 'click', _toggleCaptions); - - // Click video - if (plyr.type === 'video' && config.click) { - _on(plyr.videoContainer, 'click', function() { - if (plyr.media.paused) { - _play(); - } - else if (plyr.media.ended) { - _seek(); - _play(); - } - else { - _pause(); - } - }); - } } // Listen for media events @@ -2372,6 +2356,22 @@ // Loading _on(plyr.media, 'waiting canplay seeked', _checkLoading); + // Click video + if (plyr.type === 'video' && config.click) { + _on(plyr.videoContainer, 'click', function() { + if (plyr.media.paused) { + _play(); + } + else if (plyr.media.ended) { + _seek(); + _play(); + } + else { + _pause(); + } + }); + } + // Proxy events to container _on(plyr.media, config.events.join(' '), function(event) { _triggerEvent(plyr.container, event.type); From b9177e78923b8d17dffbb69775405cd4fa6734af Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 11:36:30 +1100 Subject: [PATCH 27/87] Minor bug fix for clicking video to play/pause after source change --- changelog.md | 6 ++++++ dist/plyr.js | 2 +- package.json | 2 +- readme.md | 10 +++++----- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/changelog.md b/changelog.md index 77269ae2..09bfa021 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## v1.5.4 +- Minor bug fix for clicking video to play/pause after source change + +## v1.5.3 +- Minor bug fix for occasional display of 0:00 as the media duration + ## v1.5.2 - `handlers` option renamed to `listeners` - Added event listeners for all types to the plyr container (playback, fullscreen, captions etc - see docs) diff --git a/dist/plyr.js b/dist/plyr.js index 36f63229..81384a6a 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return o(N.controls,"restart")&&e.push('"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()})}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"durationchange loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r; +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return o(N.controls,"restart")&&e.push('"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de)}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"durationchange loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()}),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r; },I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/package.json b/package.json index f0e8df54..d78d58d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.3", + "version": "1.5.4", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index c1d9cfc1..ba111604 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.3/plyr.js` to `https://cdn.plyr.io/1.5.3/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.4/plyr.js` to `https://cdn.plyr.io/1.5.4/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.3/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.4/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -162,7 +162,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` From 84a1b03d7d2a4788b4c25fa4b3cea0b62b90f2d1 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Jan 2016 17:15:50 +1100 Subject: [PATCH 28/87] Docs update --- docs/dist/docs.js | 2 +- docs/index.html | 2 +- docs/poster.jpg | Bin 174832 -> 0 bytes docs/src/js/docs.js | 10 ++++++++-- 4 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 docs/poster.jpg diff --git a/docs/dist/docs.js b/docs/dist/docs.js index af6b78b8..b06252cb 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,s=arguments.length;for(i=0;s>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",s=e.Element[i],n=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,n=i.length;n>s;s++)this.push(i[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,s=t.length,n=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),n=!0);while(++i=0;r--)e(i[r].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),s={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},n=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!n.length;a&&(n=s.video),n in s&&history.replaceState({type:n},"",a?"":"#"+n),a||t(n)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,n,o,r){e.GoogleAnalyticsObject=n,e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},e[n].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=s,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,s=arguments.length;for(i=0;s>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",s=e.Element[i],n=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,n=i.length;n>s;s++)this.push(i[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,s=t.length,n=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),n=!0);while(++i=0;r--)e(i[r].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),s={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},n=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!n.length;a&&(n=s.video),n in s&&history.replaceState({type:n},"",a?"":"#"+n),a||t(n)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,n,o,r){e.GoogleAnalyticsObject=n,e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},e[n].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=s,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index eee24458..5eb8278e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -58,7 +58,7 @@ - +
Download diff --git a/docs/poster.jpg b/docs/poster.jpg deleted file mode 100644 index 383dbf016e1f95a4cb62e963d64fe1a432de4212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174832 zcmb5UXIPWj)-W6p7^+H#C=MM$4Ix1jz@bYTC6EB2NC`C*g#dy&N2vkSFXo8j_Fu!Mn(F^Tp^&XLZU2(0 z?u~U*w~vbtRfm~a7>9t(pz7!0CT1{;^YHUV>X75UDfogZ1Z)h3BVgtTFhu>|pm{7U zo)m__IXL}W)^X2T^WTd~PEIySHaCfj4>vV~!{Mf2h$#eOe2ih7kP=G?x@H`kp!FXP z4xtGl@sU?3k#Vu=e{l>7j!UFiYaVO*|12Tq3Ksi6jQ>|_#l-xzu76=CP;jCDRpWof zPVh{*5^9PIO^8d34+%X+*ZL3fvF-lvg8o80)&}7a7m^qg8cRVsSZf}Sn2;h#2y>Vn z3H#2jD+B(4C$88AI32JX^cERF5w8+>5N>FS_=znM<|4VEBf2Bp($A<<{ z;^IBy;-dfKJ-3KBN?bxj+!b|u`+s>$T^}115*ho~Am}dx|6AYC_{gMCl2d$KjQYPU zgoylKw6K8M!(k3EM_UIt{I3<**_&T*1cS}Z9c`gzW^f11f76owm(~B9*6II~*7R5z z)4$yN|8n<#hK^(Cujc;*?{VjU!ap?jIOgMzgZs}90NsCuEP(X%coPYo04R!_5R;Sv z2uT0|Ld;lz@INF0CsG&w{3pQ3^*EYhB2z<2>cJ`MC^yGTF_E#6>gFb95EHNoL>+uB zI2ddebpAXE@aHPP9v~$yE+PJdl!Sz&jFhCzX`t+>lc!{VR8mn;)l%2f(bmw`(l@?f zW?*Dtq^)Ca54EuT$}~&IA|xd(Eqh89K0ss1%_4F8=298Zdf{<#8> zJ|P4UK7Hc!v7G`)#=#P>Lau^zsWU%X+uRTSpqRc=5zjOr1X3NZ+dvM>1 z_Q)%nae!R6s@g#waQ#r#RgY4!=n!3D=tX4b)0vc#S1az|Si5fFN_%3>gD}$Mi)W5Y z$d7T=`6OaNR)QdlmHT|p3zG7JPkW?IM?ZjL`yA`CTZ58OAaPc$o4;{F_KQZyf&^!-NH z<`G}Jc74etSuHIO;tq6oQoyn+aFw?TMhHqOy@_feNL-E#e#+mGyA`krIs}sBUdIIc zB4;*5zStbB`_v~8bp}RDWh2}2i^`GQ*~D-we`uGhj;dxN14%Zgr?L|p3^kq0YKTYM zCdo3z5e?%p?$D!uoOPAjoMrV@gq9jQO==$!?yQW@_GDYw3-sqO!|&NvCtvWA%?v%I z!cw+!k3t$6b7x^5lmd)d-%Xp!sRNKHzHvZ6Fla8`YLDEy(WJxL(-b9-z@u8mEgy_#)MVO4r?dRpQ_gFJr!4b<4Mu= z?&*BVQN!xoir6xsOMm5(ZZZuIHqyo8YLrivJX)5SHS=sEDdef@4H_&|2b4Osk6hL1 zG!cyEn`21&^&Wf@xNhFic_&vNon?zw#I(+#C6}~Ud>K1ogonbFs)ws8fQZ{ zvE-_&T@b-?dx+5&U&F)dDp=m5+Zr^@6|s9lWyQqw=ZndykdMXb*9c{0+%w>`v2gzw z{PVT>9rf9?Ir~!(7K<0?4MTLkJBs`kR>Y@GNDz@Pji5p~dp&8-lfNCFD=+Tx<;Fyh z%^GS(F^xE+ePYjYE2u;Br4em3a=u`~fkrmHT3&AH8)Kf^$%-z@eCB$&5?IteT@-`8 zvdfC^$=3xJ4VF*)?I!w~iv%U`#x6^LeLKZ7xjMx*nc8!CVQSLnHyN%II`FV&4gOwh zp+SZ%T!_$hUV;5sd)dM|sTkTH6k8hZIUYvh&AtqkE3>QhY%nI*oNVl|llJSU=?XH7 za}%b&ld&q|JjDe=DNKwbeW2P%mK3Elc!rs4Zm?cb zxsK=X4uT#L#6%@yk?FsDBwgz?tr~NV0YVyAH#YWCxUIm2!1y+g0W{$mD>$)qgJBWW zpN)My72@RmWl}I@+YVy+8O$_du#G4`#)3AD^n6GMgu!Bbs`G=IyFdGs^pZo^_ia_g zWW-OX0~%f+(IpKNerA}F9%E7WqSm%VnY~U|%X|;>`L}a<3tW9oUA2mU3Y}l0_y96- z@RZfo-uCW%WtxFS{NEdyy*G`1yDa-Fu#-P=?+whMvaGV>Joa9f9*{DvXY(WvP&sIwEcUo`>9&)ccBNF!_iYjnudElbkzSmBV=-3|L~Mh^)T9B~^r2}oO!cbT(uf(|vnL(Rx_UbK1bNj%Ac5phpAljgcCTvo>Bl3m48Be* z!sJ?FYv>6rZCZ*FkLKwgQWBgqy`z3AxFF3Vw2id5$tVpYThgze?R_Q$$CBJi`l;*) zCnp<(k@f=xAxm;KUuW3BUHEv>zHx>&rwm5g^<_rew_gkyd#|J)piw0 z91Gn{X^LO;PHPuyYb@!EZhm!%cu<`alRx~$iA~=iLD`%e8`FGIp0kkCF6a}dep}uR z^&5g2h3_i6v$9$R#(kjG>hyWQ%v^#v&4y=eRN#&E&=;k89kY>;?o8t>Hu5&Pg;SA0 zTHd`^QlGDF(cysqMRjb^cg59h8B-q#X%<9~uFK-DHmF>$&8xuj@ALw!ER9P0ov8N) zqJ&wszufPYgoUWMw=UwM+-wCzJ)_dXT<6cQr3-9MBV?G+Jh3oZM0k=o$CuI?G|JaV zGq?=j=0jI>+inmZEywjyF#twSKHsy8^};;z@JUkEsq;$V zo}{f&22AQj%rZUQ${b}}aI(cRq|r2?y%6cU>Y04HL-R@@O|HuNZ$AaPpBr%lr3cC6 zfjZ--uS0Y6LGiX?P$q75nyX8fOpIUBoe6QE6r+oFx*ImR)jIa6&*~kB!IfS9^8B#K z_{y5cpF*bIFY8m;ahIT}BYE+2m#tnwc}+DhirzcT`@rj5vHIO%i6NC8cw@fCr2Czh z6G>fcoh!c>A?#EA-Ge8GM$Cj+ul>HoIYSpiN6y~{g>Df=@4e!?+n~TP)cz~D97`mO zks%(nBn1Q6mEf-)m(1c>)v8m;^_kU{mrR4MV{f4UY&`zq!7qQ01D&aX_xxCpMH!V@TEXeY?{#5_E zdZ6%6uurAEc+PXqryq^w_sA79j0H`$PngKs7w7~zg1)#YU674L*~zQB1&TaU*{agg z5S56aHAxrT^#EQ{)m=2HTjKr7JcGo#cy;!YRrO$CnQ*5LMnST~mCurLgHu~OskxbF zyucOPCBBT^O459Pe@c((*{@v8q~~rVDvV56$aR>H+CKwUyS5$k_#YJC@PSW_E!Afy z8t`522vwzT|A2nuRKH4i_p!a+$u;lwwa-UuW~m*u=N>_zX)8!#eoI#v&>u>|Kd|bJ z+G8o!a<2Xe-g@BEEjNT<6!Qi~%yghLy7WEPz7Sdm+C70qhTAZ13AG9pJ6SXsbs<|B zn7yEw3_-VIaE?W;W~&s_`Uygd-UFkgR&S<^EtMm480=5)>TUa;# zI~)2HI_Kp6l2(GwN#xCNvX$9BYQd!V+T)MlY|j-QI{5)rwQFD5jc9W=l%bqbHhI&8 z6?``8rY={Q*VU z{od9z_E<}rYd(U9#%#Vy>(pVRg;4IA3oqP?qNZ=zYk#N|B3DkvlswQRj_-`y$QCLR z?(}54zhaiaKlSNPDqqByDAA}_2_)w@E()(gpnW&925I^M* zG3)CyXCo}gH|TyU;{`A4@eAF!ADsiqgU+AZig}`CZkE_Id)-Wr-GL~d`q(twru!-- zx!W{>cNK5GP?H-h6;|{rq4ybK;V#RcMiys` z>fYbXkGuF~j_vNy2ZZSlFXo!v69XIT@51Q9QBIkSsIFYdMro$x1paE6?o!JXia~3a z)<5Au3RDGaE}0aM7RB)Tz|liYZKYX+c@^?pDW1nm7%)=6LMD%@DX+*SF{Agy8h7u( z(k9BNB^GE~)_{f9y8Nq&E|Dh3OS95NOQ=o3lVqRH-L2YZI&s*kYJ>++&Lx_$3$w^C zp6=;f=t?i|Qs`IFoN8;)2@E4E6Jt{l`IVe1`g9F?lSS;^&R8LK4&W#9ZE-|Mq+$$2 z)=Psbc}3mL>{bvrD{Oiop-=HDkFY{ADp$Q}lIlI`9#kS3;-;z!=_IAfNni#Dd47j8 zil7u|PE-`{QVZ(YrQ6a8`>0n=p~;}pDb#q0JkGyTcej)w8<|zi9X_;d;wXi)1H6G< zf+__eN!9A&f$J<&^K;qCKl#e+@(5oOwr3X56`$q?ThDH|z1UEt8x0f&z`zM|y^G_c z?R%Vb@J0_Q&t7-IwmuTxlT=4-O-pOZQlR)cVC_2PRaNwrb%ozGr#Gr;a?#Eb#C3JK zjJCOClc%KT&9K|?P-DP?bAzfHgvzafNKSqZVvu~3I3n8hM3>59O#|M{`-xT7n$~!? zdjv7Dq(&~IQ!rjrH+eL%c)QN(9E|-vB1Oxo$A%Z z&vQTe2O=?J^^A=PYW9rA-Rim2<$^r6wO-5z zEhuZW%b*P-w1AsrHAvq^2{-4~JE`-1=m^_J)C7#;c)hmq!UKX+CMZ14B$uPxEm;q| zRY)aiX|`N)a-c=?3C*17X#0@i_l?g48I!^*Rwv1*iYv&79Ql?kBylO zwFdlPuRI&dm|WK@OKSbCC;S)c#`}Iwn4<`zDi!NBt2K8C4-;QtnvYtaKSS0!=uewv zPZcCNK7-}<$AiIfme?y!l4q>Rlnh$^YNmM!Yg6X!)rc7km<#q z!j9U<53iHwx2^uUX#cd`5fZ(P9Pm(Yp|IKq9_SB$7yf=RS(%h<>pf=iMjQZB6$@(3 zr@o$>Nlo0|ZLB?%~QjLhMUR=H&U{xsr69RwL zXW8Ah8E2R1%BYBe8yba6Xr0i?$OO-A+K1|guvO+%!v+7S^M3C;ub-WOik*g~W7LDq zZH?pEs*RWmv)t$1>6G*wt_dxijwDV<_3{4xxmRbgyus{zs+{zbWHH)UX3>$k2p|5+ zWu_R@>Dt(-+f0CRDuTk|<}AaSDV+m6=0#+KPZxt5p)$(sz#lm4z(k~NgKp=nZoeB$ z9b<0ST)aPX_s2&?yT9d(B$T&P(7x1uL*SM-|7v+NnNo-_Zjo@qtHVNcA+4}n`nhRQ zG4Oc3I6E!FrUk1I)?8X9iPF`t{*4gs_x*7%t8;_U$O!_w?`r74d`mORRoLcLa4VC$ zn$Ih3c82l25D#39AZ8B@7ZM{TR{5W7u{S_b4IB>DBg@rhdzf(^|I z1NUNPCghP-L3dD{yR2Q(n%8}Ni44)Rn;AW&5)~=u?tdOG=QC-Se@e`Ig~b!67|6bb z<`1f7g3HoRpE+P#3}<7F@(anjd0}X#Z|cMFs$PB#W6@aE zkyok^8uWw1E6>G3U!@wEJkyJ(;_QzJ=<&Vo zgBkj59|gMR8x^Q@1i$ExXam~NVH&E*^ieoS$g>HKF~6W$F<|HAFhF~AuH0Hdw_^kk z9MgdA-WF$&O~%1m;n;hg9D9?TED5Oqt$|;^72NAlWD%x_Zsq-q_@3)UCCVlTA(78g zCmLOHrqSvs!QLV%n%`4o`6Ap~2T##Ny*K#s7QwiL^PTMsJ2$pCt_1ITUOE0U%rPi! zx<4uAU1bgzh8I(-_9;ff%nnL;hPY8D2Ep!j{OLSfRD`b$>86brE`_b?shinzuR-e; z9UI1fu^oAQL&&hWx)1g0CkOQfqJZ0E%}IT+bDI;OGzCt+*4B_EGuMb?PO7QH*AP$> zIg2K=Vqy`!%9zyUJ%%ESg*)U#uWtAGq?FB)OJct^mZhqk{#p~95bop0YwmWy(+);b z0(|(S?cIu_$rqKJmR9B@4Q|d+oDFA1cM5^%HwI)j_9U0j2v0PHPM9XH|KO6shOi{q zLi+mAO0B1JB{eYMx^z2EJgd?SHk2zaAlT)0bq@izjcB_GjOuchVOKWF{Ad53Kz*6J zx-xg@;;iVwAqk^KS}rsq`VNbmA>k`)Q|Kx3ULl&Cazw|m57t4PW^qBG?3$|h zfPix}1yap|-Lmg#3bL-%sN2pY`F+awA$QQ7IIEZ7N0U?cUPKE5s~_)ibbZ~GsBZ}< zv#!v@JIBSvo?N?(oEURB9z*#2?gNjLY}Nb?O8uP)h_}Py>Bwvb0cPVPOmf z88OkBBQ^mmri5Z1e%!7L)UQ8D8w<^WCCRoJ`wUJKeVk8E@*C;Z8_)YXMKz0!|I^11q0#u=sWk(f}0j*y9)#VT;TN!1`i0~z~$`<0i)WKvC4@riA3>1m7 znJ-tf96t0oFIguBoQ6Qm!r-eBMBMmRWZtm~lO z9?~u=b(S41-R(y*S}*t@R3L3?jnNUg8$S;!YUjDc;DhFGU6;8lm(eG~oq?9IDut`S z!c4Q5=5zD8{SOwb)!@_@pH|rW=LIR>Vz_u>gM@`q>m5P4F)8B9jhBdTAHB|BQug~y zDe7GN!Zk__wtTiI0GuqI_KY-}-VF=uuB_o1Hli3nt$I6FB{m0|o4X?&*x)T4>7#Uq z-XfDRst4-qgYo2e6Ypj)1|_&Gj8CPnYFk$9*u~zHIT<}0?`jfHi&}Qr?M1j39yE3q zdz2Q2A``uQC_Y!lyU?^{hy;#Hq!!%5eHKpS#I~J{CJHMEi7HrFQxbY#r3}pe?0a*& z=>c@TIV9G%&un(+j6od{qC?1GhS-}nj9$O^b8#;*WpJYh{+mwK!LPg4>)F4+1W9$$ z{lM89Y2s`MnOP9|$ZsaT(~+fVsApf@)?kshxNVVZ+esQ#@el!+IS`*I4Am{j&fZ}r z*5+^O+(+aJNAR7(cx7Q;E@`G$l`2&@!&_y3?L9dU>T``)NRIBg861s%+1pH_f9S@;ZHZ(-;`Ph&p%A$w9_iUap6~vvYll5xyITsv`A!+hn5icO&w%{H?e+OE)^Ew{ zQ`>t%ZJ`z%LSXC46f>y4>*wN$$QrcQU3OkC;o*K?!2sjk`&oaf)^ybP%EX1kaKi>| z{xZucvb9S!@Rg)!>oYFUdq`Z%Q8-><4%qFN%shQr!359z5r45cZ=;u%aMM5+j zB0PLLi6Ko^Z<7t%rl!g*TZ?;Il-7X%xhgF3g06H<<%5D$;A*Nw^yF1psmnwg)Nys@ljteH6*!MnEgA^46*ah}=%@k^?hKTy3$wdN{GtD*h$~bvR3TIL3IR24cbBxuEGoN`<=a6> zSuLVP2on3Bq)rlSBOP%wAAC~6HVxg;YZDlEJ#s^pZiHq}^uz~N7i}BW&4wt-D}?y z4*ziZnU+8J_zQ6RwOI=~Gv@HJ8`(7E>^0$}#|0BC?Uiaur}oyMs+wWK1VRxY37H-> zD;!aiY-at2fYfI@LiX_E?!Ci@7;Ho?Bm^KS4Dru$3AZ6^)TFFSaYHkg+ffrq2q0B( z?rFewxn*^CKUoWwjt^Inqv3ZR9}PssxT_!{sH!JoTAwv&qa&f(6 z8PV41-^dG9J|_OgOBExVZx=I2$F=J2;jNaMFWas;7{moWn|#B+V`9OI#s?pTzFpgX z<>BMp+LtA8`usKY(5$bpEheGfv&pidLofzi>7GCWx3HQsjS#RX!N$7c^bSiDcT3l- zr6_90(ftgHtP@JpaWB>?E+@*)3z6e-9xeq1w}l&!L_Bz6RUZPR- zsTH)ht!$`HEuBVK9D_c9gcWqD;&wJ~Zg^Qhg%tz_1HokMrF#x-xfaZUx2@Ne0!-8> zclFa6!Gss7XTJ~O-OUic|ER%!`J^`a##Ku7izj{7ml{(Bf{FL;%;1RhebdKBe)Pj_ zw<*@Um0`0Ut$_Hskd7No+O65)u7>ig`K9p(|bfVzpbw-YlF#ez}ZaX zw3%gLM4xu1IhsUNA5ucN)qiKNRR~Eesn9Y(=qf+xPA8{ z%Xf$wpQEbflt;tD@2Y>kItw=w<5LgB$RNNz}SWAgGSqLQUkw^!ouP5A!^J z89D=c&tJH4bIsp;rZ|W@bAU+Lw`z;5RC8F(OI=K?o%OlNe_7T!-#>G{A|$?d8V`{Q zh542hgdH)2+c4lvw^KIWqmXpThvPP|2=`kR0Gtj2CKQ+{E)tMei7un=df^T}&)#A6 z1u09HAX{8ks4pv`a&uC9=4g~M^6@PeYB0(Aih>3Ox1eF#{PV^|f{xHla-&!O`b?_h zj66Wp;1`-v%~8C5zY-yLjeR4v#CBawE&|A0c zYz4c1Ub1;mSzVxl^kzBQQVs6a1C+f#<>Wq8c!m+mEb-`keuvw!q34n^pNEc)W%Pwg zGllQfsQZkV;EA(?3Dnmn(C?)JhkD_acM0yZm0%%z)Mjf4aB_LZV)-?G?tWEPlLl=f zEcK(w8NTw;+>eG$z9g)%PszOGKyrvx)hg-l=UNR4=u_3lL=`7T< z-qf^qA#Qv^ytbTwpy&4_oOAI4U+tViZ_Ib{++Lc@c9nU98CiYa;eARLe}}RctZsdqJ;`t(wYOos1aE^y095cOH~o;g3Ct*UCN}B42&Y&x%8-f z+;&q{7yR%#xi`G@$(gn+k)FyA+qKwTF8BCF-t^JF)i*(7`va3iDvYqzr=un@Q*#Lx zle%ahWR~mKo!F!JcBE#|vbusP*GZ1>!d3Hncjs#EZE{=A#&zWhK34&&3+TCaOLt;_ z!}?~d6uta8-rDphJ9`r7A7_qlcT#t{(}49W|2($C@|43+_0*-#qK(p+*e`vBt%t)4 z4IaGxvDwX~(zcQtVaW-lUvy}fy42KC=729+jz4&El@(AB9pRH9O*g1Z3cH?;o{o53 z8|JymV1zvp6tP9_y5O7AR+1{4i`;1{PWGj}*<}!e19!Vb4O>@&X|@ls?iE@JOJqK+GS$G_}55wfgzdjg``LJG(nl zK@kx8l6mAAT#M}9+hwR;(m=}U#@bu0I(~{*>xRZ_#+M)OUTlLrG`1o|lw%G*pi@hG zI*#Z%XXdyc$EMa-$exYs4&Rosnmu>J{e}l-1t|n`zu%WjLx(g(5IEZU!t9MDSKFa- z{|n&(vulr3KYdH87AR;5)6ke+zm?aq@rP#!4+-0~uO6>Y?DBzuN_Gmnqp4vju-5A2 z#0y`R8_BJdwGfXbtEJHGDMZ4yb0S&0&t;lxN0-*%(K^Kue`Oqdk>HJo4ba)ho9c{Zo2sS*FcNd ze!I5s;lEq%?)6{YTg9FI4I7?U9=UBp*Y{Z2ozO@wXti2P+DTvs5PsXAwc=bExMT@9 zH>oLRebVP~4*4_>=wVL#kZs*+++gZgW{wTX-EXRSU!L8hS59}8YHD6yX!CkVXgtm> ztP!Rcuv3bO{-&)1Sc2(Q`z*?$lU=5phEtPMRFo!uMrAbnWa5H$c}%o@;%*9T_xD6- z!E($!pjSSi?7ilr$Aj3(sDhF$hifhcCVlMWnY{u%W}gLQ*?E0$@bRHV336e=dKEUc zyLwogU3>=q?qh90;Rnx<`;DDb#E+Yi&9wzmdPcmmj0L~%v6fylHJ09Q=K|h;=EsEB z#_1`adw%v{f2zs6EE44$eWQQ%!<@-Y%3Hx7elOn6;agD33M90X^RlG(!EDID%-M;3 z553s5C^F(xB`2OJmlQ5-Dxd79EM+jkhNZJTf>;@7dnRP!4lWJ55l` zrsfMHhQGh~9&p8jzuk7OdZWX}6x~1hte}nX?cQ$v;8~X^s$2UP29T6|h#*+0$|>_n z^~=^RdA(t}$-N`A%S|tnD=!bv@9bx&{n)6JPw({~*w&x?wPU~~_U3V2O9QrC8!xEi zlbWJUV&u!!^lG448F-qP6~iYn852E_Kz;Hzmx?MI(wA?SE!*55*q0+F95x1a@78?W zv7nI4vBR|Y2^+C+ZjQ0L7jEMgZ-*tR&E(AT?hNZds$`wKN^$Lw`3BotZB_X8U#zdc zI(H8lqb8gBjpjdy8u)!PXE7#-K`eJLRLbGUZ!a79@7)DbsV5qerT;);~7(cjbJT^7z5R z)6h}#AsX8#otBZ)P+u67i;U2Q)pIP?!%TF-JQ3CZ*!$q0#amLl5nj2(IP6DrufA?` z+a6dOjq*2qE4INKF_H}2P<n=68K(G~ip?@8GEhTnRN~ zc(=R-$smfqYo@xx3|he_^gCLEl*$oqrq-s2Eg+CxA>t>@O&7)`U0r&x!Ba3(lj&Lk zX6ucw#yaIbm+@2EK1E9QSCWpga4MswBk#&Czwh%K>kTp=$)AEf)o;iRUZ#*lxe?1< z=Nx*5YWo-)}DQ;mjT?LZU5&O*Wr_ z^58}u60wA0-DTEy2ytp(tp@(PpY_?_1#ORCqY=-kP_r!Es88oXA#db>w@7ldW$B(q zXps7f<62v%vh9pt6K(G^6#TYW$ay|+Xma~+_kYf=9qs?RH&oofR-X9kANtMV#U_7} zT1yQ4j82&Qa3((5AoU`WX|AvFb5fJ;n?{$m@@#%a*V&5r1m5aQ6s_wouR#${ib-4v>^ifhLx{KU0_j%?BuUf{nSi zjLmMHrdnW5$ecV)17FITyvM7&{*c^Iv$;s;DGl=yXZS!5d-kTEY2MN-_rgGb>h}F4 z%L02xTw-^{Fl%jTs<@#`;;8tjLE!2xXErhBN2ITv5E;#~ymIi=J~C~xB=>E`BI*WP zGtyYZEw$k7w!Yl)Tcx*AK`QnNqJRwjXW1?JnB3?!@TkHyRG`R`e~n>_y@9*9bfBS4 zYsmBA6`FnBxb2jR7U1+7j+DcYjEH8wg7obx+)TsbD%j}g;C+iCy(WTz&y3(|qHC-# zfzuNaC2sfFG`Vtlw0*_i=go&V2LKqFFkgr0(kcxqaCNZG54Wi6yt;L`rVkjED9Ji! zJ*&bjn)7&g`l)dyq>R4MuxZ^CXsFXEuyRG>U9kKT&4o-tDbUjnEZq-s&b_SR{Zu75 za8x2^cm3*9Y4EtP%YuqJOnk`0ITvFkFHLKK6J`U7%Uicsh%VGePTi4_ z&6vb*ydCSpkF_^-jcLQ>lcObKX4KOy>F4f)mUQ58F+K{%{s+HJSGujcxW4?Qp;}56 zyi;lz*`!CW#!tkjfXmuN0dJ9p-k;JXoMBcKfwzPRn3lMtkJv`Aup+oySk*S&LGSKZ zA-Epw2+6<)Q{)Xh_Y_Z~-O9!_+4e({jC-G7>!urjx_QdFH^O4OW+gt+U^ zIznr>mtBFsx@*{#|6$|ZKFm6&>6E8s%zD%LaOHKirs;wvJ>S*c>cOj1{UfwcwEQVp z-3gUZ$%?=!%;0^?og2h#pP}6xo?V|IsnNgM)P>Y7NC}uMY4LmG?q6+{@1eJ|hzQ`C z!>{4gjS{(t;9z&oNheOFo3vH20f-}kA2ELa>ei@G+QT97M(GQCy|~LK?u$XeC6o2X zoA(-{0_EO}D(iN6P;3vt&)Xa3E026w$Cb31UIvn@j;jN3%QMWQ^Io>TIK;gUm}bJd zz49-UM~`P~lZ)$?W0NCKw*8zLP@95vxi~!0WthJ7Q%tIV-2K=0Ee<8KOxmwr`(x)c zU=)n68$#`W{hPtpO=F+roc+1t{)H{J!cc*(4bu|$O z|LVw8CD_|uMJf_HZ`TdUNJ>iiRYXkr1=J?}PDyBAEO@%R-Bzu^yYjW#U*^$~wKnlO z{0MO+Dn81&y8F$S$LIU>eUg!u;h|YqFp^`YT?I^$X^&!uw5> zs;3e*D7$CkPXIJZ@?{KXZeE(Ze(}0-al_0P5^`xf@sO`wXi|ho3L4s}y{ZP`hjD4+ct84r}^)=%y*CMAubl9L!Ikqaf<1#M;4$1bL?S%WV% z1SqO=$>kNXmw4-x`CS0nmQEMGT}PDN^puKl2hr(5_(+*byVOVLUwl43kF>wQzawid z3|{D3+}MR*hkxCD`SmwlyH_#g33pwB&H4xLitfHEE6Lqrp(A(8K0iq?)ZtHsaV_9? zaf>3~;R8MgWnQzpfk-FfV^2Ox5yzoO0eMJB^>aL{huqv$alJNIOI|H;% z)hp@*hTOna)>MX{{WY{>`p5+6Ewj`Br-D)}v8@Zf_x$+|)7*RVR_;j0_1_~qyafrd z=naoSF(jryI&68W%;*wOBKW zBTgDTai&5|XHQpZ|9t$>Iu)MvMtmIn!C*>YQDjeFTTe}c>aveZTFXt zd&ec_W8A#$B;$TGR>-G~;v#LH^InLR=8F({yfd(LU_dQJo;7>`Eop2Tp=_=AitiMA zT5Ru?P3ax~&+5MzcUc?ySjYfD3rGVRS>GXm*_st5u)vxAQ~`Q@(G$r%37<5 z)BRXAC^yBg;@9}99zE`wKU@vH-D2z#VUKb?!|I@KQs}V^l z77bBnh`;k}t?%Sp>NF34Jddy5Xn9F6k3e`Ip7u6Eq*;M#1#NNX-TT#PN;s`OI931G z`B5>}&_*dMtYzi1?@5!j=HQSF`V)OViQ?Ds%^7g1Pn=Dbm5fxCx#U9w6o;ss3U#4nd_RD8` zTa1hi8K&De^BT#a#FuXx4=)d@qJ6e_2 zKo=1_2|c{5)bE9G<1Mp-m(@zcyP}$~onNm=D686Tq-t*AUmdPo&Ir6ei^G<~}g(0b#DTBEi<3+tD zh$?mBNJURMf0HB~4lI@Rmrwp~73qixuB4A>F#{zUF8xF{F6dF)W!{)vH=UIpW^H)5 zD~NWYe6@VS{VR0Jr&NeUO$F-diun>uP`XjG52x*tPD|`u(&HeY%Cj_%kW$eaIPf;5 zbf*2@o6?QQ8$bQ+hsk+ifV*Z?-F#7%qMemkOKAdzuJW`Fhi|=TVk4teQFEMxW-Vwg zJd(=OTQ76;sc2WG)s9XgZ75sjQ8%3^PD zb^WkAR=2IXJy5t*rp~@W2JPJ|oC`A6AY|!~k`UQH!iJgwhGiZo#`IGn4 ze-9Di8Qhxu$p9`s{XFbJp7N-;z6v-=JjJ-yQW4X;()TA+7qhS}d@^AtGz|T2{Wam9Oq?H?AZo(=MVV-(b14L0VlH zs_N%quaH&xwzHdqzU_h3a%WPbPGeDU&9uU^3iD%mM^=X=xCq8xoq~HO1D+`gZam#l zZ_^evKQzv3%g;5geK8Iu!f|Jb>N=h|^XGItr7zGxlDp&McthL})yNh3Lg{yojCzw6 zD{5^OMGD5x^fnZi=D4fazR6LVU@1HUNz)}!3#9iqdTs?yq8vt;9Fc3_A(W_$zUC*t zh0;!o41jb`+Cyl+rbVubE=QQELew&F9%W>;@I|al>$fXPzBY5w+Q*5kQ=UU)%Lx^& zX8^|*0WM$U8iW&DLU~jYdsX42fzE&t1{FA}=c90F*Uu2JR1qB@kRVhpd=t;NJ3?l(lk_zoWdzrhJsEfz=z|_C8u3f$~CwiaswNG|pSX_j?NpI1KDz!l4 zrO&e6TIRu$`6l*1utK_1o>gT@=aJ2F92uZ@y+(HCtVxjw+F81a@o9YVrO&=DB&TEWbEcUgVk^Pb4^0 zBe;FC{+yXP?s<$KTV%ewo{)a_kBDw?w}amC1D3mrQ*^JV!$*M|JrMxd+0MtPOu2^y z$(?zWvZs!`1yA$4UFWy?yb{1 z7NnXy<)poDXpd+uisOErrb7(j3qCjEoxnIz;^FOGHya1cvFN8i15; zaXGv4+?!BX82XF><}#rr4Bjw^wQSr45|e%)R@6anU+&`a>_uw8&OF@IQt2m(RZ!+} z?98v*Z*4%{{rZ(^mTzYtJCRsI;1r)BG1C=iMjMb7-&^ji4qzQ|wjx7&b6{f;`#N=q zv9=5WS~64cN_qZG5Wb*a6Ktou_7B24S^l}77xbZ0Ay{CCxAWe#b?-{759XN)Y$j^q zk^}9W5)GIcD%+x+a>f26Kt=Mj9D$L0H**-=+fh%?$|Q=3cDdXHDbKWd@bJb6up*|| z<))5}!vEpuy2IIA|F_e-YZo{_|efb3LEuxj*-PzxRhV=KU<-nad?ug0!*Vlcv)2 zCYjDTrEonHhSH}&T`kHSkfvXZ`IUE@() zEYFKoscB2{KGnH{rGv+}ejj6H2mkl?Uk?jsz1kg3d@~h^k{VR>y?Oz#Lc!4b#T~6k zAr~1P(JXAhKv6yTdO)IShUJX0LBRdoOOez-s=vI|!KzP-F9$dv{!C{O(gK0)poi|L1ZQWd}>_ zJJ!S<1RT3Re|7P!-izLO4Ea7tICq1qEM}DJ6^h$K1TLxKtCIdfb-O@6EuhBTC{a-7 z&7B!`PP^9QRq+3M?wxZEl;yJLsI-;pYiRK33YnPvJ)Gl$v_YM}U>Tf|a4!EhbTKQM z|L=NGrNRv;G$t+1Ync2(!9O?ScVfwljKnh7 z19`2bH{+u!&_62OuvhB6v~{hvT)+My{DMB(Q%%uX81?r?82(jU#ZA2?Y?m&GLlDDf zhv$W>vdrNZ8&cta{gZ@B%Z3NLj!Ae}Slh|Cd0+LY=rgkKNeO&tC(J*90A!SS+aZL_ zyk0V_<$5f{#K9&1fIUEnbV{h9KH+;-pbfg;?dway(e%5blO9!q9Ufrnb*#n&(bDRs z%AKqSe?1)v5_0YL(Dh}!_pvQ3`Jv~O+-5pf*IxWnn106lXWO9vSr{ms51@}4<^0CFeqGoxk9ZB#6LX{a&-KCO z#zpa0!fLVbAF$V{d0xXg=Y9Xq66SG^^L?8`7iRr^?e`B3x(0}k(LYB1V)6bapG1ae z8kFfNm`nZb!4IyLe#O>+ya0Ra-jaBn@m|GFT4x08a!K%drGWzU!Rvea?}a6xqe!!| z7*Rv9t8!+j;37nRiO-p`k+BswJkkxiDWli$ynH=U%VZ6&`S6jAY}MkavQAjuX8cV=t=_|6FR}v4Qn_3%D=ur%9FwWu`g5Lga^I(*cfsh=2QZtZOj`{P6`8o8v4d3oIcHj( zry$=$XGew9h2P&1FqmsTIaxhbE@$oJAn9laiLc^zx=x&z18wWB*`@E|(f^G`Q&W{!^^#F^Y)!`_6?2 zzm;7TR=sxb&vSYIdsFC^VV5NNB*i1AolmsahM{Fx&KIKIt^vO~gt~}!yDD0xA?M9y zsA4i9lQu@)5dfC-Wad7>+h!!2zcZM;?vtAC6@zn{Is`Ll@NpydJ0No_ouij`oV`vH17Zm7O%erJTO?Gjsd9cn&6ix0zTmA=BJgxUv6%tXsQA}a$ovl}GuZ&FeMmKGX&}Fr zukRZs^!K4vS&HmZ`k7>~u>H*vt`GA4J;yOmNUv6O${sdp`{%_PlNdhWctX?Rnn_+P`aH${l*m&;|>Fp1`R(eYBhm2ac?t!%0CJHnTg z?t6LyY*%bD;R-*pb?nsaK01t(&Z0bI?{J+vdw#p{|6w2hpXu@2Ic|W&`8&|xfv`U= z@aWtFDgTf6qV8F?$Cb0hkKZnyo3LAs=Wyd?0EiFQdym`AGL3J)DR43;XuI?qGx?Vs~Vhu`kLDh79-A{81IFPRBbBpC#DM_PfAheHo&h2vd3+r+0> zg-0Wl-7aa`M5({2DKPtGfZxJB_J7;d+$vt6vpw2eFmDLT{UPL{G<~&px*LF*1F8BU zZbc2TAM_R0q>9L>Ue#M*@*>rlZj}Sw_C=Hj?$e55#qe6gq{KoLQ+Qbn>A4X7wehe7 z0+U?tfRqcirDNZ$Wj0Vb`H4UavlFDGy-OoHj+M%98H5Hhushki@Y{M(oI;xk!wI`k zQM!PY@-nG-WR)Me*L@>z;U9P4WM<%49o`3fg?{*%I_jVeL_q3QhkuZOY4cska_-c) zoHVN&^bashT!B~eOlMhH4GVxf6~P0mu|CXy2^fwz=pf!oquG&_wBm(d_b z=p8b+0>W7Jh&3kCq@`^#RHQT?YIR?Q<%QzdRJ^sp_LS$IVHqP9XE*}H)HJye4eNqCZ;lS-s-I_l1)+0;sprA1hvilM7oGL$pI` zDqCrMZk)}DI9r9=Z%wGOPs@3T6d#V|<1Z)T=Y#BlE}n(eI$A&d1b@h+>6?g24obM?_`aZtK4(GinebG0JzMSIrFMeSJzmZ zT+hglx07H}Il%f1Y0)i`lfM^+v!7wpAaO7SLC=Vsa)~T=)x|zL%1DdSwog=|j0t@C zz#lUO!=vjwMs!xhu=6F>*2^XOPZ#zxpyC10b?`WY_RAF&9#Hb{0rwUpamUqDT28T> zqU`>A*&!-wkFzZeP(?PH`@O}hm_?bb)?1?zp2BF%Vku&6<%$VM_mOCLKjtY3IM*SD zl-F}zSV|S1m`Z-#mX5MQm`J*(P^`Lp)VB)j|9o#yJtAa1iVUwZZ*d4%oS3j*hVK-M z@JPmaJs$3G>t4lx<$mh^9CW+}=VjDM8pJ06v`!Ycmhr;-4wafCHk?WVahTx zgNPTV$c`&q&Ht{B?j9tDXnX@c?xcs;zzs`BYKdgh!w7uVL@qP`AK?a0r8 zm2L|Ql)5YnZ>-gHFlymJ1);jjOPuBW(B9VII)N!S$0Wmu++_}R`}s(%e*Qn*2%Xgx zJ+EKEP02$=BdK){=6e%`pf(k{USLlhbrN?8GM;(!{;R=Hb}Ppg)=qRg_dOB08W?cHFl!_asG4@$dDy74sjrtlq( zfgA7_-^o=Og()c1?V<{-)ySZRhR8H^*%M&vTkg@6j6+@!&l9P(fi|&&2aF}EbAcX*)H=@3wVoMeVU{naS9P&qE zerQe8uqFRw2U)kHz)`?(AVigkhzDUko=@Rzzv{AwW<%voINhB(E88m{2-(u{w&GYP z(Xe+*3;h%?}2}c@&rlkpw0J*qrV8On1sEY5c zr~xHMJ!qiLN;R|O6Lq*n3{ftMnU(8-ZKH}*G7T3NT_a5WOYBz^x-u!p`4{W-irq5H z)2vIA)JxGkX$6vBocHuAS9v7|?*_wGNSBVqKN27vqdqAc+qmxk1mtDbEetR06BdOkf+oc;-&jk>?ghB^&dcC8*A`z!c@e8Wx8ENY za!kA_y!vLDEUzEk+QqbQT~X1nS$H}+FF1_+_(W^zl5hJmY);`!;avaqB%`YV!tr6j|S$zw>J8;UyTje*Dy%+ks;atow?cK*Mj;uyida zlIjP~>Bj9X`F$>Ni}_ifp`s4dn$&(2C}wNre_)%Op-Wi(@5I6JpLFv78m(-dU+=? zQFRzgMJQD-j)v>G_+ERaIM{-YW2gDN&2aK_br1@zJOW+lGunO_zu-s^re~4k<|X+3 z2V`#OvL))#31`YYVQy_&s%1dePuERK18>tw0sNMJlW-f~zBT>4*#k3rb)TMp0% z>tc8uSRTF|o_X13C2`op(pF!Yt==7R4iaG zPmhM%d+6?_IF8XVfkN}r@}-+tmtkAZ24|8!SUinh7J?vn{BsLh zKF;kflu^a?_z%EONCd~syNXptoAw3~cLQ>DgKT9yGxfxJnLzZy5$@Z7z-0jA0J%;- ztaE-rvUao6k!5a0DbV?Bb(fLRXZ|k}$Q@;LQ^uV`?~3|47M4AMatOJ{E{l5-^EnD%d%Z_C zM>1I3sY#VbK~hz(5qM}9A|K>~eZH^|cx$?DInYY?hv;9oJVl+znF2s&ifDF^1LC2t z>mf@}gTOtH&Nqo!t@xSvGo{_bRN`QT5}U zVFU$fX=kg&yQf^3JvyPLlI5WMHX^H4TVjPU9i(3re^gu_l;p?wauT_Cj zs?G{}4{ZF%Vahw=DqJO7p?Hd2miFF`t-Cnz=)jgOTL{?Vj(7ch_J0z9z|f7W*Vg=R z!_mVMbpGO$e4UQt6j-b+wC(0Bl6zUPz`!wrx`nHg6@RhkOeUzv2`fhVHt_I9v>C=@ zZRe~)YzoAx*)h(&h3jRsuz2$jmGs<%1*-HCCBY40NAHRH5E$T4sUo|>I@c9T-j zuE`oxKZu9`QACy-&^R!EzV51oP3$;vSw6Q7rE7U29yzk#<%*}D1do4CIZK?uh9=(CW|w9*VP#cNurqkV;fx58OHjRCscI_N-%x;pED*0P-e*eu<+0X<5t(Zrl=-73 z@rV!Xwpn9Vrg0!y#`W9hj0{q3slL+30;5{p4OsWpLqFA}nq7t4?l0mx4-}0g-q152 zS#t|)v?7WYDr=OKx)zk~YTho=Do+lkV;ZxDT3_}0onP1XT48j0lywW<(!}u`n7)af zxe_LuoS4;-d}y$#fy_trSX;vh0S|shb~*9SL*yyQ&v}wAim4`i+P^whhf0QKNM)r< zjf0o-|CtEhAjd1IJzQ1t_-Nc0{$(a$EDgWsFn06)5(4z=L=?cx+#W6ccuaAQ+@7}; zjbCWQ@eK8LVj;wn2*M*V(~AkIC+;uT_3-B4jR3PQhVD|slSU=6Gp0tJ-PActHD~93FpN*RcSOEbskmWG z?9#eKlDu<5g-4iJoZy7qf*xiujcOhf`w;Bvm|!B;)i4@|D*$}FeHB1~UF*isF@M~Bsc1(0CJ#*NoAgP1#s<899xqM7tx8+pQtZ15fZba!Y zOJ@STS#0QVhQ|YGir>dA6aX2hn~*kPEg*RTF-Vm-y!)^}qL^=JpDLP}y+ z@23wL6?Y>QgA{+7*aiXyFO$85eNoV~ab?`G`@h?sSw+Qj&?nX#iw9x`Q{nk1k`XHH zC$`+|M&;F#==4K5!)yKW7MG|GP5|K%2^<-;lnS1tXjVX1fx2j3)+d3=%J(v zSU$7lnNF3|dp@=Y=bPs7n25mhO|u+H4EaVx^_FB&nTenq4)w@CGL>IHMZ-kH(DSg} zdL?jpbMCOwrwB-Z5O(A9FOGx-^mg|Le@^eB5hJf_w&jIuMS?YcAwm5fTdGLJ=TZFo zO{-b{Lixw_@Hx(=CQaN&S9*@1OYO2>(Mcs0hUE4~q#?QC%5Qp)B7s`VOu@e^~U#qiKW1sxop(<^IuUxzqU}%V>6PJetn{%dR2?8(kn8?h)5I0fPd(6*HqE%KpUj^erq`eOjrud z1Fx-n=V-S}v5Kx5R0G(1hS)EjSoHt)AE|8JP}e7~&J3IypU#cb+Dzr6N{9ntd&p0m z?RLXPpPJ-jmFT5OJdkzNZHMdfjVRuZl~M?c*PrHWC&J5&sk>X**`ZS_liR}HMXK(t zL)nzpxeI z_?4jwY<#-hqs+UT zIzO#5P*x)=s})*ozlxtcs}<`&(nY?Ah5-GS!KPD)2aZ_YygW}kkp!*x=0XJxYxH*O zrS?GVj&rL18Z3?my+6W+Q}jm^6AAq29fi2f`;|&%6n~V{^NqCE-7xhIBz(SLMV#k1_>NRV5fpxXRQj5EYNCs@V4G$$d=q=+yYu71f(qg7w1QG zM@o-4T{j86X@^(SON*Twzh8dK`ZIz-)TBiNf{R52KOOtc9eNy&I0}4zy<1#Gt`xD{ zGs1aE^Y)Duw?RDc8%vbfn%bet(d=E)a{hywt>p(R=w(Wctg#G=CA8shqSP-CU1#f5 ze!D`Zru;d-hD2FtZIQCYVFV7+H1R3P>D=^wu9qxRmm)uaa2%5&ecCQ)iv@oBMq*%+ zV8nSbA>^XabAE{i7mChCAF8W*zWf@$CSd54>)in!q*u0|m;;^z35cl92&IpB0)|>+z z`ZlbBQVCi8iC`^QF*=`pdMy?@ZsZUQlsI~v>%mxsXAX-S&lXBB3f7NPa%c0KW&(vp zc1~m^AplQ)Re~0IxN^!Vu|1HCpnGXQN@7RTKs-u5Qh0 z@Gi(fdOd|QNlj^uh)WFI(^(de5K3yL-D-uSOFnyiqAcw1pK?8h1f+&&JX}X)mJXV? z6_MQ>Y?&ZQf9(iF?_qpc(OlHhh_-#Hjrt?QS;=(9MvRgn+u3_OrnYEGE9cJf^kXyjAs%y`NX&O-cc*v(* z17kZ=w%R=lXI(>_3sCPtrqg5BqecQ&D>L)Q*gox}i^$`r{w*fc?)@lrL?GXaUeRcs zPalcgT-xS~)n)A@W~y`?-5yMV>a`bD6IhE1!nzPU#Y2u`t)_LP?s_)VP-68+kh1=m zbk5*OwA26!g%;6Y$Gl`5E9Tt|@vD@tTw&-Y&yewEUuExnpiB#x4v(p+*1h*gSUxoO z%{%LhwRS9*ww;x=Cwq`~vBrnlds{~H6id>JAFu$Cwm$p60!F?Q|I)e0BsC+%74$BJRTRO6F?+4n2 zrxc;|em`*Ef!3{aXdiD{d)g*mvlQ5F$92c6{Sb90s7N9UGuE}p-bdl-jP*Uo=vw_( zD?m0aU|_eRIOnG!;z~DcZs@Rpo6c=Tg72F5foXlY#KgTE~A@QyVfng!R$*-xtg$Pb)YH;I+c-wm1K(L1T z$wOCYRHQR+^)ux_va~CnTmVuQjT^9D@e{I7t#gl=?ZhPfS153wI1ldK^!NQjr6VCf zYsK;kN`DR&_)RoAMf%p;miV#G$Yq0tm*{OtPQ=n?8H%UKt}Lmt@9QxQJeA-k^4K5+ z=ZwAK02itg5wQ3pC23bhckq)+}~r(D*Xd}3F8PxMcUZ+eP>bT+cT)?@wF z9R6yqkQ{7O5YtCMyGNkoL(M;W^iu`O;A967@5cG~Zt?pa^eQR(V@&Cqt&=Wtx7qg`Fp-JgBW>SKHw^J=eg| z)tN&SCZ_hws6}*RLaq;@As$_YHI(2~t#4cD4m7l`<#75ngFMaK)!E#+ZoIhtMMj&W z{^gSbX883JdeY;=>MMxY4Y^=eYpJWbSJDIbsTK9Qbc^NuYt8$2VR1fbg2#E!0v3`4 z!$R)!Zy287@|Mzi*3f{rA3Xs{9g-a|A-VQZtWJff`C044c%F%}z_u6!a?`a!{7R`j z@YQ!6xu9VyPktrU6MM*P=t}#8@LDrV~@eGa8CjB^C3UaCA$kJLI5r*Lu38GEOS-)a*e@616C9%&|5buc#q zoQ_tjufG{7zxJuH<oTYIUD8^>8{rsH8%jU@o||_H z`ZY5}Kxm4mPphM(;aa6UC8p||sdTwZm8iaRT5e7NrK_Q1&%wJC@5$?+I<3n-=2*le z&l)_Rn6P124Y9DSg>)J!Nk&7_s5wbPzL@zF=V7pofnTA33tLyQ17#Fx<@Fnd1tviG zp1}?(6+df!a3(#iD!p8h{k)LC-$T>>VUFu<=zCX>Pr-zCrw5k;Mih8*y%OgyY#yZ*0UPuub$o?v zc4kF4{SWk>2UpQN-@VU6J402iK8V2^m&K8`4rrz>YUWNxwLNz$dw$~Ogp)&YP1U3o z5-p%}wvTy;F0zkQ=p?atgb}BJx4F4RGJ5g)BK7V5X4K-qK5IVnlq&_ib6fGefVqRM z3m==2XG#v$a;!ZkyjyMJV0(=yMCrqFTBEH&AG(_f#`h&L^Z3uQhF6pMT?U&E;DxUW7_EhMEeYiFGu3M&{90^CrT~6z; zOdf7N8h-w&{~q$D_kdKkv0&xL1do*di=-}n*T`k1{@mtnWjzhmcyU5z6ZdC_p|)?M zScC&gRyRQ}{N0ZO!R8Nvg4t5(w9JXws5o4AUIPDoe3(V-IEQ00nDB&ym}FiK-<=m% z$(oz{!k9If#KXmIynd&bX_mNUC^3tfu+aVS@sw+2Zm#$3cFWU&L>d1x2dPm#!XgA> z<{H{9__))sCesU1;Ajkp|2kn>tEos;j;w!KHpoQPFbt>I1xk%-M6$e-(fnNAtoR%P z*aOOJ>2t}J!mhVP0}`!tvZ6CCuvXJE*E^9^-ZrP0!t`7@hwIN3hX)+v`bOzw)ta(@@(CU197SIQ#+ zhHLZMmXMq><<kG3|-QysHO>;dc$tJJEg}L_R98j<%?p2jXlH20hMFJ_n$ln1t*#Cd-oQ|}wt(PG^djk4J- z!Wmo4whT1%nz4Lhfs$z>M!&{UKYa$AS2q+~GcJoWGe^>5>oQaC3!xW$44)na$s!z= z+u^QT2EAyNSc#OZMq8{Trj{CZJ{Ol<1u-3XN9+@}1hxJn% ztkF_UB_^kwjhEo0GChd$9~fT#L?i5CyG)@knhFf zV@f#-2`CJX7?UlyprbA}d7D6_f#l3nKAf1YX@IZ#%S?zKd@B3PUExv9zr%k#quzy4b^V`%mY|j_0h9_dX4n&K6x9Up{6i$|R8ICw(^*OcvjsSfjWvIuWx|-4rI^9Nf@`>cs9f3E(fsiN_=45`K3KY&$uVaP%)qp)8x=O7 z#X`1mOjnt9y%el0reu6d5?8L?)fxpjE=b!guM&0QInGl;F7;;gJ+wfvbcQ3G>OU^z zJz))e_<5W^)5vKLq#2m6N)e+wawJ3zwpDaclHWL=7rKS=l*_gsMS}&m{WUUENPS3d z)P<6TBO%)@No8SSPv#?R{krDxYaOw<+Qe%9V1>nP?E+vx$TF@93X&?2UU!*?#Px;+!vNI{0t9tG694uXK%YD!l~LAHXe zT~DWqENlsPuL`fi1DV~2k{M8c<-$I-<7x|Idh&e5$mWdHilekb&!cP^BzMNIyWg?M z;M}rcM}c?=Qp8g@TOdSAe5wnx#M@wshPmejiig^#1$%OqE6E zEl<7ArNbnz^?uW0H&z`UZ+S~fcvV-x^QX(NVHH=~h_uA#@462SaEh=+#u5dDk^K;;~apeP638?*SHs z6YKM61(lolSoLnJf4HBymd&qaie>IB^b|Nb^`@P2p>JpI%*vkGQc%8t)KvB6yl6oX zFGfZf3cUyV!NO7od?>LF`1DG)Ho=(aD3%}}PmkpRybcwxo|r4e1cbbL)%4%WBV+D4 zg9g4Fau6aY{9DgV@e@u!)Xuhogm2&Vg#t#y1D+;nEGuYQJ9`>@O%y9uTZx~<>+KV= z$vf<5v~Pm*>RnYN$h&^6%N`xAWgFJ%rLz!Xm~d z6|GXby_iK&@`~J_F0`DC+Zlbt>|X|=n>p(HVI7qfDoz0|O96^MS=dm)S>H2d#96*k z#X113FK|8Aao9;<(Fg4hr5MBAvX4sP=5cKa3v5l4F(EC8^hEA!4o|;vy+QLgHRQtl z9BS}cZdvLc@1$Z`0G4ML$nq}oq4pVZRyWp=E%?p{s^e;wA`+mr1%q9J)RnG0hq-PZ z4NNLBK|eOtHS{HI1av(^j9nGt0E6w;&Ddd`yqn4Uh1}Zt9`k(@7Zj!xLgjVw3${BE zbB@36BYGn-CWV<$b42qxf`2Qbc+* zO41ra^fO$)eCMQMM|zFsH>-X@y8kTn{_Ti1Ay8lNu_p=cfC^BXEjR8WDHL&L&U{<4 zK(+GDu+QP#I|xL)#B=(4Vic!7%=_IJQ(~x{VUn-0YOh+}T&lU#E)j>`L*42G<%*6a zxJh?S2XqTrdO`2JzMi5Rs0iNcVYvYMvx z_cu^0#EaKt_yEzDz)SV6ggOA(fST}k0hl}0Sq~I1RXgcNzGbz&*J4pOok8tKMSM}8 zyfSBb)0b&}VEdp&DTHQv@`Nf#hm8lnbAuB0>-UuI>(U*;>!)0b8n)2|{hJ$X9|MME zV~Dpi#W2D$VUC(SH-TdEK8kftjzI%@2Jk*s!3xSMc034p$2P*ih(7ChU3q3_NANp% z$;Sw9eWnZ=)l|`*ckKF1cGOl2yUFnTRbTNGymq~~?oEdIF^-T{9g)j-i=vT|p6%I} z(fzJ>aHRAd&-rsoxD-9x`|Dk4mj2!L_O;Km(Ncz}$OBw=PDSwB#rxoxb(sGIW~+b0 zX4CTZ#lSHspDWm#mKW{Z!@X z(^2TEn6r}+joxb*5@z2o^l33Ib*MqM?@R9*}`qg;?GETRUX>2=ed_7Wv{65bYR-*U}vf`E-Qu=z-(u39W!~>~mk;FVGa-37^Jk42^`%l; zEN?JX8yB52pX+O2CZ#|1jUdg7lec)iW#G|4hsoPp=wlX>SXUkt2-$}|N*|jvq6&fD z-C@x+)g)1n1i2|6nn5crA#avb{3WrACYTHNZX-s^1tbPk(W^E2D^hV2&#@9a2r0?n zQVAU5nt7pbQOF~?(H5jZtVq^B6lg%tfMm~yI?~o6P@E)~&TH^EK!@8f1t|^L5$tZ9 z%gg_KVQFwSd9m3$CHN!EhUih}y7D-3dH)VEI7A|uiYAsjRdE8^mJ zI|$a?kKtKfqRFi;ZKD(w4imZ-UKE-w;YQ6hXR!JWX(@G9cxZe+B8r0$Q{`_ zEGw3U$%x(DVav+5tANMB%KU%Hm7*@{$c{b4J}@Y;+T!Kw(a=8SdRYAS!eLibXzoaW z;TemW=S-<7+7cnc>oPGeF0K+Cis18-8lJtM6O%%pOf;L31tGUYa)OWaMgV$Qr7fB# z-I!d__ax93HAPkF*D2S*=X|DfDvTbENo#K2&6p7HyvY5i+tLe@B&+X%5Q&x`yqz1cNWH}Jy4!OHfzDq^lHH_=m;mmMsX^#gL`i>~ z_t7cWN#OV6ejf1lD|fN8ptPD|@#j);17}JrxNqaxRDiY!&oG$EuXn%)_fl5YTdsh( z>ELZX1b!VcNoE*@-E%YAmK>@{vlaYyd3a~?maj(*SJ1dwQCdbLkk z((K3{CdzK_5h+TrHVAMK%ATZ2VnhWglde4ETdDwiAl9>&`t~j{H>6~$95A^*?Qa!~ z&M7xaTMO#HDsd24FTDS3<@ky{@0U~?b~!u96M&>! z@16f7jc51mAINOZX{oh)9C-}9lvPj#+?#ljorG{_FLg_QEt-|?8~nTwvU=gq){gWY z3h^3Lm_jr{{*k5p8<2qYiptub6oZx!MYL^Ssc&4uuQmEr(6)N#lP(!G+7vORTtDp8 zNx&xTc$6v;iM&L!6crCD@1KwjavV$Sp{kXg3*O1j#Qt%p?USXG6l_>zxj{cOQ0SWD zn5>rG@89Lo^O+(j89+vpmjd(VHas4C!(Q8})2`FUn2)!3UgFyQ!0(1Y1z3}_~=##5Chy2y(V1M>`)fME!JHi;lNHY^E8icjtSmKd)aY1NQTqE_HN8uGF@`<2~#$oN}KEtV8L#5{_d-=b3tH_~V!zftaZSw7` zygq+#=(f<%a-xX-jEFq3waW@^$E?of87o0S3jYuUUBFNsT--nj0H{i$u-4vKV1lSE z2E^}7Oc3{eGT@6aNmW+3mH^L+7pDn@(Wg9x_}$*e%Ap${mR|!1ToZkbknfXdc(UDN zMU{A*=ghng>gM$*d8j$&+*q8hw%XN6!R(=o{GZRsB=m(s3b!8ON)vAy5LX_$lKINz z++PJ{%dn&tlmf&i0~}|dT_rlc+|OlQT~iZAi+vyR_m}P@Z6Y4VB!b|FkE<8fJAHz* z`DE?xCjJBt&*) znSl3bK_K}>g6K{DM3CEid#mo`Y7s$-Ypj%v8g|`(rmbou#A_F$V41z4JnS(7K}uI; z#B)1mGT>BM{-{1*XIm^w7AUDG^_LEJ(yZ{kLPR`#-WZX6q$!-tmf_C++LTE1U2Fn@ zBzoK3H;{cQKIq|?atmhyP`yM;qYx2$-KKvY>l#sho!C{oIpMn#cKoVRCM(T@HcQ-i`0ueudV_=SOSTm0TNv}NrH}Hsfeg; z+nLxWl}&(xc;j!1JD3%Ajw>qfB#_W&2o(AS=!zG2Bo$Aj^1NxwaCL9X_Q5E9?g~#q zDvT}B?^~hV^e&g!WF9S%&q#=f&rC^#<7#ONXx_mA4qNN>AUxuCVjP!#rY1MD1gQ=h zLSe8vpg(L+4Foz!p7b%E|8CJsJq!V8j3FWo#CQJq7S~?OL^-L}p3qJuK|rb7Pfkx|2ehv$GiywdX>){zMJ_ z{4P88TSu+G`_Pd%d`JJ)pwYlgN0sh`l~cX{{h+NT-v?;-|LzxkXz>#$Yw?8MM^5_Y z0&}!0WMdV2bom^~V1`PfV2Z_)*`(KFWU?AGlQFIQMbGi4=L#L%6U}V85G@P^P&j_o zmY#3x=lY#V4Lz^rt5RX`lCq-of+M23|g z1I^HeYU!^+EfrPzbOp=kP-F;-@tn}#l;jqcpj3)oruFusQZvzyf`(;O|88D(wyMHj z1;n84?UsRr0ggl?k4Xm!_FP2Wg+GZmZaj~F@roBu-ocZYqd^^{a`E@!O&cfC!&|zN zc-#3(d83TMyO_EFSE+~izQ)X+?h!Q^Zh_n;sY*mNFQ)Xj?l0$!Rna1KzDQa!sS#}{ z`6n$?yk)6QfjMAD)CaQv{A*)aHPs+Lv4avVt2CY2Bmu3KQ-h593SDz`tDJi8>?s~1 zWV>@zR%PJ=un+4!!6v6d17&;-r?L5xle;JAgR2Er$b_M+9=x_CESq-4psUtSXlK}N zb%`V1S54Q{FG7mHcZLya=7)uLC8z>pf${O3CTc2{+)woKrBM1aw16KCN@3LVEAp%$ zR}Fsble77D#{qDRV2=%Uny{M#l zm846%c%)U#u6L=0;}`iJ`EIdG`4+QwZlLI_y7QOR=`vX~g}+>0Lh$O-ZwUf?=XbIM zLD!-8MlEI8T4y*`FYNG;ZPq8Q!(wNLlA^yI)E%&`X44m!9ItP*`qTltoUD55PPq&q zbIId*4$eJMuNRBDU4{+NP+rw<;L-3}acuFh-LcQHi-n}+?T=M|m)|V3wA0d^cVFFI zt?g9WVZ{p;T22ASt&kbEg_;LIl-j6j45x0r`gphzFNTPes$sd$8o}8t!Kp5$C*KLF zb45=N8gj}dg%6YpQA9SOl%~b+;t%{so%dXm>qC4G3krkr_yet3W@9ztrufIh_Hs`e zFX>W^3)yX%7S0%UvRBih>}2Gz7n?gH?5bjWVlO6Qo<~ZA8G}H(-g4+5!u=3i9t=(VS-#5 zu;+one@pQWBD+kUW`;ev@5Ql~$xS)!B3#vlF_+RpC)@w%U>W9-2n@5$m9uW8658m-RYpm?KxZSjf6VZ_;Bg$-@)VA}dk zb|ca&@tUkAOsWRm+&9nnz0Vh~bp1b=R;thrBx?gYZDrM&CI$cLJ_>T!Sfgo9hH0f( z)K}HxWes&a27I%Hu4dMji`{w%F632DI!|hRa6h%Ja4uEUbmNSB?j^?TkoQPdQpm)5 z-}dWB1I|EM`-0+@0HEQ#FvQR^GI8f<540Tmsa;-w(&3o4&$AptzI~bHKD{EF)_54I zJag#sVzriP+&KnhHdl3h5K(MtnaoEXvNra3)iDPI6N)W7^rA{_UVhwto@Si$xG zy-i1nIG`Q+9e4UNsXt4Hm)Rw~{l^~8r(F6oe(&5r#|0j-xH}4`@n2>Ta+zK#_e-0~ zDxCGnMUX?6yTQ*p&yoA5)1Ku`YG)2BS?Oa#y*nxGgKiH)&j?2~X!ZP3x5G68RL;TB z6JXrn(@joV9CelAbeUOAH2p_Tcye!8pVdn$JJst&xGc;#fWuhfxNLvQPo2%0Z$b1IX+tM#ri8H%gXHckU~9iR1~{&9tTFsVBMhJL z3fy;32*5Kvg?RYRFcHM-99wty+bNg&TR3E;fyB|?O?gx^VK|~VQJlFF(O99VX}j3o z2kWNya)g%&Kp{I1j}*EA6Q^Bx5GD}E#BJlRfmpnFC)0lS;n3dp5Ur2eSK@c^fevP5 z2_VCTp<>g9ZJk|`|#e2@~pS!<>3gJsn@=@%` zg-tTv$$H5#6M)>&u}APvh;6Z9QC9sT9;DbU>{St&1UO$kshMWLiMX!hWMt%nfsO6O zQLHA5sK#|`p@Ls@!Zp_i?Y$Qx=EGCwi>OIsVE^{MMWf}HOY5@S8|^O;0C zrxyi{e8mRp>S$aE7O-3od09#+vAzu|Hu1uR1`;YGd3ptI+1$!{cV`9a%GT=^O(2}5F7+RK2R-XNuQkQpymU_eQo;f!fZy7_4&{ zWM{Y4w~~{NBc*)`55{=C`KNyM@X+Z*UnV?V=QUe;sYM^r35`05!XmN~42@=r?|rnO z3c8kFY8^Sjo(yL^cNaS>=0A82#TDOi?CQc!x>$&M@er_yPQ&!JLp$>ntKP$xH6zV6#R$HuO{v`8#;{{$iOX6(C^2SMuhnZUSH-qAxQ&&IBc%K$$D zmL^|uY|L_wUc#vqY2pZ%rBt@kBqtN3A~X>RZ;xab^)O?4jIG@5_<1+0mZzNuhtpC? zk)|(Yl1arYM5xj#Z7`+!NteNq(WkBE*3wO9ekmA1zinAS*7j|*h#5dHmktlN5w}IW zotWF*<7A}3)`=8KeoMyKML@D2OY$42y(&Qbv3vYmTT5#XEz7+)4w;JZ#JN<{|DOKKQk=UK9q38Xa5%K(Vdu`fbzpiVITTU=KG|KhzSVGRT*tsMW~e) zZr?+9U5*qy{+gZc*Loq2tjq6LtEL*CVDVS#2YwF9KTEB(=b2wPm$Si+x zbf<7eB2#rGJELktmX1E6u%}gNMkRV_DRA`MqNk~|LGvP5@cyaEf-Af}cgdIcN7Vq% z+bVH=JIBhwW`V$)PNOC+uljEvIK{D1q|fC%3)L!o!}aFg4!6GfBhBhN?H%>br#xct z@{#8@^|XrE-E({<2auoSZG!z{BhwFwi=GAtFU96piIGZRJ~R%sX#WiS#FHZd71c|@ z`kK-5@U7Qx6}b`?y#l&(sn{LC0~m!|<}4=s?b@^3BI*sLUnr3cJ^9#~0{+M(B-4Ee+oII|Oe3^N22a&-3g5FNd{YQW7fFiq2 z9_SpLCr>b--i@~rU|55rIG8Qa-QgS&_BYi@PMb_tS5bQIjJvS=#lEyN8YK7XL&mk( zuCL~ek0I*MCbi5cGKhYEH9rcvGF;?6oLTkh!y* zdHvF1KsX7MuAN4h6%*XVXBa%;E|E*7GuvT;=a;_{_aqDYErnJdQ;ils77qm%nm1 z*GSosRjPIgBmT;5lx{EryL@Z-Uw{3oE!h6)A*{?zy9rT2% zIt=FA`Eni`K&~-0eU-g9bgHj1&t+$4QEoAy9(11+F8Zd$!nN)q1>-OTkuxs-@9k1B z(4iGEB661v;0bbG2U6`Uhc%FmE1g)|2_@X?o2%x-kI^%I`HXYoJH+_?Z+!LrV-(Cs z7QQPkO3&8n5tb9(qEVnA-$x5PoFqshiAnnUvkvMR8BOQQ@%_7{IfnNcJj$tPKBsiP zR7Hg?aUBho+>BEQwhwi%$f3n&<-wb4h{CDQc&mQg#54(9Wfwk5)WITIBCm3-!twBO zD%SJ-f^Kuo&J9Sq3|&(Le+|x7UX3EK-mFoNVs-)3lh;6ADVCmOP(V z8ehAcvXL2D?2MsxUU=IneD9{Dw*R%)R)2TZMhZ4TXkb(41!fTOM|6j?Wj*Hi8La~` zLiABEc`w}NN2El|*=~j7b!VCqtCX#c8~v$4Fi^?p`!MKo-DyV!+%5HY;inBOLpJd1~Xuin=f+dEW?vbvj=V>o^lK9WF1U!c(`l;%vd z!FPG3RhNvP`<>u!*awmR2va9H6$QVa*MVk!K)TB3Uq1J%imwaHNuq)8>KWo+sDj-# zhbinsIr*pS9`;_t*-ZDJGc(QdLm>{Yl^6Uzry(O29d5x81|uny)sv2np^0y?N#5pp z@B4q&XZDa=Qs!S6wLiT6)xJPdSS7QiM4rp-Ir#57`%+O>o!JkdV<7w7<*lLl6Huvw z(TX#9JLYVsh#fuJ*c_)e|(hy_G^(C+z3-dw}`W zrJY@bM7VYCgTayrGIYN;A@F6y-|WPGlO?YYV%-YoTezNl%?!2jqz%&V@u+COsvUp- z4C0#bui8X$V+6#fAt}Lf*dXHCCVn(I402IZR&P;kOCG31WeGNma66M*)`!W*0ZhWm z2IaPec;@t!kCM{z-ncny;i z+urN%w~?eIhqiHbS&E$6a`te8>v?ilFBQ+IzB-&!z_*PSwtwT@kYj}~NK8QS<-}rU zzjB9>XH!5VSV5uPqhl_ux=6LG3~mGMx0ba1$YdTaKJvRxgAs;m0$~7+VhgWhBmu73 zqE`co&SnP9+%hj3{tR|Al@Y`=c5oXmxOC1gFmlcrNAu; zl{y>3a19PJy4G`vnM6k&*#3aK;T=Nfkjp2*1`qS*p|_0@=nCUFu;dVqqE`M$ z&vxHYX%q2GcJIS?&IA;}70P?BXrR}67k&Ade{w9aA?B=nT6XM8*XB|AW)v!{_&}t` zX0}aCQ$9YfY6SRi;UpIs2qzf{p4Q4~Vr)>l^v=U|2KBo|nwym+*YP2&Lrm_HM^5ZW zri-*Q_5wx5W|YhBd1OskJsTk9)L1-MBCngKjEtU8o86*>WL*3z*FTST!ogecm*P*# z7bN}w@4Dc%_z0oCT88p@P7Z7$Si!2woz*ZWX?GTVH7@s)u637;K5-DDZvGZs!Av0R z;>(MpFO@EH9!cTGCPFXRyCqcgfX)!?I3t3dau^tfQb{1LiP$kxHh}Q~XQMBV$8BPN zpBd`_|Ehuw$Vt~!jSR1eU44>WER6HlCGf?r?ppjgoM_nMzOax$;2W+5*`#_{ndH70 zm<|_^OAN6H8{rkPjI+|8|?~ zChbeIj=F{YWX2K!V`QUk_@v;Oev*De_OlqP`BuMt74YB|#s0J-Tz91hK~m|v*B?mi z?7*wh{X6(#9gB8Bp+)y>zOVZ2dOY5TrA_W?yQJxhX+oIX1#v6rBT#|;wAK9EX6DK1 zic1c}MOsd7Y^tBE|43Ifk&;N?>T2)|b>)1Yc3}pxa+JBxH(9%W`!uB=2!;>V-Qp|Q zB)7OGa+9x~aB@cVDfj&2DqJKru=yl(Yqn>0&Nw02pkE$C=SMlug4UuKn zR{S{~BJaL$&_yZAP`ERj?yJiH85I(SV=b~ec=*&*6Y(fp8B{zS%p2EsZU|kN{?*e|Wm$z(^2095jJ`FeU~2P~r1#|?d-LCC zOiDKFpau}mr?c(BiTu1REnh;-*b7c?@t$50U5V39;BEPJZ{OEVMZe}8zifk=ZA%p* zZqyB)d>rNT`tT;tQ+HQuCvl-os-*OtijT_gGb6vM#lh=8bbp8tT8%ziO!l2#Yc)Dl z@1CF}W}o`(uOmniOYGe06B+i&bE)2Q2v>ar+Tq^erxwJ+7!yw{rgPskKbqX5kD*UK)%1voO^bncxp7Zz!UNN z%pW(^8yWg{Qzumqz|LGNzMl`w2B`WIWzK;>-TtOTWXcz{-)FA2od~x5+*RrPclZ@Q zF#PI2e{h`r<3DEruk{S@{D+VK?A2RX0mwDvAFltk_6Ku7RsTf&&#yiEuV1@mzg*Gw z2ZpTo? zz32hVfT7ZxIqwq%=6t~LhZ$2CL9BJIUl*{bARhjjDn`?PEHYKF{GuiI%iG~?{c6sD z7=7dI8xFRrjOt-(mZnyhCOp26#*Y@nkyaQTnKdj`i(tQJ8jRN21x%t)^@@39HjmUh zjRmIiLal^n;>>j9LAuxp80~Nc#-!sUqRSagls(5)Ddk;&96tyr`MCyXGHRV>=yL2(`-t#}tv1(Yz!>++~29B=~h7h#NUI)2(8 zMdQb?;W&^FmUvPvc(=}eKv7IU4ds4)V*!(i@@4fP+5GDDG89-krA@D^cvhLE6jU5w%W1X|Fxf|2Nhm*qka zQ@R<-)5JcU2ro(r^N!tBVMRy^bvFx?Lq^edcVK?;f><<-+_k{qM#C7;H}F>1qO!%J zCmBaPyenpD5IT+kXC`8VA-YBED>xF}Ic1){?h#5$XRFxaZWBq}bn9_g)%xwXNPMme zcZ{xu&_6AKP&Paq9ws7%!Y2v?^Ueo;s)bA5nZkLiOG7m8ehHc8{iEES^kmK3CXJZF zY`sMHc2pT4+nrU>EBYFLk$D$=Ze@ggln}% zGlY|ele^o8os>q}&}T#?CYeteM@mhxzU-Sf}y_qY{VlYBnSvN4j-2*RZtM+Bd`!#~uNf}}={5jX{2(MvYu24pUv3;(z zP$}<(XeCq6a9{8SYk^VWV7-mFxCN;hR=9tew1P&B1(cUO&m0g~BJwR@=+4VjSU)F< z1PIgwe9BZVfw*MeSWRx?`KkPliWG-;uf(8jy5cT#qWrq3BdE<9q3HDGYFimMHu#FJ zXKp6;&WwYAm?%TVC=s6`G0YNn$Yk=O4=*R8!N`b90<`#|q6M`jC-yZ#O*wmD@>R4gOgm@Xg&Z|xi-ka9sTEj3_~dpYZ4i<*`+2JV<=yztSAcfJn{IYIgAfyU+X&7#JdgN zAiuA)ROKhFL{}Jl*IqKuO61|1<@C{VCchz~t*LZ|+7C28i4H*vHZoBnD>d7hGLSZ& z#P`OQx9Rp2O0hJ@4J$&?GLp3q{)#PR)PC`!biJYeD3*ctax*Ow0v6CjLbf^-NFj9C zF?lV#nElK-%AarC&7-TS4#)_eteL|RQgY$|3Z0Z>D;JrwSA5RqMD$y@syK3o z+q-=?9%emqn@AIPmx`$%MLTt;U_!0aBDh)m`lV8+c_4orxWc4sG*Vlag{}98$K^$z z?`kn1IgILUy>mTpR8+6+5Ur2i8p5z>L+y`bH9=XRAzq(rw5X`*lhla2N{@_N+wUNYmps~=vH2bh4%ae0idEon@)*t>BoC^?DV4XV-a z+vO(+2vEAKPsNWX5AScP{yw8vdcWH0@2MFG1jYjXE*ovZZTo0wd&Q5@v#0%B}4Wrj0ybdGd)*i^wC>djTz4%hQ4kxkm&a7)tt$v%3&|sz*Hqy zSOBAlOj>#gxnAKPJDc0m+$QI!V5rES@sTf1LKY= zhzFGitNCLd?MQ_&R?#22tC6}i)q(gyTl=l4x_dcKqm!(E73*ia$uq zothwOB7Gm$Y?+*ibZqRp{*0}DJNoAc2JJBYI{tb2N_bn`#?bZ>TXsE0v+wsALqt~L zDsVr>iFEZwkdQm9wFkE+DBIAIJSqaWguUclArsef#sQf5z`?N6v;mYD`v5$6Z;LUpj*PhZSLEbThHi52V9?oE@KzwEJ zhE~)<=To%ZNZr|$321SZ_xVFLLP87v7%m4* zLCBh~t1jg^3@!Sr#yv)_&u5lZM5a;}do?wsMf%e4oSaVtSx2I^0&m>C0&yQAww1Qu zSJU`taMp5w-U3NY>Bxv$b@;rbYu^0?ZfJg>XDVrtD5%=albofnt`3Rxolc*&_y9GY1kOUEW=&OlyjoF#JHOpE<5cX7fitn?ke=$+Cp?kUo$8 zpMtV~XUm%yJ#>xgI1me{hUG<1??Us9?URSSnR1) zEk-dSjSyLguq!^aPVMPRVN{PR&NxX&N}&3}FzXPW?_9Hnl8o95<{|e+Q1MbD)eBLA zC(<{!)ufVEl`ImI1rf|IZ(-iGR~o@$^C5SMg+9xf^3F8YzPM=WJ_qPnYn5GS(v~CI5iC%i^3{ntB#5%&n)o)B_VizOhf9n43zS^Q^6C zF!u;xA)|_~*u8c+ms6$f#k$hk;RuKXhizj2L@gx(7Cj&ZifR%4T!ygis%jWa|Kucy z9SxL_y;-h~whFgU(LQS5sqYM4^@Ic+H@4AD-Ec~n3QzWa;t zW5wn2sV|{XY@YGbs?xa2)GNos!}wHuPp_2s@f8C~{DQw9V-%>dG%2%9sq-ORX}IhwTha&%NHMw`j@Z{C>_Qzp zwMd=a6A%-aS)J(>-z8Gf?8lWfJ@YEU01PPCmVsdad#bFL-rYe!Jsbb<99Dsj7rx;D zh8IzVt7!0VB7N|GU#*>8D!RkO2|2{wW|Sdl}h)B8(O>ikhYl;Ks(cvy-!{ zSDBoce0=_Esd*f!wvz4$U%Th1Jsl2jF%g<)?cm0Pc$dB#VPmpLEBzZfyCPFt)56k% zGBQ{r<5$|ezw`%(cm`9)<>UzLr+N#5ZWYW#(F&UruC88T=rUljdozJBAu0P1v#)ii zq-Wk_i@yYEeZvJkmWBR$v+;do zwS6QLS$l=?rQP8t+ueF|{=V;4_B`%kI07)jX=4DKJapW+4rLhvJcvt%?pFRnqD(c( z(Xa1e%9<0_`5M) z^|g`Zpckoly;HgPP)7^xlG(hszl#Tu!ThSTe=|8b35Du1Ha5K*&$D&!*X78#L+=ts^pA^*-Q^uSL|>+>=80G`&|zvd{j*(5$rzv1#3$ z>9#ut#6{R})-gA02T}`fAj`<|bf8dz`05*KnpjM70)uB$hX%K1Njm1E*si30LLZJZ zMGa17gSTS(1jGPqA~^+yip*gw2KvBF$r|mBJ=Zs!2k-Oc2fOQ390>nDliKX7a;dmt zO&Ifz?m}V18yYHE+d38On}99!M1U`@6e6tigpo^Z5{n117O4XK+p?UT9;_ZVm@kI~ z{uy~J)gG0=R^fsbkyDb_dl0piKDdcmcs(kDYtp}Z93R8A)Vsupq$V|0i|o_dtv>^$ zaQ})>>n(T#b6FGMQs9Temc(-{Ek*UhFv;B@0$3RJgEK!uYLz)|pYuzVo#1a|g5d;Y zEBOsS8kI*^kKuyjxR7oxj{(<=vIrPVv@}iU?sX^?3}2gC`}8*p+3#Z`d4*T>U*u60 z0Y-$c!D}mipFy8os(tZIADD)9E3!FdiMa$PBQ-Q}7@HDVrMwRqV=pWX5=8~f_ovr*%5R2jQv~0;YjoH&k#oExsr>dv7ty5`wlnSO=MMLoy`wbHHqn-vZb%*g%j!cEEE>#EPXOy`~g0kiN z@EjJL%`>>kC~ANi7d0s5u-I3I0U;7LIn}!#c=z!4nYKsaN*GMGFzz(J5{1SZjo`C{ zM1b8224>1Wrw(`Z90)9V#U^<@L{t(G7IYojWm0xO3CMRLRmd8zHnlAaOhp^TS-_qd zm~0WAd?PI3At^cgOL2L9ha+;~tx{)1n99G$*>cx8PfU^~E;5Y~RSJv*3jbMc4vNZm z1g*2>OuQ9thiCt>f8-LkiiU^zY2vXMj3AWy%zlvYByC^@=E?u?)?R>Nb?J#jyG>u&rD0h6^IFY8UPm!;2fl^9b@tN4xoY1Bzlm95tful*Oa?Kxb5-?bH9ZO*epf=QV#VBu=Vb2 zb*%Nm{TiNpOukXi(Vm|9cVJ@gZr4L#E8`5IezeqZw)Q%UEe^8=tVI`0b{Tu}e*^?@ zroKQHgXXaLnVO^>q6SpdRbuV~#fFX~y8SaOmN-Hr#=WHK$66FxihvjZbeA!xB{sCD zn}O*Tyv{(6I7h%)i)?W?vje!k?AR2sb^9`PX-KfCm^Y=WkuHI}jlrxI)!FApiw{qe z=rBtL$(gc8%J~KW1ApkS&gw1tA5Z?v#$N#*mP8W(EyfLO2EFOB>hfiUk@L+gNhet4i8p61T4>3a3tZfC>BBc&sn-w#664jXo_rCq`UzB85AGj>Q zEL(Vf@!A}V{VFQW62$(`RuZ2G_xA0y-Y$Kg=lfQ_w37yJ2?ijc;{qB+>kt>?_V2@i zfUte)q&Ci381V;wt)cB)cG-^Yznni_>DRN^(a_LI?!&xbg!UCDf@ae+dlD+mHuue zji3(1wzZn8VQA{foz-yXr{iVRt5wJR3)vU!i^RH*yFo5h}VzNmCpD0nEXnxUK1Dr@W3 zG^&UkNXp*}2ZG4S|E~6>dooZz{fO18c!jC#;kTg6YsOca_{7&HFHcd)X^qu;a37GT z7M|gsp!X;L=B43IiF(kk$J zKz0Fiyg$5PHW@=H0!Z0GG)@ClVO;b6Hpaq2h|4MaW%CadpiqTYdKZ01wvUHQx2(IU zc`$!8iVP!UVx8sp;i%DLD|FlMUfBjV-rTt;e0NXH8e-he9eoCta{NJ53=k?Ei zVun{U+o6yPmQSV2&%Z3`%e(I3@$`ziiEL{%ZDU9F;dcb}Rhd{1Ec2x^shrrFCCnw@ zX<_E6Mm)+mvOcsCM?4-2Fex&Y75IMrTEMP~DgV^aKfyzhx9>A1ZFXgCKsmQd0~C%g z#?9GMZ0?jP#)3@CTm1hC_)blwwx$b7E_s^ePIdeJ)SSxn$r`Szz^q!f3TC2up}X_7 zZkfj-H>Kt8>?=Qc7dfUG8wnyc$i%@<0bxAzq(^TX|Cm=?6J72yF^$1o7kThO;ZXe%hhsd81;WGWW6Jrno7N3rGZ5bI0y5+C^-9 zg@16|S4lI>cN!f`Unv32+195`h^;4-%inK+G^JU|RBbt}tF)f9hPYy$C4R52<>BST zBr!5pm18;AZ_(&wem{wtVIFj5|Hw3}U>e-?SupUlD9BU4^3aQ5o;LM%rd_t{RD5Hs z)OdZ?Z0hY?oP&y)qGVQC@QcI1V1wCK2e~Bg$Ro4Kc225ZjwL8A-A<-5gjKg!bd7vR zv6?eheDzbkh^!Xa^aY|&?%Z&jm8)A;k-0j5@s^)`tHbQXOWeU!$K^OLZ+u=5qOQI7 z^&@MluSJ57N0w2hbg9{tt<_S3u7dK7zz7i|=Hs^H6}!!Q1nBa78uso9In!3wtkwAC z^bH7{tegU~%rMosp6m={&tpJkh%WWyu*zKy0*p>hr`98i0V zTJX}lgxji)947rK_jD`zC01e=KYs6Lo300iC|k6Gu*P0=ooXDs?$Nh}X87`H zMyLBW?ybi=zPR_2*Gf$KVR0Xh)g@Z0^X?J&PdOcsf{yDbw}Q3f*VSHAc`u-H_ge(& zU9brf#Fujxo`72pQ5#Jw?Z)8V`R9Rll=*Yf4(=-*wHVS$k z5vKex<)R{V2bwP#EE`;wF!p#H_qAyxYB0@UQsK@wW^z5yfvu<$5}EB0+xII@wnY)O zWPsOr^Svdwkr1JCF>p^d?H}gf6!X;4AX(0`Czs4dWUC6+OzG|1l^bP=p0a|=T7NQc z=qPm>z|)7vFe5dwW3sjV!K>IiT+ec)?IP7-RiE2sTjDk5;=WS3tVEtnr65biB^Blu?;iOYZ0BU`jz1(v3g=P-H# zV&JLwHSL{qC3e)ZrgcT{(rdRsvlrCEo9Z&AYbc3KqWCM)UyBV@$^$tK34Ivrc!0ka zE|qSWDk$YCKdz1t@$mH48M#o=u7M_%`a8p@3;-_6<#4=msJT5pfqUpE~8 zezkH|iG`SJC=#D|u8?`YYL17eeb&N_`Z%Fq@j9M0K{W3;B?rXF9=>o@+Gw-5i5oKC8B z&)^x8d^tBJ?)OW*{cLf~RQ_t*^NCJ*O$f47!gwRRNws*pt*2|xR5A2hYVKN8Zmw+_5c+YUV2uR`D}Y4Yxk@ zUH-}OywHlZ)FS%axyO^z2;D^qEN?i_g5{nRErIUu8lzV%CBQ7KUb{lxLgND)!|`UN zxu!aef~!e|awfN8GOD1@@vX*ay`G`Ge+V9TR18ZpHRO``D^*PG>+|Lu|FRu>oDeov zu|_MFKU>3URj0lrM{uYge9H4De0sARR^)d}$wT;NI_jA~fNRv7Ji^O-=<3t?xZ>^k zH?DTJ&|M*0`}Q3JPLAIB=KT9X)Wq!h%pLiRIJT*ebN!RuvJh-!(d8!3I|o9yMNO|Z zFdqvSf!57tUpmgcyTR1W>vQ68k{z!lg={z!a0y2%y|#Sr8i9ZFki|b0%Oz7;K0wnX z3kj~8y;zEM8$$)QTHlWc?rJx!4t1`ca16@dF&?oqO}iU42g``HG}&;H zxnmQ^n3zb{Z9A7(Cgz~T%J}+Sz?78E(NM`LYO7u6cq)^gtA1LLyNX8bB~Rhq^84m6 zc!`HF!>S@`tiZR0_0b@C@AOGsP5DpnC-3}4p|Ic?Q|x;eZ1@69B;T)0%W5`6d^b&- zPBWQEk5J(HeTJ!lNp|?Kk|Utc9v)Q7?!mJ8GS+3G~uURiFMT4Gei3`F&d0lgESLU!pz<5O8v%iLS$c+5JbTKjHbO-7}_ZCV{zuFo!`3Ei=gKqwCgpRLaipIHS2#IBgmj;PUP@}-LwG++TzV#1G%Xu25HPjNSAlaL z%E(UcT0Z6UXddH`aEMZjxjjS(jM=?kw-1R(y^s09;~&YY^X|=V6vtYSH|oP*_?s_q zw~*Ic*EHdgZxt(H_Q|MXbJS+w-gQsIA5GdGwSKtfvaPC_c@~Yqk918^sly%LdFHu~z->q3^5!_sb%bo+cP8Q{t2A+% z-pb+Jl^z~okZ+Jm5xVs9h>6#rP2RNj`1H8kZtVFdwL7onPhcN<=}jFH3hA1SSF=2H zW!DVWO$O43jUG%Doel^s*zxwICm4umXUixBI4og;qk~y<*0t~OBl?{lmRi1<@BG%D z8z(;$Dl23Ix=FU}dE0}Am&<>3+o1h_$P?2S)v*D$4fH=huG8L=KXCc}2*xo)Kx6F}EtHLLHJDdj}Sl8Y+}ma0YLPO5kn=*$~ll7;iJ z(C&)&JG9bIdDrmEVqqj_v6}*ME0#RAKk+%wO^Q5>4>R+fYsO`LUc@W@H(_}1z1K3s zqa)SvLX~oGPCeM7&Fk)ga;!;5zDd3E~Ds9ug>ZlwA&$C`yPQ|!pN{sx|;MseFvpW!GJ~Bkt8tSkC2f zQDz5$ElmvGB^P5u4f7CBzSdCE_#Av3veG=r zaPn(E4A@GU;H>qaR#};NuJH6p?1Qr}YdB7ovdX$w3@QP-tUE5O*bLl-fMS;hB$L!V zHv?kVEZ<3GQ0AS7p_OBdn{&oyd_niG+HQ@aWG}`>@^eHB?!3gT{+(x`9SO?MTax3j zZNHL`S39%48=-zhmx~4{>*F_{8bBuNCo`p#(m7{kF@hj z`}%al$bXJ8ndk5t=d9^EB2g`r0 zZaUSTy-$ zx52y2$JgGfMDU+2d+K2ePY-Wv{}noK5uU7HS&BHVKv^f><%eEZ9o|}_@s+IEKE9h} z(n7WxHNInf`%a4~xl%&)zlow7Mg#}Td{~~_Soz&26&orIN2(rK$#=E&Er__a#s^5- z^^OTa(_(b{)#k9+!L9ZA+?6t~jpO)|nNZ&aeJgK)%#sxcCHj6W^R z=H~79Un_OWACJ>FpdNQtANc|&-)BU8f?1RG!};LEy89DUF)J6}r(-EQjoBjF zWPr(fHAk~>`FSo#d#LKpoy6`(LD})xgIw*P;mN&=~7$3lnPzuHIH_ru+Ysa%R9#71)0D|!CsIe z+QLjCnyK_Yb zG|LR^T0tI1e8#Un_oZbo%*SEC}~5O~}NO1*+!J<#V@97`wJmB?P$++>j~U;8pU;{7_4r>m9$An?8w-ieTR$iv0t0qhx_5PWZG2w|-6kMUMDNqtCX8mY>a;A@5?pO9zYH%(ejw**}ZS9w(XC zDQsdc*4;Xvug3#30gY@vgt8rP{vv1yBm*Pe<>G9XZtJL5<7T>pNgv75F+!hboO1+j zY81}bhFkBvD9EHv=pxAOQt;daOGWJb4fXq@O z^@VQnhWpg0TfR4+?ElwWdcf=s4pVhcj5hHQT2QrY+C)7F7*Hs+Yvy0FZ-2<~cS0)& z(#Q|X?B5ZY+h+8CdeH@XRmN!!8I{>%N(F{~qPM@(lC6Eiw!q76Z#cSdE6r11IIrP2 zi#$3lyVvpUHOs>VE6OQ%L3OE)99VgEv?3|w_T8*p<=?(_!v^gp*5ebiY~tDx&QRQfs8r8{zcvN~}g z(gYBy<2^W{(zB6cQV_=?y>xyyqLc+$j~tPx+>*BnPAY|!fM->QXH@fb7aAdAiwvK4 z92ZB2b3J9XG(uyiZ-M*XHYxHcXtTBgX;68$Xk+0-Q(2H8W_MTGCn%a5vdws`bf8xc ze4fia)6?{EW7W@DO2x_gL3LB&JiX?bT$#^}A-0WU@Azl_KTGG~mel+IfA`iv#cjD$ zT;N`n+Y~MLo+u6+;mRy4x8N*O0X1`rdn>pS#f_Rq!@^QbdS_*tl{P*qD$pE)aUVWT2nc|7> z%hTocHRthp&w8`cq@P+(zJkT$VAU1-X~I``8%SniVXl`yY1|Ml?(}knU6=m{GbzxV zpE%Pvm&kV;d|UY$;Mb`xdEwoJD%Qr)UO}XliTCvihrjkdUK?cduVG%1`W9H=ra{O) z0dWR#3m%{vn_=f0ZK9&}4wkOIDh~^@%4&B}KptE1iv_)z7AW~GH>I<_}K%GuNVQ$ma2nGnFq1>W!V5*XJz~9kb%>n#y~*WM$g|o^b?khB;i(H#*kL{UoM`jRyh6FP?QZS; zKq>z5%~a)t1O=W%$K#8a<;$Ii)Ph70*1Buy5(>zFX;ZS+is_sAb=yrk3`oO~31^Z@$2RBoKf670= z2IX2@juIXysSMk;w)L(9djP#g(=L>)oXHn~^P>k^Mg6^8q*Q}KO?f{(NDe%E{fqUz z%Oz(NTz<$^D!s#c*?PLDJ>s&Fzcc^*)qP3+du7XjtCbo{??zRozOBFe>vhkawdZA9Pu1 z!g@VTT{UyS#6@q~f6!9})6CK03V4O4DY$8ZmVv*^fLnIuOO_$3fq}O~90vyUek*Gr zPwFE*tv|soWBl*gQl8g~+g4-)ITXq^u3U=Ge?M;E?V*5(q}hdScrhLk2?5u)x7V22 zwwAYE94lFEc{=UNw=BfA{wRI=JEqje%uwl4`GmRqi$3oBPuAD86R-0A}F2!D0SajPdkT*`ykV& zO)p}v{XPcG`0r~i#=xwC1d7{TUA`*%oo{XY@Z064%k$IsJbpn_Z?z{ARR3t)p=G}8 z_J+ua=cCW|LCK%Z+Q zNQ(e9r=~cmmp=&FzwQ2?Lj}NkN}HWtrzVwC*zA-xV`Tx#Lr(=N@qmo`b-m;@x$T2P zi246N^kTgvZ?i9^x6~vQs-}^y!f;ckS_o-fCQY@7f&!>~|H#dbGt)H;G4{ta-lo+2 zXEM_=`wANZq`xcGu*6oUcXKH1>0^*bY&z|=YGtxU!@FJVDq3ur4t`i5A+~0HbOWL3 z4*r&T-%tVsReilA62er@W{LcQ34+-MHpd0G8~m%|Ui}{n{M6-jFK@JLD1~#-`SkqU z;l$#$dsjhv+!v9F3Dtmbd1|lA_OQ*=wcZUTuSQ_|djvU)Ckru}KDjv5V(IKJ=5IaC zcV7Rs$i4I`8c>S!DP`e~{MTS+TlKjxXJkLG*xQ6AVrGY;A?TRXhZ5B^v#&{UiiX}O zehH}~Dnbfw;?|F)^>wCwv4>%Y?YbF9nt6)ZNz{>$J=v8(kZRxdLl8h=Qee-|L8^?r zRQBOe=%)-34eI$sdc~UTCG3)U0O0vVp5{2zaM3Z?@tkdnt*q?-&SOL>Efm_)_ekaV zN9j#$R&cwrs~_5VUst$qhXT$W=B)_iBlFdoio_UhWl26T?}>c{Htg@mOy6R9&iu~O zwEB&S=F>&_54^E8?i;;PE&MJOk&15%cY;M<;=vc;;LHGv;e^p};VwV-$|5nO0l$_> z;RlRsAwTP{av@$m-H}RPdfX>G+qC^O;L5!xaZ2KW2qDN^O+7_Oj<6R5krS<-Otb8+ zayCk1BBS|1SB5x#DmP?$et#xvRvM0#c{dPtQdKg2i=B!`Hh(DDF!S0ALV}-puX2 zoWfQ6KNjfif5M+TjFc_{Zx#yx4VCy_&2N==GPtIqtObZJdIec%eI$wSeF4n$g#UPf z8wn!vM|ClrUW#y5I51fmXV0WiLS$pRk0d8o>b2vJbSl{^jmlj0;$tq>bMsxRQP%2~ zY1~d)*1Z>aFE~G6=Sbj9q_)|j|6AJF6ZP|VYS(M>F!Mpe@0^PD`JOl7#~lY4QvN~c zU7EGxc_(+4yAVe)g<);Rh00`gdHrM-N&~t?DK}5)2{#%VbpPB>0R0R=<+8vrq#STZ zI5B+dzuLZV=*mM00TF?i3DYtO{VNj0+9qv?vZO>HQ+m@DpS^>L$P0Q!SxjyURcrv=PPF~t#*&tpnL&^wRJ;^*?|ov5q(UZwtl@ULs^*JYP^EU8P` zp)rCSFFEX7GS|D^E~WTePex6%B%tVoZ--J@aiPiANC8Is?jEEf1p&H!YBSPBv1pDW z8vr)|(FfpjzfMDPx@;8!W6V1|YK~a%ea^75m=~y;jbADmSDjy*?0G+Uc1oE*J@bY!vcg_u~N2rQWv2Y4*DgVB);wo%+x_W46y__T4$N`kTEq{#iL8-~v3m_}NW# zc}UgueQ&L8gTK~(F=MdGYrk=Cn4-Ra7J**e)mp!Be9v_+<$MR>6$IQR`%wypB06;` zT3xLrct@R;ddIl)%{=4|ie!^C2{s{jNULXZHhQW1Tjtze5>KaxjZ2we!@UP-UVoZ7 zK09k4ir+ga5?ZIp^xaeJ13YaMvO6beBP6gZ9Kw2y*RhI;YI-&I$%~H`2Vf_@yel7Y zA7TC(o1a<1I1>GpbOWabq25=QUu|5QE;1 zGZZ?tel#uUl!JokMba6gy8Vj`g8m=A`Hy<%pS z3}7@krCe&f(kxLZc1jO^P3AlK&dGG(UCisclubG zeViB4t3fEa(V}2wSzA-gZ40U$RGZ5SVcs(h`#MF1 zd{KQOjmgmZCENo#y5y??0{P4JH9=(&XZoLTll z=NU)GtDhCi*RuXnOrmG(M3cs?&GJM}eFYfAGm5)gZV*11It z$KoD;UGO2Sx$yj92JDtF=jK|9&UNts^0Ggn6;oiUF=x@ z<4zi}sK<`ea7i2_Dg+EkMnjiP3WD|(jtsi<%g?E$Q)laO33hkn)UBP0dj0#30PVyO zZTjNwlAb&0(UjqXdT%kxv(nALhE4GEod?agSC+|%8p$%l0tUw#p?1qV3nu6Ol&Han zto2#JkA%Au&_3l5P;*nUPnqdhGB|RM_>lSE7Bk<`jobmTbjnF2lX%mBG#>;cEuOS(|UplXMb%UYpKKQoLU z@LJ44&4YxdgA~~i?A{qRUcTO!&}}Cwd)95+VM4(O^*!CsC?`LN*f9Byx+K7YSfVHk zN@EIbJ{u_jP0b~-G1{V1xJu0)>-JAe;mMGT`>f;UBV&mY0kUH=lf|QA9H%Q=ofb7& z!<(_Ru?CV_BWejpK$!}Ci@6%IMa%Ny5^RrolWXc{Q`k%EajRs@^Ue~A5M^s*xKg_s zI>o^G_7r!|pD1JM;A?za-9j;!@4kv1T8b_eug8Ii_!`eA-N$yJ?!~m5s;(92{lSDH z+o6%>OmL@zX(qGXDr63OpNw|H1UeIlr$6b_uhO_lQXP0TO!h0H@ zz6-%GBEhcv!amUj1-S`5Hj9U>n{?IucpapMdSb#)lYIp9XL_eB#nG59B_aGpgxmWI zQEWwM7w6ViZTKPau1$^qOT`<6V~}aVqeUgN?R7qPdk5M?(@FlYdI8X+Bgq$@AFqkG z&it+x*yN^-5H>+;U1^&5L-|_aL6ywXZ6L^fS2aG%(CiBDuC|IcAWdNj2JE_U^

0 zdL(Pqts-rl^12tE;8G{BIJ=dRbZ*}nB+^_2j4ZG4xj}q-mFipnT0^=#U0*#{J`{We z=re|Jp_lKd`!EGV6$=;$Y6?JO{!?%U#tR=%=gZ`rba+e#Cj=d`zt&MX22TjP(A$}{ zn~Dscq{MhN;J9!(&P->-Ayl&960hqkeQ7{K8Tb%ViVx^p=6H?wpz3xmN3Zb>xW+lZ zkB`a&KK9PcN9Dg%QHGLr!`Z7P3kc=&>l*uG!1{(T>In{@j%uU#q_{l(d!@BPqN1$> z<^w_Is^|I)1@3MRc2H%`GPz#H$2tTouGh?l>;dgS?BzLcf+Z7vmXoLLrS0u|ieE)g zw;T^86Kh8B1oa7cXF6@_5?tY>p*{N}>264h;xX9cF#D^eYB#V@WIZ$En{g}M zyWo&4(~mOEE7fjwuhZFduN%LCCJTIV<3=-$@N9vI^*+UlLyD*QNNCDy23Dh~Y`0nk z9Y$@+U+%GH= z#%^T3d%3M(ljjV|+eW5B7j#^#1H8kD`&z@@yEZKZUu9^D0>Nki(f?(Ae+;d-1aq+ zMNS7pCPbytV!9?*ID`9~MAn`Zx>S0fbAFvP7Vn&s1uK@mXSHeHLoBCDY9xqr_UH zLC9W!p7JHslliwGP)L4T0CgmLd*Kv`4$)~#)>w*NqQ|qXg-TSW!3`$;MAUEEHn9A$ z3Espmf*p2PspB4HFXzPGEwD}UqlG$Bgsi3sCV^a$G#-;1LU4u$d%ZR^aw41-yDM$< z5b7D6w8|=Va#<4zKIBZ{km%02;N+Mvtr4CS=bG$X-dC3@NgzfsG+vlNnkA8Bv~rOB z6>Jzd&gW|p@2tM)5w~#$_(j5QH$gEx8W*isLbv|Im2jUlR%sYPjk~2-aU(x6+;=x4 z%`vD@cClaZh;NI|#fC4f!>S$9^9!n>MZ_7yk*!hgVp ze+HPZgd9enAx1UC+{2wXobX-4^(|KJ-ziMi7znlq3}+0CL)nIc2>E%5wfTODs5hqt z%5jN&jCg~^T-|e!&sg;c|HXMhA9`@hREP4qDfVp8K+;1X+iDJY12(bSC1U4?b1;;( z5oAQ z_j`V%nl^m-m0-ucNk2oHtj-nG?_8Oc*dp)kKXuJp2%i(4^mrm@6~K9@)mb=$*FmKJ z@PB*{NkUvg8U(knLg&Rz3h(@o`~>Gu-`4aldN2&FHKWoV$n4~oxE9xylOi905oN(Q z&%JbRA#h131HuLfcX44=_?YK$lJNCpgR1X$U0YidnDZh|B!#s_zz^lH7S;s~Z|Z+Y z)e1U6cy0Qi4SKL?MF7rTv?$8yW3v56eEpD2TqU5_BdD7S(GVo_9~Cmz5sob zy9#4*%83G6TRM&}TH+%=J#P|_`8M-`I&C|(Bc-bmdr2e>60ez{&Zih`kWCuZAQiO8 z*uc)UM)d>z_)Ri;ze6f?iT?$|1StDq)K~o!h3aBqenhhw_XgptnABbB>0l70gGuBW zG+QEJtlRMW+|>@}P%2v#T#ji)^-SC486V{i|GFiBj-8x-vuXHc>9?rROK!-F2)x6` z?|gBG;GBtF?}(-s%yWMf!p-y66D76o@Mb-{SrUX3JHa=pEZtC8f0THu=(}vV3)qm4 zp19B9pv9n)5P%zUChR2;FB_VU@Gnx79{IEm0GjaVSm5O>pqHsi0OE5qRhIz47^%z) zr6U8DY=fXA=`4epm{xcHH_c(;^08@R`&v6ax5>9ofNs+1V%MBIxl90~0x%k{;J3f# z8P6<&lnnkNxlzGmZPIJRaR;89a6!<7N?`NYvh2Oa-+KLB&+8`ZJp=@^^ zKNRY$>?3|7^BFqp{JJz|<*mTi3m9i_aWV^I9<&nDhdl&#XnE>{N5OQ=tYN${0-r*a zwv1BCG*>R`v;7X9-)}&maA;#!AeX4^My`Yaedn%oEL&~ft;r*uox{@)ba3E=<}+$C z&fDsX1`eSsq|ntgKd@tMs`8Qtk%KQH-bgf&nbN?Ok-(ZdgTJtilOq++0u?;Jh#T|l zvuLiV{r6uP|FP?5ak5)xfEXRfn>HoWJK7w~_RQa*$30IS$o=QOqyT?#Xp|F|8O7%k zV6>=J_nZXPGN5Phr-~=3Z0!D(qC=XFn+8Ku)=5!sG@QkcHA#HrGjXp z-u^;Xk=50BL*0P@hA;fFPQ@K@bZc5wvCItTDkJ<;(Q}1~FPMz9@4)H!wk0*gQd3Ir zv=va|JD>e6g-y%cU9ijGztD92J+lO)T(aAIk>E-m$JIDuehbf9EiP&N)1xjmn3A1Tz*n!5(L zEkbnBlsj>)r`KL%- zccCMMo9E&|mMssbHv494Q-j@|^Ou>UckXzZAtHf5H>txx+vav4wL%0ijRQr{P36}e zT;>mjbk&<(^%!R!{m%Kcq1iUR!dd3@A~#mX>Aj4jq(_$OQyh46vAd#uYoC3U;mpF6 zGdsF;xU`3ASR(4*u4(E7ru?-A?*;F4&Z#l=vYjsX*ZYZQ{7nBJ%d0awhe3tkBm|mE z3Nn`TjB+nNQ3ujpo;T=@9qF?hwk{dRd=8kLaT$ID3F4Z9q*z_Odkp=dH|4LOI%#tk z#C{*w%=a015~r+q^AMt0E>aG8YD zU2!OM(sFZ{VXU?}K^yxLllm9lU8MB)r3QrM^r57OBejN*rgaOD5@vr3%T+r%^q=xiE#Qil zXshkhgf|i4FNqfs?fSqj39q@|MN;?+jsiPxr$Cilu}fylTCDr>ku^tvhq+}JE-ZEy zMA7-LhsU>~hB+GI?kM%9kWv>YavDolUcMG8f#!h;KWy8zcDzgq9z(QPtgks= zFikqv^~s_@Oel&yL9`=ECzREPcUUB~3LjiWwlt=C-w-vC`@CwX%HmRSFSGnfAuMjI zs+bglenlxS$&+IS6(?(ci!6}-67OL|UyWm^w(VBBKPIb+M&lEver0VOOetMBw~+Xj{|Vu)XXM?jajb-tKcNh-g(%7f}oXnVBb zrtUfwCfED)ihXs~c^4bRYx=N;6Nxo`{|L}F;RTSAPir;uw@F7G>V1<&REo?<2$D{? zC)an0-mq<*7#!mKOb3~dG+GHP_1Rkms53~xM#$ZS7Z{I$Jq>0o18jzjLcK0Ci)U*R z5UHQ?hh|yBbj2^+f7;r&>;8&4g0T!^cq?5}Nzs@H7oqFr=UsWP*pEqX=6)iNd<&IZ zJ{32CXs6w|o>H$El06M-u>(8w;+cVu+B~jK}aS0$o$H|X8Nrfk7R^8Er zqt5Q9QoLT&8Of{&HbJU(j-J?Dk*40Y*YJY3z2*c(&|3cOQS_BM}H zgPdEp{50`!w#)bif{(Bn+a`N#Fyt|&GLj!~&!L14@IBbx*Tlv9R?}2Zl_#I=iN{GZ z)FPRRFs;>u7VsW}C1O(|!w5WLRC5L44{T&;7CiYEx)0~Yj&$S|b@>(kt^`sR(@VGJ~eTtgvYlGoZ#a&{Nh;mar zUqK*H>A&0ya^gcmx0g!*;uj|CVKPqr!bNZfyU=O|A{nRh+@^2{90bs6yGD^yI@_`( zm$?~WIUqH&6t~CP%d!1b%Xj7HA9gsr2!MPG7W=fdoe%;Q#D+c%fl zonJVwTDKX&zGJML9swG}?+mkX-p=FYKz{k4>$*ML9QnG|VuS^?@BSvx-_a((%-X^? znbXVhC^7!9(2snUIzY8kyLOHhduXMZq1X#XQOv1+aGmVw+`y3n8{-X7&oy*L#WNe{ zH6iddMPZ#B4P|d~G|6J5Ad;Z}A2lUz*KoU=Vd=m5uy1FwG#F~R^)HAUW%GL`>}b9>Naa{c-&yi_2_?*)jrgc7 zM)P391AN zvI^DKw~y5{;!ovJ;Mai9e8aiwYV=nPw`uJswNdo`_TmS)Zl$R?*V(|GzFw*G6~QCR zH!8tQM*$(9;8{lIpl_GlMsQ%fk#@YH9?{EnuU#l4ZLw@Oo~C;uT%iNXLNCw9+IUxJNd1z${&n^H=!iv4m zbw5YKjm*Bm1Z&>KRM~DcUR}6Y7U?gD_g-Dic1TxZ8(jqn*vl*y+QV9KXA>oo0EcHA z(9E!-eGpl*tEwo1IBtezhJi#VY|9~J5`L}2I%ev;L8 zPVrX-y3!(>nK_E&IGxfb$X=1S2dZdFJt&&;_mddg7( zjrKes?W#BJyoduIn$WE@lRu$1I(Z!u8^AExHv-s}*`O50{ih!na7xP(C z=AI9+ZGe<^rZuE3OCJge*UFKjLI=O`30MDIWyozHH9?1BdkDMiY-y3ho}T6kk`rZF?RmNU(cF{|J39KgkRPIG1ZK`>rB8J; zgMjZmaExQ68}&f6HUZ&HGK+@-c5W*2@1N0Wltbzts%4Rz|W%BT}^v@ z)HYThkJiU(1Fzf5w9#)l%z56_C(2Yiw36d#ueh|g)wzenPz*2P&%6^{r=546Jf$n{ zkCT)l!?31~GgMq}@(V8D1t9vd{#kaRu2U*3CkAs1dhX0?b{}-8z7Dme)wP5wx_Bs+ za>t~i9rTpn&lPQ?y~G7*&x>-jjth>Ux_lkd%@N$M?fo^}{et+IRpcLULao2Ui3E{O ze?Gg7po=H#W+c)A#cxAyix_^;Xcw3~)G>&uxahxVjgd=rs7z%B65hCP(|F$Ba(ZrVm%eH7t}1^p6H0{WyDwi#=hF)`>;_V3O2xJSU#r4%sc%{WVe=en6dK4>oZ~| zBJ7N6VksuJeUIk*gZL5t_795o!p;%-`{{yUTnVYkq@u0npYe%^%t>Q|$QEDGu3~$U z`R9`(<&r!%0rJgviw0||K5CDhrws`b*cf=&9f8MizSop<0DhB9u!zqIGonkSma%O) z-#ZSAV=hcjqv=Olizz%<9gig{?@K$K%4$ZmuG7%$p@43Z;kk1-#MM1bTr%5i{nG$z zBA}`!^rJ{#yhU5#SiBpE;1^OK$cI)QhvgKGWc0v)=J&Ro(U=np7 zz7bbxYW>hKD2V*S((tj8YAAG6n|8HDAO`al_Gi)?Fy#6la~F{!81AAL9{bOc=c%61 zuAelax?y9W-1&F96<`J7aP1M$BNBC_B~=aO`zmX0ClqIjsF2Lx1Tw_%C%uCG;IOk$ zE&ecu0>OR0B}JXHbL@{_5Wg$d3~-CV8Ju~f4uGna^_9WH=9uhnC#x4Z*6l3flEoO} zE@EbgeQ;CaVdPCD@WkqaB)wB@q)H)B!Hvle+n1hDAjToU0ZmgG3^B&bqN&{o*4GDQ z$c+<+s21TV4H#Fc5|7bd5*p4xTv2d131@pu8JCa~GY+D56aF=qK-O^2C@G{KIfdVn zF9BaP3Vg@U!k>f2_$-`yFN%Lbm1X|98rC1AOxWyiFa64M%{=JV~XVpcY zyIj59?MgEkTVa>frzE+v9mcJsN}=o*D}EzJ>( zrYXh=Mv4dBrhX)L*6Rj)(LN^65uo8Ny||NLTi^*$6>StAdrbLT_lG%$Q+srmP0NyP zn6pq79E8&7<5wq`%4KiY<|yBT3mQUvUhc`aPs`3d*jJ~GHCVVQWAqC=C~0q+VVyto z6Ax$p#}a5Cs-E8gz099A8Tio8_P*TJ1V6-8hUWIxyvK^Fp}H6AL|4e>#>> zwxX=sBA65hZ2DdzH(b-CxD70ck}}CXWRa)Gu`WYM&R^qo1g~_#l}*oAm9Pqd+ph&_ zB%N)V3wKXp2kNr%;gpAW)K4L`27bDGD2g7uCJ`tkm%C+LxY2cO!}&e)&gHhT*|3yW zo6o@cUe$yKEk%#gI>AAgSbRR>=_%JE-WuESyWc?AizJEcu!%%OC55kBdd78r) z9Ox`BbR%ahCfkh(GB^)Mmd2*LnK1$pwoTPjPhGm-p*6ot?#_k%6CxGDVMhl;ISwRG zS#v80{}qY*p9RV^3M&uhdTX|eJ`yUCKheK4TKMS5m8!~QQl`X9^KVf{oWno!E)NKs z!36?f)DR4H;WI^xVp`tt&HYFDV{AU#m=noGw`TRzxG#*j;` zqVBzJH>G2G$f;+A2c~vf_GPfcCki0mvWlU;E^KHtD2OK`PwEir{ z&HH#H%nE#)vpW(Ek^6k34jEki~!U0CmYbt>(mP3qjn6(EF}Z`?{s%g-gdSyqUiIbcG-? z5oX`aNf_WhBk*cZ03I$hiiZ4q|HEe`_?u%{%{?pMWPkxuvjp>yoZ~p|fNZ>}n36}c zf!GuPuAY3?^`pL$sTiM$LU==Jm%PE zRijQ74qv(Y&g$UO z-y#UhVcnb000{QWJSn5E=mF2R^gutN-NX%rpGFTQl@;09q{cA=IhrLJz&H^~2)8ZI zXEkrrif8DAb1B?h+4PIf7^y0)=E{I0mUFt*dt$bXD2iIy(4p4L@uzM%G`yN>l1aIY@5ghdZg;{FzFX~*o;j+u^kgc;9HWU#WGyq?J2G7i0O=3uGp9U zXD(53*7`Da8kfIx9o_^C{j&SBHp?YCFE&WWW=7Ou|@!4={{c4_r%2oaS# zTa8ghdHxnr=uN=SRS1*G38JMnfOL@@H2uTI&|y;E07Cq(8|SvK^3fKTfZ*mfp&>d~ z8*QgUS;EGUQd7}(5-Ll_EUX3`2qPTQZ$y6!7IjKGWP{Z2^FLw2x8htoDRBsN@bg{2OcfsS^UNrUuNF(QG}VHoU1TnSA_~ks zmbN@Viht$=|EHy`^%y9B8xXU1@Bu3+QeKW~aM%0&JEJi`^aZ_pfode-`=ou+I+#DJ zOn`+Qj6W@P2)PM&b!I6}l8Yfhn^&DNE7=8T0pBn#B_a5T$2OOj7P}H&jB<`af;iMOmo&1*xoXxu$&yK;R;?9=%@QGq@j?)<(U9#U|W-a zY-lTF$lLUZN;+3sE|fdEfY=Nurn>H$cZbexT5~2>~n!{g*7KpiRa=Rlul%t&T%EDnu{JiApSAZs z5@X}+7e3mP?s%uX{9jp3O`MWM7h_px+V*C;`5rG!K(5WNJU(4^eg;>u^aiyj zCz&#BfZS#o^GGeiwbKSe@Pss?QI;Y*m2E#bew5B;J(_(aIX_LjXf0?d}z?&EjN5?^ZPsJfJK z(3BFQ`d*xG^2vgxUmHGwGMZaDdr zuKN7BpOD}bFXUj6E_0eAcmob%pDacbi;!h~&XF-y$<6b5n<{I`1hLB=YXA}BV*mPK z0YUmmMYD3V$iDPfGMbdBv7uUGZbko^Fd zthsU`K%de~AGsz))Ii~mLEHgL$_R8HR~}j!=h3@;&!fFallmn zYhjF833S|55uw@<$gv#`I>=MCtRd=;9bYG9;uYC@?Z6w$pM`;413**2!@p{p{7o_h z@6G8W_FYtq^-hl&STD|MG8yd&zmoCkrdY@kU%DzTJ@i=GyjkWaCQkQKW2<*Nk#+wD zN35lWropS*S8mAv)R`4{jbiLaU)kQoTyvtgkcm(#G;Akw`W^sq{ zugA8SiEQA$;Vzd|H)9RYtOp(%^am;q8s%s&X+TTjC)tHRk0^Y{%qBzK@u`@CJ=vyV zNEt;{L_X8|weYc!Q&rK!*)M>Vje#~F0n&R+MIP~(Zod8*2hIxLOWJ8gw!Y?^&3qj$ z)!XS1sS{5(mI<`y13_8Ho3%aN*#6{DI^$GPkG#L-v;KnHq8rP zV$)z~Ys6NMS#JpLV)+vZ?PDNubN)eW{)PRRw+H5zcHPTZ>+4GJV*)MI}ZiQ(RvIxB}PSH;k_EhDG@$sQ7f!L45 zUKfVv?^c^PY%M6r9O?KJKj}W_yx9scB^nJ)3eGZ{ z`OfqIf`Nd2mg~pCH;WZ_N0fI1j@VPN;p=h%Og#@uzia6rCc{lg*%0ru zXMDwZc0MUzB0W*!dHv4{8=;WC`Upx}8Z1x+YfrQ?J?X){mV*9$)EBy^e`m{=YuCfT z$4(}-n)|87f4o?aZ%dwMk-i*rj`LVT-L)3<@N~bUWb(N1oAHn%kwMq5Q_CJEdx&y@ z@ugjfXm4ahzniyDW}ZObRu8;9vX1Hz9V3FGTDqCkODk&&D8zYU&noj}f55kOhe?uu zGbDcD>pCf865^0mniovtDlURX$v4ipwTg%BNp)kt?90bYzp@7UOWFuH7I^)}iG3)R zdy2Z#Ok)bhyFn;tlWD0*Qz0bAS=oD-M^gEmYgCb^eArvrkzP>!Yt{h%V}rtX>ro}p zVKeIenQ%A_DEes$0&G|G>HAf3KEsm#L%HQS!;kOqSx*8k4Jlb&>@sPg9rp@fbMy3DRbg$*2_Az@5O zo^0aqx@RcLz_d6wUSp5@m3m<9!MPX|5FVUxhwtS<+km)_uu@Y`4f;b?9UO*cA zeE7u|h{pdYTlA?srQWFI`tvGUDk&$pHbd_0V!a9(T^Or%Jo@t`;Cu>QCMOrZ$?Nqf zQOGwy0Lcw1kYg_o|Dw+sapgLhZtmj6V6$4|ydP5HI$D@~R>W|kmUDBJ{iGaxCW-_n zqI)7L#QcaQ6qQmR4wE^Yo%=~XeX#C#1?to<8{&m}IjQMrjNQJt!<+8!u+~tstCvWj z`NjT99}o(`K9K%ZrpB_&R8J--!hYh%JJ~jEf`*XEoSN?JxZFYA{{Ln_c?#HQE(w+S z2V;^YWJp-oOFt0w)&7na>!OaK3Ptfz7t*fIZ z^L-{7nwI^YRtd>3vUtkw&GhXZN~o0IGF+m{8h$?v=aUQo*5e81t2U@gXKp* z*CRY_$c1rI6!uVdWd+gFwd+^0bCV&Sq`R*bjd3M~Ow~h-^3>{?K7;qi#?4|G zszSj=wTnOs<}Qn|vb3(+!bwdgDE|Va1!!THu`^#N9dVtpf# zqjGWXNjG#1&8_C$%83^Xt8!Uky8q{dbdEGC+5w#1X-s{;GMhx(7> zxV`t@v*T=c_Q)QEWN+d)o19CCtTXP+66ef}a5A!;m30V*aAjS^;VPAqijsam|H1e1 z_&gr(@8|P=y_Ti)7};8#d}>2WJ(FB)s=1S0HkEYc;Xi7D1@Z3+qb69=fe*VYXGP@6WsXn04?i zlHu`4wdlsmvHbB_n}i&t*!2TD2lzyb8zb4xVm~n_M6jFQt8_5$_A2-OF{AVXy=o0Qy!`~n_Jk}nGFQUFRyO%dDaq9w>ksz zh*tVDs~x+z{r~}}%?8s8U=K1w&#&4vOd@?JO9h5%M5SEk@QtnYx?!?WHY%yU$=X3B z0d;tLjOLo2qL)~0*bts7BuYXh#y@Ds)hO4C1-+S@Trlq9+R1UnPvnjLS~(LCl> ze61Jb(y`NPjf7$^YZNfmcIrgst9I5RC9x2rz3alyp%d{)IGh%)%67x<&9p}gQA7t9 zR1cKp@^^Qti+tU5$Es4*A#-|xYYrnY9rut;$AHUJ!2^4 zots~oVu#U0f3C(4=d1aMyf zoPQ%FB=aj5dFh1-2iq(}W7s-N3qD7EHZO@f!we^uO0>+CLz^OSPK^PxM9pn9i;l)a zym?JR;X4n@-!emGRyqu%@ouT#0i_i%+UOCh+*IeV64iv9P>#or{JH)JzxT$e-xR$q zZXh*Du5p7Y@>2L&3d?~Q8H@DIADy>;p-HW)5o8?WDxMS!7*>rHGo zE?*gr1h=|p8Y(bB?kAPm13WKsR-Lx1k#eq%ETnr?5Q#vmy6G~e;9YTLKC<5fFJha` zqUjRTE{j)NkMk*a%z+ZOhrD{79QFBC?vi=T2}9Z{OsSa`A4Bwwo!%#~31^M`M@6dV z3NBbyLl)>FiGyWG)S$V8IG&$Rm&ot(%;_!k?QWEXZQBBwUBm2Sx!$|+l>~F!Xhmo9 z>jLX-(@*aHs~>`f!5JyFZ~voG?+Z7`{fvER|A2b_3nKX7Aw*n5=H&QD#@AfIwYx*Q z_-Rb;=MoL~znPkwB+Ei`{GKpm)6HFrrG3O?fwbyA?wX)Qk)rs;5PEi*!A9)XA3Gpp z33VZB7q$YrB?!$LI$Vd(CHS+-M~k)f%F}$4xuOZievMPp}MJ>_h;J#Orf0?TxfaMAHnsu)zr}h&>uFB5vjIhLrJY zchxI-DA_SYAYw{hK!6i5T_65kj(=}#8E$+gxKwpMeLLAc43*MUvOHcWpJ9kewl$q= zt$f|QK9%|xgB8R%R?pAWYOo&4y}hi_@RRzUdxpxl_RQtwx>q^V#GWE_gu&qJ+TQux zklQ(F3fMnlfiW6?wTZKK*RT}hIXEa`wDP>xq}N1cSBm9$^*H@)N;9#3H6>v8(&|7n zAICMB9PDateJB>J`(&PE{ja14!`GIYAtork>Rqv9zHj-iiEe(%PfnO=NZ}~~>d9&< zyV@tPoVt6K-tEa-aSN03&14Y<)v7=#H5>!mKLKC+3>T6SD73ViE?`g@^Xea&iRqb| zGeQY`g+8sB6Eqkw%Dn(;phhcqVSg}Ne!9g+&||b%rm(N`W7dQE7Fgre_5(_ig%8lr zB&5LbMH0lrz5R%iXs+8KoAI^Sfr0&*?>u*W zhA+f_)h(XMd&Kfqu@m~%E}8m2svsZ!a$FGl!7^`*jjyqt$-D&9)gv~oZeQTlaD_xX z-Mbk*%uCmgX+yoy^&%mIDXQr>4&HMK^XrDk--K@Q(jeVREAu+hw|FaqZ2*TgQ1L_g z9tVLzimzgGABUZ!Br}0vmsq2t0k59KR2y^6JIpbD;nlD3p$-qgE5J4Ur2HD!=C$W$ zxx9!{y!SBgI*&DIwM6}{Nk6=OFQMyZIYqUCF2`H z0se;`vd${I=_Z%0*bnC8l`jOK)gCa?+ZL}Glt+`NmE}7++gFJhTodyroUXcs2am3+ z^oS=x>b~3pSDr>XYzJ+}(O+|g(?w})if8Q}OQbnuvc55C7m-6=8x2+*$juIT@|NkN zW*pgR`(Cct%uL&%$3O;klSZ|LrY^2@;4rlD?R94yM4R0EW?DcCStjnu9eAx_VbCIU z2$2`hz9ojq>Z51Sz7i^$`*n1h;=*pA97FNW{}br`MYBXS+lwp_yuq5;;@$*z)}d$K zEavJP46c>uWjF*BM-pt(qhGM#-GpVH)O8i^Hj)PcDkDEZ@cz9Ipech=WjZZ|yK*jV z6-{Xr53tw6!n-Z-{_N}x@7*X6IxTOMxw0U+XIBV%7d_cwi81R%1k3!_%5oX zOT!s3?eyd7B;6gCx!Li9D`8!DO(%JW9#^~2x|(o$Ij?Xvv1IKF1DS2dB`ww=OkiPP z8=SQa&VO7{ZP$(~N18t-;_1AFIMrKa-YTj!#HQonk-fh{1~aE@r=c#9p@GOxAW zlC7RD7LNN;_`zWh$jBCxC7d-L@9(^5vC5o7+OG>lC;|l9R}|vrx{x1KH$-itJN%m% zQo)$=BYGM7x_ld3ThHiE4$mR|v@c`7O}R##1H?|D&ELcI8T3kq(u>rEw%G)2&kMbF z3G`L>vZOd?pt2FmDMC-!75`*#DMU)#%h)?t2H#O{S$6my3n#QM4e{TFBHL%y)}KiQuC1Uqtv z)Gq#>)Y>|iun1c5cw6fcGReZAbe5~f7E5dY#$2^(K~N~291i@DN>r5+Vky91Hz$}V zV8GGZA2Pu9YCl26!TyAwyk8WuezIP*1$)7aK4kx~a5eA?yliy$cbrpo7PszR1S#-` zq1}w+0^Nbyg3yU4a16g6yM%Dicb#%{_7b4d)Mc-DPXVZY-dggvj>6JZ1V%TSIP#=L z->uY;tPL&VEM#KNR_-1c^r(7AbJfHo>p+!c7aV}(Beoxr={4D|P)C`^Z$YTu!UWWi z(0*YC{xXU}a9Qu1CgZ69l`p^yhfY3^_$t(R*@gh-?A9I%2pRgmferWG+rX$foK>yk;PA{g618wiC2(}T8L7le+KotcDpQ|#48)QB z^pOJ-srm1U2qqU#pX=9CR^y+r%DG*yIRCkBr!2z+0botuDW; zHHFy-)z7a^R;~5E zWro)8H9;J80wRUGnO=;=F6HWH?|aJ?(_eYq&7wCGP49yXS5oPqq`adMC(F*%-S`b) z?U`O^%7Y&MZB#XO(6=i_^PbsA&0C)XzX>(S4-=R8KM_P&&=>QK^UM*$rCWRv$REpo z@_yuC3~t9lCFma$=PG|3!#3MG7wyL_!AJ5u9Yg;%)8wIFDhWXwQ(5Oinq6sIFW$G} zH8rlV}?ii=4f@WS}?L`e$S$%#Cb74;^gcdn+KUp64 zwYhfb>vDKv7YI`*kl7!2v4j*kKVlkRc8;?qGv;&E-`ODz86a=Y?;u7OTiMO!PBRSd zFFcR3dS|TcmE$-ed9zRe;=TRSbVly*3`tb1gF7I7#HP7Ln8@(0a48+&0FblB|Mgf2 zkzBi@r{VjklO>Do8-$U;0y+~T$4cavFHGoo8l?k*~ zZJy9>!Z)+pHb3d7?5}D(6wM=z3GtTtqv|n%h+%2f08T7|Esc==CfJ!Fz_hUTWhOsa z{E>B8(CU}FrIl>=d9{43`}W48nYut-C>8^2IgcqVZlD&iRMDa{DQpR9Yx&XuzAD6`hY%P|*qK?n#^NPiWz zjv_{s6@k=+R!w93dgp$WIPxg><%F9T=ila&ZA-_x^{Qxe2((2YUqOUhc+WAvsa%v|)=2SKK`w`8{3;Qga1gn?wPY4Iv*8|lCXQU#n$`TXuDh0Q1 z_SzcTYFF$VetZt^Ga)ZOPr9Vu+* zU7fzI31aIhH4Y77*?);y{MZeGuc=NHaJIy1b#I!>_3NXQlKo^>JmwX@^6D~h_z;!n z_9y58AJ`_c3gYoVroh{5CXM|W?%k|!!s+j)Wqo~BJoz2(aLfCY*OOF7cIr|gZAh|| zA}`N+BcoKyh09Cm)(3#MyoI3Us)=cxRiV^#VqWZ|XhXTlN-7s|t%}q(MT|1#SGaWD zfM04peGVA_;R&3Lv(S+2kgErA)Hv9o2x%ysQn+jln&oAAl{|I*65f}V{>H-fcD`jM zjbn1tn?P$@i0YKUiO3 z6>!tC(%-jfUDAr80tXZeaf4}%ETJvCQlSp^^)x&$t6HQ;f_jii(#WSw{YokM`*~0s9;NaFA+(n#l;wK%` zzV17&kS$nZ>hgN4gnO4;-B8V0+EI_<)_&)^4d;s$baw)b{!m!QsFq5(@(aPvL`P9I z9zjs7s_412*PJ$DG_)mQtA1vH zim-=vi;kDe(3IvF5yz%O#YkiB$opJmR>}-3Met?ofSnlIpl$`SL6E)|h=_^q@NTQA zdziPX#4Lt*e3{~&e}z%DWUJ@t_0G(GsXIDuu$a-Kz-wVik`1b${Lb{_8L0Pgx*f-* zc~6j5Mix6ilUlqPOH@#OYQ$6QnDd^YXf>nudpy7FGq4;V7dx~_C)u9-*T;?p% z5!*Npqp67ch#FAm|Krl*VQ>vRey{Wre0N?FU%ni`TkIc**HF4kj5hkmrDig-bJMp! z-$&;`I7Vp1w9C5XAVv2~M!uHQGHitiBSxGc0T|u)2>)Z4;lmTl{0X-&Sc>Lb`8fPTVOVOvbdevBV7OWeHCx z*DyeSOE8?0f5PriI_OCfz%!}}nQ!TF90+|2Jg4@xWKYERweJi<5~F4MooN^?0`ETi zUDVobAg&X&n~-diw)zkf})ppBXFl!cWDzhAZQ-PpcjVyy5d)_>bzvZ7MCQ)`f~=POI*Pfpv#h7xRz{Ifh2H z_GuBA&$Lk^X?oBZKU_(S5p%&cd9<>-v?-}I9ED2o89y#hGkGe4(iOkaY{Z<8)i>_W zC?B|~KCU!AZ(8V1aHF*m>afgi0IK(pCb9*C`af@LHEt%9Nog?#6ayxoeU6foBYQQ)+IIx?+G-*j37+`>VGrpfY-7?2kSf!AF)x<*?kOi z-=$f3@K!e56;74?1I}<_pSp3!F>vBgo~b(y{AQ`5aP>bbUL7k+9F70o&+YeZq%_h% zN*EGdJJtNFvqSY*?;AsaAfc>isjkWSyMO+TCbQw>b*ngFv{!-}d2kGMb%xw(w=meI zEB{d`gf^cV)jt>Us8wAG6xT(98ff6$jQa_JuP^Kg42Qht%D0aW9^b1FW9pnr#`CL( zfZv=%GMrwTgJ%Q_sK#9wA+7+{I52%XN2BU&Yz`EU6(Y&%GY?BhC#{;adcxAu+nr=7-P{LP{_%BIc%w#p;=yQnpau=iL+KR^qPj_D`OVxL4lAGtO1Q z$4YKnWQ-c;z{i8?TfmuX62AAPw{o` zxOe!iYBN;fwD9#7zX{-sO>90LwoXNe$Wrm3B#ec&nF2 z)%=({+?i27`=hxAmzMGoOPZmzv;VMEHq&fa8hsu9Y353g1y^j5Q@{Je%OBirn6>@2 zkq`?$umGHJL%--jB_j8p)N3o#uDmHC%}dht#qROT>0KbG3?|(115n8ZB%M)<$UXOe zvsSjiUFmI*{b`>ZsI|^h^si1m*=I+6Sxzx{8?L%7aQ6*GHID^^d(9CDTOJGu%xtp7 zM5F%{U_fg2NqKO&zN5gT(fsHI5Z=!~L!dl7_##oUnX7J@!Z=fjqNTXLfW7DbJMXWUWJo?d(@(LU;N<+h~$H` z?5U5l529#BxuPQQ0$Dqx22Q8>2JnpkBpi@8K2)?0+{dY|cU#3x)kt3Tu~Nzn;b0BjWh>(_+@at(H^tlhZEiT$7y2xbF}-_d>|6aHmE^Y2`na zTC1Qki|FVb_t7hpclD0Ks>5SNIClF8HBk3F{QTP6n~YWU&TGL;2wukRHoac7Br{pt8Re_h@2kurAM&v8P`#d@`mBi~2h6-@QPVl;y) zBhWf_m=d}_z_u^?~{qfGWHhvUUO(MIxG%I(2a_Xc;e^1DkM1x)#I?A|N`8t&BX z)8(E)!!70*Gt3cHjnwSJL>@MMZHp+P)7OdgX8{;M>Xwi#TJ5*Uf^xQuTO|inT{m`Y zN)bhL9shVtN8*1uakEM0?GPF`hjtGywV>~cdvd6%am76FR=*!Zi3(aou`wrij?6PP zFG2I+gt0A$tfKHqHwDV^^Ld@Wj)@8Jg6XjnTjVckOG{G&AJYX#*%ECnHHzM5Ksv=s zZpMyIPwX+S-0e?>?-A!0tmZT2J)@0m`@yVgj>f5+-(qJjGo-FC%rJv^Vy>^jp)@Jh zo#$g=ykdaVp5*mj9ke@#zv_Wkz#U$oT~Q4CbYk0N#<)76s~m18VxApPlAS5ft^dtn(#c}Nggx;UZatMqq?S_5d|KUP510)VHU&7>__Qv%xAD<#VI zdTuj|md%jB?-(`5O&m}$`yE)lAR1XZFYP;hO#f<@G#Num21r02w8RIwA8Q!e4h}jN z9|}9zXiCihs)A$Ld}tFx6cy`;&Bb)I#gOV4DNb4p3wwD+vu>L4>a9nWLL^pSj^L_6 za!SFL7m(kr1- z%!O@o0v#n;`TLc+dO$*X$3Y?PP+LviJ&pnh3OKkw1@JUly`=)9`gF%4mMAdYO7<+1 z_2uFZ2qTTR;Kdyvx~NEyDb--OSm>7Z&62XV}; z53$Qhwu$+uC_Ki3{DKs5>b=2ts(a}^iE|A`#Hp!Gs>n%#tEsr2v21d%PZb$S(Pbak zpQrCe=-)L_z4aNt^Ra;H)?e!@e{6r>xS}LL7WQlsT6R|%C-yh~wZ3nRxl((RUM#+- zg6^jENA|r-eh(IGn@W3a!xL}uj42Ut7MSVOKdSMFD-GKSTxW;5QcRbnUt?!Gfe1gV=ETQ#7=j653krG4tSe(g zD-Pe8H(_a|dTMW*OpKA%5RRGlL6dG5jyW5GMRW(0MT0afl87|m$xJu$EPm{`4SWqy z;>iZ&#Llv5PftWyY^2n;=TG$NK47i)--{8GM3IlEiK5;N^%Viugl59TlRmFp(e?>- z(?ppOV~5Ke&lLk%*EX|0JamY?lP2F}CO~!1SCTRGDyEdzSCB_!46gdc=^!tY_40_hQ#u)jAe&c zZc+l2%(i~MY|V8IzKBd-F<%oK^}G;eizeWSXkHjdB_PA#Ia6t_*~N1v6l2kRKw=Hk zDX1aqPig&rcL>8JCe!x`;O`Qp&GN;bdUHQn<;YOtwPW&2NuCRLBhr$&R5Jzq&|4G{ z_PPibWO&(?Ktrcw^&b^hhVlTHOo+BKQ<>LJAoTu6_1)$E%;&~<#UH}F*vNk2Ov>t; z6NaCKJ7y)%n+z#u$Q#jU>gDjqPFpJ(N`ncx-+JF!(APCgh+AO&L6#gaE)^l3%zGsr z*OsJpyvfq`2N|tLPMYzOL*%BXUcxg->PWu#)%FxSpSsWJNaE)dAtRae-{u*X`G-u= zKP6c5Ru!-HK*1k|D|NEzUJ?@|LNjO?RVZS$`UsZzLH~V!=kuiU5uUBGRQ^-oAxGUK z;(Kyw%dRR=OZf{}H^)T}rtTd~UzzpB9n|#jPKoV_Y8aB;Tr^W)8zH_D;b4~t-~{DxWQX^8)p2LuE{J@qNDK_KJdp zv)#DuHmHHy``Y`sj4WcOquT_dYOYN|zVa093gb&3x#W~a#b377^NpnWdvxBnFJEt! zYapL>5F&cY5ivU$U;M+Zfe*eT1#pYbrpnXDN+7tuhxUoRy*63PZb@kyoetjPf-TWc zJ151fSpF%5>HA6LYj1Z?gJ3qmILZ9Y!s4Ewv^qs9`A?=pi1Gmoyrw@ zPXb(3sK#Q@98bJ|6VB!1MGlq{EO+352sN!GP!Gq0$eK;Mja&QvIqee)sY1blydC6Sv$t4Z&h zG?+snRgjPNHksM)!@nKcJ56<-`C;>|Ty6%?@Af|66+2;nIZRIs%OWL0@{j$DSE{-@ z3RxsVVP9nBFhC@K!d3^}wbj=7k80mc%Trw~t|BuG+jnf$}AD1Y`ew93Rk1MmYCmDLsk$z zN(H!tRpNtsNFS9_*??$yATZTg`CskpM}K9cD@jq<t>eydqLKOc16kI$xsitm(Ksq(rsal-8 zL!?>9l%KhG>p{`C(F$DQPN(G9nI-`_153AV@ZMhx)j39GK@Io|q>0NtVW08mpBxx$ z00A9tP?%@IPpkCGWAL3+;UaHC_9sLE_Wrto7&q!kWVX*B!aoFuY~UCCB>QxG49;=d z5^-KW;6B*0fGHDcX%ZrOX~CMuXE@V%GAMmk3x_m%pgj<`d8>)*W#GSK_dShy%ZHZi zGhb(R`AE)RPX5AJ_ATa&uKt@mkHX2ybrWjV&N(`7#@VKNj~I6b`&>k!?_%4e{-Zj3 zkU8bB94IJ1T38EH0(?%(@0~ZEgAe7t;(1N^SN~Sn`qy1+O|x3<>I6)O@6{=FZHP!V z!B#eZ!RrK=e9RxOY(Nlqg-&SI=w-9<>axLF(mJ5ZYwFu~#KvMvR^ya4<^GQElRl;M z6JKEKTs1cm5Y=Y$GRPvRW7oM6&gC(WValtz0qBBGB>gbS%o|sLx{Y;{9!xKTb3}tI`%Q3! zmKi9x6}^wIjlxq$&Yar=R|WMYg{u1uGC>H34<=xw&I*ebP9J30sXf@m=9l@oqVcrc zL`$M3SfG0L!C6*B^$l~{B>b>XcS4n+?}D@UwGiRTLNxN!EjamJAuizEwA?>YK*r)R zA73YgV)HdN)6m*f8zmwVqTI_K+=67yx9Z8TaF5FQF6kTfp66#@_eU~2{{;V|U#rtt z{4DP=bfVnpVy63tF1B2`h-bN0Lb{V8y$@~Tv-)cx;ujyocg(_mnIbp%kLsH=leITu z4ferc)xx7Bfvk>wy#lsP4;;(D`YN1D1&{a3jI=(lyL=Y41a@VnYD{yq?%Ml315o1q1jns#pY7og1yaD}_CeN$*f1$8^SE|-`C zpaRSL79uCy?oJ(&s2ZNUB{G8w`xJ;^P7tbEZaHKuBl49shLXIs=J>OI0(YK)08&>k zqtC&Fzc4U9v!gbDs!3Ichx?>x9@usWGh_L%$)&uEE#71ijX(v)xb;uiO4+bR zv)tAo14jY$mX>EtEVp_+n*XD6>Pqsj7rAo9&oL<0yys1p=Bjb?!SN0kpMv;&M-6!DFzm%rnAtm&N??OdLj9c2LVJZ^!@?XaQS z+mw$BxE3Rjjk-%RK5b^#gs(jv+}30pA-p#<(Z_)Yv%7wybz+rZS*pn*X&8tW0>-`k z_k|g^vqongq`$aI)Wxs(JVWr!BL>08-{*l*aUg8?$hdkind9D2Qo&s!9aWq+eO^IC(_<;CTCH{qYJ)W#`>{l)EO)kF!MogAmBfD-r+4=2`fFRLK z8LF6ga-_U40|mf9O6s=HvOBa2|Bd~sRC!*HH+r89^bgQ6xfs_ytMDptHz;{}f2Q^v z=salq8k)}`e??0R=sY7o0Cev<1F4;p)^+NEg9O zL(?xRhf4UmE;LhzfvoY`KMQH*n#RLMg@q<(_BR(3wLb0m>9)WV^)yx0Nx&9NL>#2p zv6J?e@}XQuOrTWxYFmpDIpw?a5)H6W&Z&U zInWk!6l9$Y49MM(U3Cp8`XY9ytwB`|abX?CLZ2GW0)a0k^3pyb1(~8`(IQeS?t_p& z{^mklUD)0;v^i;TbOsk_H_N=pYBB%Ze$<4YIw50n@7g&xe-ipJyWMoTJ{lgQ_yYl6 zca|B<&|P3Cu=>oi_+qg08U7wltQ=RyOOxFZ+|MV|BUeUr=zL+JnPiIohQ~#F^;tW1 z5uE*2?i>a3RJ}(&PG+WceR7#t>{AN4l$TEmK+_&~md|UwN89kggJ9;cnt(SCcMYUt zqws;gI;bdnp{$UhKv?e~)2^eh7Cp!K)DY_q$=bo#X&o1KbVm^azj8h1i{Wg?P>I^@ zpDM=14!?xT&uaiLQXVNL3N_w;zVq@m1JiIgG5E(*NA~yh7OF~F^OE~Y2uqtRuV`I{ z)v#;TU&O#KkLlVgT*sw;gQ98zVs&$5i}H27h{44&$q#a-07~6H&euafrF9+Z+Jhqb zv!zd|<2{L8H@O>c-!NVL=HmMFTS2>Eyt2t{eKfM1MeatR;IsGc7t#NwIpx0~ef!`MdL?*%tF&Kvu&q$Kf7GlF|yWV(W1moE91 zMm7%o!*(6%U0@+Hub|k_wj@(1wI#Jx9?v^pF9t5HOoEEdKLf?<+U=XF+vXFWKWrd- z{+bZP%8`GN#MM763dYz2exW8#d6Ikv`wd_-{d*woQ40e?IH=fP^HG>D*DHq?_-`gz zECANj?pLoFJev+xlOs!fk8!Ux{2)%ihlxcr5|d=_UfEkAZ2hB3bcR*dKi$bd#-S-~ zNsE6Vbv9AtyU!VQ!9AL4WxoY5>V?&s6W4?wu9r!>n9&i-$Pd9e`H8l1yBY%WGM-&; zgxGtnybb@L67_QF+eM@wu3Z**l|hGXr8VGIMP#50hux%m z+3(Elhq*VSp&NSPN;OP+dUkesxPbx}#TLw7990+LDeBrMhK-@@jezO}0fX|w7FGXm zDpi$6tfN+i5L%uOQnmyvgsrpvC*L8Y52xh25H5tOc*<4)5%`tWedzR*EEqpx8uKUp zq%ymaKC|(WQze)ShVzK+(vR&vk({@epSY{;=<_)l$>amgSZ{otGV^Vs{-@>O0n6p6`Y zHQq^~qPX=x)}yqwPRfo(K7T1q)krVFoTkUp$B z24m$6Q}X9iH&uN_H0f2h>v#|%$^O)DN@JC6K7ZeqIw8+4d+_8h;F^BRj!@ZTV6BN4 z{HLgvvUI&l_R|*!Y-ClP$oWc!;Ca^T4Kon^9kfSA=q*r3VW(LErD5_BAiwQp_p3Hr zwJ^8WNGYNnx2-I>+pWHvqi*%R+||v36PjG+YePslRZq7o3|W7Q5W%%QY113mP4m!P zTyHUX9n5u2H+femdl(%L)KU;8Ik;`yky^U~w{u2$E{O8MH0@?`ZG=zR`xBotfN}Q0 z?s$eTxrOZ9VFwpB#Y}$+rN7|k2Iq+JbFB5@m8KfzQko_Wjpcy^E<(GJa7`+gHGZW- zI6T_%KPvcjF!C3fxfa z<5N5f9v|= zVvjYw!Oeq(1xFI+cB*;9{z6G3-Q{;82z(t22*?ngYU7BiIa+>IE=RUJwRb>EL`{Rw zKAtBwtQ_(@+=EyB;y}qD3qx^`?dK74r2tSS!HjI}Hr>|svdHjL>JxQJWQ%VZF;qI! zV~+)+xeTH%+zWq(>v+rLEWW79jzKU8!%>M%%HvK%WgxPj72O4NJMwFsmhX^dV5V4b*Jk2{PFg8!8-+`rd&t9e9tP;BvAl`G@;r993loBJ59IsExIV4n@C&bPq%oa zHsD5iL&r7VG*mz5}^h1^ERkQ|Jiks+^3?BfL-Fap7$9NvLA7AZXuyV6y zd5Czz|L8FIcI=uXw@i=h#~eZ! z`gqOW-k(oj0~b7JOG-8ns}(Z5$u6MQ6=mlYl@PR=K$cbBf=2I| zZ0R>{KEEAiuRIiKZ1ZwGes_U}wfvzRFmzHkzZMMCo z9fPzeX=|bYYt*!oGe6QH&k+{n)G9m6vqfTH5%6xb*d>!@=5hO~8MW+Pb%jtM{)Mey ztj0sTV}Z#=qDqvUi_2bYc2-6Z#>zKE`oVBjVo4&d7C`*FYz+RyAkUmG@)+Md#L+mW zmys+3NxwfXXm^;PJznp>#T;(%qwF!adGJ>*1}+7G;Q|cP7RfXncomEmC*+vN^E#cG z9K=)pPFR4w1?dR*b`t$OM{8x3SSQnZOOiae*oy7ytYTD})_diRIPMPO{C9TKokQs! zTHrkk6$hdAD^K|@l`+5O1CD6UIvpqHo3Xiic`y2DFA6=$E$D5_!kMhDOJ*`bqLKaB zSs^AxhJ7$l`@YY7Y(Te^05W`O3#AO6_-^CpYiXhi$vLc7na=3P_c0dOy4``DN_S4~rxV4U#j);k#Z;uz!rbu;5Ip*21x&21EqsI5M47mF0J^y5U zf8yhJtyNOP1CI2b{Zpc!F>2}_Gpzg(IO%bU%yJQ<#{X4#^hE)S(#dNHaL3AVx$k*7o{#^tYq%XIqiXngEcJF2$>)1k#76>=Q*-eF@Gg1cX&*Wj!Og0-e9EN zBWa96AbPt5c#@P8vweLl(IifwMsEEU4=0`X{`l~{G)JM%uZL3nWIdTJ=Ax0t`}WCJ z{UwodbND%*=XJG8{j^lSob$_=N ztji(tDl-c^GR92&*^RAdMR1g}G$cUk!It93WZS^2$!cD15-vEYmF%m|lr1i=t3yY{#x_ zBw_9^ESexNL0U$2foML^rS-$EILrEL!# zo=8Bt0ZA@wX3xs=j{GNZ*YP(BnY8En>FJ)dE;Y>}<#ul@T$pS+t$)nxrMf?Liw#&m z1JK~o(_5gybk4eCR8<_s)NkTNnvt&e3Z(D22>VW!v3M0Q3~2m7v%{z{_s8idzJ`N& zmgb74(ckc~8QS=G?CUbZ3P#YCqH3}!CaG62g|`xctI8xmOC@$dUyOkja*d8(Tt&Ox zQ~8ZWgvzi}ml}y~a5Qhkq2Ax(VuO$td%r!Ri6C%B!G9?OC>lj!HoZS?gU<55g(Zqp z{Bx{i>Tkm|ze8x6qvmN7y)fxZl$)@e$twfc3d2VZ#?E13uOFdI3JSa0(y_sirNIa=i`NJmCrGpFxJ-_k*`j8cFXgVaBSI4Y=*_( z+K7FcHl3fqX??B!N>yyrKWXeyX?^bWiVbj464g6!{da`Tm&Z+#-Trx>-)k@)D*lkV zopQnf&lsOUOVBB7B51<{jL#nbR|e)1#qg!)YUgu!3gP z?Mg0X2K!y^8$|tj?sm|y!=^|Ht3$^@E43R{1V*&9LT(w{E=Z#sRZ11E{Up>jLnWQR zCPT&bP}~0?fdw5xdSmB~`MRQ+Jke8rBydd!r;`JoDd2`|&|#{-XP1(=NFU_v{3w>E z8eK>QpUc9(*MQn%2F}o?k9or-4k9vZ1v7_ycDJ8&T~!9;+$kuG6-u8xrX7xLH^j3Y zIqd9|P`7n|kgg)IPQYzH$kEhS^m`~7h6la(kar*S5?Ai@UQwwZ`zX*#KmK z_WQ(&1Jtd2m*~-?>IhQ1O|6!)qGGipsM-*tMI{kl@3d^DTDtni(8hmmL4Qk>)(=`a z1?y6P$%twQm{7d>;L6bbyjxY4KBsJgBiwJqE!X&u6|aAR$Q}jJ>eYC(+xdsFK?6)@dpmz(wd1u|38e1szB4(I3)`>tT4wc?29}FGw5v}&Z`9P%9bHLyKz}h| z3@*TTv&S4Mu@*`k^IgbBoyjaFrokz$x=6AtOHvImn*GS_n`y`UE8;7RRg@iei$scC zP@74<+>0r2+Vzcl=@!|T*ustXLZ5lD$3S&DmmCj-+n35`L>40*R^S0)j*--O zrk<>=X|^0J(3^J8X5mNaZ`nsP8@tYoXdjuil*Tb{mlM)Z$JyKi`?%j- z(J^11@P*85^U9Vw#(WC5cCGlUWAj%1t^v`;*fGo~;9r-bs;n#JkiAc!?Zo-YmLk!2 zSfN?!3w;G`~PfBd#W_qC}cQny3kJS`OxSOEPc#JbY)luN~KOTdaAeKa)mY z1)nGz-X@6JDG=M9!C9_0%(uIYa1zsexE1B zxP+bMO){`j0)0By@I?9mn}?Af3crvvTeCafJGBkifre(eQq`rpPxU2XG0$aT^eIe{ zlNnv!(MS&ug(JuE>s4oYP$OOjcccM2mrN}j%p8HrO7zYcLmQVCgb|rfX{|wy5-}Fb zO`!>SkAe-&^Hf%V!0ilo@WKag(aZrCgQM$^?Pjh{XA_#j6$g=CHl)= zSj#Ss$NZ^mKVrXCOr_RhFV#NDp^ynu=coHCZ86e}vc={7sl1|fX~^o(N*rkGrqzn?fjT3c3J5(D znD!3;w}BODn&hyg+=hPN59UA)S>q-}Sppq9w}O2z3x~R?&RGebyL34BLW9HadU%H~ z*P^cd_1TQ~LK(B;uS|ZuI|St6qJ7iGxf8NTQy+QdbxWKn(i%jMEHyf>tN&AVo$+kG zZPXsMX%TzVO3VscqgGW>qy4MU+A$Ne_Nq;(5gMDSQd(7#N~pa@f)-T~jXi5`HTvf3 z`+UsvCHL=l-_NC9Tl2c2KFG~XyiU6_oD^9p%1A0LIXjMTu*F6mrW{N9k&pkZ7+yPCPGDYz9K9zpo zf|HvbGb%^y*p2^Y_Trki88X;!P(P3Eh2l;v|540apGMKqGPZQ0ADcAC@THSOCNmTR zZl5Z?%F*bXn8Od0NA|orb;6ECN%U;#l#|3iRjCG!h_~GKyiL!giqfn>O(;pwzt#VE zhJV)g@sh)G*1WbpZutJ!?*SGKf<(bH&*x8E7nN|_f~i12yqsY{&Zn(6*ZD+zzKZMZ z$L{{taaa&XoTc5n9cs(|`s+;H^Gsa>snb|q#)IGsbjv>cjRX(2IJ>$>%UR~%2 z)eO27nW$D58#D){+%Cs=9CE%SSph9pws}hPT&rc!)6%o%jKSbvfLNg^(WgB()+x)n zIm~=-$kd9}T^9m;*t=m?efB{1rh~S5${l3&xZl(f$g#UeiC-zwcx6R25PhaF-c41Y z+0ijC0`z+I(mVkWQk_^9_>3<{{(VzYq8OluCA7#+>S^+SURB;g^Hp*J-;#AoQBUUI zdECyOZKRYHXMN`?SKr6K}S9&D1skrlk~beX#*0QqFE;SS;+ zYxb)=uhjJJ`;y&*lnr~n7kJsjhn0o(>Mc$#PyHt+**2+N7v42gfqjQ={q6>vX*UYY zrP&+CLWQL3)bf&Iq4vs#8zNqnPsA4H#|3^X0-q%|10-AF3Rjy-k0 zxiWCugQ0B!Z4(!Bb4;q=IoV^ojKOUsJBKk?hCEkK)%O7WjU-yV-?X-%^p#^_~7$SuEn5^(E6M`wZNI@>fI8wX3v!=5qP2tRoqo;;sr z&n%BZeN3hck}hUhCM1N1r5s;&o}aZ%J6<_xP@R&PFO(M>E?K>m zz-HkiA7H*2^QKLzdxl<+ti<1!;nlnzw3){^P{?XhZ#;uCMTtN+&;tt|?Qkt~ues!L6jIi&XpH^{90GhBD%*{R8+=3AT65<&# z&t_0S%k@{*%F$E5-vu~flAl}9|LwWVl!>$OZqbL+2G!Hpphnp6D~%-%Yq7I~#adIl zdT#}Y+M4}4wBJpY+ac*0JQPD6Z0-q<6a_6No~iu2 zr^A4>QxtsMi1{!hsP6Og7@W^U!Kwm!^0c~)z=!lOF&0P)|+7)7C@ukm(8Anqmt ztH4_G#;c~&Wkt^~51CZx zHeQFSed(3;sdy00{g*FRI1WWtSZ6Il{kXI7Wut0wpOOBJy+dzIbag3CpKA>%)%A!o zDEcoXTD!+6_@uxgN?g>{RE1|+EWJ5#+S0xbu8WML!_U4Imse?++@y?I(I`W$(5(E| z`>yM#=l#gkZ8u+AKfh-I6mRZ%;iy$OVvhU7&XRwu(Q|uQ0Z$?$u`B^xd!Y#Er}OHdUGlF5Bq*6>;wM$EI|SS38(H4_kV!E2xLgbV}8DiMwn=ttS#EJr=nLH*h@+YS3hM z3W0~TSl`5^ZC4fCW4?>7MCXVn7MGQh-YfjyM`EF|+r~5|xX+z*?#sDp@Jo}_&b*aX zEpJu#kk|yq8DIYrj-I0wcu6JQZJG3Uyy|%4G0xeIXZ@^30ZmA1vM-@~9(0B>xqfzq zC2szNP4PxA$!n{W;;l|0WUlCDoXpYlXA&v;&U%JH}_802dk>@6H?C1 z7Amr246lJVD0;xt8`4MrBqH*pT-Bu_nG|K5&?_dTc|RgLei2l=u;7a%M7Mr1c=Qy*1&um80i(I+FWqa0|*vi4v;ZQ z`&BTcSx@y8#$Ag%&!>0)eg{uAX=SZxz|6VLu<1Y<_vAFzV}tQ4HvTTy$+uO!T(dj}v*!ZTTl0!FNhgu8pWEQs@@kFH2Yo+PUK~vT0qUx>r z*UA4e`kKYJ$0-$*ICSEl;8y(H26O2g^Ymtv9u{3NN3cufN7HBJ`u9!iTJrJ7pvfUO@u>)&)+0VlwwwyGnhZ=^}8<}>_c`U-;evB zT=YBSjlW6pdf!7`s;1A896r=;xGlB{tE4fua=K}vbB^4l@r-l+{qR@(_XrbeB;Xgv z!u>zQJd2o%dd zS9rW&{uIO0b+d-4arqOG(gfe0yfO9N4R)he>X%K<@1Vy@xV&4eAt~R2bZQK;ufsTa z4jzjHQh&(z@Q<&KqZ4m@(b21*xE~RqP9BKdjX?8vWBpF6%{L(TuW58wEiM`-Zr@E{ zM5ra@tqNOKH`aMOb;%730eV!_iwx34`s_QVrwCY!psq3AB>Oz#52fU`W7kvh_w^17 zVCWvR?SM=5)-xv=RwwOPpBj_Y4St_Wjk8Cl>;Q%G4HoeuZlr&bJkM^> zY4yFQdDAQ6coX;i&Ih8F+!dhzUgfI(Fdsh$Hzu))@Wts(_>mHAnwf@TK6l_)Xq+E zrcQbvzk}Pg$?EJkSH$CS)Hj&qmi7Ep{jvTrqVXm=`ZY5H3Ja3lt5;?ND{XA)QQm+8 zJ&U;Ap`;6LSuxy~xJqZ1>H_h`kV;lhM|ssTGRq zihG>q2C>h3s)H^K5*&}XX{KQzPNN-Ew{9d+0xUUtG*N5vWDAAZtGGO5=nt9QL_4wt z55vvSd`{5>&Q0JQSq!4sIac zM)wpvxc>B_v|za7AH|!6#m0|74ud@7e-y~fZN&f~Ee4EX53{NiV-|0h(~}ZcA zb#S^FQ@WFA&0npnjmuM{64Y-t;oMcZ);IAM-)24Z?v@xTFjt?~w_aWmnkSY0z-{-d ztp3Ks1p^FDWe;x^|j36C@9VI9gd3{>bmzUic7a&aD*TbobGU%*$UE zy4j)$<`I2UD?olZNoiR;z)^37HeC1WzSP>nTw&@^uT?#J$J(pgyZ71{_9FZ3z5_3D z{Z)&baaj{=T`n04tSu{4^GLOPwmfQWOSEOZk9l8y-ou`%8~-Q{?ws0@*RmYTqDwYC zVv^&SS-4YVDoh{np{3Lrs^LkK#8*WTlrdLEuB8c9)%}{g?*H`+0usWf`uq(a>wcKg)THnp!%Z4=V78 z`5`vIreFbT!uN)(XnWc@)8q%mojKgY^CntB?{g$B_sW4x>n6rHhBPkds526J6Oz#a zGW9YE7XHgpT*30}L%`k)W`aN)pA+olHh#o%!s>(8eBfmo0sMMe&5+r6ePURf+qZ2o z6nP3j4j(a=2}WK#`RJ|k-lrHhrmFTAS>s(E+HkvazMJG67TF)S4N#iQAw`}Uw^TT3 z8#t*6Ro*V1m^uN$aTeRrMg_%M2defrn|F?Qg@+Dy{WhMmj~&TI2c$Jf2i4k5!L}dU z4Wb?kE#Ka@-MHc_sf@bj(`18b%oiM%X7NfPHiea}l3g}V@gm>iy;q{l2A}R$^ha|S z+~+TJ@?aU3$~*&+g?My5D&&?p$-`X*^jL3BUTN>^xJv$*jUbL3P=Nn8O~Fh}NkK(H zO+i7y&J@{F7;fX{`8y=au0>9!sY3h%1Uh3ap&GGqGRPc`!XT(iIY|zOiYr0#N zOknS|#b=1?oMED|mXB59oTMlBI2QR`A+-C5S$)i0>br>U!=T;M)WlcRTrD!*wjigIwB3al1t|l6xIu?V&vIKy|ybvS0YVd*#G{ zPx1KrrP|sztR`#zWPH0Ok10oNXBo9Ag)j~5SDW~JduZextjW=TS^7-^ z`Yl`td_q<7PC&3~c0In6di^05eC&?UP#OlmtP|Q2C_2m(wHQ8T_cTAc@?O0~p}uVq zU<#D}ZX{mt!5JqSO)@$fp!Drx@MnbF-Lq-%@hTX~ef@50KSL-iznH#z-1ie!fNu5a zh|WEyOGI%0%KpOgEpdV5S)};1fBnTuu(9AnYxAzZSDf~$+#B}k5kKfJaE=g-SM7c4 zC~)ef!AN)GHif@d4S5p9hJt8CARvsw1E#{8`m|>I*q@9gkXm2zO)t$?xi=``dh^L>K-AW>kNi7A z5%@iucZWdr#j?R_NND%L*Oj3=(qKN?8_bU%*7d|oj_%Yb+9&VkD*&ce9W9ORQ9?1`B4Zij*?bPktOO*7WywQ z_hV-L#haAB(4oK3hb4raO0j!BL|Bf8gnWo~5a)VeZi>{+iYj7g8$qV+g?iPR`*}~< z+g8!PQ?C&(f)7p~Me)gCYuPH2wKYFhJ-*V*&2X&&xwHJ9dPo8yy%rz!n%I={d<0_a7v+qgof+-R}Ibv(WHn&JIGuq@Zz zwYe{a%P58{<->mzE46Z=Us^v`9gCUaMo3xxnf`Y)vLKe%m2_`J2$_DA5Bc2iWe6&# zjJOMS!{Q~LDhFI@gI`p<|20|{UH_`hO-Y#-{o!%ZH`|_w*By=f?{kMV8WjI#xV2>J}rq;3$Cj?(V zN9ku#<5HaVm@TMyj;EYLM7Zt zrRHN*$;^K?|0teQpt~D~oXZ&Wc;f1=Cw?hEjEdsY@xS#A-d5~ee)3Ic+8Ek+kDUR@pAua57#o>0n7n@WyJGGXKv z5wotNS8YLgnpS`?S&CWj799vQdU^H^D`VChxYx`LU@5e>>48RRwdGzWEO&)qI)&flv;9~D-9d&GtRLz^ETGw>yf?h-sU%{$e(gokKD5xuY!L(9~J)8m@*8#D1=%B zeWSOZB{9EG^FIb$z8wzTe zew}>gI!TYljrZYxCHDq6Uhi8$<3fWYko;JuD?3B^txoZe~2nbN2T4>z#h8(W)$BB4u!A;n-+#vZM`{ z)5ObZ-Q0)s_4qmMb>lzNc2{ElNyB-zgR3%c4qKR0@OHAH0!CB+l<$MiT{ zbF)eIuIZqm3u8?i_Dqv0(xoEGr~(AfZ^sErbU1U)I6W#1cxdya{&OQeSP{Z=?mg=K zGsSjv9f~@4{Y>y_vdSz(G#1ML{ByT_a%nzir&YZWaMTs6J-)$Y`QV9bQ*BUX@3k** zRil(Y1yt|43~p{1+ts_SM`Ct*s>gqSDkK9$!=1{9duyKFB?PQ>vkrP367<#f`vtY@ zI+&`COGe#$gQ=1>b%-Nn?I~`KX+#P{fBD~s4^1CKxoj>t8;cL}$=mi%Oo4qfLyB!p z>Aw5ix?3M%b&XarEbrFWwQM-x*>ydsT0%r(@}w1uM4amOKZ*!^{-gGT{{DL{b1wVu zuTK6^)Gd|0iYs|y?rFtB)oW;2utw?`V(aBI%{@PHHLuW^N{Jt;|K3Fz8CmK{@WOm> zyQ*Qp1fIQ&k6?z6b@WQ@j=XO0MJdAX%WMlLs{B0OX z;pO{s?@7@M@$*k%4JudnCf?8%L-W5qpp9HSxm*M7bcvGp7uH69#pw!QqZ+3h3M>Vyxe@y*mE;>pA`X^XiKvl!zRcbn}1y=a1)0?zZVG6O^OcBTSz) zeEJUc#A{ocQhgiCKi~LAu~%%y2fOcKw>KRoxUuq<(+Fdpk5;5v;?HbOZ{Bh|k zSoxvL@;?gmkxX!{M}VnxFX5G{(I^x4idZWzQn)t zcZDTO3S`-fmEJnq}9u$neUF zUbinxV=08ylC8uBH6qiX6qHoJSny=^SbcSH{x^dB6&bPqd&;ZXR&c)FeLXX0Sd4h^9YIqWOG9Pe zS$5L%Ur}!p8Lbw~AQD`Hs-@b@#{%^qETv}bh9kad&o;^J9QC%G3^yPi-C{mpuySW& zyC8aGim^~;!iEghY5^?-?yLLJLQk)LEApR8Oh0NXJM5l({g2|mRA*(M4i2ws(Ai+r z^aKE?pyC1!;}7LFJqcJ=C7NH&8Y(9wSX&x8-C~WM<5E?~g^ihxoZKBNP_(Kyti1U` zCE4^{HjzJqz}_=0DGu7vI52*J{0*kOT^YgUbUj^i$y;)JLhU2cyy@-K6feR=`&;eI z*BE+Q%R?IoO@~x8Xua2A^Nqxu=sBMxu-){CSd(J9Ib6XO@<(qWy#3+n42vlo-KzOe zmTTp!@SDQ?zGuHK^CxQy&mQyH*M9yI+!mw7K>z*(4!h*nGT$fgO&)*2{?5K%hP673 z`lU;47V35_C#R1>t~gj?nYMBm?0)l=>bg5b*g=9bw1Hg~E`A)N6TJ10;)R14Y@%nB zOl}w&epYuRj?5G_@45*BFIj832R9MoVuk_04Q{QADE>?tPFo$!F5}Ul`?o`vcT>?{ z$2|jMKRKCXUf_fM0?x)0@NCXrrTMdrV*=4_Sqsy1`_W%~bDuW9L&XqeGIR7)p5Mm- z&&xce335BE1N3c2RyF}p`HzE`Sj(2M#x>q6%!mH=T1edD)ty84lJN#NljO#h@xOlr zH#1bp{ltfXDE+DK^UHq}J163a^vZHJmx6a5ea`I_h~_!R6b%wjLMKnEKTJ+L6-HUI z9JnzG@0p!LGz?I~lkXM7%Q?TDbh)J;lH9u3Np>IAqjW+*ui>KB)pmR$0=dy&TNUVi zqCO|w0A+s~lP5)wnSk-!W=*eKV=U;L(a@z2TuzT@&jVflW(mRCIRr$fvS6(d+Wqi)JZRyY2j<;Oy9FCWw0%Lc~#@97T5Pn{wFi|EPd*0w!GP?Rtn`O#oYq3xaSzt2wFw~jG){!s*fJo)m}QRdp* zZM?1)Vp4NoxH3Yz>v5$WOJcRC1SxK2wVAl&0RqlmY)jLJyDSuYhTlp0xly~v5gjV^ zL#PF9D32vziYqZh=Qg4|7Ww=`_R3=x32R2_t?XH?ecQS-rC4?P=fu&LLrnYT@MkmL zH?v@F5s!ZqUwkk_cEu%Lz{BRd&^lH?>d4;U#0L?5*`}4yz zksagN%h}8}1}VeX!a?}TS-Tas!nyS0KMG;FaNDnC6`S&om#?MTjCO8Ew;h-Um4v%w z!%l#ao4L5verp|8cXr`t95-#(V(9v(BTHtrZok>u{?*$a70$vrTiGV>rwqbg;e)n} zPX5jowUlE1z8DX_T#03FPYF5-`EWVoD(VvLKOUh=hLnq1EwS^R64H|D->|CN;p8!p za54tiYF&}N9<~rAX3>+skM@9{AGzRChi_#IYS&T7witx9_wMojj-Qb zYKdM~HnS7wq&Cv1>w(dNm60r#T$^2)Y7KePHhX?KzUE|;Hbp@m7Y;iNqpg-iBSHP= z55mFc=O0UgzbwrLz57Q|T;hkHHqyR=1FtUINrVV;)3CZz(&aoT-9l@rg-+9z9?TxL zMYe~is~g^!Ra1$+YT~~0_YWw);y=UHif`x9SA$yzO!DW?4}W>N6s$*($g$ZzZe}w^ z=G+UW7UjQ0u!our`Xu3$VNA0(aJC|n{OxL=_>xOqt951k;$WCugN&}^dTs67ULw}8 z=j7=^Xm zB1Q)`Kfh|(iR5TKA#O>FR_ZvYtO^^W#^WkAQ`+rM&B%>-Z4niEGp**X0ATje?YzOc zZBo#>m239XWm~j7+AC<{a^)@f=}F`fV>}s7u|%6oqkC(Sd*yyjN z@2$v_$~LrOd=TG~$jgqL)PFq`q8ya}_fSw!QgE<~iYO}R+%tEyh#?cP43yNAl-le7 zV6qgcavH_ia(W~zN>j{6iPUt0p|?KQNk50BEWPiR(291RP(9mKJQhV;^dJJf#ARIy zM@1dss++oucu8Dfi*Z;gJRd{kS!L^Bfq;qJs}vi|d7&6$ND1dAV?9$m&XE4oXbhX+ zJq!@Oh@{bMSJQ0K8{I#?TjcNu=vOGEw;L{HD@AZI<|`FN0>Ere(0E_=Q+P`kt{2n& z8>wNO!8jgM#eCN3QlBvZkJrQs>PZhS`fIeaBL|d@y0bn>z}bNT0a|*jgg!M$)ECR$ z!n!oZ`K3`3`xr1kof9^n2SkhPtxP$TZk_L5U|fLjr%H?!dw_$M?6xbtr~_A$MAt>G z4=y4DmLUlP6Yx_C?Livec4bJSd~!GAop09+v`b@-yP|xVJcO3FS?p zQN1&otYu^X6n7g9l-{9JTj*rJZz+S1VlR9#_zIQIxICOy@ zzNjWo2budl$Ck?w3!eu_AZ+Y6&)`LRq9kP`Nz5WttHlv>pI)tAV+xLOPLU*A2PblX zjezNl0mxlDRudt<$-N6S{LzOdMif26F2>+ot?nhK80#1Q7UkF2xC2%VoGzQI>S`vM zW)5Y<3pQB{3P=(rr2-SD&|mmhpC~f!AGrX0s0M!k^SSGn?BT#dkOr5uMW^aKa8&wS z1Y@j4ttd>*jA91xp;O-bp_gW1ME_`qMFE;Vm5`WHQDUd;Nwb2HzAh9U0EBwMG#EtbjQb=xHZCy4D8>?$N;kFGp!h%# z9QQK?|5rd-P!~v!I1hixQyE7+qBd zBq?aj9Huk{GsGDkq^+&;x8T%xYM+>G)*3LT3r}I==2%+pH_>r7u^>$t#~rd2aztGc zK#TBmCK*<)VA z`-`@Y=%X~Kj=?bpis3|35JqYPd+3n;xGAch?cw(vZUBubAK;u4r4s+6e2(7q*M(F1 z*!T=0HaUsG=}}_nUGPm4DVj|rMd@*Vod=$|nJ)ZTgcrk! zN;63>r$iu0&?!B(&}1MgBydp^lp7}5LUb|`r$P3OVk=hNdL1)~dc%vfS$F4^b`eMF zO7jf1uuNzxwc0J0zYvD2F6?_<)-IXUBR8}RucAu_h6w-DDK0|1!_2(CnMw5jeHvm0 zj;u>Q0H&Y$$Vp-`y_rUe%M~#~#@!VORr;gOy!oIcC1YUv`(cbe62ir?FXjYnd8DSe z&|ljsn$WQFn{0vYi*efIv@N2ym|G)^r-I}qHni1P?z!=%?iI-st=!m0X#oAaKy3c+ zg%=K6*>wHP$7~{lF`Cv<{v!(TxrHSURH(=GS6OrX{wK~1;i8hf7q2%CL>;BFZ~hYK z4~Wl$uRs)tu-6qO5{wnO}(U%w@7#dOV(h<0ujtT9u4(admwMTdj+?p+t z8|9ZLXpquTen?xH#dCT#Q=811Ykq1<-9BcwhEG`%4L(Kbr$Q5rY4YRUa1J3%RAb$Y z)KvE#DGp;l7fIF~NUS_ewnZH5_4|(0ba5R6k5zE_`_~Ckw%sHF4h785mxLzTQw$(c zTTPIJ3Q^4msJB{Ye87d+UZz5mS9{MD;iw)$9uODen62Q(AI1D_Fasj36wyLz1QGbv zL_@o__;iK~_cS2yvyvRTc}?w(epmC0UFM2H#kg5_5#KrO`8Hf(MlHaew_+1-2MT!fw?6@luE zc8q}7v~=OyZu>5sb`_tCp`e6RN~szqcoGb)MszaPQm(FBRy*s$eqsX@cJVWXh>oBW zvZ^G~SNjIB%bRh8eu@y6`Av0%Ell%)34zXj`Hw1<4HCgPH?Xfc_f~QqNeG#Bn}X$Y zj@qMaaX05S6g42ADDgpS1L*nx1-BoN9K z2O8n^O(bLbp4h;fE3AYVGslf1`vdYKcCK85*dO+84V@HugoKjSsOX$u)l69{zFZB$LQk5VjDK zl{{f9O`k#E&N9~ni+v<4CdJDLHc5uiBKwuPek0jkUVsL@`sZBUwD6MNDzW+C2y`~n zxhugiV=mbk0{ViYW!^zqR@@;1*U0rN@lqfL5p~6g&-awg%Yu> zA-TC{eT)|+z!wDHsL|?-Db)=+6BL^~?&n{O&m4o|(lr^6x;qJYdC^Gyg5?NU?6W($U+C0nlDZ_3P00^m^*N%H zpt6o6tSsGaUj}_|6t; zUYEM1X0;Tufrprywq%m{nE7rzpXoc|F{{mv7M0Q5p;|~NuwNUN-njNVhv0jz(34^9 zCX5M1MqAnz@e(*8!Yqk_efrK3wm#IIz$7psRj7|aZg3=4Xz%L9{QB~S-R^T_WZcxg zAPS(dW^E+h!fiwL0WsmUlP3nm5>Mv+tznZLrP3rKvpxiLiFXb4g^l3wOu;9j+uJ z;G7}Pyl7E~(Q^LOJ(K4zodog*mlnFlv(x7Gu#3=bU*sw!5xD3h^kK@h$%}a*ko6x$ zCN}Sf#61_kWbw4Iqq}2(q#bSkpG5*Cc>(z@o!t_VB?1no{B%YxL)M#8KKNe)&|KVJ z6tt6x=^}S3iUs*7m1?$iannyQb`ZYU|Ec@E@8ZvR93{v_vFiGfOp5?B_ykIZP=s+v zH!yLJK~E!uug{en@Wha#_Zzn-q^!EH{?3+V;d_$$f^|r5wu_FI9pLU)MK2UVwFu5iIo* zQs&)MYw8891++y-WX>4C-?6RZav(9U>QXA^6QQt~6p-2l=^8TwV$?YAiMSa@yxCCd z8znN7yM|fWb*mAAdfFd^clPjn3NhBA@75q`Ko)E1GxrZllM}F;AZW@DC_`M-&{tar z5U+2YFG6Ge;JgdI$hJF+bZicBB!&Y&$LrBV7sA+>5!O&4!7C=N9y{9e8`rqLJlKx9RNy zqF5!k14PzrhhNwDWk$qmqyll!g%VaJd=dX{c9<~J#3SMy!R6-spRQ1vD7zX7Zk#+c zQwNIFeZ-~QC7n=RoG%2~!niD4qQml~y)tU3L#NOyW1Jo<`b^mAu25yTRHv4$J7MWu0LV0>a0JI# zqa0Au>r%$ztNVm}-!A?hZgsUHyos{%jn>l zuwd47g-C?zoP(Gp)mkb$MJ{4?8i+4H~`KKyPzgTsj) z%ET`2J;#?k@i&$3!t^hLq3atxvEzmCLSa{s&TY&A6%&3D09ZTOvl*2?2w%||`{vUMp z`-~2l(9wN-tB)0vuBKVte;GJeDSnr@!UN2KlxX1vVlcN#i*as9Is4e{T_5;?uEX2C zxf`VeC;8IU8j4jtQi`4VkH9AC9(@Gosoc2SP5FUiX8DU2M5#`n&Mi~0T zP&i;LPE7-z?J)YDL^oxvoGj)rB8EqS+Ig?9Xo}*%!$nM8X?>OB+3dq9EiTch^;7fxCX6IavYM@HLuoPtI zx_dCg@AZrUCCVc1ekwZ~#=;JCK6lUVyu57(k_g}MF%k=HSI0o;(VL1rubCn~LD$#gu&2f%0#+EFH=~Vn`;fFFOrqo- z;_K!#0c6P%Lg5%tt`*^wRD@G6)EE)Ose$*<^V_;T5ih3M=@^}xUHwWDxr-E&CkS;o z@+8Kf6(_RiOp6+pD~al}b>Ugjg8ak~8GfFt)z`TJI_A};6%hk-y0?!n2}Q8Zt{KUW zsh*1QSQ7$`5>^6V;T>S1qkI3|vvy6_2e~x1&K1fy%5wt)v zZ4wu!P1#OiNJt~XTvcuwiJ)Ia7}tbA-n%4fG{khxh!lz!vNQ`B|N1o^Lehk-^jk{D zd31MWtAQY)j#0RDvnA>behr$?gu2<~&k2ZKWko|Nc;XD&!Or%etJG2dsvAj+a_kbt z*jn><{rJkDztFdbayuyRJGSHW5PCl);d@rtx!Q^SKn-iI!@Ietjj}R!lo%Sl%(Ut{ z)?1~1z3p29YUb>|uusa5vel*sCFS=b!Eqw)e1H7Hq44LO?tNA21n zk;lwx8a_PljC)bAuX<&nt@k7-*=L(g)1-vxJEMz8Os*t2<^Yb(*AR?L6nv@vJhst`Cs2pb<7z5Nc41Ka{x*9|0;0H+3hk{c45DAV1ssFJ`+#TaT;>krVtAbb-Jqp<@WCKJh~L7oklDDbM{uHm zE9_4P9_c4qm+jR8{Y>wQoOc~X?72xTJwAjeU5eveeH72UfYMclIN0!1Y?m#aW>Nx* zaMlq~*nsm>efSQ=x=bat*_@)@pAACiVaW4ics_$@!!PE>#v^$Q-T(S&Dk zv-cFztGccWNa%=(%Nq_t_gd|~$GSaE?ePp$S7beqe!S#|#!vMNSLzM8;NyTKdc^Ju zWS1MFF&Ns)@Be!>N4m87536sp+r8n}scZB3?P9}mV&X=*jQ-IgUt23Ob@>SIy=OWr z`|2s3`T`5Y4Um4CnKTZC7@pW4rFAYIg)?9}{Zc21621GP2(XBkAHFS*}5gE zyCrm#dnd3($Dx}U6*VedzS+W0cM;P;63TZs?z-IiyOa|aK`%)R34rl_PRN2HjHE;{ zLi`@e(uHb})6V*Ao4P?Oia5~Hp$p!q(817JBc_NKXIhtI%yh!WdHwbxV;Be*j+)n6 zUQUM5*|%+$Ksrz2e$^4bqo>a3FdRZQ#;mq2(&lcq5sPGUJQ)zRcO}YV%}LzlNy#vd z&erysQT{aDi6MdNh&>sSC1@o`Z=&dZPNRuzXTST5SujAJEIIkbmUN;uo!T6j2@)SIpxehJHX$9v`?)g}sUSL;qmB#^k2&>WCP7Q7Cqr9EMM;K>u3^!@Tv2`r#KGWF76Z5afGZH^5ItzVXpDO6XiY3z+9~<(E|DAH_Wd1FfM_>uwmj7xIEL6gPyP)f zi5NT$8D+RK)8a)Klb3aT;R9CNy@I&yji#-TDW+(Fa}rrK{y(n1J1(jA{og$j7Zyq? zZp|l5#lpSP9I4qfiE@HuK{y(?atnxJAJVJvQqTn8G$tEb*2@&shp~f%?wG=8Y&kZ= zVaZe9e~*MnatByNot6#IzBE_(E}e?pO^uNfhV9`vu4PrIzCl4`o(t4K;f9LJd0bc7PD7b zq&|eM$)>tmkXoNQ=yxQYkVY#wjslI&(ebnf4PC3qSQ}xu4E3Pe0-g+xCU^%9ZS>-f zD6Xn-Hn5cFzpAqRK&cnlXDA~;tOJj?FpcV}%Y+O~4AQ^26i$Q_M=WxS*PU6J$N+=F z_y?tKJVK4?b8#R8rKb+3Fbh`}t~nNU^on;cBuKXwWq(EiPvWmmS(I^TWq+@bWlL){ z#PgY{BpPJyCenKYNJ7Hts|4D8ka-8bE0w`^$S02QI&XN_ibc0VOTu~;4jVynLL*MM zP&|VzPlL?^%RF#W;CWHIfVl}D^QINFM6R3UTJ_8px8^-Y^00MN>(^n0fa#!5HEgf6 z@@>ZQ;k3c&qW>k1t}#}-hbz>shVwn4?qznaBU{DA!X5e$Sy{NWS8X?3v`I6oc< z5{a82Y{Kb0lakC{!8C7hg2PwrMYVqz8vkHR`+H1)efQr3q`bG(uhU16qvMGd6NI`( z0iB0OF2|%leC>{e&C>`?+FPTUh+gvYQYdmHhp67l6Vz-iB2mh1j0*Y?#^3ppzd-W` zf@cB@hxU~oCa4Bf8h81Rh}~aRm4k1xt!KSA`xtzL?%z=org==@y>4uJneg3e8uh8n z@vQFN>rwIBwnXG8*+z(@QcC6@KItEU1OjtM7}dw8poA9NFBcND)FHsoI{PM48wE{r zgu1-C^1m1T-|Nzmm)q)#+?IUJ7%~bcb}SDa#zB*;ZGeBSkFHzHZAe9AL~N@wH~xwc zTfI1k6ymN9T~wNgXiBzkwI=l6K{So>>B5D>1o~)YT?6oiZ@)pfd+Tw{hRv@M zy8*@jpFUwJhbX9(mCccAb&y@}|Bao{%>3VSY}>qur3}nCC?J7lgyY`*n>Hqk6V(US zG;KhRf2GN`TABXk`0XknzxDYhV5%;ytY4=pPDXh1{DAVyX@HQkVHHr?-uNkC9Z^ce zW%m9N@!rnW)ym5(2gJ+xBT}AthfvJ}<{nUWbN_#1ihww;Bx=waR-4s{Yk=h{BrxD- z{1Z*K)d`GI#&kTkvRA>2aUH>iZ}1Z734c|%@PAX|peCTt5kQOY$gh7yiV0~|y8a71 zq2OSN0`L`QT({-}J#`ad4(=PTN8+_O+Z%sRRSlRv*1#_q z2nyHA1O3MM25u-WB%a+aUrY?^#R(iNHfEOO9HQ6`{}TWp1KV0h)99%Uhk}>+KNY`I z;&H+)zTfm&4s?HQ=21ITH?f!CoGx7$hPgy zWrw9MU@*48KH--zMR7K$=qp;DT(?m<>#iQ_tDwxSe7MiC^&b>veajxJ8>~QpmY!VBO-6*OEtm3L93md`DEK&uu@Jh;rh`KO#s}Ya-vFV7{7_Shh^L=2-ig z?KsX&eDoWLoB+3>0+h@Nn^%Zy@NHLh!)vzxQ$gGZUmj~iOHmM4;Se}o18A_Y+7!_8 zjRtN>GL4L5E?EG|A@HtjSCsP7%B@-=lv1c`$xntQDu`Tcg$XI6OaBQ zA}+MtZY7MjvGI|>)b81EToQj-9Y|RN_VCQ2q7sBn`-l1L<2WASGf}mgOhS6qo z&~iyNikGEz zi!R9R07d`b#EC>#Fu)Mm?Mu@jnUs#x@oa_DLGMXTLtG-mOwh47la=JpW5P*XvXT!z zH?5YL6KnVkYK5`lJ#b3neR!iY=|PN1jZn2~c^7qK3` z3la}Ab60QsPo}l7%UY8$R?U(l(AJMI96J*grI#r#Dj~zcTm$@*Yr#?-yG7?-aFMK9 zC7w95dqc|Xc;shIqqN2FQ2PjT6TL3~q{41p!vL$Nsp)UCUQ6ggdFpEL@&80y%96r1 z9LUZR{%XTf@9; zYGtBEY=5xWAC;_-BdQs5>Lk*g+`4SII~z54@7G1C#pMpp;+e>CUuaN)2Byt4hOG3k zGOf1D{oC#lLqUpc9q#VNDvol^%6FZ}ugkVDJc92Tk*|TkMGBqM_>JMI!B{HM?!gkt z#8*aUWN{y|rqZET$8%_;v4dclNm3om|-@XCr#`dw}-v}a{ z0+i>Mz82%|wstgl#9&tNL(oeBqmZcw$aqR;u7ek$;gTTjWDa&NphtM&>+hdq$j&Xt zbUs_AobLV$1MzBA6q&!<6tWn0#+frKhk9iZ$42<;X&`8AVZ^7|4cBt(k($MZQTm=F za+-?Z+>i;#f`33{kGeLz*WT1!!yi5t*KR>NKLYh?A*441F)K)OvgeO*2u&r8QX7U8 z$Tc?n=W^qAny&&81Z-x)VtW;MVZe2DFDTq3%eCOBM2du`Jjb3KVR}?<66~T2MIFk4 zdz3PQA1gi?iz%;?0gFe3%@qk zIE;~mh4Q06ql8&&0K!N;2@Ul$*2$Io1`nfCiG<>b1%ejH%5v!wRk2?aSS35tv65p zt*Rf~2u|7RG&$^vy_)jaNW%L-nTj5ZQOn^z~WbIQQZ9OSFnx3mf zT}-AILd``XA|ZKS01Xs-2$KC=e|KkvLT4dI&6_mp(I1z*vp`qBQ}$z=>zKC_6I+yM zgT~XhX?XZVe;6;3MW|bDeiUZ4tbL`mbqIH!-)~oOC00+xGMJ6+R@^n7&|W(i7U4^T zP|xvY^o`V9S?%G5O89l(0G-K0K%IZEB4eng(xv1x$kZ=lH57UtK&9ZMvebC}i)(FA zxkM}Zr{UtdmT4<_d;7#;iw(`RhJi*xGY|_Wu2&5G5rKsD?xsZSuQs_Ec0e-~{&4Al zsoZ#^dO32#;^;tnA|?ABNuX$F0FiR%&DCUgw%zU1_w3{Lshb^I6B_|5l7v}=cUJPW zf6Zr#T8@A)6Rf9p88C}{0=Kxm`X@u+oOLS?`OPdnMw9(pL@xm_J<#w=#lPJ{7MJ9R06>`zr6%xT%r zS82r@f3~x>&{b&!sx(g@mM2!|sSPF{vSJkJ?n9odHuXcnbjYkBow=&cazgF}`3dc; zsz(x#v!YoC%9H>?0?9I>f>vHWCeoC$V#RCW6KeG%>z=l9^vel9-c|X~@)dIV?9d^L zMZOi+^@Z2rK7mNK1gO8X4@#O_71_F>|4W?=xRM@1sYkxd>+z32eMI zWQs{%ZJk5j>ej+4G8?14c5qV&80c(AHg>do-9t#A^(&-w(H1?aSlY)l&+G~qnQf)l z{^oGTP#({QNSUKv!B$GCIK0kxt}SkHqICy#uf@{^d(^^r2C1D8r{TTAgLl7)tb2lq z(=ez@u5Gn;3a|%{L~2-9)U?SOm9I;Cr|1a^V>A*wErrV~S9GoPGSvxLhO+b#4G3E$ zmg;FxSD+acg?2R6*tobEn{N$vI`9X_nwe}hR=G;@l>ILC7*`xNPhY@*+xir$h=WE`E_GhVZBJz7BV z=SoMvma(ScWFxICvtF!WE383)c}s$3(l;!gDr4zHKkqe`!9G%5Y=&eN#alqtu9?9K zwZJ^dRj3_yr0!|$KY`kx54speyB4T>`Nyb`s)N5!cnY4`7#BPgMWesdKtPJKmk3Q! zo!1(TjaDql@a)UNsp>nFPt(`_dK_rtkz(u^*;%sOvcF{>-JXz7co!{u5oTx>>zPL; z9*vWY8j17Qb;%6}H3o+TdbRn&?ibdroy3U+sz^?SOC820ck2JkR42J-3-Y4BurfPA zsf3OYvu~Gt!HX#dWjfOE z7Ei2}2w3_-=h#AguR_Fpnm*ja&fD;~Q@4)Eg0*~*gg*Cq`(slD(b^AZz;CD~=BrYD zdDNWqOFHlmyE$G{b%Vca$dJhvI@aodL$kzmzrZ9G?7psLrA1Aky|}*AJKsE(2!te% z+_Iwe(=V)SsEZ*cO+~B}eL*b6mCMR$9eT7F2b%e4F?An1evBs~wk38TZ6&q%^Lbx$ z_|TTrVKq<#XyOKvmEg|x_8|EZWF=D7TP>e14cQgnf2|ETXT{q_e?$}#moUYh%N0TM zFQ);ABi0b?E6xV+ad?*+0CZ=b`7)UhVx$H7*O#|9X_h>hETSAV3+-i1m8561_HFz85%DRbuT(XEZ+_&N zqd)82D%gO+Q}YQ5TTU+Y8PTaMY-b(KvRTVoS#*7E|slM6Oz4b zm)GSB40!|!4_^9$eZQ8YaSIP^Z|sAdV4CMM)0*r`7oqe4DCKO{#50iT9;FSCE%S%G zp2Y70@)w9oc6?bw>>KAz$2FrgSY&N&tS3td#Bo-uh5ASI&IZj!@LQ-}ww1keTx?;r z-zcHiy$n<1uIlfV<`9s*)?#R@tj3Uj3^5G8?R!(rExsVkUKB~ufE9N1$D5c+v=7{X zp+0w+W@R%}i(|hR@8^bx`Rd(P9adegTZ`~0hiMfHfIvV7u)Nvn)MioHdf7MyMU>u3 zAJVXeJv)R;nqhAk)wqs~Ncq1ZD-G@TEwigu;qR*um)$eACr7RNSbw~A$*sDyxDQuC zqkQmc8`w(~M5#jlM>FU6Hpoo>Qtd}Gog692S=q5QW)HOwL!gZ|eP&{u$H6BM6BblwX7~Hixg*s4dt4&-IjRj=+#I z`Q$5D*>c<2AYS*_Xi#ylgsv6=Pb^?sIILIo>J2Tf2L|N}(T>_{iXW?F_Lp=4Rf#5m zm&xa3TbXs%{1K5ZU+;>cX)%O9qxxD{4&4714bkv8Y;^{E64{lH(IiC(DxKp-Ok|OZ zO&amVL8&H`pejX#DZT-yQ+@!?e^-qCKK!GL-zIzG31M~;j z(1Bbp)1EMzLl3MZCUxs;z^Qfx9?OY6LUSaqXCXSVg_bMCZy7u(N4k$y74oH+=ByRh z4GjJrc+2dfm5ET%cPiIpL^IZPtkPa9HC0F-?Opx}-PY;gCE5}gI%9`DoPofOI#FEE zocS8ji?hag&U(O$%R6(kT-Vq}nGh?NE?dfV#1RtF&q58JkK`;0(|{;p*jbYy^X@mw zxOK>N*)2?UW#&?}qn=~#Z=z!NaCz`V#$sQ03{VbT%2wId>6amOm$h;iym=vL`5Ko- z^B%Pgtr}{pl*+|}?>Dk94tKqszFg&40V=P>w?f>_^wAy|U3BcrlEp>GxX%0Qj_7T5 zJkry?w?D@8hokj|H97t9PdL?t0@Gi#AR>LLWXi+Zbf@iQsd|3mfwTG=|Va=p5{d26sIVdcVXg{NZA!us)J+&G?RCwAu+4YPrj}_eY<7W8mhjzAwAy<}B<;oa9fEy& zZcnIOJ56T7+-Sy%r+B1^?YNQ0)t}gYt=PL=Mv0DT^0Go1qI)I~uB;(5?p%4o=!q

+c0$^O<>5C1`(xHa{bNi;6)! zTq*YE_o)}9}mjad! z?#^Q=gThu7Rc@EHYBAv{w!rdTyuH_`aT6L-ol9#3H7XEge?M@>6ocC|jHJG1x*4iv zQh&W_Go7)(WY&#-TPgL^pwxE2y5Xma31yUaev@ilg>0#ergqm6+ocem`Qfvw?Jvh( zmc6mD73SzqUswES6et)Wt`h@0c*8%&2W%2kP>PlrFZ3Q+nNxc~X87bW^_}J2In&z_ z7)AgP@qfok=Th0)lR&HqR!AByJ*K-@QCf5eTbBeIQbO9kxq0A*EW<^%h^bgI3e)uF zy6|*EeD&EIj^me&UZA!@e^r+xf6cBdcz*SxJfp7zO`vJYV#ak!XQPSHS;>X)h%ujK zX?GunVJzaiv7I+EqB2FT8xotP_vPb1|Hzost%~&OT5R(Xm$N1;hxQN2G`5%p$dHVu zSH}6_d&+zRG-U0_+b%Ox)2MZ*5b{T)s&gG56FY%23fXFP*7bL(IaHyjQDSmAg7q1# z7@cc$oD7YlL{y<`mq;)#@WI}2tg2O2wq7dS8=$_J-a8m`$wROzsuEAtQM>Zi`6V4D zp`s(tAKTP>A!ZiZRuLhPS_Rc$Yt}bI=c3)hIAnEu`C zv`i=tk{PtyHzF5j=b0KJo59o0NEBD(>vxTCeoNMJ;@`%iCbh?+O=a)NnP@ZIc?Ykk zAVSUguo2VaT@uO?r;=%%+ShUwFHFp07I83_nxPa7LhL2L2$Hz2K@I)o_txo)7dCiqfBI=1(1aiO)1*X;4b+bSG-pQ$H#R^QX$%2zw=VJM*Y8GDH zomAX|0ChJDB7i=IQ)Gaqn&-@FSJFXWeA#n_t~yBWg!F4YEL>kdFmX3!+t)2o-Z}TaC2-;#3fJ2|156ni1l~-BclHv1^!|t7bSLaPLkcnHk&-M*RZYpdD-I}L_9^Hh#zORVcpj-qOEI3W39cz~!>4w9 z?#@3L8kz-#+V{%i;XMzkMsBUM)Cao*?REpza( z#lEIsA8S3kLcQmEib@Nu*Oo<^bo+P9kL8;F(n)0Kg&L7Hs}U}yvicTA(q#AIg*Mex zB#Sj7qwcAapBP+)aJ}-5gXH0zX$e%4ofJDQ7LADrugcMr@xs+3#bo%pJg$dcLRLOh z^9$9SHLC}1`3#k&%f4H?YLx494`eW@Zsk)NP6$ye7I&HZm=WRbCI}B_rNZDkWRQMw zSkCD`B2SIe_2U9$n`U*An6iT+Eovack6C>+pmFz-M@*P}@@8FLasLk@qTv1KeMj_i zFPw$-__j!(@w5S%@gveJ=6J)QZ0)3!vwmM2qvl%;Fi%|zeqIB|XYnYY_by4!#DfF& zJ$X+x9+@i9L77j2Gv-Aov}*uENm5P5h>59E`qZ0Hs&;ZPktjmT4YPA5@ZZ3*vjTqy z%-;}!LxEb_9WY9YW?ia}S`F2K@5NF6Scj8%=F!7`z9z8<`mUX^`r;4^5?ymtY2_#3K3#THLlc=tpY zZ4Jb*keNVsKFJ6ss@qP{;UC37b!O>RU@@$tE;MiI(vZr35@ckn3C(}zffCr0i{W(m5xQ|{U%#i znWg&2SNmnkPb{e6Jcn$&$kcN}%ynn=apr8@;xb7CX4BHQ8Xt|vv-cx4?5^#+GgJ&( z2*59n5U4y8YA>8`9RuOS`)COygDrx5k!g`OGXsyoON+g)&G!?@lk+vCdWec@5B*}W znJeI|b`MSm!*8nQ;7+7x`M#Euc@k#PhFl~}ppW*=y~)&0@vo^%3m0K&-Z9?+H_LC? zEerzjydZ@XZ3uix;_+BY-c))z+5a+I?M93DGXu!xK3-fcfq^eM5L}o3H{CPYVV+Nj zFW($G1Lj(3ye)pkA(hn-)VCZQCWAY;X{v)I4;So|yxF8cJ5wONnc}WD=)is`ti~+) zM~wH0cp;R$0~aq|yzuFHD3G-@@8O&O z_iCQr@iRLLVLZ4^A0bXHuuUhh{6QM0i_@l*Ud!_jUf3s6WZtWxwnFxLugluGp(+z& zGbY)1Rc@mj6ZA(!Z|Zxh5n>=cl`W-5(T;j;F_Zr0Oum$~p>6GU`4)h*X>nPmv)aaZ z=B;4@I*?igQWd}GydF9ljh$U?0|8|qCUYAV(xQMnC6QX&wxwDoP(m3z_;udUKe$ru z>SrY%C?2uo*j{d#6ofyY=bKa-1c&)t8Jfg@1!DIqE&fyVp8Ow6AWrf~6+E1i#Ax+6yvKY>IgYxy=Az>GA zC(b(@`b#6xI#tk7VAaKMg*hg6(ZWF_%TKjPUCCL0Ua&>~875RR?rwO#TPXmskm>wk zumoMg`!Is_gO=l(lV(av$bxAUp}G1fU_?ZcU6-|^;5Xm{9W0;&sz)!7k6SiUm z6y?CS)OZuOJ&Mx#$`$l(iWYVo&LJh%4!K@TVi=V}20)<%FvUuXLwu099j0a$6so<3 z;Ts%%EY+T-)w(hQJcYX4$Z3~F5`xD`QLxt@Sq>-%F;q0oP1d@X?|I})MTT*e)2V_V z_sZDw4@>@$n@G!&QZOm)t+g-C_J;?8bFW@ehR2vQv&D4e=@DivXY4FAYLmGV80Qs9f!=HC$5^qt92$q0MDI3Z>!GG`zg99Q*9LFY^2tSXcNdvWTrs8Jp4>G zrdK;QBtCRgbunjZ0)r@aL0LwhjoP0+z{nTj=*W-^6Ktn)xHPU9z~e_nFy86R{}AaY zhq?;Nn80cy&ERv?QrE*m5``WH($zzs>VJ`R(mvjJTO8g#R(Mz9%b^L-V*hd1euz1d zKh2VT+d5U3gYZD$om0a^LpWvsrYkw6hMU*6JftViXXS?Y4-IvY={1wchn^}xB~i?q z=@a6*%686JY5`gXFRH7qW4@c=@lzCjZ{VOYL0hi%0?(t*$!mv87i6ft&m03ec%%Sa zZrENfHTr^fpvWNi6Scop&h!|R9R*`^w{TrSklK(mma;C}YA;kdt*%MqX7;ZGZ!d}y z)2M8ta=cv#J4`Ljqdjqc=kq@zmoS}+Y92VSLm;PleC@+BtJqxP3m0Rv`^IpPNrp3% z%TEg6BZGe#wyALZ3{_vfmN1M-|JiUv7{p&@uSBT64>&sn!Wxmce&=?VeC` zyquCuoB;sS_(8reP^KDH?na#Gs#a;!pPF_mL>Jzd3=MG>0qlaNvfM`}BxFzKwF0yt z5pvA<2x5cFxVb@*Bz=l3Cu3iA)=?@N#FQ_3D<`Ob?jY-f=v$MQ*y0!{-R^7?^ zZ)Ze%`a{ZJ5Qjd6O7H4=`1NgFIUdZd0T48iuMiuAT56LSs*haE9G z-qsenGe?&TfMBfR({v9?PJ4I!3QB9cW>qE8b$pF&BY`%Sx(enDamv#hGQF(i$zA$j z582_DXc^8m+sWTWx~n_l^gJ6y;UI5=;{D6UtX5amtiji|Eo};Y25?mR1R)~;cbpv& z=xI{=e!uq=bvcAEBksV(HY5lydGlgId-znIe3P0iyh>4}M_X`AKBf0*Rh(7_EOduc z!Ec2FbbZk)|15geV3<^1$V#hySRlSY?=#z?>H)ROK2y;c7I^C*ZbY!TL02;@B-3rI~nE79?lKH;a?O(~`tC%R4*#;6jl1rH8Xn{L9jo z9?nPs2!N}EvinRA^loB`;}LZah4kQYO0eb9_O{|rMIDMp_q3~hVp3lxHvUjd9g-}YNt{kd!cY`3;qXJxWmpt-C z$LlKDYCORIDZVHTf(kj_Cb1}RSkZy%tAM+wBPk?0&veWp%swRn)#@&rXmdF#7&^U- z7b5jqQKl4L|4@K}EPoX$!ND&H~{Lqam8 zAEN2Tt7V;M2L4+^F>cB!XCW`1%c58l#J6yS-1(CW-?$sdckwe&uSImu1EP3O!Shmwe2Nx7T63q z{fV}mQJig2sTiR=hr;i0bw_?M`HxvwtG`g4Y zsVlBI`o#^LY2JXP&eE!i(S7|Uov2G_n{Z6U&=QWPLtk#c+NbS>#bdgVb{^pAkvgiD z^1j1ooR4kj9s~<}uxK00|D;o4AYO2-c}BN^eqUXN&zScWgZ6z*hM{G{S+vxjz6Te0 z?UbO!7Y}-2?AY(w(`}c#$-R@AP;Ak!^z3&m`Kien<&I*dMS3ThYi1R!=Idn>t({I@ zrtpf==OxZS?wEkfj=P~O<%*`mmTk#wJmUbL!QBAG1`hSmSHpZ&)tXR);1Qh8gECEPQVxl83>`j@!b1wET57!j*;CzrvU`7UrdZ>>D9d* zf)1X9Q#V=VEa#eq+fldg+e&+AkTAC8J(W4sB)MDWLZW9uAvx`^8sdmU8$iI>T$q^S z20o1cRo0iWHR0e>wMaH(Pnv5&X_@5FzlbO*rZT1m@HAP3S_t&2qNyLYg1ZF)z&J%1 zeJV*Gg&});_qKk?fRgCjvKCC3Rkz_t*rKnNj-nw1O{Ura%uiGcH6vPLP=~MWH^$>z zt*&iDl6lk=o3MykEMv8=VM`Wni%~-15FYT9Za#ojoz(CIB#_cQjlxsuFerU-^!OF5 zP}z(pPg8wPL~zP&3@DyBsTt)dM!6}SC-1TXZ*5g_rE|RlQgfiq$ufB0`E7Wx+2*A; zH(gRE<3l#20(orb1&WK7Ej!~RV-dz_v+d6`OlV3PjWP9+$T#Q-D2>eBgE=svf1ps#c zrNsj3;(O|VqzxtlsF$!6R^e$K-ofBwn3gI#QyF*)42Aif(hV<{+F_E?Q;h8Ex-2l> zfNzT)O1Cyy`RL-Gg7C4}Zs$JI%QJ{BdQ@BB`ertD%hGd~9My187 z*DlezpHyoXnmHAR(a?u@_f3X!$0`-=BJ?ypvE;ECF|#n`u`SH}_jRq~?X~#T zN8r~}z@b_OGZ2GcQxdDnOIkNK*_P*xbpC^Li9r&j&nlF?*aTVPlDChEn-rM5nI z$zNJ}OZi$!r9alJ7KM6~om`GkE$drAAb>>OqXe{{_`e^3{!A2TLjfRBb%{s*;OFkKGY} zRGwnVd>Un@c4RDE!SB3IyBxV8AY_S4mwm=g(4bC=58R-1C2SuSNWIq-`M30}DDeiT zxxMuOr8#TTB)z3R-fisFk54Sy{ZDkRygp$5U3;ZRlCZ$(=V?@-d-1 zU(@eyhkSmRa&B2>7u)Ut;(4NQOv={%m!vKH+$)v{ma3Hk7g{TZv`F`Ag9yt z(@!k-Fe0^@Y0y%$_IJ~u_y79M2B2Slx*+~Arr>Z2YF4Ly6L&O8Re$&Sr7MU7*QD-z z{G!w2CiAApe4pz3NNR5uDAgXfQ__Zt zH#UbyFMrjn8GKt;-_OqYRR1b#t1q)O-N)&4eMr*_@vPDZw)KNUmCh$mduW+m^1XNb zs&KzM()1QmG|JU-5;W%W(c)<7$ym34wm|?35K;-Hl85McZ`X^xGi!TyepcjDuKJA{ zG|*OEQ?yNbGekCGPiNFE^hn7vOWpUN%8C_Xz52?bF zgnRvr)<$DRmd%pi>4~$;6ezfv~y|)NpuS-)np$N`!?FrK~(#D21JxHr; zk0C~-Jj3|MglIr&?Yoi*C6}@6e@av6HaMyVNY7N zPLkiXzf8IGacpvLpFT{Uut4<#oxUa~vJIlA}Pa0IC2<7D1HJ$pd4@ln|lgvOxf zaX0S0SUiz)Q`wnJzBy%Eaw-3U%jvTZ-#;#9-uy31H#udrC{^ugakGx~t)ueKdoxwLs&pdA1zk4z!{{1n_LNoBcKD*Ri zBF@le_sqqJq<*5lK@i;PV`0YsTO~dobB@{s5keGmq^q#EwId8u59EE22AZ`#V1Y_8*3o}S4{zN zY?A)frFXLS&^x-)80{t&t=>iD25+8Q9^G`EkooMdVcbUDS36|p9^l{`@i|TGK|1N`vgzx8{-SGPuyzY8AEEV=~ zt$%$N9MaU7(Hs=gp6g|7Sb-x;?|g^VR!Frp9~(Zr_(;Y)Xx_6g^0WDS*HIiU($gQi zkQbZ1yTkk#(3|K<8R*dfs=j&peArm?_>La6ukQ^`J-Ua<8a#I?Dk8`WaEC<%!S&x2 zEe0*bo_uZ9*kdUDsE}Cnrr~>9%s-{S?Oa4+2aiha%%}!4_Ud8Hs?7%vO78icDUcu9 zyI0Kg6oulOC1QTsbJmV@O4h|@+N!3~*_3HF|G9eAE24zp zo?|?kU2@^|xLD$Og*OkMi$x6{mPuVUk+SQM&_WHK(j0kX-o-#=Xt!$GjTCw$G-dX}v& zB^+C5dT`>S>iwrnha!tbxa3pEKWuUi=fXQ@b&HqZZ{0ZSWHpU}It{DK8GGCi-Zhnt z2zYzZ-TbxWTdO3QBdAxSc1|~Uy!!MuUmGzX8I+SYc(fdpcL+rdF??Dxt6h3{nAvU~ zt?<6SW^eG#_6fgZB|knSDxY^y1|?ZrCkzAU80G;8~2CJu@GcJmdt~HC4Y6a{Gy%Io-(c znI-aSY_23Nb9txrYc}V2-eYf3X@P5=$fuekcl(W6FNt5iuDi5%8BPhjH2wrVt>GKYk9i-G{w5d zYiJoxN2g~>9sH8ySe<><)R+_Zxv0JEror@%g%X&1!};T{e*b%O?N^YfmA|aU&VX~* zA2wZk`_Ul3`(dAJvH zlRQi@JH)nXi0kiBDLdk_fG(^qtyK76eU4CJX58d-3wL$2ZAvc^l6s0GE((`m{&;$; zHDmmM{4@7j%E$1JA61L|)I+W^_f3R|r{#SY9F1!coZ4JKw|+vkUDnZ2zJ5jPOywi3 zO4pN?DA^N#L=K9IwExtDcZDrw#|Yg@u9+1!bY3ClH|{*OP8oY55~*--tEs|8&8fzu z1b$YGbvyA{)=Mc3adDq>a)DXxhLTZh?2~Ek4-Q=;c8$yJNpI{lOERvpJ*{;YZ%|~DDYVj!ufAX>ZnG~nKChsAW)@HdY?^bEr&JSa1 zEn<%<+FpFIQn+_CX`J;@L_|`0IOvi3{i`i$uza2UTBRm_vAY$s>|6c+X>yXWxMjRS z!Pd8@3^EauXP%UJ*|V~?I7?^A8Ggw}D=Nzi#?-UJFMMG%b$pQVtOgr1oqAklwZ5Er zW14Sp=ABL@|B~J#yK4$9b@fuz&nnI4ekGle`e7IwkEhSb5C!Nz^r9)}a$WAAv6 z>oK+7H#gq+YMPq$!(fM}3vzG$nH!3wGkZ0ibx_ktCu6GY3m7S1C#2!_GsN3HpNv4N zlJ$^@Mt4+zHt}JM_O9PYj>ikY2xzRArC0s20}(F{hM7E`wZOhxm8wr@$NGUWbW3UF zQ=F^h*Oht^x6uoCj7ubr_bGHAz9jKL5sw1fLv_g*!$YpI! zr&krfoy6)dWi&CfD$`TP<^9~AXIvPA)||R9m5%BYk64c-x_TG7u^eD`5c0~czZ^#u z*W2ClYt7T~-St@p&w@vXrKEJM%XB%sQYUw#h~R+vw!GuL_bbjtMX>s@h2y5@j{m@1 z4yRXXc_TZA-fx}G2#|zzMqA!~9`KLf3w6=|vfz*Z!JbtT&u~2YubtDrS&flfuQnCo zV&_j@l6HMdaJ@HQOXIw1Z*R~VCOo_W zihCE9_{OKxrcBk0oOuAw+n2Je)U)@icZQuPcl%BQdb*-{76Uz;?66*XVe!=c(TJd{ zABO|wU}4SrH_Ds{7p%8ZGj&u_empM4?vb<$2vQFBIDbL)8RWF1Qux6Ey`vwoFLv|< zN_7pIx_7Z7FIJU4Ex9NwMZP1oZJ1EgmB(yDx6t=V`)YXQ`HP+%R7dj@dR`7ok)ORm ze!5tkWnN10r-=4A05{AZ8ak*iW`_80Yhw2?vH6-cU7DU72}FrPZVH(T@mU>#7ZthmE923(u< z&+v|o{5J&c(I@Ng~2|4K9X%??=<$}2xGT3bZ(is`OnqsM%A zPgy@{$-bC6==vsm&`#Mlz*5n=3MA-$)-c|bYAQ+pHZ6bg^|6~E^)cV0nvJ)ajJ%~wNBj42%^9Z-n%rzS z22hZ|y&OlE!^3|A}-KRSY zip0kC((_ZgtbSPBiFdWu%(A<)HUPR?2Tr?FPXz4@jxCO341Ntq`JIXNzsGW8 zZzh?_pPI-zsq{U1-@)AHDAKK;ojTvYr$d+aHk>>B;k!d(#B6f%$(EA%yL8a5uZ|5q zB6G`#me`r$xHM_*u0r+q2h`>d4+Pvzgk#Y@yf^MEjJz73aIs2TtLM!Gs z2qrufQNaxBTq;C~UW|LxH$KjlL&9k`^-4J^T9jy|4Qb zw{|TJL^vrbX9TDmdmR46PW(vPu|scnCe1#*P;TFX*zv2)_+YaK?^eQl35Dk4tfi=T z1}~G=rc#b@jvjyKA})XROiIkAP5M!S*RXnQz&PpOS+&(5-Ksa?uiT8!YjkRF7oI#Q zn*34e-;u0myuB1rKKabKFqv~lyp${ceP)}AabY7Yc0Aa;Ao5S|(yXMy#V4o9x{W!V z2Q<*qRb%_@t8{918&B^&RKLhMF8RM*zb#Jhxc}V1(n+_t{_Rnzlj+DWP2M|O z%HF=}JT`z5{ZMpn^ebidIsI(Xd3a}#^|{y^UHb1A>_ktIP3_z)>ayM)>Fq)Vzn>10 zPktie{QTj=l5V?t)i$>H9Ve?@yU`{?gkCKrznlJjEIG4A@v7|bo{!U>>~Q5{bd%KFJzUfz-~V?`~aq3=R;J!j0*EV zf#TTV**|oX;2R4JS(QHf+pjVl{4&m>OiUHwVl1~tt`Z~)nDsN)u;Dq;tBM%2c8f86l?a7(bQ*YdhU;6nSFnW zjQy9dxTPOle8cx&mQ9>lbIxe%9PLG^3j=k|%~8L;s5yg!GU};Zy(_aFHNK{QqMYe& zKaB3FKLD;$&vFMyaJmdSfUx(F!^0h)Lx6e*1BP*M&W_Wi{{ey+Q>~6Y&ik{i=qPdv z=nGU7BZj2g^nlLYcLYm>8cHxdt*E6Xrzna+RfR=5=V6=}s6!jS!mYYaU~>uLCUdC3 zr@YW@9MSHB5*6JEzXP;+DYL&lH{Nl}IocpVx+(F6?kG>&zibTqSF|b19GhIeRl7xA z=FX1u&HROb%_p3PTW#3Pz!8t2-t0MMyZYp%$E)0rNn=kZCd??Ty}@%!(t%w4Q~Y?S zo~-*KRa1^{Y_3)S+ZI93A-A8y56&O2%2V_6n%e%FO9olD-IbGmI#^Nc%7xF`IBL^J>`mwvK>K{zvox_w)*D_c8l%W zbjWvBZsYG>+YUJ)?RB-w2~!?p+p{v^kY>6R7t1w1xn0K(Biee>)W3?@O|t$@?YcZy zVR^eiu+I{@yW|$Y(8&*44|@!XeC2uQR`F;%WX|ZfNDk=cp^+>1M7euzJHP4d;1k@1 z#gD5@HqY1X2j_?<&(CG69^7Vual_lTIm!<_Z-_P|QozDSJj+JugOsBIU|!Tm4k5;k z1G4CTLcLy?_&nLBU^+eahjAsRth@~y*rQotnd)tzlb&4Ro78+`K=8sP1tN^DnqdE! zLoIars?-}}X4@fxO``TfLsnB{C-R(t3k5^p2O5BJ(e87R@)^YLBG}0x#hhb5IUwJX z*Ik5)>3&~8{L!ql1S=*7r({G$5Bu?l;3|0YdnlxP;gasKH{__LV&JOr;BSvuIcJ>bS}HkOy5 z_lH*HV(tmr>cC4Uo}M22&1e$yr7URsRWm98$-&j?h*oOf&-z)P)pBYG@MgK-s6S(S z^w)F(U@7EL<_xG+n%om_w>Hj_9ueI3JhrP+*oZ{WFTXGb!6J@~vTr~9nNk?nY$s|3 zkt%q@l(ytp&hrbx*v*8?teM^ElY7Kc+oEl<@!l%R+KcUowrm8`${KR=slAEJGwUJV zMNA+CE*aOmPmf6G+Kh!~&i7m^#BI0PTf>f99ff_jDx&>#p0VKW!q#scRr$P9GKGmXcdQ}Vf4n`9nx zj`YOLlr!Q06~H-iDtN-(YJSUNC3st@?_{u+x-e__nu-5-*e$mvaqA}TGPgp75*j|z-9@N zu6@a!`HX=XB|dCwpxc>M6KH42rB(DZxdbC`y||GqkwRHbgB(~Lsm*IrOO$Jj{5~7P zxqzEp*Xef@)wz@cB}cP7cStfC;W(F`s*|}jqeg2tmP7HlQQa9Qu8G9TdW3V2I4zqF zoEAKJuOLC0Rw8mIN5f*qf%nCk&AfNhX*9JYcVj8W+fwVNVI4eX)Hk?9?iGT2x2`$s z>KCfAxMp4FrIm-vpch)`#RK7Ow>l!2PkTv~negQGugbS<=c7r39q#w+R$IM7lP!Hi zHl5x)J7uNGF;TM{S+?j?SDpP!0UJ)%65-7B&}Lav{3odqyB)8ZBt<783&9P^Hn7x7h7RdJzHmw>(xXKU8UFs0NIlOo}5J)}D+= zmLKn0gdeeZLx%6h@)ypOqSQM>zZ)0LeWjT3XLBtiDmivY=pO9_fRg-dKWOvjs|v~* zIDgm6j=6~t=HR9=zpoqj;kVGCZsKu(>&y-D4R&H6{o~!3V|PxjA}E9t;#p$pD?4;!-J&d)#Vtkg+diog)6ljUSx^;S*l<;1v#vVgpg_Q z7VQ?*5tzlZ$9AVKAYvCw-(}qJgiftGNQ|rNdQ!|7^3Cm0$!@;l!`GKN*<8)o1L1u} z#TMT?oR_T4Z^zC+&g?}xi^r5GFjaKcv*_0tmCkm3(XA9GY_)?**6Gj8I6Idg29C4G zzfALK<3fTgJ}c|5Mwjo!CFh_mNTd(vdHcCLOTDo+1=nxEBjRlUgZ0;Xg%pTOh42N zsBCxev!H#3lPi%((2wgt+cZtyXCaN3A2KA})5D@s_Q=Wr6)QJ#>{AOBwV5 z?`}fwsLRoR#4`P$YyMaQOUJ{11>l+syLHN2v$q!Vb6-aLr!WVIf8LL@9Xc)f%S2Z% zqV6Ho=a_L%caa|khRvb1`04UPD~M*ZINS3r;HK1*yd|KL>Kl_L_I*~7uT5a|?eb^G zw(m4diC(m@1wK#XGrlv_qDbeqaIHDnN4dIB+>$A zV+3);xV^Vx=}!36i(E22ruei4pc8O126{8;caozN-B?~TsM|^A@1?ETvw7zhK8ELV@< zwgGnve;-3jqzmrN0Lzn<$I+uuS{5JRiebXQ>{0JnHc*5f^U~wg|nPh8(X45z>m^}Pi`O6 zZf5)}z01Jm=Q_cH`f>r7ab}ygT#1A_J`6PS+GZcN-*h+Kr2-pH3ErYaNmxE?+|9Vs zo}pbR+uH`lk8jf$u5M2;l-d@0B>9m#PfsXn)S%5i1jm%Iz=5^Uc0U^R8f(pDN$|EC zzl_Sd!l9q48t5P@N0b!f>;o2A%`o3XWuEct(%#we^*jXI28o3UMO#sKj#pOTfNICK zLqWz(%TlW9nWSZ?e51_h2&|2$*urVn>SgR|M|#SRqBnr0@rfIXgzfGB&fM;I0{*Pj z`T@SNGdG^z*}=#8v(Rgd-u55NeZYv%zTRj=?f^vQ@zjLWcQ7CXv;w@YclZ2^AY=BkhR_Y$0i3^dV8~G_2EKB=p{d?B~k|}L*2f@NI6jE z7uq>v{u0<7qr%pd+ABLWnd|q7-U44 z-E{CUzOx5xqxN;Pc`3CB>r;pjnwENfPWB`TJK%PH7N8J9oR^6lI~m()^PHdL(j)%h z(jEAR0~>IeAL8AZ^H;tpPYUhOrAHhgA_L{05OfadC$hIOJ=s_u_3tk*z7D5%zUkjz z7FEpQ@inXe9T3Y?V5e`ww8XLKZHiQRBVM>i_bokPl!rHX?vj_?aezI(si#jtB2np(!UD{wv0RO&CtHlq++z=z)*YW+WB5; zNe?3Hm4E85<4hnj(C<0d5TH9UrjDF@sJnCdc@Y~X&1Ssia!tJZdi)^ zKqctPt!6LbHBKlBJkdu^%*+Iym@SqEWRP`~Vi`>Y&ANHQ2y1-xJG2y74qJB#NukRo ztpYC|Wx}R`gSg;3H;qA4jd7tTo*gjCsl}+Z!OqV&%u@FfW_% zOP#;<8%D|ap0hPg^y~_G$@b^Oj9RRcF#@b}Q5n4Q-|Ynip^=d}AM>=$17fcpop{_Z zbjb~VKiR}RpbKtt)+5&D3#6RJvo{;D^B1oZnLW(aQ?*LvAffL3v-3@&#rHFAHSJ;z z0t$v<1Lmq<3(p`iGKoYpRvXus81CVhWbVd-Z9c5nvD)pA&`Nk{y9ZFq44}sU=UI+9W4C6_s?egR*V_c$PW1)KynU!WEy+yc{}rWKKvdkqgO=Ux z7FJnuXcNa%3Ab&^6~^NkOGa>ht_L??FN&wsM}&REH@J%gG;iTG0koxN#wo)-NErs94aJ%`+{{GE*o$!6EZvh%wZqM9G2jzGqp zN~MZh$~Z_~o_Wj)4#G5Q`t?(|85=TDA<*Rw$tL&D5+}oK2ezp7M9pE~6Q}hP={7Ig zn~ZYe-h!MJ*4~0F%Nlzq1sWMpz}@FIOudSAG)d!i3LjCX9%Fn)V2oL}E4x3Z6G5+W zyZ`O?NpNLVKtg`V%BUM=wR_H;Y6~na12L8Ph6i#+wg~J48%A4@#u?7qtfG}IydpEj z#)&e%Qi)Q&)-Rs0zv&qm51{1@s4;U^j?%l!pY-6qUgwp`{O2*zc^;&*ndkf$!xONSdCh#GH+8FH>}>z_m8nk&9e_1 zU&O%2#GK*;#FqiIA^JbXI`UR)3d&3hsta0%-d_ogRafLxA4AG=7c%#irQ7Z!0F^GG zwjI`eKMaHc?OQOPy)AfS#}N&?JX#1eS#Kf?(&pDAdi-nJW!UA~$f98P^>|$Z@Kyhk zXYMfk%eT|X-8dHwDH0IM@yg`KHV2dBx|l*F_PFB#8=Z&Q>TV(9xMN1ei3p~~AhYdW zVV`lVROm)=30+(=_XR_S@mCzD?mgra8^o*%hgnsWfV1@-rdpu~MxhGCe&8Iud<)>l zTEpL1O?2YO%or1p@Xh(0bxm`6$M{jB_G!l7en!qJ&rl*;kRXx%J7K>41+O!V5;p3E zSOCsP$YhzoH0*uk(sU(Ys91W%Q zzdlGavnyh0&#~Gz1t!$xx-waD`J~ePM4x++8EkIB12B;zvzeGmZ|u3TWNRsuN7r;MtmE@0YuSx6 zneC1a&n!r|jWPIzHsS^6E5k&O*drNAho`l) zm7SpJ=aY05CZI;5`_RJy^iAj;wwtn!L#_5?Z}rsZkW>4P<-v36FSG5N9R)t$s}W%j zJ%xGZNLH7KMXw_vu_2z7Ey(!YVlgA<{;8$M^38+Wap0uPQ+d>1H12~+@tHKWM5(n+ zpMW$uwm|{hH}O+qHf>A&=ye;JSCXMHfmP_YkrSb+LQjw(lJR zyCqaTvGW*~{@P0_G^`#{x+qB;uc#By+vIp7oJD9h1@G4wzhMLpIAU6SF~OmsW{EL- zjP{WvSJm9TkEOV_IM6C`WMm*EMbve=UBK72*j@cXgWl5eQOrNAIx0sss2<YcJ%zsuj_ji{E&kM_@I9u7yh-(f~MABWw1f-su>I)9MK#g;{TijNJ`nGnSC+R$zn|Y6n-*`$GOpYr?Kt zB9E4GWk;KRuCizaB_)Z@`b^b`H~lTEV0GCOseTy_qanX`FQKfMGmog-Z;Edsw?r~S0~%kHzdzdQ^-qEEEXA^vB)BO%l0&#pZi~+wPgO_KlM~t+M9DU=R z^O>ybaJ&O_TYjR^T?KuY{Iz>Xz7<y9u`YgOj8f`?#ent_Zs4kzC|wR3K9tJ&VtYn&S`%7xwu4 z9xENSmSkp}3yd5uw$Ev3hv;-=-0^8fL-j(dv8v1q>;RMUs?4mX!$jTzc?Qm@-0FOP zGk1^19m4}A{hLAd4pk&pGktm{ZNjQZr|eZ`<>^cmrmZX~GuqOWY*$8!iQP7=s~;+V zm-5k*3r3-wl}Bs=DhnbuhYR=ZyCyF^}SRQRnzWM^(28g^lB|NXg1k`Ut zQhuXN;G3~e%IBhskpG9P!|3t`F!mX_h?m@ij(W?9Jq6Ty3p2E*s@Id0WM>GeGKVZp zCVGtV&&1fvyd)aKT=tMEIng9~AlG0y$-8MycJE{Q=JUDy9Q?1$w_M7Mc*+9zXEPj; z{-LK0)83mi?IZ?||KKR)qx8jtd z^JzPc4u4mV)p4LtdJ@}0#(o=ClZ3kaG8`SKT?eJlKuULw!c|C1# zdr4v*fx2<@uBoMbRLOy&m*PQf?B7L8kYcTr2NyZmJ&`Em`F-^r61Ds%0*;l?!_~1R zL*f{bkZy6;r_Zd{+6&qhZz2;iFOk9+rSD_RK3tn`&;n%hrQPDQ~kurt`=E)r5(4!YxN- z0seM`k$c-6yq?{QuPSeZ@1vZO7esB$_=>*#(e#*ew> zsY1LNAs>F`D;SouZAp25%l7|Rz*CTCu1Wl%aL+e!sg)Wx*MFoLm~2eLBpl;qW8oej z>{XKx6Hkv4w2rZ;l@po0>$)V1*%@V>UOfSI`+)s@PmLedMAdYvIGY##(H)$}oDmZp zn@2W%&gpF;Zt3AL8T?SMgMJix*K95&GsHw2Ha_clq|3_2 zi^Mb&b_es&vL2pIv8|f}!_mZ8{_O2F829O(Rt86DgS{sn^yYa}9iL{6J?>tHyUya! z>9&tg^zEK{0a2WFjk~VeM0X!SdPHQi^Mroh_7wxbygE#JA{oW@NJ&LP{5#K{dpWQD z87<7V9?#XH9=D{EyEZA|u+}mc&#$9bld=dARVKOD1Plfk-a7pcY1t5 z>1QRr$QP>j6wDFxh)A^)E;w%nbKdmlN~bs_a%4<5T2#4(S7#O)w)sIRis~ha0Gv*h zjLp$4Z$?x?y%9Y@AgL(EbL~d6IIMgSZ6WL+w@XU*js`yF)DE3Bt+c7{r|D7*PjLab zt4CauiGHI+U&fU-AY{^ot<|Xoc(7jp7jA|#SDE^>sC5Rptn`)XyzYWmCNAS@ht!2DJu+kM#$6mv2|bxwNHF9SDLP|YnF1jtnu+VtGS7P}@_9XpE?T+-vk zEKoPZH361+B6{&yc7a6rIj5ZrS5B=nb-^WQgLS)~&coEZHJ|LuZZzh4&R{Pnn--o# z7TWl0?xCZeX__iDwHWLpGTvZtJw

IV$cm@Z}781Y!3*(5(h~UWeu-6ztg=&QgIz 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%0AcHemZZE82 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 0; x--) { toggleClass(buttons[x].parentElement, 'active', false); } + // Set active on parent toggleClass(document.querySelector('[data-source="'+ type +'"]').parentElement, 'active', true); } })(); From a0fe61011fcdcc4900bb0f76cf942ca8ba31508e Mon Sep 17 00:00:00 2001 From: Christian Pena Date: Wed, 20 Jan 2016 12:40:04 -0500 Subject: [PATCH 29/87] Update bundles.json - Fix path to sass dir. --- bundles.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles.json b/bundles.json index 850a0b55..c123e5b0 100644 --- a/bundles.json +++ b/bundles.json @@ -4,7 +4,7 @@ "plyr.css": ["src/less/plyr.less"] }, "sass": { - "plyr.css": ["src/less/plyr.sass"] + "plyr.css": ["src/sass/plyr.sass"] }, "js": { "plyr.js": ["src/js/plyr.js"] From 76917751e38c942c5ae66a2db1dde6625f0ad208 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Thu, 21 Jan 2016 09:43:27 +1100 Subject: [PATCH 30/87] Small bug fixes --- changelog.md | 5 +++++ controls.md | 6 +++--- dist/plyr.js | 4 ++-- docs/error.html | 2 +- gulpfile.js | 1 + package.json | 2 +- readme.md | 10 +++++----- src/js/plyr.js | 10 ++++++++-- 8 files changed, 26 insertions(+), 14 deletions(-) diff --git a/changelog.md b/changelog.md index 09bfa021..1d9249ca 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # Changelog +## v1.5.5 +- Fixed controls.md example +- Bug fix for docs error page +- Bug fix for controls tooltips + ## v1.5.4 - Minor bug fix for clicking video to play/pause after source change diff --git a/controls.md b/controls.md index 1e9fef0b..87671477 100644 --- a/controls.md +++ b/controls.md @@ -79,17 +79,17 @@ This is an example `html` option with all controls. "Forward {seektime} secs", "", "", - "Current time", + "Current time", "00:00", "", "", - "Duration", + "Duration", "00:00", "", "", "", "", diff --git a/dist/plyr.js b/dist/plyr.js index 81384a6a..91b9aa11 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['

"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de)}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"durationchange loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()}),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr] .sr-only, label .sr-only",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r; -},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return o(N.controls,"restart")&&e.push('"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels+" ."+N.classes.hidden),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de)}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"durationchange loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()}),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r}, +I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/docs/error.html b/docs/error.html index 7c7bc14a..f867c915 100644 --- a/docs/error.html +++ b/docs/error.html @@ -12,7 +12,7 @@
diff --git a/gulpfile.js b/gulpfile.js index ca7c0de5..35c9d973 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -253,6 +253,7 @@ gulp.task("docs", function () { // Upload error.html to cdn (as well as docs site) gulp.src([paths.docs.root + "error.html"]) + .pipe(replace(localpath, "https://" + aws.cdn.bucket + "/" + version)) .pipe(gzip()) .pipe(s3(aws.cdn, options.docs)); }); diff --git a/package.json b/package.json index d78d58d8..425c975b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.4", + "version": "1.5.5", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index ba111604..32d780b2 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.4/plyr.js` to `https://cdn.plyr.io/1.5.4/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.5/plyr.js` to `https://cdn.plyr.io/1.5.5/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.4/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.5/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -162,7 +162,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 2a86c003..0b5bab14 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -46,7 +46,7 @@ container: null, wrapper: '.plyr__controls' }, - labels: '[data-plyr] .sr-only, label .sr-only', + labels: '[data-plyr]', buttons: { seek: '[data-plyr="seek"]', play: '[data-plyr="play"]', @@ -787,6 +787,9 @@ else { plyr.captionsContainer.innerHTML = ''; } + + // Force redraw + // var redraw = plyr.captionsContainer.offsetHeight; } // Display captions container and button (for initialization) @@ -929,7 +932,7 @@ // Setup tooltips if (config.tooltips) { - var labels = _getElements(config.selectors.labels); + var labels = _getElements(config.selectors.labels + ' .' + config.classes.hidden); for (var i = labels.length - 1; i >= 0; i--) { var label = labels[i]; @@ -1472,6 +1475,9 @@ // Display a cue, if there is one if (this.activeCues[0] && this.activeCues[0].hasOwnProperty('text')) { plyr.captionsContainer.appendChild(this.activeCues[0].getCueAsHTML().trim()); + + // Force redraw + // var redraw = plyr.captionsContainer.offsetHeight; } }); } From 5978810b7f11539fc1b891e3029aa65e10f0d7ef Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Thu, 21 Jan 2016 09:48:46 +1100 Subject: [PATCH 31/87] Update controls.md --- controls.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/controls.md b/controls.md index 87671477..0a51f3f1 100644 --- a/controls.md +++ b/controls.md @@ -46,7 +46,7 @@ You can include only the controls you need when specifying custom html. This is an example `html` option with all controls. ```javascript -["
", +var controls = ["
", "
", "", "", @@ -107,4 +107,9 @@ This is an example `html` option with all controls. "", "", "
"].join("\n"); + +// Setup the player +plyr.setup('.js-player', { + html: controls, +}); ``` From fa5cb828c0effab0f7254c62d22133cec52b0116 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Thu, 21 Jan 2016 09:49:00 +1100 Subject: [PATCH 32/87] Update controls.md --- controls.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controls.md b/controls.md index 0a51f3f1..13082597 100644 --- a/controls.md +++ b/controls.md @@ -110,6 +110,6 @@ var controls = ["
", // Setup the player plyr.setup('.js-player', { - html: controls, + html: controls }); ``` From 173e651e3f4549b7a337e30854d1e4467940b489 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 23 Jan 2016 12:24:58 +1100 Subject: [PATCH 33/87] Comment --- src/js/plyr.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/plyr.js b/src/js/plyr.js index 0b5bab14..afa9b6b8 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -589,6 +589,7 @@ } // Toggle aria-pressed state on a toggle button + // http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles function _toggleState(target, state) { // Bail if no target if(!target) { From a965d8a893a6885848c5c4cceab9f96265c7fa21 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 24 Jan 2016 11:25:31 +1100 Subject: [PATCH 34/87] Seek tooltip, bug fixes for SASS, fullscreen and icons --- changelog.md | 6 + dist/plyr.css | 2 +- dist/plyr.js | 4 +- dist/sprite.svg | 2 +- docs/dist/docs.css | 2 +- docs/dist/docs.js | 2 +- docs/src/js/docs.js | 18 +-- docs/src/less/components/examples.less | 7 +- package.json | 2 +- readme.md | 21 ++-- src/js/plyr.js | 156 ++++++++++++++++++------- src/less/plyr.less | 15 ++- src/sass/plyr.scss | 22 +++- src/sprite/icon-captions-off.svg | 3 +- src/sprite/icon-captions-on.svg | 3 +- src/sprite/icon-enter-fullscreen.svg | 11 +- src/sprite/icon-exit-fullscreen.svg | 11 +- src/sprite/icon-fast-forward.svg | 1 - src/sprite/icon-muted.svg | 3 +- src/sprite/icon-pause.svg | 3 +- src/sprite/icon-play.svg | 1 - src/sprite/icon-restart.svg | 5 +- src/sprite/icon-rewind.svg | 3 +- src/sprite/icon-volume.svg | 1 - 24 files changed, 198 insertions(+), 106 deletions(-) diff --git a/changelog.md b/changelog.md index 1d9249ca..f0ca696e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## v1.5.6 +- Seek tooltip (option for tooltips changed, please check docs) +- SASS compile error fixes (fixes #148) +- Fullscreen fixes for controls not always hiding/showing (fixes #149) +- Screen reader icon fixes (title was being read twice due to the tooltip/hidden label) + ## v1.5.5 - Fixed controls.md example - Bug fix for docs error page diff --git a/dist/plyr.css b/dist/plyr.css index e3207d81..d69f3dfb 100644 --- a/dist/plyr.css +++ b/dist/plyr.css @@ -1 +1 @@ -.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(52,63,74,.1),0 0 0 1px rgba(52,63,74,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,30px) scale(.8);transform:translate(-50%,30px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(52,63,74,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip{opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file +.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{visibility:hidden;position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(52,63,74,.1),0 0 0 1px rgba(52,63,74,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(52,63,74,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip,.plyr__tooltip--visible{visibility:visible;opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr__progress .plyr__tooltip{left:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file diff --git a/dist/plyr.js b/dist/plyr.js index 91b9aa11..6a7e7e89 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,"","
",''];return o(N.controls,"restart")&&e.push('"),o(N.controls,"rewind")&&e.push('"),o(N.controls,"play")&&e.push('",'"),o(N.controls,"fast-forward")&&e.push('"),o(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),o(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),o(N.controls,"mute")&&e.push('"),o(N.controls,"volume")&&e.push('",''),o(N.controls,"captions")&&e.push('"),o(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function a(){var e,n,r,a=navigator.userAgent,s=navigator.appName,i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(s="IE",i="11;"):-1!==(n=a.indexOf("MSIE"))?(s="IE",i=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(s="Chrome",i=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(s="Safari",i=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(i=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(s="Firefox",i=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),i=a.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(r=i.indexOf(";"))&&(i=i.substring(0,r)),-1!==(r=i.indexOf(" "))&&(i=i.substring(0,r)),o=parseInt(""+i,10),isNaN(o)&&(i=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),{name:s,version:o,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function s(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 i(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 o(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,i=a.nextSibling;r.appendChild(a),i?s.insertBefore(r,i):s.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var a=t.createElement(e);f(a,r),d(n,a)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var a=t.split(" ");if(e instanceof NodeList)for(var s=0;sr;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(F){function S(e){if(!Ce.usingTextTracks&&"video"===Ce.type&&Ce.supported.full&&(Ce.subcount=0,e="number"==typeof e?e:Ce.media.currentTime,Ce.captions[Ce.subcount])){for(;O(Ce.captions[Ce.subcount][0])Ce.captions.length-1){Ce.subcount=Ce.captions.length-1;break}if(Ce.media.currentTime.toFixed(1)>=L(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=O(Ce.captions[Ce.subcount][0])){Ce.currentCaption=Ce.captions[Ce.subcount][1];var t=Ce.currentCaption.trim();Ce.captionsContainer.innerHTML!=t&&(Ce.captionsContainer.innerHTML="",Ce.captionsContainer.innerHTML=t)}else Ce.captionsContainer.innerHTML=""}}function M(){Ce.buttons.captions&&(b(Ce.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ce.container,N.classes.captions.active,!0),x(Ce.buttons.captions,!0)))}function L(e){var t=[];return t=e.split(" --> "),V(t[0])}function O(e){var t=[];return t=e.split(" --> "),V(t[1])}function V(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Ce.container.querySelectorAll(e)}function H(e){return q(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ce.container,"keydown",e)}function D(e,t){if("string"==typeof t)m(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ce.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==N.selectors.controls.container&&(a=N.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Ce.container),a.insertAdjacentHTML("beforeend",e),N.tooltips)for(var s=q(N.selectors.labels+" ."+N.classes.hidden),i=s.length-1;i>=0;i--){var o=s[i];b(o,N.classes.hidden,!1),b(o,N.classes.tooltip,!0)}}function Y(){try{return Ce.controls=H(N.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=H(N.selectors.buttons.seek),Ce.buttons.play=H(N.selectors.buttons.play),Ce.buttons.pause=H(N.selectors.buttons.pause),Ce.buttons.restart=H(N.selectors.buttons.restart),Ce.buttons.rewind=H(N.selectors.buttons.rewind),Ce.buttons.forward=H(N.selectors.buttons.forward),Ce.buttons.fullscreen=H(N.selectors.buttons.fullscreen),Ce.buttons.volume=H(N.selectors.buttons.volume),Ce.buttons.mute=H(N.selectors.buttons.mute),Ce.buttons.captions=H(N.selectors.buttons.captions),Ce.checkboxes=q('[type="checkbox"]'),Ce.progress={},Ce.progress.container=H(N.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=H(N.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=H(N.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.volume=H(N.selectors.buttons.volume),Ce.duration=H(N.selectors.duration),Ce.currentTime=H(N.selectors.currentTime),Ce.seekTime=q(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),$(!0),!1}}function W(){b(Ce.container,P.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function z(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function K(){if(!Ce.media)return r("No audio or video element found",!0),!1;if(Ce.supported.full&&(b(Ce.container,N.classes.type.replace("{0}",Ce.type),!0),b(Ce.container,N.classes.stopped,N.autoplay),b(Ce.container,N.classes.isIos,Ce.browser.ios),b(Ce.container,N.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ce.media,e),Ce.videoContainer=e}o(N.types.embed,Ce.type)?(U(),Ce.embedId=null):N.autoplay&&ee()}function U(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),s=q('[id^="'+Ce.type+'-"]'),o=s.length-1;o>=0;o--)p(s[o]);if(b(Ce.media,N.classes.videoWrapper,!0),b(Ce.media,N.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?J(r,n):(i(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){J(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||i(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),G.call(l))},50)}}function X(){Fe(),z(H("iframe"))}function J(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),T(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),T(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),T(Ce.media,"canplaythrough"))},200),X(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,T(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,T(Ce.media,"play"),T(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),T(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,T(Ce.media,"pause")}}}})}function G(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,X(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,T(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,be()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,T(Ce.media,"play"),T(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,T(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,T(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,T(Ce.media,"progress"),1===parseInt(e.percent)&&T(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,T(Ce.media,"ended")})})}function Q(){if("video"===Ce.type){H(N.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.captionsContainer=H(N.selectors.captions).querySelector("span"),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,a=0;a=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31||"Chrome"===Ce.browser.name&&Ce.browser.version>=43||"Safari"===Ce.browser.name&&Ce.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){r("TextTracks supported");for(var o=0;o=7){r("Safari 7+ detected; removing track from DOM"),s=Ce.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ce.media.duration&&(t=Ce.media.duration);try{Ce.media.currentTime=t.toFixed(1)}catch(a){}if(o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&te(),T(Ce.media,"timeupdate"),Ce.media.seeking=!0}r("Seeking to "+Ce.media.currentTime+" seconds"),S(t)}function ie(){b(Ce.container,N.classes.playing,!Ce.media.paused),b(Ce.container,N.classes.stopped,Ce.media.paused)}function oe(n){function r(){b(Ce.container,N.classes.hover,!0),e.clearTimeout(i),o||(i=e.setTimeout(function(){b(Ce.container,N.classes.hover,!1)},2e3))}function a(e){o="mouseenter"===e.type}var s=A.supportsFullScreen;n&&n.type===A.fullScreenEventName?Ce.isFullscreen=A.isFullScreen(Ce.container):s?(A.isFullScreen(Ce.container)?A.cancelFullScreen():A.requestFullScreen(Ce.container),Ce.isFullscreen=A.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(g(t,"keyup",le),t.body.style.overflow="hidden"):(h(t,"keyup",le),t.body.style.overflow="")),b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),x(Ce.buttons.fullscreen,Ce.isFullscreen);var i,o=!1;N.fullscreen.hideControls&&(b(Ce.controls,N.classes.hover,!1),w(Ce.controls,"mouseenter mouseleave",a,Ce.isFullscreen),w(Ce.container,"mousemove",r,Ce.isFullscreen)),T(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&oe()}function ue(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),x(Ce.buttons.mute,e),Ce.media.muted=e,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(N.volume/10))}T(Ce.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),N.volume=t,o(N.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}T(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ue()}function pe(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ce.container,N.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&x(Ce.buttons.mute,0===t)}function de(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(N.classes.captions.active)),Ce.captionsEnabled=e,x(Ce.buttons.captions,Ce.captionsEnabled),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),T(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Ce.loadingTimer),Ce.loadingTimer=setTimeout(function(){b(Ce.container,N.classes.loading,t)},t?250:0)}function me(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ce.media.currentTime,Ce.media.duration),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?_(e.end(0),Ce.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(Ce.media.duration/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function be(){if(Ce.supported.full){var e=Ce.media.duration||0;!Ce.duration&&N.displayDuration&&Ce.media.paused&&ye(e,Ce.currentTime),Ce.duration&&ye(e,Ce.duration)}}function ve(e){ye(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||me(e)}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(te(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&p(Ce.videoContainer),p(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var a=n.sources[0];"type"in a&&o(N.types.embed,a.type)&&(Ce.type=a.type)}switch(Ce.supported=I.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}d(Ce.container,Ce.media),o(N.types.html5,Ce.type)&&(N.crossorigin&&Ce.media.setAttribute("crossorigin",""),N.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),N.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,b(Ce.container,N.classes.fullscreen.active,Ce.isFullscreen),b(Ce.container,N.classes.captions.active,Ce.captionsEnabled),W(),N.autoplay=n.autoplay||N.autoplay,o(N.types.html5,Ce.type)&&D("source",n.sources),K(),o(N.types.html5,Ce.type)&&("tracks"in n&&D("track",n.tracks),Ce.media.load(),be(),Fe()),N.autoplay&&ee(),"title"in n&&(N.title=n.title,z())}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?ee():te();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ce.buttons){var r=Ce.buttons[n];b(r,N.classes.tabFocus,r===e)}}var a="IE"==Ce.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(H("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var s in Ce.buttons){var i=Ce.buttons[s];g(i,"blur",function(){b(i,"tab-focus",!1)})}k(Ce.buttons.play,"click",N.listeners.play,n),k(Ce.buttons.pause,"click",N.listeners.pause,n),k(Ce.buttons.restart,"click",N.listeners.restart,se),k(Ce.buttons.rewind,"click",N.listeners.rewind,re),k(Ce.buttons.forward,"click",N.listeners.forward,ae),k(Ce.buttons.seek,a,N.listeners.seek,se),k(Ce.volume,a,N.listeners.volume,function(){ce(Ce.volume.value)}),k(Ce.buttons.mute,"click",N.listeners.mute,ue),k(Ce.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ce.buttons.captions,"click",de)}function Te(){g(Ce.media,"timeupdate seeking",ve),g(Ce.media,"timeupdate",S),g(Ce.media,"durationchange loadedmetadata",be),g(Ce.media,"ended",function(){"video"===Ce.type&&(Ce.captionsContainer.innerHTML=""),ie()}),g(Ce.media,"progress playing",me),g(Ce.media,"volumechange",pe),g(Ce.media,"play pause",ie),g(Ce.media,"waiting canplay seeked",fe),"video"===Ce.type&&N.click&&g(Ce.videoContainer,"click",function(){Ce.media.paused?ee():Ce.media.ended?(se(),ee()):te()}),g(Ce.media,N.events.join(" "),function(e){T(Ce.container,e.type)})}function xe(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",y(N.selectors.container)),Ce.init=!1,p(H(N.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(p(H(N.selectors.captions)),c(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;A=C(),Ce.browser=a(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,N.crossorigin=null!==Ce.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ce.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=I.supported(Ce.type),W(),!Ce.supported.basic)return!1;if(r(Ce.browser.name+" "+Ce.browser.version),K(),o(N.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),z()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return r("No full support for this media type ("+Ce.type+")",!0),p(H(N.selectors.controls.wrapper)),void $(!0);var e=!q(N.selectors.controls.wrapper).length;e&&B(),Y()&&(e&&we(),Te(),$(),Z(),Q(),ce(),pe(),ve(),ie())}var Ce=this;return Ce.container=F,_e(),Ce.init?{media:Ce.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:ge,poster:ke,setVolume:ce,togglePlay:ne,toggleMute:ue,toggleCaptions:de,toggleFullscreen:oe,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return s(Ce,e)},destroy:xe,restore:_e}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:!1,displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,s=a(),i="IE"===s.name&&s.version<=9,o=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!i&&!o;break;case"audio":n=l,r=n&&!i;break;case"vimeo":case"youtube":n=!0,r=!i&&!o;break;default:n=l&&u,r=n&&!i}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=F(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var a=e.length-1;a>=0;a--){var s=e[a];if("undefined"==typeof s.plyr){var i=new S(s);s.plyr=Object.keys(i).length?i:!1,T(s,"setup",{plyr:s.plyr})}r.push(s.plyr)}return r}, -I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),ye(),Fe()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; +switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/dist/sprite.svg b/dist/sprite.svg index 26e438e1..1a255d82 100644 --- a/dist/sprite.svg +++ b/dist/sprite.svg @@ -1 +1 @@ -Captions OffCaptions OnEnter FullscreenExit FullscreenFast ForwardMutedPausePlayRewindVolume \ No newline at end of file + \ No newline at end of file diff --git a/docs/dist/docs.css b/docs/dist/docs.css index a6f5a858..9eecd4e3 100644 --- a/docs/dist/docs.css +++ b/docs/dist/docs.css @@ -1 +1 @@ -/*! normalize.css v2.1.3 | MIT License | git.io/normalize */a.logo,img,legend{border:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,small,summary{display:block}[hidden],template{display:none}body,figure,li,ul{margin:0}body,h1,h2{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}body,small{padding:0 10px}li,nav ul,ul{list-style:none;padding:0}legend,li,nav ul,ul{padding:0}.btn__bar,sub,sup{position:relative}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a{background:0 0;text-decoration:none;color:#3498db;border-bottom:1px dotted currentColor;transition:background .3s ease,color .3s ease,border .3s ease}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}.btn__bar,nav li{white-space:nowrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}.btn__bar::before,.btn__count::before{content:"";top:50%}sub{bottom:-.25em}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/fonts/avenir-medium.woff2) format("woff2"),url(//cdn.plyr.io/fonts/avenir-medium.woff) format("woff");font-style:normal;font-weight:400}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/fonts/avenir-bold.woff2) format("woff2"),url(//cdn.plyr.io/fonts/avenir-bold.woff) format("woff");font-style:normal;font-weight:600}h1,h2{letter-spacing:-.025em;color:#2E3C44;margin:0 0 10px;line-height:1.2}h1{font-size:64px;font-size:4rem;color:#3498DB}p,small{margin:0 0 20px}small{font-size:14px;font-size:.875rem}a:focus,a:hover{color:#343f4a;border-bottom-color:transparent}a:focus{outline:#343f4a dotted thin;outline-offset:1px}.color--vimeo{color:#19b7ed}.color--youtube{color:#cc181e}*,::after,::before{box-sizing:border-box}.btn__bar ul,nav li{display:inline-block}html{height:100%;font-size:100%;background:linear-gradient(#fff,#f2f5f7) fixed}body{font-family:Avenir,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5;text-align:center;color:#55646b}header{padding:20px;margin-bottom:20px}header p{font-size:18px;font-size:1.125rem}section{padding-bottom:20px}@media (min-width:480px){header{padding-top:60px;padding-bottom:60px}section{padding-bottom:40px}}.icon{fill:currentColor;width:18px;height:18px;vertical-align:-3px}a svg,button svg,label svg{pointer-events:none}.btn .icon,a .icon{margin-right:10px}.btn:not(.btn-large) .icon{width:16px;height:16px}nav ul{margin:0;font-size:0}nav li{margin-top:10px;font-size:16px;font-size:1rem}nav li+li{margin-left:20px}.btn__bar{margin:0 auto 20px;max-width:1200px}.btn__bar::before{position:absolute;left:0;right:0;height:1px;background:#dbe3e8}.btn__bar ul{position:relative;z-index:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn__bar li{margin:0}.btn__bar li:first-child .btn{border-radius:4px 0 0 4px}.btn__bar li:last-child .btn{border-radius:0 4px 4px 0}.btn__bar li+li .btn{margin-left:-1px}.btn__bar li.active .btn{position:relative;z-index:1}.btn__bar li.active .btn .icon{color:inherit}.btn__bar li.active+li .btn:hover{z-index:0}.btn__bar .btn{position:relative;display:block;border-radius:0}.btn__bar .btn:focus,.btn__bar .btn:hover{z-index:1}@media (min-width:560px){.btn__bar{margin-bottom:40px}}.btn,.btn__count{display:inline-block;vertical-align:middle;border-radius:4px;font-weight:600;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn{padding:10px 12px;background:linear-gradient(#f8fafb,#e9eef1);border:1px solid #cbd0d3;box-shadow:0 1px 1px rgba(0,0,0,.05);text-shadow:0 1px 1px #fff;color:#55646b;transition:background .1s ease,color .1s ease;font-size:14px;font-size:.875rem}.btn:focus,.btn:hover{border-color:#b5bcc0;color:#55646b;outline:0}.btn--large{padding:10px 20px;font-size:16px;font-size:1rem}.btn--primary,.btn__bar li.active .btn{background-image:linear-gradient(#3498db,#258cd1);background-color:#3498db;border-color:#217dbb;box-shadow:0 1px 1px rgba(0,0,0,.15);text-shadow:0 1px 1px rgba(0,0,0,.1);color:#fff}.btn--primary:focus,.btn--primary:hover{color:#fff;border-color:#196090}.btn--youtube .icon{color:#cc181e}.btn--vimeo .icon{color:#19b7ed}.btn--twitter .icon{color:#4BAAF4}.btn__count{position:relative;margin-left:10px;padding:10px 15px;background:#fff;border:1px solid #cbd0d3}.btn__count::before{position:absolute;display:block;width:8px;height:8px;left:1px;margin-top:-4px;background:inherit;border:inherit;border-width:1px 0 0 1px;-webkit-transform:rotate(-45deg) translate(-50%,-50%);transform:rotate(-45deg) translate(-50%,-50%)}.error body,html.error{height:100%}.error body{width:100%;display:table;table-layout:fixed}.error main{display:table-cell;width:100%;vertical-align:middle}section{margin:0 auto 20px;max-width:1200px}.plyr__video-embed,video{border-radius:4px;max-width:100%;vertical-align:middle}.plyr__video-embed{-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.plyr{margin:0 auto}.plyr__controls{border-radius:0 0 4px 4px}.plyr .plyr__video-embed,.plyr video{border-radius:4px 4px 0 0}.plyr--fullscreen,.plyr--fullscreen-active{max-width:none}.plyr--fullscreen .plyr-controls,.plyr--fullscreen iframe,.plyr--fullscreen video,.plyr--fullscreen-active .plyr-controls,.plyr--fullscreen-active iframe,.plyr--fullscreen-active video{border-radius:0}.plyr--fullscreen iframe,.plyr--fullscreen-active iframe{-webkit-mask-image:none}.plyr--audio{max-width:520px}.plyr--audio .plyr__controls{border-radius:4px}.plyr--audio .plyr__progress{border-radius:4px 4px 0 0;overflow:hidden}.plyr__cite{display:none;margin-top:20px}.plyr__cite .icon{margin-right:5px}.plyr--audio~ul .plyr__cite--audio,.plyr--video~ul .plyr__cite--video,.plyr--vimeo~ul .plyr__cite--vimeo,.plyr--youtube~ul .plyr__cite--youtube{display:block} \ No newline at end of file +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */a.logo,img,legend{border:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,small,summary{display:block}[hidden],template{display:none}body,figure,li,ul{margin:0}body,h1,h2{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}body,small{padding:0 10px}li,nav ul,ul{list-style:none;padding:0}legend,li,nav ul,ul{padding:0}.btn__bar,sub,sup{position:relative}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a{background:0 0;text-decoration:none;color:#3498db;border-bottom:1px dotted currentColor;transition:background .3s ease,color .3s ease,border .3s ease}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}.btn__bar,nav li{white-space:nowrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}.btn__bar::before,.btn__count::before{content:"";top:50%}sub{bottom:-.25em}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/fonts/avenir-medium.woff2) format("woff2"),url(//cdn.plyr.io/fonts/avenir-medium.woff) format("woff");font-style:normal;font-weight:400}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/fonts/avenir-bold.woff2) format("woff2"),url(//cdn.plyr.io/fonts/avenir-bold.woff) format("woff");font-style:normal;font-weight:600}h1,h2{letter-spacing:-.025em;color:#2E3C44;margin:0 0 10px;line-height:1.2}h1{font-size:64px;font-size:4rem;color:#3498DB}p,small{margin:0 0 20px}small{font-size:14px;font-size:.875rem}a:focus,a:hover{color:#343f4a;border-bottom-color:transparent}a:focus{outline:#343f4a dotted thin;outline-offset:1px}.color--vimeo{color:#19b7ed}.color--youtube{color:#cc181e}*,::after,::before{box-sizing:border-box}.btn__bar ul,nav li{display:inline-block}html{height:100%;font-size:100%;background:linear-gradient(#fff,#f2f5f7) fixed}body{font-family:Avenir,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5;text-align:center;color:#55646b}header{padding:20px;margin-bottom:20px}header p{font-size:18px;font-size:1.125rem}section{padding-bottom:20px}@media (min-width:480px){header{padding-top:60px;padding-bottom:60px}section{padding-bottom:40px}}.icon{fill:currentColor;width:18px;height:18px;vertical-align:-3px}a svg,button svg,label svg{pointer-events:none}.btn .icon,a .icon{margin-right:10px}.btn:not(.btn-large) .icon{width:16px;height:16px}nav ul{margin:0;font-size:0}nav li{margin-top:10px;font-size:16px;font-size:1rem}nav li+li{margin-left:20px}.btn__bar{margin:0 auto 20px;max-width:1200px}.btn__bar::before{position:absolute;left:0;right:0;height:1px;background:#dbe3e8}.btn__bar ul{position:relative;z-index:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn__bar li{margin:0}.btn__bar li:first-child .btn{border-radius:4px 0 0 4px}.btn__bar li:last-child .btn{border-radius:0 4px 4px 0}.btn__bar li+li .btn{margin-left:-1px}.btn__bar li.active .btn{position:relative;z-index:1}.btn__bar li.active .btn .icon{color:inherit}.btn__bar li.active+li .btn:hover{z-index:0}.btn__bar .btn{position:relative;display:block;border-radius:0}.btn__bar .btn:focus,.btn__bar .btn:hover{z-index:1}@media (min-width:560px){.btn__bar{margin-bottom:40px}}.btn,.btn__count{display:inline-block;vertical-align:middle;border-radius:4px;font-weight:600;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn{padding:10px 12px;background:linear-gradient(#f8fafb,#e9eef1);border:1px solid #cbd0d3;box-shadow:0 1px 1px rgba(0,0,0,.05);text-shadow:0 1px 1px #fff;color:#55646b;transition:background .1s ease,color .1s ease;font-size:14px;font-size:.875rem}.btn:focus,.btn:hover{border-color:#b5bcc0;color:#55646b;outline:0}.btn--large{padding:10px 20px;font-size:16px;font-size:1rem}.btn--primary,.btn__bar li.active .btn{background-image:linear-gradient(#3498db,#258cd1);background-color:#3498db;border-color:#217dbb;box-shadow:0 1px 1px rgba(0,0,0,.15);text-shadow:0 1px 1px rgba(0,0,0,.1);color:#fff}.btn--primary:focus,.btn--primary:hover{color:#fff;border-color:#196090}.btn--youtube .icon{color:#cc181e}.btn--vimeo .icon{color:#19b7ed}.btn--twitter .icon{color:#4BAAF4}.btn__count{position:relative;margin-left:10px;padding:10px 15px;background:#fff;border:1px solid #cbd0d3}.btn__count::before{position:absolute;display:block;width:8px;height:8px;left:1px;margin-top:-4px;background:inherit;border:inherit;border-width:1px 0 0 1px;-webkit-transform:rotate(-45deg) translate(-50%,-50%);transform:rotate(-45deg) translate(-50%,-50%)}.error body,html.error{height:100%}.error body{width:100%;display:table;table-layout:fixed}.error main{display:table-cell;width:100%;vertical-align:middle}section{margin:0 auto 20px;max-width:1200px}.plyr__video-embed,video{border-radius:4px;max-width:100%;vertical-align:middle}.plyr__video-embed{-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.plyr{margin:0 auto}.plyr__controls{border-radius:0 0 4px 4px}.plyr .plyr__video-embed,.plyr video{border-radius:4px 4px 0 0}.plyr--fullscreen,.plyr--fullscreen-active{max-width:none}.plyr--fullscreen .plyr-controls,.plyr--fullscreen iframe,.plyr--fullscreen video,.plyr--fullscreen-active .plyr-controls,.plyr--fullscreen-active iframe,.plyr--fullscreen-active video{border-radius:0}.plyr--fullscreen iframe,.plyr--fullscreen-active iframe{-webkit-mask-image:none}.plyr--audio{max-width:520px}.plyr--audio .plyr__controls{border-radius:4px}.plyr--audio .plyr__progress{border-radius:4px 4px 0 0}.plyr--audio .plyr__progress [type=range],.plyr--audio .plyr__progress progress{border-radius:4px 4px 0 0;overflow:hidden}.plyr__cite{display:none;margin-top:20px}.plyr__cite .icon{margin-right:5px}.plyr--audio~ul .plyr__cite--audio,.plyr--video~ul .plyr__cite--video,.plyr--vimeo~ul .plyr__cite--vimeo,.plyr--youtube~ul .plyr__cite--youtube{display:block} \ No newline at end of file diff --git a/docs/dist/docs.js b/docs/dist/docs.js index b06252cb..04574c1c 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,s=arguments.length;for(i=0;s>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",s=e.Element[i],n=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,n=i.length;n>s;s++)this.push(i[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,s=t.length,n=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),n=!0);while(++i=0;r--)e(i[r].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),s={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},n=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!n.length;a&&(n=s.video),n in s&&history.replaceState({type:n},"",a?"":"#"+n),a||t(n)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,n,o,r){e.GoogleAnalyticsObject=n,e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},e[n].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=s,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,n=arguments.length;for(i=0;n>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",n=e.Element[i],s=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],n=0,s=i.length;s>n;n++)this.push(i[n]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,n=t.length,s=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),s=!0);while(++i=0;a--)e(i[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}for(var i=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},s=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!s.length;a&&(s=n.video),s in n&&history.replaceState({type:s},"",a?"":"#"+s),a||t(s,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,n,s,o,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=n,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/src/js/docs.js b/docs/src/js/docs.js index 9828654e..563d2ebe 100644 --- a/docs/src/js/docs.js +++ b/docs/src/js/docs.js @@ -6,11 +6,13 @@ // Setup the player plyr.setup('.js-media-player', { - debug: true, - title: 'Video demo', - tooltips: true, + debug: true, + title: 'Video demo', + tooltips: { + controls: true + }, captions: { - defaultActive: true + defaultActive: true } }); @@ -63,7 +65,7 @@ shr.setup({ history.replaceState({ 'type': currentType }, '', (video ? '' : '#' + currentType)); } if(!video) { - newSource(currentType); + newSource(currentType, true); } } @@ -81,10 +83,10 @@ shr.setup({ } // Set a new source - function newSource(type) { - + function newSource(type, init) { // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video - if(!(type in types) || type == currentType || (!currentType.length && type == types.video)) { + if(!(type in types) || (!init && type == currentType) || (!currentType.length && type == types.video)) { + console.warn('Unregonized type.'); return; } diff --git a/docs/src/less/components/examples.less b/docs/src/less/components/examples.less index 61d8d3bc..174a294a 100644 --- a/docs/src/less/components/examples.less +++ b/docs/src/less/components/examples.less @@ -50,7 +50,12 @@ video, } .plyr__progress { border-radius: @border-radius-base @border-radius-base 0 0; - overflow: hidden; + + progress, + [type='range'] { + border-radius: @border-radius-base @border-radius-base 0 0; + overflow: hidden; + } } } diff --git a/package.json b/package.json index 425c975b..6279f579 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.5", + "version": "1.5.6", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index 32d780b2..0b8e592e 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.5/plyr.js` to `https://cdn.plyr.io/1.5.5/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.6/plyr.js` to `https://cdn.plyr.io/1.5.6/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.5/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.6/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -148,7 +148,6 @@ For YouTube and Vimeo, Plyr uses the standard YouTube API markup (an empty `
``` - #### Cross Origin (CORS) You'll notice the `crossorigin` attribute on the example `
', - '']; + '']; + + // Seek tooltip + if (config.tooltips.seek) { + html.push('0:00'); + } + + // Close progress + html.push('
', + ''); // Restart button if (_inArray(config.controls, 'restart')) { @@ -736,7 +746,8 @@ // Player instance function Plyr(container) { var plyr = this; - plyr.container = container; + plyr.container = container, + plyr.timers = {}; // Captions functions // Seek the manual caption time and update UI @@ -979,6 +990,9 @@ plyr.progress.played.bar = _getElement(config.selectors.progress.played); plyr.progress.played.text = plyr.progress.played.bar && plyr.progress.played.bar.getElementsByTagName('span')[0]; + // Seek tooltip + plyr.progress.tooltip = plyr.progress.container && plyr.progress.container.querySelector('.' + config.classes.tooltip); + // Volume plyr.volume = _getElement(config.selectors.buttons.volume); @@ -1749,39 +1763,10 @@ // Set button state _toggleState(plyr.buttons.fullscreen, plyr.isFullscreen); - // Toggle controls visibility based on mouse movement and location - var hoverTimer, isMouseOver = false; - - // Show the player controls - function _showControls() { - // Set shown class - _toggleClass(plyr.container, config.classes.hover, true); - - // Clear timer every movement - window.clearTimeout(hoverTimer); - - // If the mouse is not over the controls, set a timeout to hide them - if (!isMouseOver) { - hoverTimer = window.setTimeout(function() { - _toggleClass(plyr.container, config.classes.hover, false); - }, 2000); - } - } - - // Check mouse is over the controls - function _setMouseOver (event) { - isMouseOver = (event.type === 'mouseenter'); - } - + // Hide on entering full screen if (config.fullscreen.hideControls) { - // Hide on entering full screen - _toggleClass(plyr.controls, config.classes.hover, false); - - // Keep an eye on the mouse location in relation to controls - _toggleListener(plyr.controls, 'mouseenter mouseleave', _setMouseOver, plyr.isFullscreen); - - // Show the controls on mouse move - _toggleListener(plyr.container, 'mousemove', _showControls, plyr.isFullscreen); + //_toggleClass(plyr.controls, config.classes.hover, false); + _showControls(true); } // Trigger an event @@ -1931,10 +1916,10 @@ var loading = (event.type === 'waiting'); // Clear timer - clearTimeout(plyr.loadingTimer); + clearTimeout(plyr.timers.loading); // Timer to prevent flicker when seeking - plyr.loadingTimer = setTimeout(function() { + plyr.timers.loading = setTimeout(function() { _toggleClass(plyr.container, config.classes.loading, loading); }, (loading ? 250 : 0)); } @@ -2041,6 +2026,9 @@ if (plyr.duration) { _updateTimeDisplay(duration, plyr.duration); } + + // Update the tooltip (if visible) + _updateSeekTooltip(); } // Handle time change event @@ -2057,6 +2045,73 @@ _updateProgress(event); } + // Update hover tooltip for seeking + function _updateSeekTooltip(event) { + // Bail if setting not true + if (!config.tooltips.seek) { + return; + } + + // Calculate percentage + var clientRect = plyr.progress.container.getBoundingClientRect(), + percent = 0, + visible = config.classes.tooltip + '--visible'; + + // Determine percentage, if already visible + if (!event) { + if(_hasClass(plyr.progress.tooltip, visible)) { + percent = plyr.progress.tooltip.style.left.replace('%', ''); + } + else { + return; + } + } + else { + percent = ((100 / clientRect.width) * (event.pageX - clientRect.left)); + } + + // Set bounds + if (percent < 0) { + percent = 0; + } + else if (percent > 100) { + percent = 100; + } + + // Display the time a click would seek to + _updateTimeDisplay(((plyr.media.duration / 100) * percent), plyr.progress.tooltip); + + // Set position + plyr.progress.tooltip.style.left = percent + "%"; + + // Show/hide the tooltip + // If the event is a moues in/out and percentage is inside bounds + if(_inArray(['mouseenter', 'mouseleave'], event.type)) { + _toggleClass(plyr.progress.tooltip, visible, (event.type === 'mouseenter')); + } + } + + // Show the player controls in fullscreen mode + function _showControls(force) { + // We're only worried about fullscreen + if (!plyr.isFullscreen) { + return; + } + + // Set shown class + _toggleClass(plyr.container, config.classes.hover, true); + + // Clear timer every movement + window.clearTimeout(plyr.timers.hover); + + // If the mouse is not over the controls, set a timeout to hide them + plyr.timers.hover = window.setTimeout(function() { + if (!plyr.controls.mouseover || (force === true)) { + _toggleClass(plyr.container, config.classes.hover, false); + } + }, 2000); + } + // Add common function to retrieve media source function _source(source) { // If not null or undefined, parse it @@ -2327,6 +2382,19 @@ // Captions _on(plyr.buttons.captions, 'click', _toggleCaptions); + + // Seek tooltip + _on(plyr.progress.container, 'mouseenter mouseleave mousemove', _updateSeekTooltip); + + // Toggle controls visibility based on mouse movement and location + var hoverTimer, isMouseOver = false; + + if (config.fullscreen.hideControls) { + // Keep an eye on the mouse location in relation to controls + _on(plyr.controls, 'mouseenter mouseleave', function() { + plyr.controls.mouseover = (event.type === 'mouseenter'); + }); + } } // Listen for media events @@ -2364,8 +2432,8 @@ _on(plyr.media, 'waiting canplay seeked', _checkLoading); // Click video - if (plyr.type === 'video' && config.click) { - _on(plyr.videoContainer, 'click', function() { + if (config.click) { + _on(plyr.media, 'click', function() { if (plyr.media.paused) { _play(); } @@ -2379,6 +2447,12 @@ }); } + // Listen for mouse move to show controls + if (config.fullscreen.hideControls) { + // Show the controls on mouse move + _on(plyr.media, 'mousemove', _showControls); + } + // Proxy events to container _on(plyr.media, config.events.join(' '), function(event) { _triggerEvent(plyr.container, event.type); diff --git a/src/less/plyr.less b/src/less/plyr.less index c3240242..8a8364e7 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -178,6 +178,7 @@ height: 100%; border: 0; user-select: none; + pointer-events: none; // To allow mouse events to be captured } // Vimeo hack @@ -322,6 +323,7 @@ // Tooltips &__tooltip { + visibility: hidden; position: absolute; z-index: 2; bottom: 100%; @@ -337,9 +339,9 @@ line-height: 1.5; font-weight: 600; - transform: translate(-50%, (@plyr-tooltip-padding * 3)) scale(.8); + transform: translate(-50%, 10px) scale(.8); transform-origin: 50% 100%; - transition: transform .2s .1s ease, opacity .2s .1s ease; + transition: transform .2s .1s ease, opacity .2s .1s ease, visibility .3s ease; // Arrows &::after, @@ -371,7 +373,9 @@ } } button:hover .plyr__tooltip, - button.tab-focus:focus .plyr__tooltip { + button.tab-focus:focus .plyr__tooltip, + &__tooltip--visible { + visibility: visible; opacity: 1; transform: translate(-50%, 0) scale(1); } @@ -484,6 +488,11 @@ border: 0; } } + + // Seek tooltip to show time + .plyr__tooltip { + left: 0; + } } // Loading state diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index a94aeaf5..36c157e4 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -46,7 +46,7 @@ $plyr-control-color-hover: null !default; // Tooltips $plyr-tooltip-bg: $plyr-controls-bg !default; -$plyr-tooltip-border-color: transparentize(@gray-dark, .1) !default; +$plyr-tooltip-border-color: transparentize($plyr-gray-dark, .1) !default; $plyr-tooltip-border-width: 1px; $plyr-tooltip-shadow: 0 0 5px $plyr-tooltip-border-color, 0 0 0 $plyr-tooltip-border-width $plyr-tooltip-border-color; $plyr-tooltip-color: $plyr-control-color !default; @@ -59,7 +59,7 @@ $plyr-progress-bg: transparentize($plyr-gray, .2) !default; $plyr-progress-playing-bg: $plyr-blue !default; $plyr-progress-buffered-bg: transparentize($plyr-gray, .25) !default; $plyr-progress-loading-size: 40px !default; -$plyr-progress-loading-bg: transparentize(#000, .15); !default; +$plyr-progress-loading-bg: transparentize(#000, .15) !default; // Volume $plyr-volume-track-height: 6px !default; @@ -178,6 +178,8 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la width: 100%; height: 100%; border: 0; + user-select: none; + pointer-events: none; // To allow mouse events to be captured } // Vimeo hack @@ -322,6 +324,7 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la // Tooltips &__tooltip { + visibility: hidden; position: absolute; z-index: 2; bottom: 100%; @@ -337,9 +340,9 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la line-height: 1.5; font-weight: 600; - transform: translate(-50%, ($plyr-tooltip-padding * 3)) scale(.8); + transform: translate(-50%, 10px) scale(.8); transform-origin: 50% 100%; - transition: transform .2s .1s ease, opacity .2s .1s ease; + transition: transform .2s .1s ease, opacity .2s .1s ease, visibility .3s ease; // Arrows &::after, @@ -371,7 +374,9 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la } } button:hover .plyr__tooltip, - button.tab-focus:focus .plyr__tooltip { + button.tab-focus:focus .plyr__tooltip, + &__tooltip--visible { + visibility: visible; opacity: 1; transform: translate(-50%, 0) scale(1); } @@ -387,7 +392,7 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la // Playback progress // element - &-progress { + &__progress { position: absolute; bottom: 100%; left: 0; @@ -484,6 +489,11 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la border: 0; } } + + // Seek tooltip to show time + .plyr__tooltip { + left: 0; + } } // Loading state diff --git a/src/sprite/icon-captions-off.svg b/src/sprite/icon-captions-off.svg index d9c2c444..788e4de4 100644 --- a/src/sprite/icon-captions-off.svg +++ b/src/sprite/icon-captions-off.svg @@ -1,7 +1,6 @@ - Captions Off - \ No newline at end of file + diff --git a/src/sprite/icon-captions-on.svg b/src/sprite/icon-captions-on.svg index 9053a31c..c02dfcb1 100644 --- a/src/sprite/icon-captions-on.svg +++ b/src/sprite/icon-captions-on.svg @@ -1,10 +1,9 @@ - Captions On - \ No newline at end of file + diff --git a/src/sprite/icon-enter-fullscreen.svg b/src/sprite/icon-enter-fullscreen.svg index 200e44e0..e8d1ab1a 100644 --- a/src/sprite/icon-enter-fullscreen.svg +++ b/src/sprite/icon-enter-fullscreen.svg @@ -1,10 +1,7 @@ - Enter Fullscreen - - - - - + + + - \ No newline at end of file + diff --git a/src/sprite/icon-exit-fullscreen.svg b/src/sprite/icon-exit-fullscreen.svg index 3c6f31e7..0fdd6b45 100644 --- a/src/sprite/icon-exit-fullscreen.svg +++ b/src/sprite/icon-exit-fullscreen.svg @@ -1,10 +1,7 @@ - Exit Fullscreen - - - - - + + + - \ No newline at end of file + diff --git a/src/sprite/icon-fast-forward.svg b/src/sprite/icon-fast-forward.svg index 71d5d138..1cc67199 100755 --- a/src/sprite/icon-fast-forward.svg +++ b/src/sprite/icon-fast-forward.svg @@ -1,5 +1,4 @@ - Fast Forward diff --git a/src/sprite/icon-muted.svg b/src/sprite/icon-muted.svg index 6d017d02..8a0014f1 100644 --- a/src/sprite/icon-muted.svg +++ b/src/sprite/icon-muted.svg @@ -1,9 +1,8 @@ - Muted - \ No newline at end of file + diff --git a/src/sprite/icon-pause.svg b/src/sprite/icon-pause.svg index b4ba82e2..7fb41105 100644 --- a/src/sprite/icon-pause.svg +++ b/src/sprite/icon-pause.svg @@ -1,8 +1,7 @@ - Pause - \ No newline at end of file + diff --git a/src/sprite/icon-play.svg b/src/sprite/icon-play.svg index f564b80f..056b9f79 100755 --- a/src/sprite/icon-play.svg +++ b/src/sprite/icon-play.svg @@ -1,5 +1,4 @@ - Play diff --git a/src/sprite/icon-restart.svg b/src/sprite/icon-restart.svg index 6cf89d8d..2a889021 100755 --- a/src/sprite/icon-restart.svg +++ b/src/sprite/icon-restart.svg @@ -1,8 +1,5 @@ - - - + diff --git a/src/sprite/icon-rewind.svg b/src/sprite/icon-rewind.svg index b7beaa34..661df0fd 100644 --- a/src/sprite/icon-rewind.svg +++ b/src/sprite/icon-rewind.svg @@ -1,5 +1,4 @@ - Rewind - \ No newline at end of file + diff --git a/src/sprite/icon-volume.svg b/src/sprite/icon-volume.svg index 27d6d809..9de20690 100755 --- a/src/sprite/icon-volume.svg +++ b/src/sprite/icon-volume.svg @@ -1,6 +1,5 @@ - Volume From 3127cea1b238bcb20d316943ee81448c45c4cc9a Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 25 Jan 2016 08:36:53 +1100 Subject: [PATCH 35/87] SASS fix (fixes #149) --- src/sass/plyr.scss | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index 36c157e4..fd905af0 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -637,33 +637,33 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la left: 0; right: 0; } + } - // Hide controls when playing in full screen - &--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing, - &.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing { - .plyr__controls { - transform: translateY(100%) translateY($plyr-control-spacing / 2); - transition: transform .3s .2s ease; - } - .plyr__captions { - bottom: ($plyr-control-spacing / 2); - transition: bottom .3s .2s ease; - } - &.plyr--hover .plyr__controls { - transform: translateY(0); - } + // Hide controls when playing in full screen + &--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing, + &.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing { + .plyr__controls { + transform: translateY(100%) translateY($plyr-control-spacing / 2); + transition: transform .3s .2s ease; } + .plyr__captions { + bottom: ($plyr-control-spacing / 2); + transition: bottom .3s .2s ease; + } + &.plyr--hover .plyr__controls { + transform: translateY(0); + } + } - // Captions - &.plyr--fullscreen .plyr__captions, - &--fullscreen-active .plyr__captions, - &--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions { - top: auto; - bottom: 90px; + // Captions + &.plyr--fullscreen .plyr__captions, + &--fullscreen-active .plyr__captions, + &--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions { + top: auto; + bottom: 90px; - @media (min-width: $plyr-bp-control-split) { - bottom: 60px; - } + @media (min-width: $plyr-bp-control-split) { + bottom: 60px; } } From b006b73c698a6a681e3f634ad755de1d24ccc0f5 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 25 Jan 2016 11:02:35 +1100 Subject: [PATCH 36/87] Fix for control tooltips always showing --- changelog.md | 3 +++ controls.md | 2 +- dist/plyr.css | 2 +- dist/plyr.js | 2 +- package.json | 2 +- readme.md | 10 +++++----- src/js/plyr.js | 4 ++-- src/less/plyr.less | 2 +- 8 files changed, 15 insertions(+), 12 deletions(-) diff --git a/changelog.md b/changelog.md index f0ca696e..6d8e9e54 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## v1.5.7 +- Fix for control tooltips always showing + ## v1.5.6 - Seek tooltip (option for tooltips changed, please check docs) - SASS compile error fixes (fixes #148) diff --git a/controls.md b/controls.md index 13082597..196a77fb 100644 --- a/controls.md +++ b/controls.md @@ -49,7 +49,7 @@ This is an example `html` option with all controls. var controls = ["
", "
", "", - "", + "", "", "0% played", "", diff --git a/dist/plyr.css b/dist/plyr.css index d69f3dfb..26292edb 100644 --- a/dist/plyr.css +++ b/dist/plyr.css @@ -1 +1 @@ -.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{visibility:hidden;position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(52,63,74,.1),0 0 0 1px rgba(52,63,74,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(52,63,74,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip,.plyr__tooltip--visible{visibility:visible;opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr__progress .plyr__tooltip{left:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file +.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{visibility:hidden;position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(242,242,242,.1),0 0 0 1px rgba(242,242,242,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(242,242,242,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip,.plyr__tooltip--visible{visibility:visible;opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr__progress .plyr__tooltip{left:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file diff --git a/dist/plyr.js b/dist/plyr.js index 6a7e7e89..6ed70616 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),ye(),Fe()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),ye(),Fe()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/package.json b/package.json index 6279f579..2f70a14e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.6", + "version": "1.5.7", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index 0b8e592e..0f84960f 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.6/plyr.js` to `https://cdn.plyr.io/1.5.6/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.7/plyr.js` to `https://cdn.plyr.io/1.5.7/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.6/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.7/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -161,7 +161,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 8204ada6..0749b716 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -162,7 +162,7 @@ '
', '
', '', - '', + '', '', '0% ' + config.i18n.played, '', @@ -943,7 +943,7 @@ container.insertAdjacentHTML('beforeend', html); // Setup tooltips - if (config.tooltips) { + if (config.tooltips.controls) { var labels = _getElements(config.selectors.labels + ' .' + config.classes.hidden); for (var i = labels.length - 1; i >= 0; i--) { diff --git a/src/less/plyr.less b/src/less/plyr.less index 8a8364e7..65918665 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -32,7 +32,7 @@ // Tooltips @plyr-tooltip-bg: @plyr-controls-bg; -@plyr-tooltip-border-color: fade(@plyr-gray-dark, 10%); +@plyr-tooltip-border-color: fade(darken(@plyr-controls-bg, 5%), 10%); @plyr-tooltip-border-width: 1px; @plyr-tooltip-shadow: 0 0 5px @plyr-tooltip-border-color, 0 0 0 @plyr-tooltip-border-width @plyr-tooltip-border-color; @plyr-tooltip-color: @plyr-control-color; From a327056789603a025ecd5ec546e65914cd7c5bba Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 25 Jan 2016 11:25:32 +1100 Subject: [PATCH 37/87] Seek fixes for touch --- changelog.md | 4 ++++ dist/plyr.css | 2 +- dist/plyr.js | 2 +- package.json | 2 +- readme.md | 10 +++++----- src/js/plyr.js | 8 ++++---- src/less/plyr.less | 20 +++++++++++++++++++- src/sass/plyr.scss | 20 +++++++++++++++++++- 8 files changed, 54 insertions(+), 14 deletions(-) diff --git a/changelog.md b/changelog.md index 6d8e9e54..fed5972c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # Changelog +## v1.5.8 +- Fix for touch device seek tooltip +- Seek improvements + ## v1.5.7 - Fix for control tooltips always showing diff --git a/dist/plyr.css b/dist/plyr.css index 26292edb..c4bca59b 100644 --- a/dist/plyr.css +++ b/dist/plyr.css @@ -1 +1 @@ -.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{visibility:hidden;position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(242,242,242,.1),0 0 0 1px rgba(242,242,242,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(242,242,242,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip,.plyr__tooltip--visible{visibility:visible;opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:40px;height:10px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:40px;height:10px;transform:translateX(-50%)}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr__progress .plyr__tooltip{left:0}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file +.plyr__captions,.plyr__controls{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-align:center}@-webkit-keyframes plyr-progress{to{background-position:40px 0}}@keyframes plyr-progress{to{background-position:40px 0}}.plyr{position:relative;max-width:100%;min-width:290px}.plyr,.plyr *,.plyr ::after,.plyr ::before{box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr__sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);padding:0!important;border:0!important;height:1px!important;width:1px!important;overflow:hidden}.plyr__video-wrapper{position:relative}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle}.plyr__video-embed{padding-bottom:56.25%;height:0;overflow:hidden;background:#000}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:20px 20px 30px;color:#fff;font-size:20px}.plyr__captions span{border-radius:2px;padding:3px 10px;background:rgba(0,0,0,.9)}.plyr__captions span:empty{display:none}@media (min-width:768px){.plyr__captions{font-size:24px}}.plyr--captions-active .plyr__captions{display:block}.plyr--fullscreen-active .plyr__captions{font-size:32px}.plyr__controls{position:relative;padding:10px;background:#fff;line-height:1;box-shadow:0 1px 1px rgba(52,63,74,.2)}.plyr__controls::after{content:'';display:table;clear:both}.plyr__controls--right{display:block;margin:10px auto 0}@media (min-width:560px){.plyr__controls--left{float:left}.plyr__controls--right{float:right;margin-top:0}}.plyr__controls button{display:inline-block;vertical-align:middle;margin:0 2px;padding:5px 10px;overflow:hidden;border:0;background:0 0;border-radius:3px;cursor:pointer;color:#6B7D86;transition:background .3s ease,color .3s ease,opacity .3s ease}.plyr__controls button svg{width:18px;height:18px;display:block;fill:currentColor;transition:fill .3s ease}.plyr__controls button.tab-focus:focus,.plyr__controls button:hover{background:#3498DB;color:#fff}.plyr__controls .plyr__time,.plyr__tooltip{color:#6B7D86;font-size:14px;font-weight:600}.plyr__controls button:focus{outline:0}.plyr__controls .icon--captions-on,.plyr__controls .icon--exit-fullscreen,.plyr__controls .icon--muted{display:none}.plyr__controls .plyr__time{display:inline-block;vertical-align:middle;margin-left:10px}.plyr__controls .plyr__time+.plyr__time{display:none}@media (min-width:560px){.plyr__controls .plyr__time+.plyr__time{display:inline-block}}.plyr__controls .plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr__tooltip{visibility:hidden;position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:10px 15px;opacity:0;background:#fff;box-shadow:0 0 5px rgba(242,242,242,.1),0 0 0 1px rgba(242,242,242,.1);border-radius:3px;line-height:1.5;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;transition:opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,visibility .3s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::after,.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr__tooltip::after{bottom:-8px;border-right:7px solid transparent;border-top:7px solid rgba(242,242,242,.1);border-left:7px solid transparent;z-index:1}.plyr__tooltip::before{bottom:-6px;border-right:6px solid transparent;border-top:6px solid #fff;border-left:6px solid transparent;z-index:2}.plyr button.tab-focus:focus .plyr__tooltip,.plyr button:hover .plyr__tooltip,.plyr__tooltip--visible{visibility:visible;opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr button:hover .plyr__tooltip{z-index:3}.plyr input[type=range].tab-focus:focus{outline:rgba(52,63,74,.8) dotted 1px;outline-offset:3px}.plyr__progress--seek[type=range]:focus,.plyr__volume[type=range]:focus{outline:0}.plyr__progress{position:absolute;bottom:100%;left:0;right:0;width:100%;height:10px;background:rgba(86,93,100,.2)}.plyr__progress--buffer[value],.plyr__progress--played[value],.plyr__progress--seek[type=range]{position:absolute;left:0;top:0;width:100%;height:10px;margin:0;padding:0;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;border:none;background:0 0}.plyr__progress--buffer[value]::-webkit-progress-bar,.plyr__progress--played[value]::-webkit-progress-bar{background:0 0;transition:width .2s ease}.plyr__progress--buffer[value]::-webkit-progress-value,.plyr__progress--played[value]::-webkit-progress-value{background:currentColor;transition:width .2s ease}.plyr__progress--buffer[value]::-moz-progress-bar,.plyr__progress--played[value]::-moz-progress-bar{background:currentColor;transition:width .2s ease}.plyr__progress--played[value]{z-index:2;color:#3498DB}.plyr__progress--buffer[value]{color:rgba(86,93,100,.25)}.plyr__progress--seek[type=range]{z-index:4;cursor:pointer;outline:0}.plyr__progress--seek[type=range]::-webkit-slider-runnable-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:0 0;border:0;width:1px;height:10px}.plyr__progress--seek[type=range]::-moz-range-track{background:0 0;border:0}.plyr__progress--seek[type=range]::-moz-range-thumb{-moz-appearance:none;background:0 0;border:0;width:1px;height:10px}.plyr__progress--seek[type=range]::-ms-track{color:transparent;background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-fill-lower,.plyr__progress--seek[type=range]::-ms-fill-upper{background:0 0;border:0}.plyr__progress--seek[type=range]::-ms-thumb{background:0 0;border:0;width:1px;height:10px}.plyr__progress--seek[type=range]::-moz-focus-outer{border:0}.plyr__progress .plyr__tooltip{left:0}.plyr--is-touch .plyr--seek[type=range]::-webkit-slider-thumb{width:40px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.plyr--is-touch .plyr--seek[type=range]::-moz-range-thumb{width:40px;transform:translateX(-50%)}.plyr--is-touch .plyr--seek[type=range]::-ms-thumb{width:40px;transform:translateX(-50%)}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:40px 40px;background-repeat:repeat-x;background-color:rgba(86,93,100,.25);background-image:linear-gradient(-45deg,rgba(0,0,0,.15) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.15) 50%,rgba(0,0,0,.15) 75%,transparent 75%,transparent);color:transparent}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr__volume[type=range]{display:inline-block;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;width:100px;margin:0 10px 0 0;padding:0;cursor:pointer;background:0 0;border:none}.plyr__volume[type=range]::-webkit-slider-runnable-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-3px;height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-moz-range-track{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-moz-range-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]::-ms-track{height:6px;background:0 0;border-color:transparent;border-width:3px 0;color:transparent}.plyr__volume[type=range]::-ms-fill-lower,.plyr__volume[type=range]::-ms-fill-upper{height:6px;background:#e6e6e6;border:0;border-radius:3px}.plyr__volume[type=range]::-ms-thumb{height:12px;width:12px;background:#6B7D86;border:0;border-radius:100%;transition:background .3s ease;cursor:ew-resize}.plyr__volume[type=range]:focus::-webkit-slider-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-moz-range-thumb{background:#3498DB}.plyr__volume[type=range]:focus::-ms-thumb{background:#3498DB}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute],.plyr--is-ios.plyr--audio .plyr__controls--right{display:none}.plyr--is-ios.plyr--audio .plyr__controls--left{float:none}.plyr--audio .plyr__controls{padding-top:20px}.plyr--audio .plyr__progress{bottom:auto;top:0;background:#D6DADD}.plyr--fullscreen-active,.plyr.plyr--fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;width:100%;z-index:10000000;background:#000}.plyr--fullscreen-active video,.plyr.plyr--fullscreen video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper,.plyr.plyr--fullscreen .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__controls,.plyr.plyr--fullscreen .plyr__controls{position:absolute;bottom:0;left:0;right:0}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__controls{-webkit-transform:translateY(100%) translateY(5px);transform:translateY(100%) translateY(5px);transition:-webkit-transform .3s .2s ease;transition:transform .3s .2s ease;transition:transform .3s .2s ease,-webkit-transform .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing .plyr__captions{bottom:5px;transition:bottom .3s .2s ease}.plyr--fullscreen-active.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls,.plyr.plyr--fullscreen.plyr--fullscreen--hide-controls.plyr--playing.plyr--hover .plyr__controls{-webkit-transform:translateY(0);transform:translateY(0)}.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{top:auto;bottom:90px}@media (min-width:560px){.plyr--fullscreen--hide-controls.plyr--fullscreen-active.plyr--playing.plyr--hover .plyr__captions,.plyr--fullscreen-active .plyr__captions,.plyr.plyr--fullscreen .plyr__captions{bottom:60px}}.plyr--captions-active .plyr__controls .icon--captions-on,.plyr--fullscreen-active .icon--exit-fullscreen,.plyr--muted .plyr__controls .icon--muted{display:block}.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr--captions-active .plyr__controls .icon--captions-on+svg,.plyr--fullscreen-active .icon--exit-fullscreen+svg,.plyr--muted .plyr__controls .icon--muted+svg{display:none}.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen]{display:inline-block} \ No newline at end of file diff --git a/dist/plyr.js b/dist/plyr.js index 6ed70616..36dcc8b7 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),ye(),Fe()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/package.json b/package.json index 2f70a14e..cf4d32f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.7", + "version": "1.5.8", "description": "A simple HTML5 media player using custom controls", "homepage": "http://plyr.io", "main": "gulpfile.js", diff --git a/readme.md b/readme.md index 0f84960f..8e9b54de 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.7/plyr.js` to `https://cdn.plyr.io/1.5.7/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.8/plyr.js` to `https://cdn.plyr.io/1.5.8/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.7/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.8/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -161,7 +161,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 0749b716..ac6c7d20 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -2048,7 +2048,7 @@ // Update hover tooltip for seeking function _updateSeekTooltip(event) { // Bail if setting not true - if (!config.tooltips.seek) { + if (!config.tooltips.seek || plyr.browser.touch) { return; } @@ -2251,11 +2251,11 @@ // Load HTML5 sources plyr.media.load(); - // Display duration if available - _displayDuration(); - // Setup interface _setupInterface(); + + // Display duration if available + _displayDuration(); } // Play if autoplay attribute is present diff --git a/src/less/plyr.less b/src/less/plyr.less index 65918665..f480ed3f 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -110,8 +110,11 @@ .seek-thumb() { background: transparent; border: 0; - width: (@plyr-control-spacing * 4); + width: 1px; height: @plyr-control-spacing; +} +.seek-thumb-touch() { + width: (@plyr-control-spacing * 4); transform: translateX(-50%); } .seek-track() { @@ -495,6 +498,21 @@ } } + // Touch seek wider handle + &--is-touch &--seek[type='range'] { + &::-webkit-slider-thumb { + .seek-thumb-touch(); + } + // Mozilla + &::-moz-range-thumb { + .seek-thumb-touch(); + } + // Microsoft + &::-ms-thumb { + .seek-thumb-touch(); + } + } + // Loading state &--loading .plyr__progress--buffer { animation: plyr-progress 1s linear infinite; diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index fd905af0..dd118602 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -111,8 +111,11 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la @mixin seek-thumb() { background: transparent; border: 0; - width: ($plyr-control-spacing * 4); + width: 1px; height: $plyr-control-spacing; +} +@mixin seek-thumb-touch() { + width: ($plyr-control-spacing * 4); transform: translateX(-50%); } @mixin seek-track() { @@ -496,6 +499,21 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la } } + // Touch seek wider handle + &--is-touch &--seek[type='range'] { + &::-webkit-slider-thumb { + @include seek-thumb-touch(); + } + // Mozilla + &::-moz-range-thumb { + @include seek-thumb-touch(); + } + // Microsoft + &::-ms-thumb { + @include seek-thumb-touch(); + } + } + // Loading state &--loading .plyr__progress--buffer { animation: plyr-progress 1s linear infinite; From 0d426ca47986bfd164a3ac4428781e8ca28dca83 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Mon, 25 Jan 2016 16:35:54 +0100 Subject: [PATCH 38/87] Remove global preinstall script. Gulp does not have to be globally installed to build plyr --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index cf4d32f3..cda0e3e0 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,6 @@ "gulp-util": "^3.0.7", "run-sequence": "^1.1.5" }, - "scripts": { - "preinstall": "npm install -g gulp" - }, "keywords": [ "HTML5 Video", "HTML5 Audio", From b217e2388082895a8b600a6b386a29bc8f6f52f6 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 26 Jan 2016 09:59:17 +1100 Subject: [PATCH 39/87] Npm changes --- package.json | 4 ++-- readme.md | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index cda0e3e0..0ac5bc7f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "plyr", - "version": "1.5.8", - "description": "A simple HTML5 media player using custom controls", + "version": "1.5.9", + "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", "main": "gulpfile.js", "dependencies": {}, diff --git a/readme.md b/readme.md index 8e9b54de..87073fd5 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.8/plyr.js` to `https://cdn.plyr.io/1.5.8/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.9/plyr.js` to `https://cdn.plyr.io/1.5.9/plyr.js` ### Bower If bower is your thang, you can grab Plyr using: @@ -60,11 +60,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.8/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.9/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -161,7 +161,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` From 7edc3ccd53224073b23b0465a3f51e1a3eb30624 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 26 Jan 2016 10:08:19 +1100 Subject: [PATCH 40/87] NPM updates and published (fixes #146) --- package.json | 15 +++++++++++---- readme.md | 6 ++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0ac5bc7f..3aebb5c5 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,15 @@ "type": "git", "url": "git://github.com/selz/plyr.git" }, - "authors": [ - "Sam Potts " - ], - "license": "MIT" + "license": "MIT", + "bugs": { + "url": "https://github.com/selz/plyr/issues" + }, + "directories": { + "doc": "docs" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Sam Potts (selz.com)" } diff --git a/readme.md b/readme.md index 87073fd5..f4bde103 100644 --- a/readme.md +++ b/readme.md @@ -42,6 +42,12 @@ Check `docs/index.html` and `docs/dist/docs.js` for an example setup. **Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.9/plyr.js` to `https://cdn.plyr.io/1.5.9/plyr.js` +### Node Package Manager (NPM) +Using NPM, you can grab Plyr: +``` +npm install plyr +``` + ### Bower If bower is your thang, you can grab Plyr using: ``` From a59073c5ca812212d50eef48d3f4fcde1e85c195 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 26 Jan 2016 10:16:02 +1100 Subject: [PATCH 41/87] Update readme.md --- readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/readme.md b/readme.md index f4bde103..ee652ae8 100644 --- a/readme.md +++ b/readme.md @@ -47,12 +47,15 @@ Using NPM, you can grab Plyr: ``` npm install plyr ``` +[https://www.npmjs.com/package/plyr](https://www.npmjs.com/package/plyr) ### Bower If bower is your thang, you can grab Plyr using: ``` bower install plyr ``` +[http://bower.io/search/?q=plyr](http://bower.io/search/?q=plyr) + More info on setting up dependencies can be found in the [Bower Docs](http://bower.io/docs/creating-packages/#maintaining-dependencies) ### Ember From 812d2d33f2c786c430c69816b7734cc04172028d Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 26 Jan 2016 10:21:03 +0100 Subject: [PATCH 42/87] NPM package main must always be the main source file. Fixes broken require/import --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3aebb5c5..64098471 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.5.9", "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", - "main": "gulpfile.js", + "main": "src/js/plyr.js", "dependencies": {}, "devDependencies": { "gulp": "^3.9.0", From a8cea7b5c99ce2c6bfc8c869b17f7a55da77a455 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 26 Jan 2016 22:44:09 +1100 Subject: [PATCH 43/87] 1.5.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64098471..c56d1aa6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.9", + "version": "1.5.10", "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", "main": "src/js/plyr.js", From 4fda65c8622f7b91d9ba0a1b2c5ac578b9a44d3b Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 26 Jan 2016 16:53:15 +0100 Subject: [PATCH 44/87] Swap CommonJS and AMD module check so that CommonJS is checked first. Fixes Webpack module bundling --- dist/plyr.js | 2 +- src/js/plyr.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/plyr.js b/dist/plyr.js index 36dcc8b7..146e4704 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; +!function(e,t){"use strict";"object"==typeof module?module.exports=t(e,document):"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/src/js/plyr.js b/src/js/plyr.js index ac6c7d20..8c281d93 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -11,12 +11,12 @@ 'use strict'; /*global define,module*/ - if (typeof define === 'function' && define.amd) { - // AMD - define(null, function() { factory(root, document) }); - } else if (typeof module === 'object') { + if (typeof module === 'object') { // Node, CommonJS-like module.exports = factory(root, document); + } else if (typeof define === 'function' && define.amd) { + // AMD + define(null, function() { factory(root, document) }); } else { // Browser globals (root is window) root.plyr = factory(root, document); From a285fcc4ec45816d43fa3bfe35c23dd21e7bfc63 Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 26 Jan 2016 17:05:57 +0100 Subject: [PATCH 45/87] Check for module.exports as well for CommonJS Modules --- dist/plyr.js | 4 ++-- src/js/plyr.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/plyr.js b/dist/plyr.js index 146e4704..94d28ae9 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1,2 +1,2 @@ -!function(e,t){"use strict";"object"==typeof module?module.exports=t(e,document):"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; -switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file +!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)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+N.i18n.played,"",'',"0% "+N.i18n.buffered,""];return N.tooltips.seek&&e.push('0:00'),e.push("
",''),i(N.controls,"restart")&&e.push('"),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){ +var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/src/js/plyr.js b/src/js/plyr.js index 8c281d93..76623068 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -11,7 +11,7 @@ 'use strict'; /*global define,module*/ - if (typeof module === 'object') { + if (typeof module === 'object' && typeof module.exports === 'object') { // Node, CommonJS-like module.exports = factory(root, document); } else if (typeof define === 'function' && define.amd) { From 31a0eb8d1472ff792fe64cb75e81de16b7a5ea0b Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Wed, 27 Jan 2016 21:27:58 +0100 Subject: [PATCH 46/87] Get the proper window reference on initialization. The previous code assumed that `this` points to the browsers window object, which is not the case when using a module bundler. So we check for the variable `window` first, before falling back to `this`. (taken from jQuery's codebase) --- src/js/plyr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/plyr.js b/src/js/plyr.js index 76623068..2cee1210 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -21,7 +21,7 @@ // Browser globals (root is window) root.plyr = factory(root, document); } -}(this, function(window, document) { +}(typeof window !== 'undefined' ? window : this, function(window, document) { 'use strict'; /*global YT,$f*/ From 130b5ebedf5062f398dca2cfeeeef79b7bf8b697 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Fri, 29 Jan 2016 10:25:39 +1100 Subject: [PATCH 47/87] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index ee652ae8..65a91aab 100644 --- a/readme.md +++ b/readme.md @@ -814,6 +814,7 @@ Plyr is developed by [@sam_potts](https://twitter.com/sam_potts) / [sampotts.me] - [Web Platform Daily](http://webplatformdaily.org/releases/2015-03-04) - [LayerVault Designer News](https://news.layervault.com/stories/45394-plyr--a-simple-html5-media-player) - [The Treehouse Show #131](https://teamtreehouse.com/library/episode-131-origami-react-responsive-hero-images) +- [noupe.com](http://www.noupe.com/design/html5-plyr-is-a-responsive-and-accessible-video-player-94389.html) ## Used by - [Selz.com](https://selz.com) From eee7553d093807f518238ae6f1d0a5d5fbbb0ac7 Mon Sep 17 00:00:00 2001 From: Morton Fox Date: Mon, 1 Feb 2016 16:14:22 -0500 Subject: [PATCH 48/87] Fix the svgfixer.js link --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 65a91aab..51bae507 100644 --- a/readme.md +++ b/readme.md @@ -105,7 +105,7 @@ The SVG sprite for the controls icons is loaded in by AJAX to help with performa ``` If you're using the `` tag on your site, you may need to use something like this: -[https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2](svgfixer.js) +[svgfixer.js](https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2) More info on SVG sprites here: [http://css-tricks.com/svg-sprites-use-better-icon-fonts/](http://css-tricks.com/svg-sprites-use-better-icon-fonts/) From d8fb876c81a5cd664017dd034ef76d43408a1ce0 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Thu, 4 Feb 2016 14:58:00 +1100 Subject: [PATCH 49/87] Update readme.md --- readme.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/readme.md b/readme.md index 51bae507..2ed1aba2 100644 --- a/readme.md +++ b/readme.md @@ -467,10 +467,6 @@ Here's a list of the methods supported: Get/Set the media source.

- string
- .source("/path/to/video.mp4")
- This will set the src attribute on the video or audio element. -

array
.source([{ src: "/path/to/video.webm", type: "video/webm", ...more attributes... }, { src: "/path/to/video.mp4", type: "video/mp4", ...more attributes... }])`
This will inject a child `source` element for every element in the array with the specified attributes. `src` is the only required attribute although adding `type` is recommended as it helps the browser decide which file to download and play. From 6b70c4b49abbfbfb23aaa6681e261be24a4de3f2 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Thu, 4 Feb 2016 14:59:59 +1100 Subject: [PATCH 50/87] Update readme.md --- readme.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 2ed1aba2..d756d09d 100644 --- a/readme.md +++ b/readme.md @@ -468,7 +468,18 @@ Here's a list of the methods supported: Get/Set the media source.

array
- .source([{ src: "/path/to/video.webm", type: "video/webm", ...more attributes... }, { src: "/path/to/video.mp4", type: "video/mp4", ...more attributes... }])`
+
.source([
+      	{ 
+      		src: "/path/to/video.webm", 
+      		type: "video/webm", 
+      		...more attributes... 
+      	}, 
+      	{ 
+      		src: "/path/to/video.mp4", 
+      		type: "video/mp4", 
+      		...more attributes... 
+      	}
+      ])`

This will inject a child `source` element for every element in the array with the specified attributes. `src` is the only required attribute although adding `type` is recommended as it helps the browser decide which file to download and play.

YouTube
From a9126a4c822a5ee5926984b0766e7bfb0f502f97 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Fri, 5 Feb 2016 00:02:24 +1100 Subject: [PATCH 51/87] Update readme.md --- readme.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/readme.md b/readme.md index d756d09d..6fce6c35 100644 --- a/readme.md +++ b/readme.md @@ -248,6 +248,12 @@ Options must be passed as an object to the `setup()` method as above. false Display debugging information on what Plyr is doing. + + autoplay + Boolean + false + Autoplay the media on load. This is generally advised against on UX grounds. It is also disabled on iOS (an Apple limitation). + seekTime Number From 4ee31ba661fcb190ae2f3ee340a564040644d2fc Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 9 Feb 2016 14:40:26 +1100 Subject: [PATCH 52/87] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 6fce6c35..19123005 100644 --- a/readme.md +++ b/readme.md @@ -469,7 +469,7 @@ Here's a list of the methods supported: source(...) - Array or undefined + Object or undefined Get/Set the media source.

From c687b867e761285e81c9b93f10ce79462c3822de Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 9 Feb 2016 14:52:37 +1100 Subject: [PATCH 53/87] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 19123005..ddbce28f 100644 --- a/readme.md +++ b/readme.md @@ -608,8 +608,8 @@ Some more details on the object parameters sources - Array or String - This is an array of sources or optionally a string for embedded players (YouTube and Vimeo). `type` is also optional for YouTube and Vimeo when specifying an array. For YouTube and Vimeo media, only the video ID must be passed as the source as shown above. The keys of this object are mapped directly to HTML attributes so more can be added to the object if required. + Array + This is an array of sources. `type` is optional for YouTube and Vimeo when specifying an array. For YouTube and Vimeo media, only the video ID must be passed as the source as shown above. The keys of this object are mapped directly to HTML attributes so more can be added to the object if required. poster From f341f1264d0e35c712f5e7bbecf04e369012417e Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 9 Feb 2016 14:53:20 +1100 Subject: [PATCH 54/87] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index ddbce28f..40321463 100644 --- a/readme.md +++ b/readme.md @@ -608,8 +608,8 @@ Some more details on the object parameters sources - Array - This is an array of sources. `type` is optional for YouTube and Vimeo when specifying an array. For YouTube and Vimeo media, only the video ID must be passed as the source as shown above. The keys of this object are mapped directly to HTML attributes so more can be added to the object if required. + Array or String + This is an array of sources or optionally a string for embedded players (YouTube and Vimeo). type is also optional for YouTube and Vimeo when specifying an array. For YouTube and Vimeo media, only the video ID must be passed as the source as shown above. The keys of this object are mapped directly to HTML attributes so more can be added to the object if required. poster From 89e000f669bfd42805ade8b81f5bdf4616c370c4 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 9 Feb 2016 14:53:57 +1100 Subject: [PATCH 55/87] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 40321463..d7a154d4 100644 --- a/readme.md +++ b/readme.md @@ -608,8 +608,8 @@ Some more details on the object parameters sources - Array or String - This is an array of sources or optionally a string for embedded players (YouTube and Vimeo). type is also optional for YouTube and Vimeo when specifying an array. For YouTube and Vimeo media, only the video ID must be passed as the source as shown above. The keys of this object are mapped directly to HTML attributes so more can be added to the object if required. + Array + This is an array of sources. type is optional for YouTube and Vimeo when specifying an array. For YouTube and Vimeo media, only the video ID must be passed as the source as shown above. The keys of this object are mapped directly to HTML attributes so more can be added to the object if required. poster From 7d0311fd649e758a087f207de7f66717a15c28d1 Mon Sep 17 00:00:00 2001 From: Ivan Vermeyen Date: Fri, 12 Feb 2016 17:11:07 +0100 Subject: [PATCH 56/87] Allow player control colors to be overridden #158 --- src/sass/plyr.scss | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index dd118602..2f0193a8 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -27,21 +27,19 @@ $plyr-font-size-captions-large: ($plyr-font-size-base * 2) !default; $plyr-control-spacing: 10px !default; $plyr-controls-bg: #fff !default; $plyr-control-bg-hover: $plyr-blue !default; -$plyr-control-color: null !default; -$plyr-control-color-hover: null !default; // Contrast @if lightness($plyr-controls-bg) >= 65% { - $plyr-control-color: $plyr-gray-light; + $plyr-control-color: $plyr-gray-light !default; } @else { - $plyr-control-color: $plyr-gray-lighter; + $plyr-control-color: $plyr-gray-lighter !default; } @if lightness($plyr-control-bg-hover) >= 65% { - $plyr-control-color-hover: $plyr-gray; + $plyr-control-color-hover: $plyr-gray !default; } @else { - $plyr-control-color-hover: #fff; + $plyr-control-color-hover: #fff !default; } // Tooltips From ce513442699f4b3c964adf06d9baa49821351ce3 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 13 Feb 2016 22:18:42 +1100 Subject: [PATCH 57/87] iOS fix (Fixes #166), Edge Progress Tip (Fixes #160), SASS fix (Fixes #158) --- .gitignore | 3 ++- controls.md | 3 ++- dist/plyr.css | 2 +- dist/plyr.js | 4 ++-- docs/dist/docs.js | 2 +- docs/src/js/docs.js | 12 +++++++++--- readme.md | 10 +++++----- src/js/plyr.js | 21 +++++++++++++-------- src/less/plyr.less | 17 +++++++++++++---- src/sass/plyr.scss | 16 +++++++++------- 10 files changed, 57 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index 0356883a..69adfe50 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ node_modules .DS_Store aws.json docs/index.dev.html -*.mp4 \ No newline at end of file +*.mp4 +notes.txt diff --git a/controls.md b/controls.md index 196a77fb..09aa0902 100644 --- a/controls.md +++ b/controls.md @@ -56,6 +56,7 @@ var controls = ["
", "", "0% buffered", "", + "--:--", "
", "", ""),i(N.controls,"rewind")&&e.push('"),i(N.controls,"play")&&e.push('",'"),i(N.controls,"fast-forward")&&e.push('"),i(N.controls,"current-time")&&e.push('',''+N.i18n.currentTime+"",'00:00',""),i(N.controls,"duration")&&e.push('',''+N.i18n.duration+"",'00:00',""),e.push("",''),i(N.controls,"mute")&&e.push('"),i(N.controls,"volume")&&e.push('",''),i(N.controls,"captions")&&e.push('"),i(N.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){N.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,N.classes.captions.enabled,!0),N.captions.defaultActive&&(b(Ee.container,N.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=N.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",N.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==N.selectors.controls.container&&(s=N.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),N.tooltips.controls)for(var a=V(N.selectors.labels+" ."+N.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,N.classes.hidden,!1),b(i,N.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(N.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(N.selectors.buttons.seek),Ee.buttons.play=q(N.selectors.buttons.play),Ee.buttons.pause=q(N.selectors.buttons.pause),Ee.buttons.restart=q(N.selectors.buttons.restart),Ee.buttons.rewind=q(N.selectors.buttons.rewind),Ee.buttons.forward=q(N.selectors.buttons.forward),Ee.buttons.fullscreen=q(N.selectors.buttons.fullscreen),Ee.buttons.volume=q(N.selectors.buttons.volume),Ee.buttons.mute=q(N.selectors.buttons.mute),Ee.buttons.captions=q(N.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(N.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(N.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(N.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+N.classes.tooltip),Ee.volume=q(N.selectors.buttons.volume),Ee.duration=q(N.selectors.duration),Ee.currentTime=q(N.selectors.currentTime),Ee.seekTime=V(N.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=N.i18n.play;"undefined"!=typeof N.title&&N.title.length&&(t+=", "+N.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",N.i18n.frameTitle.replace("{title}",N.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,N.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,N.classes.stopped,N.autoplay),b(Ee.container,N.classes.isIos,Ee.browser.ios),b(Ee.container,N.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",N.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(N.types.embed,Ee.type)?(K(),Ee.embedId=null):N.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,N.classes.videoWrapper,!0),b(Ee.media,N.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(N.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(N.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:N.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(N.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(N.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,N.classes.playing,!Ee.media.paused),b(Ee.container,N.classes.stopped,Ee.media.paused)}function oe(e){var n=A.supportsFullScreen;e&&e.type===A.fullScreenEventName?Ee.isFullscreen=A.isFullScreen(Ee.container):n?(A.isFullScreen(Ee.container)?A.cancelFullScreen():A.requestFullScreen(Ee.container),Ee.isFullscreen=A.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),N.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(N.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=N.storage.enabled&&E().supported?e.localStorage[N.storage.key]||N.volume:N.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),N.volume=t,i(N.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),N.storage.enabled&&E().supported&&e.localStorage.setItem(N.storage.key,t),b(Ee.container,N.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(N.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,N.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&N.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(N.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=N.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,N.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,N.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(N.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(N.types.html5,Ee.type)&&(N.crossorigin&&Ee.media.setAttribute("crossorigin",""),N.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),N.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,N.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,N.classes.captions.active,Ee.captionsEnabled),Y(),N.autoplay=n.autoplay||N.autoplay,i(N.types.html5,Ee.type)&&j("source",n.sources),z(),i(N.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),N.autoplay&&Z(),"title"in n&&(N.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,N.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,N.classes.tabFocus,!1),b(n,N.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 Ee.buttons){var r=Ee.buttons[n];b(r,N.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+N.classes.tabFocus),N.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",N.listeners.play,n),k(Ee.buttons.pause,"click",N.listeners.pause,n),k(Ee.buttons.restart,"click",N.listeners.restart,se),k(Ee.buttons.rewind,"click",N.listeners.rewind,ne),k(Ee.buttons.forward,"click",N.listeners.forward,re),k(Ee.buttons.seek,s,N.listeners.seek,se),k(Ee.volume,s,N.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",N.listeners.mute,le),k(Ee.buttons.fullscreen,"click",N.listeners.fullscreen,oe),A.supportsFullScreen&&g(t,A.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);N.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),N.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),N.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,N.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(N.selectors.container)),Ee.init=!1,p(q(N.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(N.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;A=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,N.crossorigin=null!==Ee.media.getAttribute("crossorigin"),N.autoplay=N.autoplay||null!==Ee.media.getAttribute("autoplay"),N.loop=N.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(N.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(N.selectors.controls.wrapper)),void W(!0);var e=!V(N.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var A,N,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; -switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),N=C(P,n),!N.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file +!function(e,t){"use strict";"function"==typeof define&&define.amd?define(null,function(){t(e,document)}):"object"==typeof module?module.exports=t(e,document):e.plyr=t(e,document)}(this,function(e,t){"use strict";function n(){var e=['
','
','','','',"0% "+A.i18n.played,"",'',"0% "+A.i18n.buffered,""];return A.tooltips.seek&&e.push('--:--'),e.push("
",''),i(A.controls,"restart")&&e.push('"),i(A.controls,"rewind")&&e.push('"),i(A.controls,"play")&&e.push('",'"),i(A.controls,"fast-forward")&&e.push('"),i(A.controls,"current-time")&&e.push('',''+A.i18n.currentTime+"",'00:00',""),i(A.controls,"duration")&&e.push('',''+A.i18n.duration+"",'--:--',""),e.push("",''),i(A.controls,"mute")&&e.push('"),i(A.controls,"volume")&&e.push('",''),i(A.controls,"captions")&&e.push('"),i(A.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){A.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,A.classes.captions.enabled,!0),A.captions.defaultActive&&(b(Ee.container,A.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=A.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",A.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==A.selectors.controls.container&&(s=A.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),A.tooltips.controls)for(var a=V(A.selectors.labels+" ."+A.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,A.classes.hidden,!1),b(i,A.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(A.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(A.selectors.buttons.seek),Ee.buttons.play=q(A.selectors.buttons.play),Ee.buttons.pause=q(A.selectors.buttons.pause),Ee.buttons.restart=q(A.selectors.buttons.restart),Ee.buttons.rewind=q(A.selectors.buttons.rewind),Ee.buttons.forward=q(A.selectors.buttons.forward),Ee.buttons.fullscreen=q(A.selectors.buttons.fullscreen),Ee.buttons.volume=q(A.selectors.buttons.volume),Ee.buttons.mute=q(A.selectors.buttons.mute),Ee.buttons.captions=q(A.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(A.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(A.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(A.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+A.classes.tooltip),Ee.volume=q(A.selectors.buttons.volume),Ee.duration=q(A.selectors.duration),Ee.currentTime=q(A.selectors.currentTime),Ee.seekTime=V(A.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=A.i18n.play;"undefined"!=typeof A.title&&A.title.length&&(t+=", "+A.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",A.i18n.frameTitle.replace("{title}",A.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,A.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,A.classes.stopped,A.autoplay),b(Ee.container,A.classes.isIos,Ee.browser.ios),b(Ee.container,A.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",A.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(A.types.embed,Ee.type)?(K(),Ee.embedId=null):A.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,A.classes.videoWrapper,!0),b(Ee.media,A.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(A.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(A.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:A.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(A.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(A.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(A.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,A.classes.playing,!Ee.media.paused),b(Ee.container,A.classes.stopped,Ee.media.paused)}function oe(e){var n=N.supportsFullScreen;e&&e.type===N.fullScreenEventName?Ee.isFullscreen=N.isFullScreen(Ee.container):n?(N.isFullScreen(Ee.container)?N.cancelFullScreen():N.requestFullScreen(Ee.container),Ee.isFullscreen=N.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,A.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),A.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(A.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(A.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=A.volume,A.storage.enabled&&E().supported&&(t=e.localStorage.getItem(A.storage.key))),isNaN(t)&&(t=A.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),A.volume=t,i(A.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),A.storage.enabled&&E().supported&&!isNaN(t)&&e.localStorage.setItem(A.storage.key,t),b(Ee.container,A.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(A.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,A.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,A.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&A.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(A.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=A.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,A.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,A.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(A.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(A.types.html5,Ee.type)&&(A.crossorigin&&Ee.media.setAttribute("crossorigin",""),A.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),A.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,A.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,A.classes.captions.active,Ee.captionsEnabled),Y(),A.autoplay=n.autoplay||A.autoplay,i(A.types.html5,Ee.type)&&j("source",n.sources),z(),i(A.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),A.autoplay&&Z(),"title"in n&&(A.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,A.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,A.classes.tabFocus,!1),b(n,A.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 Ee.buttons){var r=Ee.buttons[n];b(r,A.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+A.classes.tabFocus),A.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",A.listeners.play,n),k(Ee.buttons.pause,"click",A.listeners.pause,n),k(Ee.buttons.restart,"click",A.listeners.restart,se),k(Ee.buttons.rewind,"click",A.listeners.rewind,ne),k(Ee.buttons.forward,"click",A.listeners.forward,re),k(Ee.buttons.seek,s,A.listeners.seek,se),k(Ee.volume,s,A.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",A.listeners.mute,le),k(Ee.buttons.fullscreen,"click",A.listeners.fullscreen,oe),N.supportsFullScreen&&g(t,N.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);A.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),A.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),A.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,A.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(A.selectors.container)),Ee.init=!1,p(q(A.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(A.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;N=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,A.crossorigin=null!==Ee.media.getAttribute("crossorigin"),A.autoplay=A.autoplay||null!==Ee.media.getAttribute("autoplay"),A.loop=A.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(A.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(A.selectors.controls.wrapper)),void W(!0);var e=!V(A.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var N,A,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return I.supported=function(e){ +var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),A=C(P,n),!A.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/docs/dist/docs.js b/docs/dist/docs.js index 04574c1c..226d8e4a 100644 --- a/docs/dist/docs.js +++ b/docs/dist/docs.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,n=arguments.length;for(i=0;n>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",n=e.Element[i],s=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],n=0,s=i.length;s>n;n++)this.push(i[n]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,n=t.length,s=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),s=!0);while(++i=0;a--)e(i[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}for(var i=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},s=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!s.length;a&&(s=n.video),s in n&&history.replaceState({type:s},"",a?"":"#"+s),a||t(s,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,n,s,o,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=n,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,n=arguments.length;for(i=0;n>i;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",n=e.Element[i],s=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;i>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],n=0,s=i.length;s>n;n++)this.push(i[n]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,i=0,n=t.length,s=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),s=!0);while(++i=0;a--)e(i[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},s=window.location.hash.replace("#",""),o=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),o&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),o){var a=!s.length;a&&(s=n.video),s in n&&history.replaceState({type:s},"",a?"":"#"+s),s!==n.video&&t(s,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,n,s,o,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=n,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/docs/src/js/docs.js b/docs/src/js/docs.js index 563d2ebe..bedb91cb 100644 --- a/docs/src/js/docs.js +++ b/docs/src/js/docs.js @@ -13,7 +13,8 @@ plyr.setup('.js-media-player', { }, captions: { defaultActive: true - } + }, + duration: 100 }); // Setup shr @@ -58,13 +59,19 @@ shr.setup({ // On load if(historySupport) { var video = !currentType.length; + + // If there's no current type set, assume video if(video) { currentType = types.video; } + + // Replace current history state if(currentType in types) { history.replaceState({ 'type': currentType }, '', (video ? '' : '#' + currentType)); } - if(!video) { + + // If it's not video, load the source + if(currentType !== types.video) { newSource(currentType, true); } } @@ -86,7 +93,6 @@ shr.setup({ function newSource(type, init) { // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video if(!(type in types) || (!init && type == currentType) || (!currentType.length && type == types.video)) { - console.warn('Unregonized type.'); return; } diff --git a/readme.md b/readme.md index ee652ae8..eff3bdfb 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.9/plyr.js` to `https://cdn.plyr.io/1.5.9/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.10/plyr.js` to `https://cdn.plyr.io/1.5.10/plyr.js` ### Node Package Manager (NPM) Using NPM, you can grab Plyr: @@ -69,11 +69,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.9/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.10/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -170,7 +170,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index ac6c7d20..6725478a 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -172,7 +172,7 @@ // Seek tooltip if (config.tooltips.seek) { - html.push('0:00'); + html.push('--:--'); } // Close progress @@ -238,7 +238,7 @@ html.push( '', '' + config.i18n.duration + '', - '00:00', + '--:--', '' ); } @@ -746,7 +746,7 @@ // Player instance function Plyr(container) { var plyr = this; - plyr.container = container, + plyr.container = container; plyr.timers = {}; // Captions functions @@ -1816,14 +1816,18 @@ function _setVolume(volume) { // Use default if no value specified if (typeof volume === 'undefined') { + volume = config.volume; + if (config.storage.enabled && _storage().supported) { - volume = window.localStorage[config.storage.key] || config.volume; - } - else { - volume = config.volume; + volume = window.localStorage.getItem(config.storage.key); } } + // Use config if all else fails + if(isNaN(volume)) { + volume = config.volume; + } + // Maximum is 10 if (volume > 10) { volume = 10; @@ -1873,7 +1877,7 @@ } // Store the volume in storage - if (config.storage.enabled && _storage().supported) { + if (config.storage.enabled && _storage().supported && !isNaN(volume)) { window.localStorage.setItem(config.storage.key, volume); } @@ -2015,6 +2019,7 @@ return; } + // Determine duration var duration = plyr.media.duration || 0; // If there's only one time display, display duration there diff --git a/src/less/plyr.less b/src/less/plyr.less index f480ed3f..73e14c56 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -181,7 +181,6 @@ height: 100%; border: 0; user-select: none; - pointer-events: none; // To allow mouse events to be captured } // Vimeo hack @@ -190,6 +189,11 @@ padding-bottom: 200%; transform: translateY(-35.95%); } + + // To allow mouse events to be captured if full support + &.plyr iframe { + pointer-events: none; + } } // Captions @@ -387,9 +391,14 @@ } // Common range styles - input[type='range'].tab-focus:focus { - outline: 1px dotted fade(@plyr-gray-dark, 80%); - outline-offset: 3px; + input[type='range'] { + &::-ms-tooltip { + display: none; + } + &.tab-focus:focus { + outline: 1px dotted fade(@plyr-gray-dark, 80%); + outline-offset: 3px; + } } // Playback progress diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index dd118602..f0d1df6f 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -27,21 +27,19 @@ $plyr-font-size-captions-large: ($plyr-font-size-base * 2) !default; $plyr-control-spacing: 10px !default; $plyr-controls-bg: #fff !default; $plyr-control-bg-hover: $plyr-blue !default; -$plyr-control-color: null !default; -$plyr-control-color-hover: null !default; // Contrast @if lightness($plyr-controls-bg) >= 65% { - $plyr-control-color: $plyr-gray-light; + $plyr-control-color: $plyr-gray-light !default; } @else { - $plyr-control-color: $plyr-gray-lighter; + $plyr-control-color: $plyr-gray-lighter !default; } @if lightness($plyr-control-bg-hover) >= 65% { - $plyr-control-color-hover: $plyr-gray; + $plyr-control-color-hover: $plyr-gray !default; } @else { - $plyr-control-color-hover: #fff; + $plyr-control-color-hover: #fff !default; } // Tooltips @@ -182,7 +180,6 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la height: 100%; border: 0; user-select: none; - pointer-events: none; // To allow mouse events to be captured } // Vimeo hack @@ -191,6 +188,11 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la padding-bottom: 200%; transform: translateY(-35.95%); } + + // To allow mouse events to be captured if full support + &.plyr iframe { + pointer-events: none; + } } // Captions From f426af6e9ecf130545418ba3f13216ea23026306 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 13 Feb 2016 22:19:48 +1100 Subject: [PATCH 58/87] 1.5.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c56d1aa6..5bf3b489 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.10", + "version": "1.5.11", "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", "main": "src/js/plyr.js", From e742527e653e1fd8626dcb28012fee64d58e4b3f Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sat, 13 Feb 2016 22:23:11 +1100 Subject: [PATCH 59/87] Version bump --- changelog.md | 8 ++++++++ readme.md | 10 +++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index fed5972c..67ee8c1d 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,13 @@ # Changelog +## v1.5.11 +- iOS embed bug fixes (fixes #166) +- Hide IE/Edge tooltip (since we have a styled one) (fixes #160) +- SASS bug fix for default values (fixes #158) + +## v1.5.9 + v1.5.10 +- NPM bug fixes + ## v1.5.8 - Fix for touch device seek tooltip - Seek improvements diff --git a/readme.md b/readme.md index 762f6768..0c7e4c66 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.10/plyr.js` to `https://cdn.plyr.io/1.5.10/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.11/plyr.js` to `https://cdn.plyr.io/1.5.11/plyr.js` ### Node Package Manager (NPM) Using NPM, you can grab Plyr: @@ -69,11 +69,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.10/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.11/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -170,7 +170,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` From 96df8fbc859ec04626bc403548e33ba0dde91dc4 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 14 Feb 2016 14:04:30 +1100 Subject: [PATCH 60/87] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 0c7e4c66..982c6df4 100644 --- a/readme.md +++ b/readme.md @@ -831,6 +831,7 @@ Plyr is developed by [@sam_potts](https://twitter.com/sam_potts) / [sampotts.me] ## Used by - [Selz.com](https://selz.com) +- [koel](https://github.com/phanan/koel) - A personal music streaming server that works Let me know on [Twitter](https://twitter.com/sam_potts) I can add you to the above list. It'd be awesome to see how you're using Plyr :-) From 67f19166ac92d5adc03c9421300149260a6424ac Mon Sep 17 00:00:00 2001 From: Guru Prasad Srinivasa Date: Tue, 16 Feb 2016 19:52:08 -0500 Subject: [PATCH 61/87] Some WebVTT fixes to allow manual captions WebVTT allows additional parameters along with the line that contains the start and end times. These were not being filtered out while attempting to manually display captions. --- src/js/plyr.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/js/plyr.js b/src/js/plyr.js index fce746db..2f50bb69 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -820,15 +820,21 @@ } // Utilities for caption time codes - function _timecodeMin(tc) { + function _timecodeCommon(tc, pos) { var tcpair = []; tcpair = tc.split(' --> '); - return _subTcSecs(tcpair[0]); + for(var i = 0; i < tcpair.length; i++) { + // WebVTT allows for extra meta data after the timestamp line + // So get rid of this if it exists + tcpair[i] = tcpair[i].replace(/(\d+:\d+:\d+\.\d+).*/, "$1"); + } + return _subTcSecs(tcpair[pos]); + } + function _timecodeMin(tc) { + return _timecodeCommon(tc, 0); } function _timecodeMax(tc) { - var tcpair = []; - tcpair = tc.split(' --> '); - return _subTcSecs(tcpair[1]); + return _timecodeCommon(tc, 1); } function _subTcSecs(tc) { if (tc === null || tc === undefined) { From 402c45ee2bf1d528ea1c3ea333dfa7fcb7dd79af Mon Sep 17 00:00:00 2001 From: Guru Prasad Srinivasa Date: Tue, 16 Feb 2016 19:53:07 -0500 Subject: [PATCH 62/87] Updated manual caption split pattern Previously, Plyr was using a fixed pattern of '\n\n' to split contents into captions. This does not always work as some VTT files contain '\r\n'. This commit checks for both. --- src/js/plyr.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/js/plyr.js b/src/js/plyr.js index 2f50bb69..b2b9c964 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1523,12 +1523,18 @@ record, req = xhr.responseText; - records = req.split('\n\n'); - + var pattern = '\n'; + records = req.split(pattern + pattern); + if(records.length === 1) { + // The '\n' pattern didn't work + // Try '\r\n' + pattern = '\r\n'; + records = req.split(pattern + pattern); + } for (var r = 0; r < records.length; r++) { record = records[r]; plyr.captions[r] = []; - plyr.captions[r] = record.split('\n'); + plyr.captions[r] = record.split(pattern); } // Remove first element ('VTT') From b18ed0338477059b0c8bace92fc96cf5ef0bbc6f Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 21 Feb 2016 13:17:30 +1100 Subject: [PATCH 63/87] WIP on captions bug, manual duration option, reset media object --- controls.md | 4 +- dist/plyr.css | 2 +- dist/plyr.js | 4 +- docs/index.html | 2 +- src/js/plyr.js | 792 ++++++++++++++++++++++++--------------------- src/less/plyr.less | 73 ++--- src/sass/plyr.scss | 82 ++--- 7 files changed, 509 insertions(+), 450 deletions(-) diff --git a/controls.md b/controls.md index 09aa0902..119cbe92 100644 --- a/controls.md +++ b/controls.md @@ -56,7 +56,7 @@ var controls = ["
", "", "0% buffered", "", - "--:--", + "00:00", "
", "", ""),i(A.controls,"rewind")&&e.push('"),i(A.controls,"play")&&e.push('",'"),i(A.controls,"fast-forward")&&e.push('"),i(A.controls,"current-time")&&e.push('',''+A.i18n.currentTime+"",'00:00',""),i(A.controls,"duration")&&e.push('',''+A.i18n.duration+"",'--:--',""),e.push("",''),i(A.controls,"mute")&&e.push('"),i(A.controls,"volume")&&e.push('",''),i(A.controls,"captions")&&e.push('"),i(A.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function r(t,n){A.debug&&e.console&&console[n?"warn":"log"](t)}function s(){var e,n,r,s=navigator.userAgent,a=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"ontouchstart"in t.documentElement}}function a(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 o(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 i(e,t){return Array.prototype.indexOf&&-1!=e.indexOf(t)}function l(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function u(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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(r)}}function c(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function p(e){e&&e.parentNode.removeChild(e)}function d(e,t){e.insertBefore(t,e.firstChild)}function f(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function m(e,n,r){var s=t.createElement(e);f(s,r),d(n,s)}function y(e){return e.replace(".","")}function b(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 v(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function g(e,t,n){e&&w(e,t,n,!0)}function h(e,t,n){e&&w(e,t,n,!1)}function k(e,t,n,r){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function w(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 S(w){function C(e){if(!Ee.usingTextTracks&&"video"===Ee.type&&Ee.supported.full&&(Ee.subcount=0,e="number"==typeof e?e:Ee.media.currentTime,Ee.captions[Ee.subcount])){for(;L(Ee.captions[Ee.subcount][0])Ee.captions.length-1){Ee.subcount=Ee.captions.length-1;break}if(Ee.media.currentTime.toFixed(1)>=M(Ee.captions[Ee.subcount][0])&&Ee.media.currentTime.toFixed(1)<=L(Ee.captions[Ee.subcount][0])){Ee.currentCaption=Ee.captions[Ee.subcount][1];var t=Ee.currentCaption.trim();Ee.captionsContainer.innerHTML!=t&&(Ee.captionsContainer.innerHTML="",Ee.captionsContainer.innerHTML=t)}else Ee.captionsContainer.innerHTML=""}}function S(){Ee.buttons.captions&&(b(Ee.container,A.classes.captions.enabled,!0),A.captions.defaultActive&&(b(Ee.container,A.classes.captions.active,!0),x(Ee.buttons.captions,!0)))}function M(e){var t=[];return t=e.split(" --> "),O(t[0])}function L(e){var t=[];return t=e.split(" --> "),O(t[1])}function O(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function V(e){return Ee.container.querySelectorAll(e)}function q(e){return V(e)[0]}function H(){try{return e.self!==e.top}catch(t){return!0}}function R(){function e(e){9===e.which&&Ee.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];g(Ee.container,"keydown",e)}function j(e,t){if("string"==typeof t)m(e,Ee.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)m(e,Ee.media,t[n])}function B(){var e=A.html;r("Injecting custom controls"),e||(e=n()),e=l(e,"{seektime}",A.seekTime),e=l(e,"{id}",Math.floor(1e4*Math.random()));var s;if(null!==A.selectors.controls.container&&(s=A.selectors.controls.container,"string"==typeof selector&&(s=t.querySelector(s))),s instanceof HTMLElement||(s=Ee.container),s.insertAdjacentHTML("beforeend",e),A.tooltips.controls)for(var a=V(A.selectors.labels+" ."+A.classes.hidden),o=a.length-1;o>=0;o--){var i=a[o];b(i,A.classes.hidden,!1),b(i,A.classes.tooltip,!0)}}function D(){try{return Ee.controls=q(A.selectors.controls.wrapper),Ee.buttons={},Ee.buttons.seek=q(A.selectors.buttons.seek),Ee.buttons.play=q(A.selectors.buttons.play),Ee.buttons.pause=q(A.selectors.buttons.pause),Ee.buttons.restart=q(A.selectors.buttons.restart),Ee.buttons.rewind=q(A.selectors.buttons.rewind),Ee.buttons.forward=q(A.selectors.buttons.forward),Ee.buttons.fullscreen=q(A.selectors.buttons.fullscreen),Ee.buttons.volume=q(A.selectors.buttons.volume),Ee.buttons.mute=q(A.selectors.buttons.mute),Ee.buttons.captions=q(A.selectors.buttons.captions),Ee.checkboxes=V('[type="checkbox"]'),Ee.progress={},Ee.progress.container=q(A.selectors.progress.container),Ee.progress.buffer={},Ee.progress.buffer.bar=q(A.selectors.progress.buffer),Ee.progress.buffer.text=Ee.progress.buffer.bar&&Ee.progress.buffer.bar.getElementsByTagName("span")[0],Ee.progress.played={},Ee.progress.played.bar=q(A.selectors.progress.played),Ee.progress.played.text=Ee.progress.played.bar&&Ee.progress.played.bar.getElementsByTagName("span")[0],Ee.progress.tooltip=Ee.progress.container&&Ee.progress.container.querySelector("."+A.classes.tooltip),Ee.volume=q(A.selectors.buttons.volume),Ee.duration=q(A.selectors.duration),Ee.currentTime=q(A.selectors.currentTime),Ee.seekTime=V(A.selectors.seekTime),!0}catch(e){return r("It looks like there is a problem with your controls html",!0),W(!0),!1}}function Y(){b(Ee.container,P.selectors.container.replace(".",""),Ee.supported.full)}function W(e){e?Ee.media.setAttribute("controls",""):Ee.media.removeAttribute("controls")}function $(e){var t=A.i18n.play;"undefined"!=typeof A.title&&A.title.length&&(t+=", "+A.title),Ee.supported.full&&Ee.buttons.play&&Ee.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",A.i18n.frameTitle.replace("{title}",A.title))}function z(){if(!Ee.media)return r("No audio or video element found",!0),!1;if(Ee.supported.full&&(b(Ee.container,A.classes.type.replace("{0}",Ee.type),!0),b(Ee.container,A.classes.stopped,A.autoplay),b(Ee.container,A.classes.isIos,Ee.browser.ios),b(Ee.container,A.classes.isTouch,Ee.browser.touch),"video"===Ee.type)){var e=t.createElement("div");e.setAttribute("class",A.classes.videoWrapper),u(Ee.media,e),Ee.videoContainer=e}i(A.types.embed,Ee.type)?(K(),Ee.embedId=null):A.autoplay&&Z()}function K(){for(var n=t.createElement("div"),r=Ee.embedId,s=Ee.type+"-"+Math.floor(1e4*Math.random()),a=V('[id^="'+Ee.type+'-"]'),i=a.length-1;i>=0;i--)p(a[i]);if(b(Ee.media,A.classes.videoWrapper,!0),b(Ee.media,A.classes.embedWrapper,!0),"youtube"===Ee.type)Ee.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?X(r,n):(o(A.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ee.type){var l=t.createElement("iframe");l.loaded=!1,g(l,"load",function(){l.loaded=!0}),f(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ee.supported.full?(n.appendChild(l),Ee.media.appendChild(n)):Ee.media.appendChild(l),"$f"in e||o(A.urls.vimeo.api);var u=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(u),J.call(l))},50)}}function U(){Fe(),$(q("iframe"))}function X(t,n){"timer"in Ee||(Ee.timer={}),Ee.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ee.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:A.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ee.media.play=function(){n.playVideo(),Ee.media.paused=!1},Ee.media.pause=function(){n.pauseVideo(),Ee.media.paused=!0},Ee.media.stop=function(){n.stopVideo(),Ee.media.paused=!0},Ee.media.duration=n.getDuration(),Ee.media.paused=!0,Ee.media.currentTime=n.getCurrentTime(),Ee.media.muted=n.isMuted(),T(Ee.media,"timeupdate"),e.clearInterval(Ee.timer.buffering),Ee.timer.buffering=e.setInterval(function(){Ee.media.buffered=n.getVideoLoadedFraction(),T(Ee.media,"progress"),1===Ee.media.buffered&&(e.clearInterval(Ee.timer.buffering),T(Ee.media,"canplaythrough"))},200),U(),ye()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ee.timer.playing),t.data){case 0:Ee.media.paused=!0,T(Ee.media,"ended");break;case 1:Ee.media.paused=!1,Ee.media.seeking=!1,T(Ee.media,"play"),T(Ee.media,"playing"),Ee.timer.playing=e.setInterval(function(){Ee.media.currentTime=n.getCurrentTime(),T(Ee.media,"timeupdate")},100);break;case 2:Ee.media.paused=!0,T(Ee.media,"pause")}}}})}function J(){Ee.embed=$f(this),Ee.embed.addEvent("ready",function(){Ee.media.play=function(){Ee.embed.api("play"),Ee.media.paused=!1},Ee.media.pause=function(){Ee.embed.api("pause"),Ee.media.paused=!0},Ee.media.stop=function(){Ee.embed.api("stop"),Ee.media.paused=!0},Ee.media.paused=!0,Ee.media.currentTime=0,U(),Ee.embed.api("getCurrentTime",function(e){Ee.media.currentTime=e,T(Ee.media,"timeupdate")}),Ee.embed.api("getDuration",function(e){Ee.media.duration=e,ye()}),Ee.embed.addEvent("play",function(){Ee.media.paused=!1,T(Ee.media,"play"),T(Ee.media,"playing")}),Ee.embed.addEvent("pause",function(){Ee.media.paused=!0,T(Ee.media,"pause")}),Ee.embed.addEvent("playProgress",function(e){Ee.media.seeking=!1,Ee.media.currentTime=e.seconds,T(Ee.media,"timeupdate")}),Ee.embed.addEvent("loadProgress",function(e){Ee.media.buffered=e.percent,T(Ee.media,"progress"),1===parseInt(e.percent)&&T(Ee.media,"canplaythrough")}),Ee.embed.addEvent("finish",function(){Ee.media.paused=!0,T(Ee.media,"ended")})})}function G(){if("video"===Ee.type){q(A.selectors.captions)||Ee.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ee.captionsContainer=q(A.selectors.captions).querySelector("span"),Ee.usingTextTracks=!1,Ee.media.textTracks&&(Ee.usingTextTracks=!0);for(var e,t="",n=Ee.media.childNodes,s=0;s=10||"Firefox"===Ee.browser.name&&Ee.browser.version>=31||"Chrome"===Ee.browser.name&&Ee.browser.version>=43||"Safari"===Ee.browser.name&&Ee.browser.version>=7)&&(r("Detected unsupported browser for HTML5 captions - using fallback"),Ee.usingTextTracks=!1),Ee.usingTextTracks){r("TextTracks supported");for(var i=0;i=7){r("Safari 7+ detected; removing track from DOM"),a=Ee.media.getElementsByTagName("track");for(var c=0;ct?t=0:t>Ee.media.duration&&(t=Ee.media.duration);try{Ee.media.currentTime=t.toFixed(1)}catch(s){}if(i(A.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.seekTo(t);break;case"vimeo":Ee.embed.api("seekTo",t.toFixed(0))}n&&ee(),T(Ee.media,"timeupdate"),Ee.media.seeking=!0}r("Seeking to "+Ee.media.currentTime+" seconds"),C(t)}function ae(){b(Ee.container,A.classes.playing,!Ee.media.paused),b(Ee.container,A.classes.stopped,Ee.media.paused)}function oe(e){var n=N.supportsFullScreen;e&&e.type===N.fullScreenEventName?Ee.isFullscreen=N.isFullScreen(Ee.container):n?(N.isFullScreen(Ee.container)?N.cancelFullScreen():N.requestFullScreen(Ee.container),Ee.isFullscreen=N.isFullScreen(Ee.container)):(Ee.isFullscreen=!Ee.isFullscreen,Ee.isFullscreen?(g(t,"keyup",ie),t.body.style.overflow="hidden"):(h(t,"keyup",ie),t.body.style.overflow="")),b(Ee.container,A.classes.fullscreen.active,Ee.isFullscreen),Ee.isFullscreen?Ee.container.setAttribute("tabindex","-1"):Ee.container.removeAttribute("tabindex"),R(Ee.isFullscreen),x(Ee.buttons.fullscreen,Ee.isFullscreen),A.fullscreen.hideControls&&ge(!0),T(Ee.container,Ee.isFullscreen?"enterfullscreen":"exitfullscreen")}function ie(e){27===(e.which||e.charCode||e.keyCode)&&Ee.isFullscreen&&oe()}function le(e){if("boolean"!=typeof e&&(e=!Ee.media.muted),x(Ee.buttons.mute,e),Ee.media.muted=e,i(A.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed[Ee.media.muted?"mute":"unMute"]();break;case"vimeo":Ee.embed.api("setVolume",Ee.media.muted?0:parseFloat(A.volume/10))}T(Ee.media,"volumechange")}}function ue(t){if("undefined"==typeof t&&(t=A.volume,A.storage.enabled&&E().supported&&(t=e.localStorage.getItem(A.storage.key))),isNaN(t)&&(t=A.volume),t>10&&(t=10),0>t&&(t=0),Ee.media.volume=parseFloat(t/10),A.volume=t,i(A.types.embed,Ee.type)){switch(Ee.type){case"youtube":Ee.embed.setVolume(100*Ee.media.volume);break;case"vimeo":Ee.embed.api("setVolume",Ee.media.volume)}T(Ee.media,"volumechange")}Ee.media.muted&&t>0&&le()}function ce(){var t=Ee.media.muted?0:10*Ee.media.volume;Ee.supported.full&&Ee.volume&&(Ee.volume.value=t),A.storage.enabled&&E().supported&&!isNaN(t)&&e.localStorage.setItem(A.storage.key,t),b(Ee.container,A.classes.muted,0===t),Ee.supported.full&&Ee.buttons.mute&&x(Ee.buttons.mute,0===t)}function pe(e){Ee.supported.full&&Ee.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ee.container.className.indexOf(A.classes.captions.active)),Ee.captionsEnabled=e,x(Ee.buttons.captions,Ee.captionsEnabled),b(Ee.container,A.classes.captions.active,Ee.captionsEnabled),T(Ee.container,Ee.captionsEnabled?"captionsenabled":"captionsdisabled"))}function de(e){var t="waiting"===e.type;clearTimeout(Ee.timers.loading),Ee.timers.loading=setTimeout(function(){b(Ee.container,A.classes.loading,t)},t?250:0)}function fe(e){var t=Ee.progress.played.bar,n=Ee.progress.played.text,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":r=_(Ee.media.currentTime,Ee.media.duration),"timeupdate"==e.type&&Ee.buttons.seek&&(Ee.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ee.progress.buffer.bar,n=Ee.progress.buffer.text,r=function(){var e=Ee.media.buffered;return e&&e.length?_(e.end(0),Ee.media.duration):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function me(e,t){if(t){isNaN(e)&&(e=0),Ee.secs=parseInt(e%60),Ee.mins=parseInt(e/60%60),Ee.hours=parseInt(e/60/60%60);var n=parseInt(Ee.media.duration/60/60%60)>0;Ee.secs=("0"+Ee.secs).slice(-2),Ee.mins=("0"+Ee.mins).slice(-2),t.innerHTML=(n?Ee.hours+":":"")+Ee.mins+":"+Ee.secs}}function ye(){if(Ee.supported.full){var e=Ee.media.duration||0;!Ee.duration&&A.displayDuration&&Ee.media.paused&&me(e,Ee.currentTime),Ee.duration&&me(e,Ee.duration),ve()}}function be(e){me(Ee.media.currentTime,Ee.currentTime),e&&"timeupdate"==e.type&&Ee.media.seeking||fe(e)}function ve(e){if(A.tooltips.seek&&!Ee.browser.touch){var t=Ee.progress.container.getBoundingClientRect(),n=0,r=A.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!v(Ee.progress.tooltip,r))return;n=Ee.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),me(Ee.media.duration/100*n,Ee.progress.tooltip),Ee.progress.tooltip.style.left=n+"%",i(["mouseenter","mouseleave"],e.type)&&b(Ee.progress.tooltip,r,"mouseenter"===e.type)}}function ge(t){Ee.isFullscreen&&(b(Ee.container,A.classes.hover,!0),e.clearTimeout(Ee.timers.hover),Ee.timers.hover=e.setTimeout(function(){Ee.controls.mouseover&&t!==!0||b(Ee.container,A.classes.hover,!1)},2e3))}function he(e){if("undefined"!=typeof e)return void ke(e);var t;switch(Ee.type){case"youtube":t=Ee.embed.getVideoUrl();break;case"vimeo":Ee.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ee.media.currentSrc}return t||""}function ke(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void r("Invalid source format",!0);if(ee(),"youtube"===Ee.type?(Ee.embed.destroy(),e.clearInterval(Ee.timer.buffering),e.clearInterval(Ee.timer.playing)):"video"===Ee.type&&Ee.videoContainer&&p(Ee.videoContainer),p(Ee.media),"type"in n&&(Ee.type=n.type,"video"===Ee.type)){var s=n.sources[0];"type"in s&&i(A.types.embed,s.type)&&(Ee.type=s.type)}switch(Ee.supported=I.supported(Ee.type),Ee.type){case"video":Ee.media=t.createElement("video");break;case"audio":Ee.media=t.createElement("audio");break;case"youtube":case"vimeo":Ee.media=t.createElement("div"),Ee.embedId=n.sources[0].src}d(Ee.container,Ee.media),i(A.types.html5,Ee.type)&&(A.crossorigin&&Ee.media.setAttribute("crossorigin",""),A.autoplay&&Ee.media.setAttribute("autoplay",""),"poster"in n&&Ee.media.setAttribute("poster",n.poster),A.loop&&Ee.media.setAttribute("loop","")),Ee.container.className=Ee.originalClassName,b(Ee.container,A.classes.fullscreen.active,Ee.isFullscreen),b(Ee.container,A.classes.captions.active,Ee.captionsEnabled),Y(),A.autoplay=n.autoplay||A.autoplay,i(A.types.html5,Ee.type)&&j("source",n.sources),z(),i(A.types.html5,Ee.type)&&("tracks"in n&&j("track",n.tracks),Ee.media.load(),Fe(),ye()),A.autoplay&&Z(),"title"in n&&(A.title=n.title,$())}function we(e){"video"===Ee.type&&Ee.media.setAttribute("poster",e)}function Te(){function n(){var e=Ee.media.paused;e?Z():ee();var t=Ee.buttons[e?"play":"pause"],n=Ee.buttons[e?"pause":"play"];if(n){var r=v(t,A.classes.tabFocus);setTimeout(function(){n.focus(),r&&(b(t,A.classes.tabFocus,!1),b(n,A.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 Ee.buttons){var r=Ee.buttons[n];b(r,A.classes.tabFocus,r===e)}}var s="IE"==Ee.browser.name?"change":"input";g(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),g(t.body,"click",function(){b(q("."+A.classes.tabFocus),A.classes.tabFocus,!1)});for(var a in Ee.buttons){var o=Ee.buttons[a];g(o,"blur",function(){b(o,"tab-focus",!1)})}k(Ee.buttons.play,"click",A.listeners.play,n),k(Ee.buttons.pause,"click",A.listeners.pause,n),k(Ee.buttons.restart,"click",A.listeners.restart,se),k(Ee.buttons.rewind,"click",A.listeners.rewind,ne),k(Ee.buttons.forward,"click",A.listeners.forward,re),k(Ee.buttons.seek,s,A.listeners.seek,se),k(Ee.volume,s,A.listeners.volume,function(){ue(Ee.volume.value)}),k(Ee.buttons.mute,"click",A.listeners.mute,le),k(Ee.buttons.fullscreen,"click",A.listeners.fullscreen,oe),N.supportsFullScreen&&g(t,N.fullScreenEventName,oe),g(Ee.buttons.captions,"click",pe),g(Ee.progress.container,"mouseenter mouseleave mousemove",ve);A.fullscreen.hideControls&&g(Ee.controls,"mouseenter mouseleave",function(){Ee.controls.mouseover="mouseenter"===event.type})}function xe(){g(Ee.media,"timeupdate seeking",be),g(Ee.media,"timeupdate",C),g(Ee.media,"durationchange loadedmetadata",ye),g(Ee.media,"ended",function(){"video"===Ee.type&&(Ee.captionsContainer.innerHTML=""),ae()}),g(Ee.media,"progress playing",fe),g(Ee.media,"volumechange",ce),g(Ee.media,"play pause",ae),g(Ee.media,"waiting canplay seeked",de),A.click&&g(Ee.media,"click",function(){Ee.media.paused?Z():Ee.media.ended?(se(),Z()):ee()}),A.fullscreen.hideControls&&g(Ee.media,"mousemove",ge),g(Ee.media,A.events.join(" "),function(e){T(Ee.container,e.type)})}function _e(){if(!Ee.init)return null;if(Ee.container.setAttribute("class",y(A.selectors.container)),Ee.init=!1,p(q(A.selectors.controls.wrapper)),"youtube"===Ee.type)return void Ee.embed.destroy();"video"===Ee.type&&(p(q(A.selectors.captions)),c(Ee.videoContainer)),W(!0);var e=Ee.media.cloneNode(!0);Ee.media.parentNode.replaceChild(e,Ee.media)}function Ce(){if(Ee.init)return null;N=F(),Ee.browser=s(),Ee.media=Ee.container.querySelectorAll("audio, video, div")[0],Ee.originalClassName=Ee.container.className;var e=Ee.media.tagName.toLowerCase();if("div"===e?(Ee.type=Ee.media.getAttribute("data-type"),Ee.embedId=Ee.media.getAttribute("data-video-id"),Ee.media.removeAttribute("data-type"),Ee.media.removeAttribute("data-video-id")):(Ee.type=e,A.crossorigin=null!==Ee.media.getAttribute("crossorigin"),A.autoplay=A.autoplay||null!==Ee.media.getAttribute("autoplay"),A.loop=A.loop||null!==Ee.media.getAttribute("loop")),Ee.supported=I.supported(Ee.type),Y(),!Ee.supported.basic)return!1;if(r(Ee.browser.name+" "+Ee.browser.version),z(),i(A.types.html5,Ee.type)){if(!Ee.supported.full)return void(Ee.init=!0);Fe(),$()}Ee.init=!0}function Fe(){if(!Ee.supported.full)return r("No full support for this media type ("+Ee.type+")",!0),p(q(A.selectors.controls.wrapper)),void W(!0);var e=!V(A.selectors.controls.wrapper).length;e&&B(),D()&&(e&&Te(),xe(),W(),Q(),G(),ue(),ce(),be(),ae())}var Ee=this;return Ee.container=w,Ee.timers={},Ce(),Ee.init?{media:Ee.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:he,poster:we,setVolume:ue,togglePlay:te,toggleMute:le,toggleCaptions:pe,toggleFullscreen:oe,isFullscreen:function(){return Ee.isFullscreen||!1},support:function(e){return a(Ee,e)},destroy:_e,restore:Ce}:{}}var N,A,I={},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,click:!0,tooltips:{controls:!1,seek:!0},displayDuration:!0,iconPrefix:"icon",selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"] -};return I.supported=function(e){var n,r,a=s(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":n=u,r=n&&!o&&!i;break;case"audio":n=l,r=n&&!o;break;case"vimeo":case"youtube":n=!0,r=!o&&!i;break;default:n=l&&u,r=n&&!o}return{basic:n,full:r}},I.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(P.selectors.container)),A=C(P,n),!A.enabled||!I.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=new S(a);a.plyr=Object.keys(o).length?o:!1,T(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},I}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file +!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);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(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 p(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function d(e,n,r){var s=t.createElement(e);p(s,r),c(n,s)}function f(e){return e.replace(".","")}function m(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,t,n){e&&h(e,t,n,!0)}function v(e,t,n){e&&h(e,t,n,!1)}function g(e,t,n,r){b(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function h(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){var s=e[r];for(var a in s)s[a]&&s[a].constructor&&s[a].constructor===Object?(t[a]=t[a]||{},x(t[a],s[a])):t[a]=s[a]}return t}}function _(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},n="webkit moz o ms khtml".split(" ");if("undefined"!=typeof t.cancelFullScreen)e.supportsFullScreen=!0;else for(var r=0,s=n.length;s>r;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 C(){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 F(h,x){function F(t,n){x.debug&&e.console&&console[n?"warn":"log"](t)}function N(){var e=['
','
','','','',"0% "+x.i18n.played,"",'',"0% "+x.i18n.buffered,""];return x.tooltips.seek&&e.push('00:00'),e.push("
",''),a(x.controls,"restart")&&e.push('"),a(x.controls,"rewind")&&e.push('"),a(x.controls,"play")&&e.push('",'"),a(x.controls,"fast-forward")&&e.push('"),a(x.controls,"current-time")&&e.push('',''+x.i18n.currentTime+"",'00:00',""),a(x.controls,"duration")&&e.push('',''+x.i18n.duration+"",'00:00',""),e.push("",''),a(x.controls,"mute")&&e.push('"),a(x.controls,"volume")&&e.push('",''),a(x.controls,"captions")&&e.push('"),a(x.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function I(){if(Se.supported.full&&("audio"!=Se.type||x.fullscreen.allowAudio)&&x.fullscreen.enabled){var e=E.supportsFullScreen;e||x.fullscreen.fallback&&!j()?(F((e?"Native":"Fallback")+" fullscreen enabled"),m(Se.container,x.classes.fullscreen.enabled,!0)):F("Fullscreen not supported and fallback disabled"),w(Se.buttons.fullscreen,!1),B(),x.fullscreen.hideControls&&m(Se.container,x.classes.fullscreen.hideControls,!0)}}function P(){if("video"===Se.type){R(x.selectors.captions)||Se.videoContainer.insertAdjacentHTML("afterbegin",'
'),Se.captionsContainer=R(x.selectors.captions).querySelector("span"),Se.usingTextTracks=!1,Se.media.textTracks&&(Se.usingTextTracks=!0);for(var e,t="",n=Se.media.childNodes,r=0;r=10||"Firefox"===Se.browser.name&&Se.browser.version>=31)&&(F("Detected unsupported browser for HTML5 captions - using fallback"),Se.usingTextTracks=!1),Se.usingTextTracks){F("TextTracks supported");for(var o=0;oSe.captions.length-1){Se.subcount=Se.captions.length-1;break}if(Se.media.currentTime.toFixed(1)>=O(Se.captions[Se.subcount][0])&&Se.media.currentTime.toFixed(1)<=V(Se.captions[Se.subcount][0])){Se.currentCaption=Se.captions[Se.subcount][1];var t=Se.currentCaption.trim();Se.captionsContainer.innerHTML!=t&&(Se.captionsContainer.innerHTML="",Se.captionsContainer.innerHTML=t)}else Se.captionsContainer.innerHTML=""}}function L(){Se.buttons.captions&&(m(Se.container,x.classes.captions.enabled,!0),x.captions.defaultActive&&(m(Se.container,x.classes.captions.active,!0),w(Se.buttons.captions,!0)))}function O(e){var t=[];return t=e.split(" --> "),H(t[0])}function V(e){var t=[];return t=e.split(" --> "),H(t[1])}function H(e){if(null===e||void 0===e)return 0;var t,n=[],r=[];return n=e.split(","),r=n[0].split(":"),t=Math.floor(60*r[0]*60)+Math.floor(60*r[1])+Math.floor(r[2])}function q(e){return Se.container.querySelectorAll(e)}function R(e){return q(e)[0]}function j(){try{return e.self!==e.top}catch(t){return!0}}function B(){function e(e){9===e.which&&Se.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=q("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];b(Se.container,"keydown",e)}function D(e,t){if("string"==typeof t)d(e,Se.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,Se.media,t[n])}function Y(){var e=x.html;F("Injecting custom controls"),e||(e=N()),e=o(e,"{seektime}",x.seekTime),e=o(e,"{id}",Math.floor(1e4*Math.random()));var n;if(null!==x.selectors.controls.container&&(n=x.selectors.controls.container,"string"==typeof selector&&(n=t.querySelector(n))),n instanceof HTMLElement||(n=Se.container),n.insertAdjacentHTML("beforeend",e),x.tooltips.controls)for(var r=q(x.selectors.labels+" ."+x.classes.hidden),s=r.length-1;s>=0;s--){var a=r[s];m(a,x.classes.hidden,!1),m(a,x.classes.tooltip,!0)}}function W(){try{return Se.controls=R(x.selectors.controls.wrapper),Se.buttons={},Se.buttons.seek=R(x.selectors.buttons.seek),Se.buttons.play=R(x.selectors.buttons.play),Se.buttons.pause=R(x.selectors.buttons.pause),Se.buttons.restart=R(x.selectors.buttons.restart),Se.buttons.rewind=R(x.selectors.buttons.rewind),Se.buttons.forward=R(x.selectors.buttons.forward),Se.buttons.fullscreen=R(x.selectors.buttons.fullscreen),Se.buttons.volume=R(x.selectors.buttons.volume),Se.buttons.mute=R(x.selectors.buttons.mute),Se.buttons.captions=R(x.selectors.buttons.captions),Se.checkboxes=q('[type="checkbox"]'),Se.progress={},Se.progress.container=R(x.selectors.progress.container),Se.progress.buffer={},Se.progress.buffer.bar=R(x.selectors.progress.buffer),Se.progress.buffer.text=Se.progress.buffer.bar&&Se.progress.buffer.bar.getElementsByTagName("span")[0],Se.progress.played={},Se.progress.played.bar=R(x.selectors.progress.played),Se.progress.played.text=Se.progress.played.bar&&Se.progress.played.bar.getElementsByTagName("span")[0],Se.progress.tooltip=Se.progress.container&&Se.progress.container.querySelector("."+x.classes.tooltip),Se.volume=R(x.selectors.buttons.volume),Se.duration=R(x.selectors.duration),Se.currentTime=R(x.selectors.currentTime),Se.seekTime=q(x.selectors.seekTime),!0}catch(e){return F("It looks like there is a problem with your controls html",!0),z(!0),!1}}function $(){m(Se.container,A.selectors.container.replace(".",""),Se.supported.full)}function z(e){e?Se.media.setAttribute("controls",""):Se.media.removeAttribute("controls")}function K(e){var t=x.i18n.play;"undefined"!=typeof x.title&&x.title.length&&(t+=", "+x.title),Se.supported.full&&Se.buttons.play&&Se.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",x.i18n.frameTitle.replace("{title}",x.title))}function U(){if(!Se.media)return F("No audio or video element found",!0),!1;if(Se.supported.full&&(m(Se.container,x.classes.type.replace("{0}",Se.type),!0),m(Se.container,x.classes.stopped,x.autoplay),m(Se.container,x.classes.isIos,Se.browser.ios),m(Se.container,x.classes.isTouch,Se.browser.touch),"video"===Se.type)){var e=t.createElement("div");e.setAttribute("class",x.classes.videoWrapper),i(Se.media,e),Se.videoContainer=e}a(x.types.embed,Se.type)?(X(),Se.embedId=null):x.autoplay&&Z()}function X(){for(var n=t.createElement("div"),r=Se.embedId,a=Se.type+"-"+Math.floor(1e4*Math.random()),o=q('[id^="'+Se.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(m(Se.media,x.classes.videoWrapper,!0),m(Se.media,x.classes.embedWrapper,!0),"youtube"===Se.type)Se.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?G(r,n):(s(x.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){G(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Se.type){var l=t.createElement("iframe");l.loaded=!1,b(l,"load",function(){l.loaded=!0}),p(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Se.supported.full?(n.appendChild(l),Se.media.appendChild(n)):Se.media.appendChild(l),"$f"in e||s(x.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),Q.call(l))},50)}}function J(){Ee(),K(R("iframe"))}function G(t,n){"timer"in Se||(Se.timer={}),Se.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Se.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:x.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Se.media.play=function(){n.playVideo(),Se.media.paused=!1},Se.media.pause=function(){n.pauseVideo(),Se.media.paused=!0},Se.media.stop=function(){n.stopVideo(),Se.media.paused=!0},Se.media.duration=n.getDuration(),Se.media.paused=!0,Se.media.currentTime=n.getCurrentTime(),Se.media.muted=n.isMuted(),k(Se.media,"timeupdate"),e.clearInterval(Se.timer.buffering),Se.timer.buffering=e.setInterval(function(){Se.media.buffered=n.getVideoLoadedFraction(),k(Se.media,"progress"),1===Se.media.buffered&&(e.clearInterval(Se.timer.buffering),k(Se.media,"canplaythrough"))},200),J(),be()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Se.timer.playing),t.data){case 0:Se.media.paused=!0,k(Se.media,"ended");break;case 1:Se.media.paused=!1,Se.media.seeking=!1,k(Se.media,"play"),k(Se.media,"playing"),Se.timer.playing=e.setInterval(function(){Se.media.currentTime=n.getCurrentTime(),k(Se.media,"timeupdate")},100);break;case 2:Se.media.paused=!0,k(Se.media,"pause")}}}})}function Q(){Se.embed=$f(this),Se.embed.addEvent("ready",function(){Se.media.play=function(){Se.embed.api("play"),Se.media.paused=!1},Se.media.pause=function(){Se.embed.api("pause"),Se.media.paused=!0},Se.media.stop=function(){Se.embed.api("stop"),Se.media.paused=!0},Se.media.paused=!0,Se.media.currentTime=0,J(),Se.embed.api("getCurrentTime",function(e){Se.media.currentTime=e,k(Se.media,"timeupdate")}),Se.embed.api("getDuration",function(e){Se.media.duration=e,be()}),Se.embed.addEvent("play",function(){Se.media.paused=!1,k(Se.media,"play"),k(Se.media,"playing")}),Se.embed.addEvent("pause",function(){Se.media.paused=!0,k(Se.media,"pause")}),Se.embed.addEvent("playProgress",function(e){Se.media.seeking=!1,Se.media.currentTime=e.seconds,k(Se.media,"timeupdate")}),Se.embed.addEvent("loadProgress",function(e){Se.media.buffered=e.percent,k(Se.media,"progress"),1===parseInt(e.percent)&&k(Se.media,"canplaythrough")}),Se.embed.addEvent("finish",function(){Se.media.paused=!0,k(Se.media,"ended")})})}function Z(){"play"in Se.media&&Se.media.play()}function ee(){"pause"in Se.media&&Se.media.pause()}function te(e){e===!0?Z():e===!1?ee():Se.media[Se.media.paused?"play":"pause"]()}function ne(e){"number"!=typeof e&&(e=x.seekTime),se(Se.media.currentTime-e)}function re(e){"number"!=typeof e&&(e=x.seekTime),se(Se.media.currentTime+e)}function se(e){var t=0,n=Se.media.paused,r=ae();"number"==typeof e?t=e:"object"!=typeof e||"input"!==e.type&&"change"!==e.type||(t=e.target.value/e.target.max*r),0>t?t=0:t>r&&(t=r);try{Se.media.currentTime=t.toFixed(1)}catch(s){}if(a(x.types.embed,Se.type)){switch(Se.type){case"youtube":Se.embed.seekTo(t);break;case"vimeo":Se.embed.api("seekTo",t.toFixed(0))}n&&ee(),k(Se.media,"timeupdate"),Se.media.seeking=!0}F("Seeking to "+Se.media.currentTime+" seconds"),M(t)}function ae(){var e=parseInt(x.duration);return isNaN(e)?Se.media.duration:e}function oe(){m(Se.container,x.classes.playing,!Se.media.paused),m(Se.container,x.classes.stopped,Se.media.paused)}function ie(e){var n=E.supportsFullScreen;e&&e.type===E.fullScreenEventName?Se.isFullscreen=E.isFullScreen(Se.container):n?(E.isFullScreen(Se.container)?E.cancelFullScreen():E.requestFullScreen(Se.container),Se.isFullscreen=E.isFullScreen(Se.container)):(Se.isFullscreen=!Se.isFullscreen,Se.isFullscreen?(b(t,"keyup",le),t.body.style.overflow="hidden"):(v(t,"keyup",le),t.body.style.overflow="")),m(Se.container,x.classes.fullscreen.active,Se.isFullscreen),Se.isFullscreen?Se.container.setAttribute("tabindex","-1"):Se.container.removeAttribute("tabindex"),B(Se.isFullscreen),w(Se.buttons.fullscreen,Se.isFullscreen),x.fullscreen.hideControls&&he(!0),k(Se.container,Se.isFullscreen?"enterfullscreen":"exitfullscreen")}function le(e){27===(e.which||e.charCode||e.keyCode)&&Se.isFullscreen&&ie()}function ue(e){if("boolean"!=typeof e&&(e=!Se.media.muted),w(Se.buttons.mute,e),Se.media.muted=e,a(x.types.embed,Se.type)){switch(Se.type){case"youtube":Se.embed[Se.media.muted?"mute":"unMute"]();break;case"vimeo":Se.embed.api("setVolume",Se.media.muted?0:parseFloat(x.volume/10))}k(Se.media,"volumechange")}}function ce(t){if("undefined"==typeof t&&(t=x.volume,x.storage.enabled&&C().supported&&(t=e.localStorage.getItem(x.storage.key))),isNaN(t)&&(t=x.volume),t>10&&(t=10),0>t&&(t=0),Se.media.volume=parseFloat(t/10),x.volume=t,a(x.types.embed,Se.type)){switch(Se.type){case"youtube":Se.embed.setVolume(100*Se.media.volume);break;case"vimeo":Se.embed.api("setVolume",Se.media.volume)}k(Se.media,"volumechange")}Se.media.muted&&t>0&&ue()}function pe(){var t=Se.media.muted?0:10*Se.media.volume;Se.supported.full&&Se.volume&&(Se.volume.value=t),x.storage.enabled&&C().supported&&!isNaN(t)&&e.localStorage.setItem(x.storage.key,t),m(Se.container,x.classes.muted,0===t),Se.supported.full&&Se.buttons.mute&&w(Se.buttons.mute,0===t)}function de(e){Se.supported.full&&Se.buttons.captions&&("boolean"!=typeof e&&(e=-1===Se.container.className.indexOf(x.classes.captions.active)),Se.captionsEnabled=e,w(Se.buttons.captions,Se.captionsEnabled),m(Se.container,x.classes.captions.active,Se.captionsEnabled),k(Se.container,Se.captionsEnabled?"captionsenabled":"captionsdisabled"))}function fe(e){var t="waiting"===e.type;clearTimeout(Se.timers.loading),Se.timers.loading=setTimeout(function(){m(Se.container,x.classes.loading,t)},t?250:0)}function me(e){var t=Se.progress.played.bar,n=Se.progress.played.text,r=0,s=ae();if(e)switch(e.type){case"timeupdate":case"seeking":r=T(Se.media.currentTime,s),"timeupdate"==e.type&&Se.buttons.seek&&(Se.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Se.progress.buffer.bar,n=Se.progress.buffer.text,r=function(){var e=Se.media.buffered;return e&&e.length?T(e.end(0),s):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function ye(e,t){if(t){isNaN(e)&&(e=0),Se.secs=parseInt(e%60),Se.mins=parseInt(e/60%60),Se.hours=parseInt(e/60/60%60);var n=parseInt(ae()/60/60%60)>0;Se.secs=("0"+Se.secs).slice(-2),Se.mins=("0"+Se.mins).slice(-2),t.innerHTML=(n?Se.hours+":":"")+Se.mins+":"+Se.secs}}function be(){if(Se.supported.full){var e=ae()||0;!Se.duration&&x.displayDuration&&Se.media.paused&&ye(e,Se.currentTime),Se.duration&&ye(e,Se.duration),ge()}}function ve(e){ye(Se.media.currentTime,Se.currentTime),e&&"timeupdate"==e.type&&Se.media.seeking||me(e)}function ge(e){if(x.tooltips.seek&&!Se.browser.touch){var t=Se.progress.container.getBoundingClientRect(),n=0,r=x.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!y(Se.progress.tooltip,r))return;n=Se.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),ye(ae()/100*n,Se.progress.tooltip),Se.progress.tooltip.style.left=n+"%",e&&a(["mouseenter","mouseleave"],e.type)&&m(Se.progress.tooltip,r,"mouseenter"===e.type)}}function he(t){Se.isFullscreen&&(m(Se.container,x.classes.hover,!0),e.clearTimeout(Se.timers.hover),Se.timers.hover=e.setTimeout(function(){Se.controls.mouseover&&t!==!0||m(Se.container,x.classes.hover,!1)},2e3))}function ke(e){if("undefined"!=typeof e)return void we(e);var t;switch(Se.type){case"youtube":t=Se.embed.getVideoUrl();break;case"vimeo":Se.embed.api("getVideoUrl",function(e){t=e});break;default:t=Se.media.currentSrc}return t||""}function we(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void F("Invalid source format",!0);if(ee(),"youtube"===Se.type?(Se.embed.destroy(),e.clearInterval(Se.timer.buffering),e.clearInterval(Se.timer.playing)):"video"===Se.type&&Se.videoContainer&&u(Se.videoContainer),u(Se.media),"type"in n&&(Se.type=n.type,"video"===Se.type)){var r=n.sources[0];"type"in r&&a(x.types.embed,r.type)&&(Se.type=r.type)}switch(Se.supported=S.supported(Se.type),Se.type){case"video":Se.media=t.createElement("video");break;case"audio":Se.media=t.createElement("audio");break;case"youtube":case"vimeo":Se.media=t.createElement("div"),Se.embedId=n.sources[0].src}c(Se.container,Se.media),a(x.types.html5,Se.type)&&(x.crossorigin&&Se.media.setAttribute("crossorigin",""),x.autoplay&&Se.media.setAttribute("autoplay",""),"poster"in n&&Se.media.setAttribute("poster",n.poster),x.loop&&Se.media.setAttribute("loop","")),Se.container.className=Se.originalClassName,m(Se.container,x.classes.fullscreen.active,Se.isFullscreen),m(Se.container,x.classes.captions.active,Se.captionsEnabled),$(),x.autoplay=n.autoplay||x.autoplay,a(x.types.html5,Se.type)&&D("source",n.sources),U(),a(x.types.html5,Se.type)&&("tracks"in n&&D("track",n.tracks),Se.media.load(),Ee(),be()),x.autoplay&&Z(),"title"in n&&(x.title=n.title,K()),Se.container.plyr.media=Se.media}function Te(e){"video"===Se.type&&Se.media.setAttribute("poster",e)}function xe(){function n(){var e=Se.media.paused;e?Z():ee();var t=Se.buttons[e?"play":"pause"],n=Se.buttons[e?"pause":"play"];if(n){var r=y(t,x.classes.tabFocus);setTimeout(function(){n.focus(),r&&(m(t,x.classes.tabFocus,!1),m(n,x.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 Se.buttons){var r=Se.buttons[n];m(r,x.classes.tabFocus,r===e)}}var s="IE"==Se.browser.name?"change":"input";b(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),b(t.body,"click",function(){m(R("."+x.classes.tabFocus),x.classes.tabFocus,!1)});for(var a in Se.buttons){var o=Se.buttons[a];b(o,"blur",function(){m(o,"tab-focus",!1)})}g(Se.buttons.play,"click",x.listeners.play,n),g(Se.buttons.pause,"click",x.listeners.pause,n),g(Se.buttons.restart,"click",x.listeners.restart,se),g(Se.buttons.rewind,"click",x.listeners.rewind,ne),g(Se.buttons.forward,"click",x.listeners.forward,re),g(Se.buttons.seek,s,x.listeners.seek,se),g(Se.volume,s,x.listeners.volume,function(){ce(Se.volume.value)}),g(Se.buttons.mute,"click",x.listeners.mute,ue),g(Se.buttons.fullscreen,"click",x.listeners.fullscreen,ie),E.supportsFullScreen&&b(t,E.fullScreenEventName,ie),b(Se.buttons.captions,"click",de),b(Se.progress.container,"mouseenter mouseleave mousemove",ge);x.fullscreen.hideControls&&b(Se.controls,"mouseenter mouseleave",function(){Se.controls.mouseover="mouseenter"===event.type})}function _e(){b(Se.media,"timeupdate seeking",ve),b(Se.media,"timeupdate",M),b(Se.media,"durationchange loadedmetadata",be),b(Se.media,"ended",function(){"video"===Se.type&&(Se.captionsContainer.innerHTML=""),oe()}),b(Se.media,"progress playing",me),b(Se.media,"volumechange",pe),b(Se.media,"play pause",oe),b(Se.media,"waiting canplay seeked",fe),x.click&&b(Se.media,"click",function(){Se.media.paused?Z():Se.media.ended?(se(),Z()):ee()}),x.fullscreen.hideControls&&b(Se.media,"mousemove",he),b(Se.media,x.events.join(" "),function(e){k(Se.container,e.type)})}function Ce(){if(!Se.init)return null;if(Se.container.setAttribute("class",f(x.selectors.container)),Se.init=!1,u(R(x.selectors.controls.wrapper)),"youtube"===Se.type)return void Se.embed.destroy();"video"===Se.type&&(u(R(x.selectors.captions)),l(Se.videoContainer)),z(!0);var e=Se.media.cloneNode(!0);Se.media.parentNode.replaceChild(e,Se.media)}function Fe(){if(Se.init)return null;E=_(),Se.browser=n(),Se.media=Se.container.querySelectorAll("audio, video, div")[0],Se.originalClassName=Se.container.className;var e=Se.media.tagName.toLowerCase();if("div"===e?(Se.type=Se.media.getAttribute("data-type"),Se.embedId=Se.media.getAttribute("data-video-id"),Se.media.removeAttribute("data-type"),Se.media.removeAttribute("data-video-id")):(Se.type=e,x.crossorigin=null!==Se.media.getAttribute("crossorigin"),x.autoplay=x.autoplay||null!==Se.media.getAttribute("autoplay"),x.loop=x.loop||null!==Se.media.getAttribute("loop")),Se.supported=S.supported(Se.type),$(),!Se.supported.basic)return!1;if(F(Se.browser.name+" "+Se.browser.version),U(),a(x.types.html5,Se.type)){if(!Se.supported.full)return void(Se.init=!0);Ee(),K()}Se.init=!0}function Ee(){if(!Se.supported.full)return F("No full support for this media type ("+Se.type+")",!0),u(R(x.selectors.controls.wrapper)),void z(!0);var e=!q(x.selectors.controls.wrapper).length;e&&Y(),W()&&(e&&xe(),_e(),z(),I(),P(),ce(),pe(),ve(),oe(),be())}var Se=this;return Se.container=h,Se.timers={},F(x),Fe(),Se.init?{media:Se.media,play:Z,pause:ee,restart:se,rewind:ne,forward:re,seek:se,source:ke,poster:Te,setVolume:ce,togglePlay:te,toggleMute:ue,toggleCaptions:de,toggleFullscreen:ie,isFullscreen:function(){return Se.isFullscreen||!1},support:function(e){return r(Se,e)},destroy:Ce,restore:Fe}:{}}var E,S={},A={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,duration:null,displayDuration:!0,iconPrefix:"icon",click:!0,tooltips:{controls:!1,seek:!0},selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"] +};return S.supported=function(e){var r,s,a=n(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType;switch(e){case"video":r=u,s=r&&!o&&!i;break;case"audio":r=l,s=r&&!o;break;case"vimeo":case"youtube":r=!0,s=!o&&!i;break;default:r=l&&u,s=r&&!o}return{basic:r,full:s}},S.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(A.selectors.container)),!S.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=x(A,n,JSON.parse(a.getAttribute("data-plyr")));if(!o.enabled)return;var i=new F(a,o);a.plyr=Object.keys(i).length?i:!1,k(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},S}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 5eb8278e..7135b929 100644 --- a/docs/index.html +++ b/docs/index.html @@ -58,7 +58,7 @@ - + Download diff --git a/src/js/plyr.js b/src/js/plyr.js index fce746db..d04972a8 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -26,7 +26,7 @@ /*global YT,$f*/ // Globals - var fullscreen, config, api = {}; + var fullscreen, api = {}; // Default config var defaults = { @@ -36,13 +36,14 @@ loop: false, seekTime: 10, volume: 5, + duration: null, + displayDuration: true, + iconPrefix: 'icon', click: true, tooltips: { controls: false, seek: true }, - displayDuration: true, - iconPrefix: 'icon', selectors: { container: '.plyr', controls: { @@ -155,157 +156,6 @@ events: ['ended', 'progress', 'stalled', 'playing', 'waiting', 'canplay', 'canplaythrough', 'loadstart', 'loadeddata', 'loadedmetadata', 'timeupdate', 'volumechange', 'play', 'pause', 'error', 'seeking', 'emptied'] }; - // Build the default HTML - function _buildControls() { - // Open and add the progress and seek elements - var html = [ - '
', - '
', - '', - '', - '', - '0% ' + config.i18n.played, - '', - '', - '0% ' + config.i18n.buffered, - '']; - - // Seek tooltip - if (config.tooltips.seek) { - html.push('--:--'); - } - - // Close progress - html.push('
', - ''); - - // Restart button - if (_inArray(config.controls, 'restart')) { - html.push( - '' - ); - } - - // Rewind button - if (_inArray(config.controls, 'rewind')) { - html.push( - '' - ); - } - - // Play/pause button - if (_inArray(config.controls, 'play')) { - html.push( - '', - '' - ); - } - - // Fast forward button - if (_inArray(config.controls, 'fast-forward')) { - html.push( - '' - ); - } - - // Media current time display - if (_inArray(config.controls, 'current-time')) { - html.push( - '', - '' + config.i18n.currentTime + '', - '00:00', - '' - ); - } - - // Media duration display - if (_inArray(config.controls, 'duration')) { - html.push( - '', - '' + config.i18n.duration + '', - '--:--', - '' - ); - } - - // Close left controls - html.push( - '', - '' - ); - - // Toggle mute button - if (_inArray(config.controls, 'mute')) { - html.push( - '' - ); - } - - // Volume range control - if (_inArray(config.controls, 'volume')) { - html.push( - '', - '' - ); - } - - // Toggle captions button - if (_inArray(config.controls, 'captions')) { - html.push( - '' - ); - } - - // Toggle fullscreen button - if (_inArray(config.controls, 'fullscreen')) { - html.push( - '' - ); - } - - // Close everything - html.push( - '', - '
' - ); - - return html.join(''); - } - - // Debugging - function _log(text, warn) { - if (config.debug && window.console) { - console[(warn ? 'warn' : 'log')](text); - } - } - // Credits: http://paypal.github.io/accessible-html5-video-player/ // Unfortunately, due to mixed support, UA sniffing is required function _browserSniff() { @@ -623,19 +473,42 @@ return ((current / max) * 100).toFixed(2); } - // Deep extend/merge two Objects + // Deep extend/merge destination object with N more objects // http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/ // Removed call to arguments.callee (used explicit function name instead) - function _extend(destination, source) { - for (var property in source) { - if (source[property] && source[property].constructor && source[property].constructor === Object) { - destination[property] = destination[property] || {}; - _extend(destination[property], source[property]); - } - else { - destination[property] = source[property]; + function _extend() { + // Get arguments + var objects = arguments; + + // Bail if nothing to merge + if(!objects.length) { + return; + } + + // Return first if specified but nothing to merge + if(objects.lenth == 1) { + return objects[0]; + } + + // First object is the destination + var destination = Array.prototype.shift.call(objects), + length = objects.length; + + // Loop through all objects to merge + for (var i = 0; i < length; i++) { + var source = objects[i]; + + for (var property in source) { + if (source[property] && source[property].constructor && source[property].constructor === Object) { + destination[property] = destination[property] || {}; + _extend(destination[property], source[property]); + } + else { + destination[property] = source[property]; + } } } + return destination; } @@ -744,11 +617,360 @@ } // Player instance - function Plyr(container) { + function Plyr(container, config) { var plyr = this; plyr.container = container; plyr.timers = {}; + // Log config options + _log(config); + + // Debugging + function _log(text, warn) { + if (config.debug && window.console) { + console[(warn ? 'warn' : 'log')](text); + } + } + + // Build the default HTML + function _buildControls() { + // Open and add the progress and seek elements + var html = [ + '
', + '
', + '', + '', + '', + '0% ' + config.i18n.played, + '', + '', + '0% ' + config.i18n.buffered, + '']; + + // Seek tooltip + if (config.tooltips.seek) { + html.push('00:00'); + } + + // Close progress + html.push('
', + ''); + + // Restart button + if (_inArray(config.controls, 'restart')) { + html.push( + '' + ); + } + + // Rewind button + if (_inArray(config.controls, 'rewind')) { + html.push( + '' + ); + } + + // Play/pause button + if (_inArray(config.controls, 'play')) { + html.push( + '', + '' + ); + } + + // Fast forward button + if (_inArray(config.controls, 'fast-forward')) { + html.push( + '' + ); + } + + // Media current time display + if (_inArray(config.controls, 'current-time')) { + html.push( + '', + '' + config.i18n.currentTime + '', + '00:00', + '' + ); + } + + // Media duration display + if (_inArray(config.controls, 'duration')) { + html.push( + '', + '' + config.i18n.duration + '', + '00:00', + '' + ); + } + + // Close left controls + html.push( + '', + '' + ); + + // Toggle mute button + if (_inArray(config.controls, 'mute')) { + html.push( + '' + ); + } + + // Volume range control + if (_inArray(config.controls, 'volume')) { + html.push( + '', + '' + ); + } + + // Toggle captions button + if (_inArray(config.controls, 'captions')) { + html.push( + '' + ); + } + + // Toggle fullscreen button + if (_inArray(config.controls, 'fullscreen')) { + html.push( + '' + ); + } + + // Close everything + html.push( + '', + '
' + ); + + return html.join(''); + } + + // Setup fullscreen + function _setupFullscreen() { + if (!plyr.supported.full) { + return; + } + + if ((plyr.type != 'audio' || config.fullscreen.allowAudio) && config.fullscreen.enabled) { + // Check for native support + var nativeSupport = fullscreen.supportsFullScreen; + + if (nativeSupport || (config.fullscreen.fallback && !_inFrame())) { + _log((nativeSupport ? 'Native' : 'Fallback') + ' fullscreen enabled'); + + // Add styling hook + _toggleClass(plyr.container, config.classes.fullscreen.enabled, true); + } + else { + _log('Fullscreen not supported and fallback disabled'); + } + + // Toggle state + _toggleState(plyr.buttons.fullscreen, false); + + // Setup focus trap + _focusTrap(); + + // Set control hide class hook + if (config.fullscreen.hideControls) { + _toggleClass(plyr.container, config.classes.fullscreen.hideControls, true); + } + } + } + + // Setup captions + function _setupCaptions() { + if (plyr.type !== 'video') { + return; + } + + // Inject the container + if (!_getElement(config.selectors.captions)) { + plyr.videoContainer.insertAdjacentHTML('afterbegin', '
'); + } + + // Cache selector + plyr.captionsContainer = _getElement(config.selectors.captions).querySelector('span'); + + // Determine if HTML5 textTracks is supported + plyr.usingTextTracks = false; + if (plyr.media.textTracks) { + plyr.usingTextTracks = true; + } + + // Get URL of caption file if exists + var captionSrc = '', + kind, + children = plyr.media.childNodes; + + for (var i = 0; i < children.length; i++) { + if (children[i].nodeName.toLowerCase() === 'track') { + kind = children[i].kind; + if (kind === 'captions' || kind === 'subtitles') { + captionSrc = children[i].getAttribute('src'); + } + } + } + + // Record if caption file exists or not + plyr.captionExists = true; + if (captionSrc === '') { + plyr.captionExists = false; + _log('No caption track found'); + } + else { + _log('Caption track found; URI: ' + captionSrc); + } + + // If no caption file exists, hide container for caption text + if (!plyr.captionExists) { + _toggleClass(plyr.container, config.classes.captions.enabled); + } + // If caption file exists, process captions + else { + // Turn off native caption rendering to avoid double captions + // This doesn't seem to work in Safari 7+, so the elements are removed from the dom below + var tracks = plyr.media.textTracks; + for (var x = 0; x < tracks.length; x++) { + tracks[x].mode = 'hidden'; + } + + // Enable UI + _showCaptions(plyr); + + // Disable unsupported browsers than report false positive + if ((plyr.browser.name === 'IE' && plyr.browser.version >= 10) || + (plyr.browser.name === 'Firefox' && plyr.browser.version >= 31)) { + // || + //(plyr.browser.name === 'Chrome' && plyr.browser.version >= 43) || + //(plyr.browser.name === 'Safari' && plyr.browser.version >= 7)) { + + // Debugging + _log('Detected unsupported browser for HTML5 captions - using fallback'); + + // Set to false so skips to 'manual' captioning + plyr.usingTextTracks = false; + } + + // Rendering caption tracks + // Native support required - http://caniuse.com/webvtt + if (plyr.usingTextTracks) { + _log('TextTracks supported'); + + for (var y = 0; y < tracks.length; y++) { + var track = tracks[y]; + + if (track.kind === 'captions' || track.kind === 'subtitles') { + _on(track, 'cuechange', function() { + console.log('cuechange'); + console.log(this); + + // Clear container + plyr.captionsContainer.innerHTML = ''; + + // Display a cue, if there is one + if (this.activeCues[0] && 'text' in this.activeCues[0]) { + console.log(this.activeCues[0].getCueAsHTML()); + + plyr.captionsContainer.appendChild(this.activeCues[0].getCueAsHTML()); + + // Force redraw + var redraw = plyr.captionsContainer.offsetHeight; + } + }); + } + } + } + // Caption tracks not natively supported + else { + _log('TextTracks not supported so rendering captions manually'); + + // Render captions from array at appropriate time + plyr.currentCaption = ''; + plyr.captions = []; + + if (captionSrc !== '') { + // Create XMLHttpRequest Object + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + var records = [], + record, + req = xhr.responseText; + + records = req.split('\n\n'); + + for (var r = 0; r < records.length; r++) { + record = records[r]; + plyr.captions[r] = []; + plyr.captions[r] = record.split('\n'); + } + + // Remove first element ('VTT') + plyr.captions.shift(); + + _log('Successfully loaded the caption file via AJAX'); + } + else { + _log('There was a problem loading the caption file via AJAX', true); + } + } + }; + + xhr.open('get', captionSrc, true); + + xhr.send(); + } + } + + // If Safari 7+, removing track from DOM [see 'turn off native caption rendering' above] + /*if (plyr.browser.name === 'Safari' && plyr.browser.version >= 7) { + _log('Safari 7+ detected; removing track from DOM'); + + // Find all elements + tracks = plyr.media.getElementsByTagName('track'); + + // Loop through and remove one by one + for (var t = 0; t < tracks.length; t++) { + plyr.media.removeChild(tracks[t]); + } + }*/ + } + } + // Captions functions // Seek the manual caption time and update UI function _seekManualCaptions(time) { @@ -1402,194 +1624,6 @@ }); } - // Setup captions - function _setupCaptions() { - if (plyr.type !== 'video') { - return; - } - - // Inject the container - if (!_getElement(config.selectors.captions)) { - plyr.videoContainer.insertAdjacentHTML('afterbegin', '
'); - } - - // Cache selector - plyr.captionsContainer = _getElement(config.selectors.captions).querySelector('span'); - - // Determine if HTML5 textTracks is supported - plyr.usingTextTracks = false; - if (plyr.media.textTracks) { - plyr.usingTextTracks = true; - } - - // Get URL of caption file if exists - var captionSrc = '', - kind, - children = plyr.media.childNodes; - - for (var i = 0; i < children.length; i++) { - if (children[i].nodeName.toLowerCase() === 'track') { - kind = children[i].kind; - if (kind === 'captions' || kind === 'subtitles') { - captionSrc = children[i].getAttribute('src'); - } - } - } - - // Record if caption file exists or not - plyr.captionExists = true; - if (captionSrc === '') { - plyr.captionExists = false; - _log('No caption track found'); - } - else { - _log('Caption track found; URI: ' + captionSrc); - } - - // If no caption file exists, hide container for caption text - if (!plyr.captionExists) { - _toggleClass(plyr.container, config.classes.captions.enabled); - } - // If caption file exists, process captions - else { - // Turn off native caption rendering to avoid double captions - // This doesn't seem to work in Safari 7+, so the elements are removed from the dom below - var tracks = plyr.media.textTracks; - for (var x = 0; x < tracks.length; x++) { - tracks[x].mode = 'hidden'; - } - - // Enable UI - _showCaptions(plyr); - - // Disable unsupported browsers than report false positive - if ((plyr.browser.name === 'IE' && plyr.browser.version >= 10) || - (plyr.browser.name === 'Firefox' && plyr.browser.version >= 31) || - (plyr.browser.name === 'Chrome' && plyr.browser.version >= 43) || - (plyr.browser.name === 'Safari' && plyr.browser.version >= 7)) { - // Debugging - _log('Detected unsupported browser for HTML5 captions - using fallback'); - - // Set to false so skips to 'manual' captioning - plyr.usingTextTracks = false; - } - - // Rendering caption tracks - // Native support required - http://caniuse.com/webvtt - if (plyr.usingTextTracks) { - _log('TextTracks supported'); - - for (var y = 0; y < tracks.length; y++) { - var track = tracks[y]; - - if (track.kind === 'captions' || track.kind === 'subtitles') { - _on(track, 'cuechange', function() { - // Clear container - plyr.captionsContainer.innerHTML = ''; - - // Display a cue, if there is one - if (this.activeCues[0] && this.activeCues[0].hasOwnProperty('text')) { - plyr.captionsContainer.appendChild(this.activeCues[0].getCueAsHTML().trim()); - - // Force redraw - // var redraw = plyr.captionsContainer.offsetHeight; - } - }); - } - } - } - // Caption tracks not natively supported - else { - _log('TextTracks not supported so rendering captions manually'); - - // Render captions from array at appropriate time - plyr.currentCaption = ''; - plyr.captions = []; - - if (captionSrc !== '') { - // Create XMLHttpRequest Object - var xhr = new XMLHttpRequest(); - - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - var records = [], - record, - req = xhr.responseText; - - records = req.split('\n\n'); - - for (var r = 0; r < records.length; r++) { - record = records[r]; - plyr.captions[r] = []; - plyr.captions[r] = record.split('\n'); - } - - // Remove first element ('VTT') - plyr.captions.shift(); - - _log('Successfully loaded the caption file via AJAX'); - } - else { - _log('There was a problem loading the caption file via AJAX', true); - } - } - }; - - xhr.open('get', captionSrc, true); - - xhr.send(); - } - } - - // If Safari 7+, removing track from DOM [see 'turn off native caption rendering' above] - if (plyr.browser.name === 'Safari' && plyr.browser.version >= 7) { - _log('Safari 7+ detected; removing track from DOM'); - - // Find all elements - tracks = plyr.media.getElementsByTagName('track'); - - // Loop through and remove one by one - for (var t = 0; t < tracks.length; t++) { - plyr.media.removeChild(tracks[t]); - } - } - } - } - - // Setup fullscreen - function _setupFullscreen() { - if (!plyr.supported.full) { - return; - } - - if ((plyr.type != 'audio' || config.fullscreen.allowAudio) && config.fullscreen.enabled) { - // Check for native support - var nativeSupport = fullscreen.supportsFullScreen; - - if (nativeSupport || (config.fullscreen.fallback && !_inFrame())) { - _log((nativeSupport ? 'Native' : 'Fallback') + ' fullscreen enabled'); - - // Add styling hook - _toggleClass(plyr.container, config.classes.fullscreen.enabled, true); - } - else { - _log('Fullscreen not supported and fallback disabled'); - } - - // Toggle state - _toggleState(plyr.buttons.fullscreen, false); - - // Setup focus trap - _focusTrap(); - - // Set control hide class hook - if (config.fullscreen.hideControls) { - _toggleClass(plyr.container, config.classes.fullscreen.hideControls, true); - } - } - } - // Play media function _play() { if('play' in plyr.media) { @@ -1642,7 +1676,8 @@ // The input parameter can be an event or a number function _seek(input) { var targetTime = 0, - paused = plyr.media.paused; + paused = plyr.media.paused, + duration = _getDuration(); // Explicit position if (typeof input === 'number') { @@ -1652,15 +1687,15 @@ else if (typeof input === 'object' && (input.type === 'input' || input.type === 'change')) { // It's the seek slider // Seek to the selected time - targetTime = ((input.target.value / input.target.max) * plyr.media.duration); + targetTime = ((input.target.value / input.target.max) * duration); } // Normalise targetTime if (targetTime < 0) { targetTime = 0; } - else if (targetTime > plyr.media.duration) { - targetTime = plyr.media.duration; + else if (targetTime > duration) { + targetTime = duration; } // Set the current time @@ -1702,6 +1737,15 @@ _seekManualCaptions(targetTime); } + // Get the duration (or custom if set) + function _getDuration() { + // It should be a number, but parse it just incase + var duration = parseInt(config.duration); + + // If custom duration is funky, use regular duration + return (isNaN(duration) ? plyr.media.duration : duration); + } + // Check playing state function _checkPlaying() { _toggleClass(plyr.container, config.classes.playing, !plyr.media.paused); @@ -1932,14 +1976,15 @@ function _updateProgress(event) { var progress = plyr.progress.played.bar, text = plyr.progress.played.text, - value = 0; + value = 0, + duration = _getDuration(); if (event) { switch (event.type) { // Video playing case 'timeupdate': case 'seeking': - value = _getPercentage(plyr.media.currentTime, plyr.media.duration); + value = _getPercentage(plyr.media.currentTime, duration); // Set seek range value only if it's a 'natural' time event if (event.type == 'timeupdate' && plyr.buttons.seek) { @@ -1965,7 +2010,7 @@ // HTML5 if (buffered && buffered.length) { - return _getPercentage(buffered.end(0), plyr.media.duration); + return _getPercentage(buffered.end(0), duration); } // YouTube returns between 0 and 1 else if (typeof buffered === 'number') { @@ -2003,7 +2048,7 @@ plyr.hours = parseInt(((time / 60) / 60) % 60); // Do we need to display hours? - var displayHours = (parseInt(((plyr.media.duration / 60) / 60) % 60) > 0); + var displayHours = (parseInt(((_getDuration() / 60) / 60) % 60) > 0); // Ensure it's two digits. For example, 03 rather than 3. plyr.secs = ('0' + plyr.secs).slice(-2); @@ -2020,7 +2065,7 @@ } // Determine duration - var duration = plyr.media.duration || 0; + var duration = _getDuration() || 0; // If there's only one time display, display duration there if (!plyr.duration && config.displayDuration && plyr.media.paused) { @@ -2084,14 +2129,14 @@ } // Display the time a click would seek to - _updateTimeDisplay(((plyr.media.duration / 100) * percent), plyr.progress.tooltip); + _updateTimeDisplay(((_getDuration() / 100) * percent), plyr.progress.tooltip); // Set position plyr.progress.tooltip.style.left = percent + "%"; // Show/hide the tooltip // If the event is a moues in/out and percentage is inside bounds - if(_inArray(['mouseenter', 'mouseleave'], event.type)) { + if(event && _inArray(['mouseenter', 'mouseleave'], event.type)) { _toggleClass(plyr.progress.tooltip, visible, (event.type === 'mouseenter')); } } @@ -2273,6 +2318,9 @@ config.title = source.title; _setTitle(); } + + // Reset media object + plyr.container.plyr.media = plyr.media; } // Update poster @@ -2635,6 +2683,9 @@ // Update the UI _checkPlaying(); + + // Display duration + _displayDuration(); } // Initialize instance @@ -2729,12 +2780,9 @@ elements = document.querySelectorAll(defaults.selectors.container); } - // Extend the default options with user specified - config = _extend(defaults, options); - // Bail if disabled or no basic support // You may want to disable certain UAs etc - if (!config.enabled || !api.supported().basic || !elements.length) { + if (!api.supported().basic || !elements.length) { return false; } @@ -2745,8 +2793,16 @@ // Setup a player instance and add to the element if (typeof element.plyr === 'undefined') { + // Create instance-specific config + var config = _extend(defaults, options, JSON.parse(element.getAttribute("data-plyr"))); + + // Bail if not enabled + if(!config.enabled) { + return; + } + // Create new instance - var instance = new Plyr(element); + var instance = new Plyr(element, config); // Set plyr to false if setup failed element.plyr = (Object.keys(instance).length ? instance : false); diff --git a/src/less/plyr.less b/src/less/plyr.less index 73e14c56..156ac5f9 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -7,57 +7,58 @@ // ------------------------------- // Colors -@plyr-blue: #3498DB; -@plyr-gray-dark: #343F4A; -@plyr-gray: #565D64; -@plyr-gray-light: #6B7D86; -@plyr-gray-lighter: #CBD0D3; -@plyr-off-white: #D6DADD; +@plyr-blue: #3498DB; +@plyr-gray-dark: #343F4A; +@plyr-gray: #565D64; +@plyr-gray-light: #6B7D86; +@plyr-gray-lighter: #CBD0D3; +@plyr-off-white: #D6DADD; // Font sizes -@plyr-font-size-small: 14px; -@plyr-font-size-base: 16px; +@plyr-font-size-small: 14px; +@plyr-font-size-base: 16px; // Captions -@plyr-font-size-captions-base: ceil(@plyr-font-size-base * 1.25); -@plyr-font-size-captions-medium: ceil(@plyr-font-size-base * 1.5); -@plyr-font-size-captions-large: (@plyr-font-size-base * 2); +@plyr-font-size-captions-base: ceil(@plyr-font-size-base * 1.25); +@plyr-font-size-captions-medium: ceil(@plyr-font-size-base * 1.5); +@plyr-font-size-captions-large: (@plyr-font-size-base * 2); // Controls -@plyr-control-spacing: 10px; -@plyr-controls-bg: #fff; -@plyr-control-bg-hover: @plyr-blue; +@plyr-control-spacing: 10px; +@plyr-controls-bg: #fff; +@plyr-control-bg-hover: @plyr-blue; .contrast-control-color(@plyr-controls-bg); .contrast-control-color-hover(@plyr-control-bg-hover); // Tooltips -@plyr-tooltip-bg: @plyr-controls-bg; -@plyr-tooltip-border-color: fade(darken(@plyr-controls-bg, 5%), 10%); -@plyr-tooltip-border-width: 1px; -@plyr-tooltip-shadow: 0 0 5px @plyr-tooltip-border-color, 0 0 0 @plyr-tooltip-border-width @plyr-tooltip-border-color; -@plyr-tooltip-color: @plyr-control-color; -@plyr-tooltip-padding: @plyr-control-spacing; -@plyr-tooltip-arrow-size: 6px; -@plyr-tooltip-radius: 3px; +@plyr-tooltip-bg: @plyr-controls-bg; +@plyr-tooltip-border-color: fade(darken(@plyr-controls-bg, 75%), 10%); +@plyr-tooltip-arrow-border-color: fade(darken(@plyr-controls-bg, 75%), 20%); +@plyr-tooltip-border-width: 1px; +@plyr-tooltip-shadow: 0 0 5px @plyr-tooltip-border-color, 0 0 0 @plyr-tooltip-border-width @plyr-tooltip-border-color; +@plyr-tooltip-color: @plyr-control-color; +@plyr-tooltip-padding: @plyr-control-spacing; +@plyr-tooltip-arrow-size: 6px; +@plyr-tooltip-radius: 3px; // Progress -@plyr-progress-bg: fade(@plyr-gray, 20%); -@plyr-progress-playing-bg: @plyr-blue; -@plyr-progress-buffered-bg: fade(@plyr-gray, 25%); -@plyr-progress-loading-size: 40px; -@plyr-progress-loading-bg: fade(#000, 15%); +@plyr-progress-bg: fade(@plyr-gray, 20%); +@plyr-progress-playing-bg: @plyr-blue; +@plyr-progress-buffered-bg: fade(@plyr-gray, 25%); +@plyr-progress-loading-size: 40px; +@plyr-progress-loading-bg: fade(#000, 15%); // Volume -@plyr-volume-track-height: 6px; -@plyr-volume-track-bg: darken(@plyr-controls-bg, 10%); -@plyr-volume-thumb-height: (@plyr-volume-track-height * 2); -@plyr-volume-thumb-width: (@plyr-volume-track-height * 2); -@plyr-volume-thumb-bg: @plyr-control-color; -@plyr-volume-thumb-bg-focus: @plyr-control-bg-hover; +@plyr-volume-track-height: 6px; +@plyr-volume-track-bg: darken(@plyr-controls-bg, 10%); +@plyr-volume-thumb-height: (@plyr-volume-track-height * 2); +@plyr-volume-thumb-width: (@plyr-volume-track-height * 2); +@plyr-volume-thumb-bg: @plyr-control-color; +@plyr-volume-thumb-bg-focus: @plyr-control-bg-hover; // Breakpoints -@plyr-bp-control-split: 560px; // When controls split into left/right -@plyr-bp-captions-large: 768px; // When captions jump to the larger font size +@plyr-bp-control-split: 560px; // When controls split into left/right +@plyr-bp-captions-large: 768px; // When captions jump to the larger font size // Animation // --------------------------------------- @@ -366,7 +367,7 @@ @plyr-border-arrow-size: (@plyr-tooltip-arrow-size + (@plyr-tooltip-border-width * 1)); bottom: -(@plyr-border-arrow-size + @plyr-tooltip-border-width); border-right: @plyr-border-arrow-size solid transparent; - border-top: @plyr-border-arrow-size solid @plyr-tooltip-border-color; + border-top: @plyr-border-arrow-size solid @plyr-tooltip-arrow-border-color; border-left: @plyr-border-arrow-size solid transparent; z-index: 1; } diff --git a/src/sass/plyr.scss b/src/sass/plyr.scss index f0d1df6f..966a7966 100644 --- a/src/sass/plyr.scss +++ b/src/sass/plyr.scss @@ -7,69 +7,71 @@ // ------------------------------- // Colors -$plyr-blue: #3498DB !default; -$plyr-gray-dark: #343F4A !default; -$plyr-gray: #565D64 !default; -$plyr-gray-light: #6B7D86 !default; -$plyr-gray-lighter: #CBD0D3 !default; -$plyr-off-white: #D6DADD !default; +$plyr-blue: #3498DB !default; +$plyr-gray-dark: #343F4A !default; +$plyr-gray: #565D64 !default; +$plyr-gray-light: #6B7D86 !default; +$plyr-gray-lighter: #CBD0D3 !default; +$plyr-off-white: #D6DADD !default; // Font sizes -$plyr-font-size-small: 14px !default; -$plyr-font-size-base: 16px !default; +$plyr-font-size-small: 14px !default; +$plyr-font-size-base: 16px !default; // Captions -$plyr-font-size-captions-base: ceil($plyr-font-size-base * 1.25) !default; -$plyr-font-size-captions-medium: ceil($plyr-font-size-base * 1.5) !default; -$plyr-font-size-captions-large: ($plyr-font-size-base * 2) !default; +$plyr-font-size-captions-base: ceil($plyr-font-size-base * 1.25) !default; +$plyr-font-size-captions-medium: ceil($plyr-font-size-base * 1.5) !default; +$plyr-font-size-captions-large: ($plyr-font-size-base * 2) !default; // Controls -$plyr-control-spacing: 10px !default; -$plyr-controls-bg: #fff !default; -$plyr-control-bg-hover: $plyr-blue !default; +$plyr-control-spacing: 10px !default; +$plyr-controls-bg: #fff !default; +$plyr-control-bg-hover: $plyr-blue !default; // Contrast @if lightness($plyr-controls-bg) >= 65% { - $plyr-control-color: $plyr-gray-light !default; + $plyr-control-color: $plyr-gray-light !default; } @else { - $plyr-control-color: $plyr-gray-lighter !default; + $plyr-control-color: $plyr-gray-lighter !default; } @if lightness($plyr-control-bg-hover) >= 65% { - $plyr-control-color-hover: $plyr-gray !default; + $plyr-control-color-hover: $plyr-gray !default; } @else { - $plyr-control-color-hover: #fff !default; + $plyr-control-color-hover: #fff !default; } // Tooltips -$plyr-tooltip-bg: $plyr-controls-bg !default; -$plyr-tooltip-border-color: transparentize($plyr-gray-dark, .1) !default; -$plyr-tooltip-border-width: 1px; -$plyr-tooltip-shadow: 0 0 5px $plyr-tooltip-border-color, 0 0 0 $plyr-tooltip-border-width $plyr-tooltip-border-color; -$plyr-tooltip-color: $plyr-control-color !default; -$plyr-tooltip-padding: $plyr-control-spacing !default; -$plyr-tooltip-arrow-size: 6px !default; -$plyr-tooltip-radius: 3px !default; +$plyr-tooltip-bg: $plyr-controls-bg !default; +$plyr-tooltip-border-color: transparentize(darken($plyr-controls-bg, 75%), .1) !default; +$plyr-tooltip-arrow-border-color: transparentize(darken($plyr-controls-bg, 75%), .2) !default; + +$plyr-tooltip-border-width: 1px; +$plyr-tooltip-shadow: 0 0 5px $plyr-tooltip-border-color, 0 0 0 $plyr-tooltip-border-width $plyr-tooltip-border-color; +$plyr-tooltip-color: $plyr-control-color !default; +$plyr-tooltip-padding: $plyr-control-spacing !default; +$plyr-tooltip-arrow-size: 6px !default; +$plyr-tooltip-radius: 3px !default; // Progress -$plyr-progress-bg: transparentize($plyr-gray, .2) !default; -$plyr-progress-playing-bg: $plyr-blue !default; -$plyr-progress-buffered-bg: transparentize($plyr-gray, .25) !default; -$plyr-progress-loading-size: 40px !default; -$plyr-progress-loading-bg: transparentize(#000, .15) !default; +$plyr-progress-bg: transparentize($plyr-gray, .2) !default; +$plyr-progress-playing-bg: $plyr-blue !default; +$plyr-progress-buffered-bg: transparentize($plyr-gray, .25) !default; +$plyr-progress-loading-size: 40px !default; +$plyr-progress-loading-bg: transparentize(#000, .15) !default; // Volume -$plyr-volume-track-height: 6px !default; -$plyr-volume-track-bg: darken($plyr-controls-bg, 10%) !default; -$plyr-volume-thumb-height: ($plyr-volume-track-height * 2) !default; -$plyr-volume-thumb-width: ($plyr-volume-track-height * 2) !default; -$plyr-volume-thumb-bg: $plyr-control-color !default; -$plyr-volume-thumb-bg-focus: $plyr-control-bg-hover !default; +$plyr-volume-track-height: 6px !default; +$plyr-volume-track-bg: darken($plyr-controls-bg, 10%) !default; +$plyr-volume-thumb-height: ($plyr-volume-track-height * 2) !default; +$plyr-volume-thumb-width: ($plyr-volume-track-height * 2) !default; +$plyr-volume-thumb-bg: $plyr-control-color !default; +$plyr-volume-thumb-bg-focus: $plyr-control-bg-hover !default; // Breakpoints -$plyr-bp-control-split: 560px !default; // When controls split into left/right -$plyr-bp-captions-large: 768px !default; // When captions jump to the larger font size +$plyr-bp-control-split: 560px !default; // When controls split into left/right +$plyr-bp-captions-large: 768px !default; // When captions jump to the larger font size // Animation // --------------------------------------- @@ -365,7 +367,7 @@ $plyr-bp-captions-large: 768px !default; // When captions jump to the la $plyr-border-arrow-size: ($plyr-tooltip-arrow-size + ($plyr-tooltip-border-width * 1)); bottom: -($plyr-border-arrow-size + $plyr-tooltip-border-width); border-right: $plyr-border-arrow-size solid transparent; - border-top: $plyr-border-arrow-size solid $plyr-tooltip-border-color; + border-top: $plyr-border-arrow-size solid $plyr-tooltip-arrow-border-color; border-left: $plyr-border-arrow-size solid transparent; z-index: 1; } From d538cdcdf6799a8bd0528dd0d5599218eb159322 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 21 Feb 2016 14:04:49 +1100 Subject: [PATCH 64/87] 1.5.12 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5bf3b489..2eb6aa20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.11", + "version": "1.5.12", "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", "main": "src/js/plyr.js", From 5b968c97f4a0a35fde5f3c338ec79274b32ebb9a Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 21 Feb 2016 14:07:17 +1100 Subject: [PATCH 65/87] v1.5.12 --- npm-debug.log | 20 ++++++++++++++++++++ readme.md | 10 +++++----- src/js/plyr.js | 4 ++-- 3 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 npm-debug.log diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 00000000..cc4a1ab7 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,20 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/usr/local/Cellar/node/5.0.0/bin/node', +1 verbose cli '/usr/local/bin/npm', +1 verbose cli 'version', +1 verbose cli '1.5.12' ] +2 info using npm@3.3.9 +3 info using node@v5.0.0 +4 verbose stack Error: Version not changed +4 verbose stack at /usr/local/lib/node_modules/npm/lib/version.js:52:49 +4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:76:16 +4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:404:3) +5 verbose cwd /usr/local/var/www/dev/plyr +6 error Darwin 14.5.0 +7 error argv "/usr/local/Cellar/node/5.0.0/bin/node" "/usr/local/bin/npm" "version" "1.5.12" +8 error node v5.0.0 +9 error npm v3.3.9 +10 error Version not changed +11 error If you need help, you may report this error at: +11 error +12 verbose exit [ 1, true ] diff --git a/readme.md b/readme.md index 7c6fef13..b5ef91e4 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.11/plyr.js` to `https://cdn.plyr.io/1.5.11/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.12/plyr.js` to `https://cdn.plyr.io/1.5.12/plyr.js` ### Node Package Manager (NPM) Using NPM, you can grab Plyr: @@ -69,11 +69,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.11/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.12/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -170,7 +170,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 81cd6f15..066392dd 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1043,7 +1043,7 @@ _setCaption(plyr.currentCaption); } else { - _setCaption(''); + _setCaption(); } } @@ -2460,7 +2460,7 @@ _on(plyr.media, 'ended', function() { // Clear if (plyr.type === 'video') { - _setCaption(''); + _setCaption(); } // Reset UI From c99f20d5d854bf579851fced0cd39550e81b91bc Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 21 Feb 2016 14:28:01 +1100 Subject: [PATCH 66/87] Fix for manual captions --- dist/plyr.js | 2 +- package.json | 2 +- readme.md | 10 +++++----- src/js/plyr.js | 22 ++++++++++++++++------ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/dist/plyr.js b/dist/plyr.js index 552f7866..26b9938a 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);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(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 p(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function d(e,n,r){var s=t.createElement(e);p(s,r),c(n,s)}function f(e){return e.replace(".","")}function m(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,t,n){e&&h(e,t,n,!0)}function v(e,t,n){e&&h(e,t,n,!1)}function g(e,t,n,r){b(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function h(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){var s=e[r];for(var a in s)s[a]&&s[a].constructor&&s[a].constructor===Object?(t[a]=t[a]||{},T(t[a],s[a])):t[a]=s[a]}return t}}function _(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},n="webkit moz o ms khtml".split(" ");if("undefined"!=typeof t.cancelFullScreen)e.supportsFullScreen=!0;else for(var r=0,s=n.length;s>r;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 F(){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(h,T){function C(t,n){T.debug&&e.console&&console[n?"warn":"log"](t)}function A(){var e=['
','
','','','',"0% "+T.i18n.played,"",'',"0% "+T.i18n.buffered,""];return T.tooltips.seek&&e.push('00:00'),e.push("
",''),a(T.controls,"restart")&&e.push('"),a(T.controls,"rewind")&&e.push('"),a(T.controls,"play")&&e.push('",'"),a(T.controls,"fast-forward")&&e.push('"),a(T.controls,"current-time")&&e.push('',''+T.i18n.currentTime+"",'00:00',""),a(T.controls,"duration")&&e.push('',''+T.i18n.duration+"",'00:00',""),e.push("",''),a(T.controls,"mute")&&e.push('"),a(T.controls,"volume")&&e.push('",''),a(T.controls,"captions")&&e.push('"),a(T.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function I(){if(Ce.supported.full&&("audio"!=Ce.type||T.fullscreen.allowAudio)&&T.fullscreen.enabled){var e=E.supportsFullScreen;e||T.fullscreen.fallback&&!R()?(C((e?"Native":"Fallback")+" fullscreen enabled"),m(Ce.container,T.classes.fullscreen.enabled,!0)):C("Fullscreen not supported and fallback disabled"),w(Ce.buttons.fullscreen,!1),j(),T.fullscreen.hideControls&&m(Ce.container,T.classes.fullscreen.hideControls,!0)}}function P(){if("video"===Ce.type){q(T.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,r=0;r=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31)&&(C("Detected browser with known TextTrack issues - using manual fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){C("TextTracks supported");for(var o=0;o ");for(var r=0;rCe.captions.length-1){Ce.subcount=Ce.captions.length-1;break}Ce.media.currentTime.toFixed(1)>=n(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=r(Ce.captions[Ce.subcount][0])?(Ce.currentCaption=Ce.captions[Ce.subcount][1],M(Ce.currentCaption)):M("")}}function O(){Ce.buttons.captions&&(m(Ce.container,T.classes.captions.enabled,!0),T.captions.defaultActive&&(m(Ce.container,T.classes.captions.active,!0),w(Ce.buttons.captions,!0)))}function V(e){return Ce.container.querySelectorAll(e)}function q(e){return V(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];b(Ce.container,"keydown",e)}function H(e,t){if("string"==typeof t)d(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,Ce.media,t[n])}function B(){var e=T.html;C("Injecting custom controls"),e||(e=A()),e=o(e,"{seektime}",T.seekTime),e=o(e,"{id}",Math.floor(1e4*Math.random()));var n;if(null!==T.selectors.controls.container&&(n=T.selectors.controls.container,"string"==typeof selector&&(n=t.querySelector(n))),n instanceof HTMLElement||(n=Ce.container),n.insertAdjacentHTML("beforeend",e),T.tooltips.controls)for(var r=V(T.selectors.labels+" ."+T.classes.hidden),s=r.length-1;s>=0;s--){var a=r[s];m(a,T.classes.hidden,!1),m(a,T.classes.tooltip,!0)}}function D(){try{return Ce.controls=q(T.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=q(T.selectors.buttons.seek),Ce.buttons.play=q(T.selectors.buttons.play),Ce.buttons.pause=q(T.selectors.buttons.pause),Ce.buttons.restart=q(T.selectors.buttons.restart),Ce.buttons.rewind=q(T.selectors.buttons.rewind),Ce.buttons.forward=q(T.selectors.buttons.forward),Ce.buttons.fullscreen=q(T.selectors.buttons.fullscreen),Ce.buttons.volume=q(T.selectors.buttons.volume),Ce.buttons.mute=q(T.selectors.buttons.mute),Ce.buttons.captions=q(T.selectors.buttons.captions),Ce.checkboxes=V('[type="checkbox"]'),Ce.progress={},Ce.progress.container=q(T.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=q(T.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=q(T.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.progress.tooltip=Ce.progress.container&&Ce.progress.container.querySelector("."+T.classes.tooltip),Ce.volume=q(T.selectors.buttons.volume),Ce.duration=q(T.selectors.duration),Ce.currentTime=q(T.selectors.currentTime),Ce.seekTime=V(T.selectors.seekTime),!0}catch(e){return C("It looks like there is a problem with your controls html",!0),$(!0),!1}}function Y(){m(Ce.container,N.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function W(e){var t=T.i18n.play;"undefined"!=typeof T.title&&T.title.length&&(t+=", "+T.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",T.i18n.frameTitle.replace("{title}",T.title))}function z(){if(!Ce.media)return C("No audio or video element found",!0),!1;if(Ce.supported.full&&(m(Ce.container,T.classes.type.replace("{0}",Ce.type),!0),m(Ce.container,T.classes.stopped,T.autoplay),m(Ce.container,T.classes.isIos,Ce.browser.ios),m(Ce.container,T.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",T.classes.videoWrapper),i(Ce.media,e),Ce.videoContainer=e}a(T.types.embed,Ce.type)?(K(),Ce.embedId=null):T.autoplay&&G()}function K(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),o=V('[id^="'+Ce.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(m(Ce.media,T.classes.videoWrapper,!0),m(Ce.media,T.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?X(r,n):(s(T.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,b(l,"load",function(){l.loaded=!0}),p(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||s(T.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),J.call(l))},50)}}function U(){Fe(),W(q("iframe"))}function X(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:T.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),k(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),k(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),k(Ce.media,"canplaythrough"))},200),U(),me()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,k(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,k(Ce.media,"play"),k(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),k(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,k(Ce.media,"pause")}}}})}function J(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,U(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,k(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,me()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,k(Ce.media,"play"),k(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,k(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,k(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,k(Ce.media,"progress"),1===parseInt(e.percent)&&k(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,k(Ce.media,"ended")})})}function G(){"play"in Ce.media&&Ce.media.play()}function Q(){"pause"in Ce.media&&Ce.media.pause()}function Z(e){e===!0?G():e===!1?Q():Ce.media[Ce.media.paused?"play":"pause"]()}function ee(e){"number"!=typeof e&&(e=T.seekTime),ne(Ce.media.currentTime-e)}function te(e){"number"!=typeof e&&(e=T.seekTime),ne(Ce.media.currentTime+e)}function ne(e){var t=0,n=Ce.media.paused,r=re();"number"==typeof e?t=e:"object"!=typeof e||"input"!==e.type&&"change"!==e.type||(t=e.target.value/e.target.max*r),0>t?t=0:t>r&&(t=r);try{Ce.media.currentTime=t.toFixed(1)}catch(s){}if(a(T.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&Q(),k(Ce.media,"timeupdate"),Ce.media.seeking=!0}C("Seeking to "+Ce.media.currentTime+" seconds"),L(t)}function re(){var e=parseInt(T.duration);return isNaN(e)?Ce.media.duration:e}function se(){m(Ce.container,T.classes.playing,!Ce.media.paused),m(Ce.container,T.classes.stopped,Ce.media.paused)}function ae(e){var n=E.supportsFullScreen;e&&e.type===E.fullScreenEventName?Ce.isFullscreen=E.isFullScreen(Ce.container):n?(E.isFullScreen(Ce.container)?E.cancelFullScreen():E.requestFullScreen(Ce.container),Ce.isFullscreen=E.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(b(t,"keyup",oe),t.body.style.overflow="hidden"):(v(t,"keyup",oe),t.body.style.overflow="")),m(Ce.container,T.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),w(Ce.buttons.fullscreen,Ce.isFullscreen),T.fullscreen.hideControls&&ve(!0),k(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function oe(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&ae()}function ie(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),w(Ce.buttons.mute,e),Ce.media.muted=e,a(T.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(T.volume/10))}k(Ce.media,"volumechange")}}function le(t){if("undefined"==typeof t&&(t=T.volume,T.storage.enabled&&F().supported&&(t=e.localStorage.getItem(T.storage.key))),isNaN(t)&&(t=T.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),T.volume=t,a(T.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}k(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ie()}function ue(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),T.storage.enabled&&F().supported&&!isNaN(t)&&e.localStorage.setItem(T.storage.key,t),m(Ce.container,T.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&w(Ce.buttons.mute,0===t)}function ce(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(T.classes.captions.active)),Ce.captionsEnabled=e,w(Ce.buttons.captions,Ce.captionsEnabled),m(Ce.container,T.classes.captions.active,Ce.captionsEnabled),k(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function pe(e){var t="waiting"===e.type;clearTimeout(Ce.timers.loading),Ce.timers.loading=setTimeout(function(){m(Ce.container,T.classes.loading,t)},t?250:0)}function de(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0,s=re();if(e)switch(e.type){case"timeupdate":case"seeking":r=x(Ce.media.currentTime,s),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?x(e.end(0),s):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function fe(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(re()/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function me(){if(Ce.supported.full){var e=re()||0;!Ce.duration&&T.displayDuration&&Ce.media.paused&&fe(e,Ce.currentTime),Ce.duration&&fe(e,Ce.duration),be()}}function ye(e){fe(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||de(e)}function be(e){if(T.tooltips.seek&&!Ce.browser.touch){var t=Ce.progress.container.getBoundingClientRect(),n=0,r=T.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!y(Ce.progress.tooltip,r))return;n=Ce.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),fe(re()/100*n,Ce.progress.tooltip),Ce.progress.tooltip.style.left=n+"%",e&&a(["mouseenter","mouseleave"],e.type)&&m(Ce.progress.tooltip,r,"mouseenter"===e.type)}}function ve(t){Ce.isFullscreen&&(m(Ce.container,T.classes.hover,!0),e.clearTimeout(Ce.timers.hover),Ce.timers.hover=e.setTimeout(function(){Ce.controls.mouseover&&t!==!0||m(Ce.container,T.classes.hover,!1)},2e3))}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void C("Invalid source format",!0);if(Q(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&u(Ce.videoContainer),u(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var r=n.sources[0];"type"in r&&a(T.types.embed,r.type)&&(Ce.type=r.type)}switch(Ce.supported=S.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}c(Ce.container,Ce.media),a(T.types.html5,Ce.type)&&(T.crossorigin&&Ce.media.setAttribute("crossorigin",""),T.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),T.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,m(Ce.container,T.classes.fullscreen.active,Ce.isFullscreen),m(Ce.container,T.classes.captions.active,Ce.captionsEnabled),Y(),T.autoplay=n.autoplay||T.autoplay,a(T.types.html5,Ce.type)&&H("source",n.sources),z(),a(T.types.html5,Ce.type)&&("tracks"in n&&H("track",n.tracks),Ce.media.load(),Fe(),me()),T.autoplay&&G(),"title"in n&&(T.title=n.title,W()),Ce.container.plyr.media=Ce.media}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?G():Q();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=y(t,T.classes.tabFocus);setTimeout(function(){n.focus(),r&&(m(t,T.classes.tabFocus,!1),m(n,T.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 Ce.buttons){var r=Ce.buttons[n];m(r,T.classes.tabFocus,r===e)}}var s="IE"==Ce.browser.name?"change":"input";b(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),b(t.body,"click",function(){m(q("."+T.classes.tabFocus),T.classes.tabFocus,!1)});for(var a in Ce.buttons){var o=Ce.buttons[a];b(o,"blur",function(){m(o,"tab-focus",!1)})}g(Ce.buttons.play,"click",T.listeners.play,n),g(Ce.buttons.pause,"click",T.listeners.pause,n),g(Ce.buttons.restart,"click",T.listeners.restart,ne),g(Ce.buttons.rewind,"click",T.listeners.rewind,ee),g(Ce.buttons.forward,"click",T.listeners.forward,te),g(Ce.buttons.seek,s,T.listeners.seek,ne),g(Ce.volume,s,T.listeners.volume,function(){le(Ce.volume.value)}),g(Ce.buttons.mute,"click",T.listeners.mute,ie),g(Ce.buttons.fullscreen,"click",T.listeners.fullscreen,ae),E.supportsFullScreen&&b(t,E.fullScreenEventName,ae),b(Ce.buttons.captions,"click",ce),b(Ce.progress.container,"mouseenter mouseleave mousemove",be);T.fullscreen.hideControls&&b(Ce.controls,"mouseenter mouseleave",function(e){Ce.controls.mouseover="mouseenter"===e.type})}function xe(){b(Ce.media,"timeupdate seeking",ye),b(Ce.media,"timeupdate",L),b(Ce.media,"durationchange loadedmetadata",me),b(Ce.media,"ended",function(){"video"===Ce.type&&M(""),se()}),b(Ce.media,"progress playing",de),b(Ce.media,"volumechange",ue),b(Ce.media,"play pause",se),b(Ce.media,"waiting canplay seeked",pe),T.click&&b(Ce.media,"click",function(){Ce.media.paused?G():Ce.media.ended?(ne(),G()):Q()}),T.fullscreen.hideControls&&b(Ce.media,"mousemove",ve),b(Ce.media,T.events.join(" "),function(e){k(Ce.container,e.type)})}function Te(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",f(T.selectors.container)),Ce.init=!1,u(q(T.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(u(q(T.selectors.captions)),l(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;E=_(),Ce.browser=n(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,T.crossorigin=null!==Ce.media.getAttribute("crossorigin"),T.autoplay=T.autoplay||null!==Ce.media.getAttribute("autoplay"),T.loop=T.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=S.supported(Ce.type),Y(),!Ce.supported.basic)return!1;if(C(Ce.browser.name+" "+Ce.browser.version),z(),a(T.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),W()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return C("No full support for this media type ("+Ce.type+")",!0),u(q(T.selectors.controls.wrapper)),void $(!0);var e=!V(T.selectors.controls.wrapper).length;e&&B(),D()&&(e&&we(),xe(),$(),I(),P(),le(),ue(),ye(),se(),me())}var Ce=this;return Ce.container=h,Ce.timers={},C(T),_e(),Ce.init?{media:Ce.media,play:G,pause:Q,restart:ne,rewind:ee,forward:te,seek:ne,source:ge,poster:ke,setVolume:le,togglePlay:Z,toggleMute:ie,toggleCaptions:ce,toggleFullscreen:ae,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return r(Ce,e)},destroy:Te,restore:_e}:{}}var E,S={},N={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,duration:null,displayDuration:!0,iconPrefix:"icon",click:!0,tooltips:{controls:!1,seek:!0},selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return S.supported=function(e){var r,s,a=n(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; +!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);return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(a="IE",o="11;"):-1!==(n=s.indexOf("MSIE"))?(a="IE",o=s.substring(n+5)):-1!==(n=s.indexOf("Chrome"))?(a="Chrome",o=s.substring(n+7)):-1!==(n=s.indexOf("Safari"))?(a="Safari",o=s.substring(n+7),-1!==(n=s.indexOf("Version"))&&(o=s.substring(n+8))):-1!==(n=s.indexOf("Firefox"))?(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,ios:/(iPad|iPhone|iPod)/g.test(navigator.platform),touch:"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;r.appendChild(s),o?a.insertBefore(r,o):a.appendChild(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 p(e,t){for(var n in t)e.setAttribute(n,"boolean"==typeof t[n]&&t[n]?"":t[n])}function d(e,n,r){var s=t.createElement(e);p(s,r),c(n,s)}function f(e){return e.replace(".","")}function m(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,t,n){e&&h(e,t,n,!0)}function v(e,t,n){e&&h(e,t,n,!1)}function g(e,t,n,r){b(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])})}function h(e,t,n,r){var s=t.split(" ");if(e instanceof NodeList)for(var a=0;ar;r++){var s=e[r];for(var a in s)s[a]&&s[a].constructor&&s[a].constructor===Object?(t[a]=t[a]||{},T(t[a],s[a])):t[a]=s[a]}return t}}function _(){var e={supportsFullScreen:!1,isFullScreen:function(){return!1},requestFullScreen:function(){},cancelFullScreen:function(){},fullScreenEventName:"",element:null,prefix:""},n="webkit moz o ms khtml".split(" ");if("undefined"!=typeof t.cancelFullScreen)e.supportsFullScreen=!0;else for(var r=0,s=n.length;s>r;r++){if(e.prefix=n[r],"undefined"!=typeof t[e.prefix+"CancelFullScreen"]){e.supportsFullScreen=!0;break}if("undefined"!=typeof t.msExitFullscreen&&t.msFullscreenEnabled){e.prefix="ms",e.supportsFullScreen=!0;break}}return e.supportsFullScreen&&(e.fullScreenEventName="ms"==e.prefix?"MSFullscreenChange":e.prefix+"fullscreenchange",e.isFullScreen=function(e){switch("undefined"==typeof 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"undefined"==typeof 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 F(){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(h,T){function C(t,n){T.debug&&e.console&&console[n?"warn":"log"](t)}function A(){var e=['
','
','','','',"0% "+T.i18n.played,"",'',"0% "+T.i18n.buffered,""];return T.tooltips.seek&&e.push('00:00'),e.push("
",''),a(T.controls,"restart")&&e.push('"),a(T.controls,"rewind")&&e.push('"),a(T.controls,"play")&&e.push('",'"),a(T.controls,"fast-forward")&&e.push('"),a(T.controls,"current-time")&&e.push('',''+T.i18n.currentTime+"",'00:00',""),a(T.controls,"duration")&&e.push('',''+T.i18n.duration+"",'00:00',""),e.push("",''),a(T.controls,"mute")&&e.push('"),a(T.controls,"volume")&&e.push('",''),a(T.controls,"captions")&&e.push('"),a(T.controls,"fullscreen")&&e.push('"),e.push("","
"),e.join("")}function I(){if(Ce.supported.full&&("audio"!=Ce.type||T.fullscreen.allowAudio)&&T.fullscreen.enabled){var e=E.supportsFullScreen;e||T.fullscreen.fallback&&!R()?(C((e?"Native":"Fallback")+" fullscreen enabled"),m(Ce.container,T.classes.fullscreen.enabled,!0)):C("Fullscreen not supported and fallback disabled"),w(Ce.buttons.fullscreen,!1),j(),T.fullscreen.hideControls&&m(Ce.container,T.classes.fullscreen.hideControls,!0)}}function P(){if("video"===Ce.type){q(T.selectors.captions)||Ce.videoContainer.insertAdjacentHTML("afterbegin",'
'),Ce.usingTextTracks=!1,Ce.media.textTracks&&(Ce.usingTextTracks=!0);for(var e,t="",n=Ce.media.childNodes,r=0;r=10||"Firefox"===Ce.browser.name&&Ce.browser.version>=31)&&(C("Detected browser with known TextTrack issues - using manual fallback"),Ce.usingTextTracks=!1),Ce.usingTextTracks){C("TextTracks supported");for(var o=0;o ");for(var r=0;rCe.captions.length-1){Ce.subcount=Ce.captions.length-1;break}Ce.media.currentTime.toFixed(1)>=n(Ce.captions[Ce.subcount][0])&&Ce.media.currentTime.toFixed(1)<=r(Ce.captions[Ce.subcount][0])?(Ce.currentCaption=Ce.captions[Ce.subcount][1],M(Ce.currentCaption)):M()}}function O(){Ce.buttons.captions&&(m(Ce.container,T.classes.captions.enabled,!0),T.captions.defaultActive&&(m(Ce.container,T.classes.captions.active,!0),w(Ce.buttons.captions,!0)))}function V(e){return Ce.container.querySelectorAll(e)}function q(e){return V(e)[0]}function R(){try{return e.self!==e.top}catch(t){return!0}}function j(){function e(e){9===e.which&&Ce.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=V("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];b(Ce.container,"keydown",e)}function H(e,t){if("string"==typeof t)d(e,Ce.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,Ce.media,t[n])}function B(){var e=T.html;C("Injecting custom controls"),e||(e=A()),e=o(e,"{seektime}",T.seekTime),e=o(e,"{id}",Math.floor(1e4*Math.random()));var n;if(null!==T.selectors.controls.container&&(n=T.selectors.controls.container,"string"==typeof selector&&(n=t.querySelector(n))),n instanceof HTMLElement||(n=Ce.container),n.insertAdjacentHTML("beforeend",e),T.tooltips.controls)for(var r=V(T.selectors.labels+" ."+T.classes.hidden),s=r.length-1;s>=0;s--){var a=r[s];m(a,T.classes.hidden,!1),m(a,T.classes.tooltip,!0)}}function D(){try{return Ce.controls=q(T.selectors.controls.wrapper),Ce.buttons={},Ce.buttons.seek=q(T.selectors.buttons.seek),Ce.buttons.play=q(T.selectors.buttons.play),Ce.buttons.pause=q(T.selectors.buttons.pause),Ce.buttons.restart=q(T.selectors.buttons.restart),Ce.buttons.rewind=q(T.selectors.buttons.rewind),Ce.buttons.forward=q(T.selectors.buttons.forward),Ce.buttons.fullscreen=q(T.selectors.buttons.fullscreen),Ce.buttons.volume=q(T.selectors.buttons.volume),Ce.buttons.mute=q(T.selectors.buttons.mute),Ce.buttons.captions=q(T.selectors.buttons.captions),Ce.checkboxes=V('[type="checkbox"]'),Ce.progress={},Ce.progress.container=q(T.selectors.progress.container),Ce.progress.buffer={},Ce.progress.buffer.bar=q(T.selectors.progress.buffer),Ce.progress.buffer.text=Ce.progress.buffer.bar&&Ce.progress.buffer.bar.getElementsByTagName("span")[0],Ce.progress.played={},Ce.progress.played.bar=q(T.selectors.progress.played),Ce.progress.played.text=Ce.progress.played.bar&&Ce.progress.played.bar.getElementsByTagName("span")[0],Ce.progress.tooltip=Ce.progress.container&&Ce.progress.container.querySelector("."+T.classes.tooltip),Ce.volume=q(T.selectors.buttons.volume),Ce.duration=q(T.selectors.duration),Ce.currentTime=q(T.selectors.currentTime),Ce.seekTime=V(T.selectors.seekTime),!0}catch(e){return C("It looks like there is a problem with your controls html",!0),$(!0),!1}}function Y(){m(Ce.container,N.selectors.container.replace(".",""),Ce.supported.full)}function $(e){e?Ce.media.setAttribute("controls",""):Ce.media.removeAttribute("controls")}function W(e){var t=T.i18n.play;"undefined"!=typeof T.title&&T.title.length&&(t+=", "+T.title),Ce.supported.full&&Ce.buttons.play&&Ce.buttons.play.setAttribute("aria-label",t),e instanceof HTMLElement&&e.setAttribute("title",T.i18n.frameTitle.replace("{title}",T.title))}function z(){if(!Ce.media)return C("No audio or video element found",!0),!1;if(Ce.supported.full&&(m(Ce.container,T.classes.type.replace("{0}",Ce.type),!0),m(Ce.container,T.classes.stopped,T.autoplay),m(Ce.container,T.classes.isIos,Ce.browser.ios),m(Ce.container,T.classes.isTouch,Ce.browser.touch),"video"===Ce.type)){var e=t.createElement("div");e.setAttribute("class",T.classes.videoWrapper),i(Ce.media,e),Ce.videoContainer=e}a(T.types.embed,Ce.type)?(K(),Ce.embedId=null):T.autoplay&&G()}function K(){for(var n=t.createElement("div"),r=Ce.embedId,a=Ce.type+"-"+Math.floor(1e4*Math.random()),o=V('[id^="'+Ce.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(m(Ce.media,T.classes.videoWrapper,!0),m(Ce.media,T.classes.embedWrapper,!0),"youtube"===Ce.type)Ce.media.appendChild(n),n.setAttribute("id",a),"object"==typeof YT?X(r,n):(s(T.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){X(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Ce.type){var l=t.createElement("iframe");l.loaded=!1,b(l,"load",function(){l.loaded=!0}),p(l,{src:"https://player.vimeo.com/video/"+r+"?player_id="+a+"&api=1&badge=0&byline=0&portrait=0&title=0",id:a,webkitallowfullscreen:"",mozallowfullscreen:"",allowfullscreen:"",frameborder:0}),Ce.supported.full?(n.appendChild(l),Ce.media.appendChild(n)):Ce.media.appendChild(l),"$f"in e||s(T.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),J.call(l))},50)}}function U(){Fe(),W(q("iframe"))}function X(t,n){"timer"in Ce||(Ce.timer={}),Ce.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:0,controls:Ce.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:T.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onReady:function(t){var n=t.target;Ce.media.play=function(){n.playVideo(),Ce.media.paused=!1},Ce.media.pause=function(){n.pauseVideo(),Ce.media.paused=!0},Ce.media.stop=function(){n.stopVideo(),Ce.media.paused=!0},Ce.media.duration=n.getDuration(),Ce.media.paused=!0,Ce.media.currentTime=n.getCurrentTime(),Ce.media.muted=n.isMuted(),k(Ce.media,"timeupdate"),e.clearInterval(Ce.timer.buffering),Ce.timer.buffering=e.setInterval(function(){Ce.media.buffered=n.getVideoLoadedFraction(),k(Ce.media,"progress"),1===Ce.media.buffered&&(e.clearInterval(Ce.timer.buffering),k(Ce.media,"canplaythrough"))},200),U(),me()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Ce.timer.playing),t.data){case 0:Ce.media.paused=!0,k(Ce.media,"ended");break;case 1:Ce.media.paused=!1,Ce.media.seeking=!1,k(Ce.media,"play"),k(Ce.media,"playing"),Ce.timer.playing=e.setInterval(function(){Ce.media.currentTime=n.getCurrentTime(),k(Ce.media,"timeupdate")},100);break;case 2:Ce.media.paused=!0,k(Ce.media,"pause")}}}})}function J(){Ce.embed=$f(this),Ce.embed.addEvent("ready",function(){Ce.media.play=function(){Ce.embed.api("play"),Ce.media.paused=!1},Ce.media.pause=function(){Ce.embed.api("pause"),Ce.media.paused=!0},Ce.media.stop=function(){Ce.embed.api("stop"),Ce.media.paused=!0},Ce.media.paused=!0,Ce.media.currentTime=0,U(),Ce.embed.api("getCurrentTime",function(e){Ce.media.currentTime=e,k(Ce.media,"timeupdate")}),Ce.embed.api("getDuration",function(e){Ce.media.duration=e,me()}),Ce.embed.addEvent("play",function(){Ce.media.paused=!1,k(Ce.media,"play"),k(Ce.media,"playing")}),Ce.embed.addEvent("pause",function(){Ce.media.paused=!0,k(Ce.media,"pause")}),Ce.embed.addEvent("playProgress",function(e){Ce.media.seeking=!1,Ce.media.currentTime=e.seconds,k(Ce.media,"timeupdate")}),Ce.embed.addEvent("loadProgress",function(e){Ce.media.buffered=e.percent,k(Ce.media,"progress"),1===parseInt(e.percent)&&k(Ce.media,"canplaythrough")}),Ce.embed.addEvent("finish",function(){Ce.media.paused=!0,k(Ce.media,"ended")})})}function G(){"play"in Ce.media&&Ce.media.play()}function Q(){"pause"in Ce.media&&Ce.media.pause()}function Z(e){e===!0?G():e===!1?Q():Ce.media[Ce.media.paused?"play":"pause"]()}function ee(e){"number"!=typeof e&&(e=T.seekTime),ne(Ce.media.currentTime-e)}function te(e){"number"!=typeof e&&(e=T.seekTime),ne(Ce.media.currentTime+e)}function ne(e){var t=0,n=Ce.media.paused,r=re();"number"==typeof e?t=e:"object"!=typeof e||"input"!==e.type&&"change"!==e.type||(t=e.target.value/e.target.max*r),0>t?t=0:t>r&&(t=r);try{Ce.media.currentTime=t.toFixed(1)}catch(s){}if(a(T.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.seekTo(t);break;case"vimeo":Ce.embed.api("seekTo",t.toFixed(0))}n&&Q(),k(Ce.media,"timeupdate"),Ce.media.seeking=!0}C("Seeking to "+Ce.media.currentTime+" seconds"),L(t)}function re(){var e=parseInt(T.duration);return isNaN(e)?Ce.media.duration:e}function se(){m(Ce.container,T.classes.playing,!Ce.media.paused),m(Ce.container,T.classes.stopped,Ce.media.paused)}function ae(e){var n=E.supportsFullScreen;e&&e.type===E.fullScreenEventName?Ce.isFullscreen=E.isFullScreen(Ce.container):n?(E.isFullScreen(Ce.container)?E.cancelFullScreen():E.requestFullScreen(Ce.container),Ce.isFullscreen=E.isFullScreen(Ce.container)):(Ce.isFullscreen=!Ce.isFullscreen,Ce.isFullscreen?(b(t,"keyup",oe),t.body.style.overflow="hidden"):(v(t,"keyup",oe),t.body.style.overflow="")),m(Ce.container,T.classes.fullscreen.active,Ce.isFullscreen),Ce.isFullscreen?Ce.container.setAttribute("tabindex","-1"):Ce.container.removeAttribute("tabindex"),j(Ce.isFullscreen),w(Ce.buttons.fullscreen,Ce.isFullscreen),T.fullscreen.hideControls&&ve(!0),k(Ce.container,Ce.isFullscreen?"enterfullscreen":"exitfullscreen")}function oe(e){27===(e.which||e.charCode||e.keyCode)&&Ce.isFullscreen&&ae()}function ie(e){if("boolean"!=typeof e&&(e=!Ce.media.muted),w(Ce.buttons.mute,e),Ce.media.muted=e,a(T.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed[Ce.media.muted?"mute":"unMute"]();break;case"vimeo":Ce.embed.api("setVolume",Ce.media.muted?0:parseFloat(T.volume/10))}k(Ce.media,"volumechange")}}function le(t){if("undefined"==typeof t&&(t=T.volume,T.storage.enabled&&F().supported&&(t=e.localStorage.getItem(T.storage.key))),isNaN(t)&&(t=T.volume),t>10&&(t=10),0>t&&(t=0),Ce.media.volume=parseFloat(t/10),T.volume=t,a(T.types.embed,Ce.type)){switch(Ce.type){case"youtube":Ce.embed.setVolume(100*Ce.media.volume);break;case"vimeo":Ce.embed.api("setVolume",Ce.media.volume)}k(Ce.media,"volumechange")}Ce.media.muted&&t>0&&ie()}function ue(){var t=Ce.media.muted?0:10*Ce.media.volume;Ce.supported.full&&Ce.volume&&(Ce.volume.value=t),T.storage.enabled&&F().supported&&!isNaN(t)&&e.localStorage.setItem(T.storage.key,t),m(Ce.container,T.classes.muted,0===t),Ce.supported.full&&Ce.buttons.mute&&w(Ce.buttons.mute,0===t)}function ce(e){Ce.supported.full&&Ce.buttons.captions&&("boolean"!=typeof e&&(e=-1===Ce.container.className.indexOf(T.classes.captions.active)),Ce.captionsEnabled=e,w(Ce.buttons.captions,Ce.captionsEnabled),m(Ce.container,T.classes.captions.active,Ce.captionsEnabled),k(Ce.container,Ce.captionsEnabled?"captionsenabled":"captionsdisabled"))}function pe(e){var t="waiting"===e.type;clearTimeout(Ce.timers.loading),Ce.timers.loading=setTimeout(function(){m(Ce.container,T.classes.loading,t)},t?250:0)}function de(e){var t=Ce.progress.played.bar,n=Ce.progress.played.text,r=0,s=re();if(e)switch(e.type){case"timeupdate":case"seeking":r=x(Ce.media.currentTime,s),"timeupdate"==e.type&&Ce.buttons.seek&&(Ce.buttons.seek.value=r);break;case"change":case"input":r=e.target.value;break;case"playing":case"progress":t=Ce.progress.buffer.bar,n=Ce.progress.buffer.text,r=function(){var e=Ce.media.buffered;return e&&e.length?x(e.end(0),s):"number"==typeof e?100*e:0}()}t&&(t.value=r),n&&(n.innerHTML=r)}function fe(e,t){if(t){isNaN(e)&&(e=0),Ce.secs=parseInt(e%60),Ce.mins=parseInt(e/60%60),Ce.hours=parseInt(e/60/60%60);var n=parseInt(re()/60/60%60)>0;Ce.secs=("0"+Ce.secs).slice(-2),Ce.mins=("0"+Ce.mins).slice(-2),t.innerHTML=(n?Ce.hours+":":"")+Ce.mins+":"+Ce.secs}}function me(){if(Ce.supported.full){var e=re()||0;!Ce.duration&&T.displayDuration&&Ce.media.paused&&fe(e,Ce.currentTime),Ce.duration&&fe(e,Ce.duration),be()}}function ye(e){fe(Ce.media.currentTime,Ce.currentTime),e&&"timeupdate"==e.type&&Ce.media.seeking||de(e)}function be(e){if(T.tooltips.seek&&!Ce.browser.touch){var t=Ce.progress.container.getBoundingClientRect(),n=0,r=T.classes.tooltip+"--visible";if(e)n=100/t.width*(e.pageX-t.left);else{if(!y(Ce.progress.tooltip,r))return;n=Ce.progress.tooltip.style.left.replace("%","")}0>n?n=0:n>100&&(n=100),fe(re()/100*n,Ce.progress.tooltip),Ce.progress.tooltip.style.left=n+"%",e&&a(["mouseenter","mouseleave"],e.type)&&m(Ce.progress.tooltip,r,"mouseenter"===e.type)}}function ve(t){Ce.isFullscreen&&(m(Ce.container,T.classes.hover,!0),e.clearTimeout(Ce.timers.hover),Ce.timers.hover=e.setTimeout(function(){Ce.controls.mouseover&&t!==!0||m(Ce.container,T.classes.hover,!1)},2e3))}function ge(e){if("undefined"!=typeof e)return void he(e);var t;switch(Ce.type){case"youtube":t=Ce.embed.getVideoUrl();break;case"vimeo":Ce.embed.api("getVideoUrl",function(e){t=e});break;default:t=Ce.media.currentSrc}return t||""}function he(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void C("Invalid source format",!0);if(Q(),"youtube"===Ce.type?(Ce.embed.destroy(),e.clearInterval(Ce.timer.buffering),e.clearInterval(Ce.timer.playing)):"video"===Ce.type&&Ce.videoContainer&&u(Ce.videoContainer),u(Ce.media),"type"in n&&(Ce.type=n.type,"video"===Ce.type)){var r=n.sources[0];"type"in r&&a(T.types.embed,r.type)&&(Ce.type=r.type)}switch(Ce.supported=S.supported(Ce.type),Ce.type){case"video":Ce.media=t.createElement("video");break;case"audio":Ce.media=t.createElement("audio");break;case"youtube":case"vimeo":Ce.media=t.createElement("div"),Ce.embedId=n.sources[0].src}c(Ce.container,Ce.media),a(T.types.html5,Ce.type)&&(T.crossorigin&&Ce.media.setAttribute("crossorigin",""),T.autoplay&&Ce.media.setAttribute("autoplay",""),"poster"in n&&Ce.media.setAttribute("poster",n.poster),T.loop&&Ce.media.setAttribute("loop","")),Ce.container.className=Ce.originalClassName,m(Ce.container,T.classes.fullscreen.active,Ce.isFullscreen),m(Ce.container,T.classes.captions.active,Ce.captionsEnabled),Y(),T.autoplay=n.autoplay||T.autoplay,a(T.types.html5,Ce.type)&&H("source",n.sources),z(),a(T.types.html5,Ce.type)&&("tracks"in n&&H("track",n.tracks),Ce.media.load(),Fe(),me()),T.autoplay&&G(),"title"in n&&(T.title=n.title,W()),Ce.container.plyr.media=Ce.media}function ke(e){"video"===Ce.type&&Ce.media.setAttribute("poster",e)}function we(){function n(){var e=Ce.media.paused;e?G():Q();var t=Ce.buttons[e?"play":"pause"],n=Ce.buttons[e?"pause":"play"];if(n){var r=y(t,T.classes.tabFocus);setTimeout(function(){n.focus(),r&&(m(t,T.classes.tabFocus,!1),m(n,T.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 Ce.buttons){var r=Ce.buttons[n];m(r,T.classes.tabFocus,r===e)}}var s="IE"==Ce.browser.name?"change":"input";b(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),b(t.body,"click",function(){m(q("."+T.classes.tabFocus),T.classes.tabFocus,!1)});for(var a in Ce.buttons){var o=Ce.buttons[a];b(o,"blur",function(){m(o,"tab-focus",!1)})}g(Ce.buttons.play,"click",T.listeners.play,n),g(Ce.buttons.pause,"click",T.listeners.pause,n),g(Ce.buttons.restart,"click",T.listeners.restart,ne),g(Ce.buttons.rewind,"click",T.listeners.rewind,ee),g(Ce.buttons.forward,"click",T.listeners.forward,te),g(Ce.buttons.seek,s,T.listeners.seek,ne),g(Ce.volume,s,T.listeners.volume,function(){le(Ce.volume.value)}),g(Ce.buttons.mute,"click",T.listeners.mute,ie),g(Ce.buttons.fullscreen,"click",T.listeners.fullscreen,ae),E.supportsFullScreen&&b(t,E.fullScreenEventName,ae),b(Ce.buttons.captions,"click",ce),b(Ce.progress.container,"mouseenter mouseleave mousemove",be);T.fullscreen.hideControls&&b(Ce.controls,"mouseenter mouseleave",function(e){Ce.controls.mouseover="mouseenter"===e.type})}function xe(){b(Ce.media,"timeupdate seeking",ye),b(Ce.media,"timeupdate",L),b(Ce.media,"durationchange loadedmetadata",me),b(Ce.media,"ended",function(){"video"===Ce.type&&M(),se()}),b(Ce.media,"progress playing",de),b(Ce.media,"volumechange",ue),b(Ce.media,"play pause",se),b(Ce.media,"waiting canplay seeked",pe),T.click&&b(Ce.media,"click",function(){Ce.media.paused?G():Ce.media.ended?(ne(),G()):Q()}),T.fullscreen.hideControls&&b(Ce.media,"mousemove",ve),b(Ce.media,T.events.join(" "),function(e){k(Ce.container,e.type)})}function Te(){if(!Ce.init)return null;if(Ce.container.setAttribute("class",f(T.selectors.container)),Ce.init=!1,u(q(T.selectors.controls.wrapper)),"youtube"===Ce.type)return void Ce.embed.destroy();"video"===Ce.type&&(u(q(T.selectors.captions)),l(Ce.videoContainer)),$(!0);var e=Ce.media.cloneNode(!0);Ce.media.parentNode.replaceChild(e,Ce.media)}function _e(){if(Ce.init)return null;E=_(),Ce.browser=n(),Ce.media=Ce.container.querySelectorAll("audio, video, div")[0],Ce.originalClassName=Ce.container.className;var e=Ce.media.tagName.toLowerCase();if("div"===e?(Ce.type=Ce.media.getAttribute("data-type"),Ce.embedId=Ce.media.getAttribute("data-video-id"),Ce.media.removeAttribute("data-type"),Ce.media.removeAttribute("data-video-id")):(Ce.type=e,T.crossorigin=null!==Ce.media.getAttribute("crossorigin"),T.autoplay=T.autoplay||null!==Ce.media.getAttribute("autoplay"),T.loop=T.loop||null!==Ce.media.getAttribute("loop")),Ce.supported=S.supported(Ce.type),Y(),!Ce.supported.basic)return!1;if(C(Ce.browser.name+" "+Ce.browser.version),z(),a(T.types.html5,Ce.type)){if(!Ce.supported.full)return void(Ce.init=!0);Fe(),W()}Ce.init=!0}function Fe(){if(!Ce.supported.full)return C("No full support for this media type ("+Ce.type+")",!0),u(q(T.selectors.controls.wrapper)),void $(!0);var e=!V(T.selectors.controls.wrapper).length;e&&B(),D()&&(e&&we(),xe(),$(),I(),P(),le(),ue(),ye(),se(),me())}var Ce=this;return Ce.container=h,Ce.timers={},C(T),_e(),Ce.init?{media:Ce.media,play:G,pause:Q,restart:ne,rewind:ee,forward:te,seek:ne,source:ge,poster:ke,setVolume:le,togglePlay:Z,toggleMute:ie,toggleCaptions:ce,toggleFullscreen:ae,isFullscreen:function(){return Ce.isFullscreen||!1},support:function(e){return r(Ce,e)},destroy:Te,restore:_e}:{}}var E,S={},N={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,duration:null,displayDuration:!0,iconPrefix:"icon",click:!0,tooltips:{controls:!1,seek:!0},selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',volume:'[data-plyr="volume"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},progress:{container:".plyr__progress",buffer:".plyr__progress--buffer",played:".plyr__progress--played"},captions:".plyr__captions",currentTime:".plyr__time--current",duration:".plyr__time--duration"},classes:{videoWrapper:"plyr__video-wrapper",embedWrapper:"plyr__video-embed",type:"plyr--{0}",stopped:"plyr--stopped",playing:"plyr--playing",muted:"plyr--muted",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",hidden:"plyr__sr-only",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",active:"plyr--fullscreen-active",hideControls:"plyr--fullscreen--hide-controls"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,hideControls:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr_volume"},controls:["restart","rewind","play","fast-forward","current-time","duration","mute","volume","captions","fullscreen"],i18n:{restart:"Restart",rewind:"Rewind {seektime} secs",play:"Play",pause:"Pause",forward:"Forward {seektime} secs",played:"played",buffered:"buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",toggleMute:"Toggle Mute",toggleCaptions:"Toggle Captions",toggleFullscreen:"Toggle Fullscreen",frameTitle:"Player for {title}"},types:{embed:["youtube","vimeo"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.0/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,forward:null,mute:null,volume:null,captions:null,fullscreen:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","emptied"]};return S.supported=function(e){var r,s,a=n(),o="IE"===a.name&&a.version<=9,i=/iPhone|iPod/i.test(navigator.userAgent),l=!!t.createElement("audio").canPlayType,u=!!t.createElement("video").canPlayType; switch(e){case"video":r=u,s=r&&!o&&!i;break;case"audio":r=l,s=r&&!o;break;case"vimeo":case"youtube":r=!0,s=!o&&!i;break;default:r=l&&u,s=r&&!o}return{basic:r,full:s}},S.setup=function(e,n){var r=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(N.selectors.container)),!S.supported().basic||!e.length)return!1;for(var s=e.length-1;s>=0;s--){var a=e[s];if("undefined"==typeof a.plyr){var o=T(N,n,JSON.parse(a.getAttribute("data-plyr")));if(!o.enabled)return;var i=new C(a,o);a.plyr=Object.keys(i).length?i:!1,k(a,"setup",{plyr:a.plyr})}r.push(a.plyr)}return r},S}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,"CustomEvent"in window||(window.CustomEvent=e)}(); \ No newline at end of file diff --git a/package.json b/package.json index 2eb6aa20..18031968 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.5.12", + "version": "1.5.13", "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", "main": "src/js/plyr.js", diff --git a/readme.md b/readme.md index b5ef91e4..2179400c 100644 --- a/readme.md +++ b/readme.md @@ -40,7 +40,7 @@ If you have any cool ideas or features, please let me know by [creating an issue Check `docs/index.html` and `docs/dist/docs.js` for an example setup. -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.12/plyr.js` to `https://cdn.plyr.io/1.5.12/plyr.js` +**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.5.13/plyr.js` to `https://cdn.plyr.io/1.5.13/plyr.js` ### Node Package Manager (NPM) Using NPM, you can grab Plyr: @@ -69,11 +69,11 @@ More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub] If you want to use our CDN, you can use the following: ```html - - + + ``` -You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.12/sprite.svg`. +You can also access the `sprite.svg` file at `https://cdn.plyr.io/1.5.13/sprite.svg`. ### CSS & Styling If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.sass` file included in `/src` in your build to save a request. @@ -170,7 +170,7 @@ More info on CORS here: Here's an example of a default setup: ```html - + ``` diff --git a/src/js/plyr.js b/src/js/plyr.js index 066392dd..637a267c 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -914,16 +914,26 @@ xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status === 200) { - var records = [], - record, + var captions = [], + caption, req = xhr.responseText; - records = req.split('\n\n'); + captions = req.split('\n\n'); - for (var r = 0; r < records.length; r++) { - record = records[r]; + for (var r = 0; r < captions.length; r++) { + caption = captions[r]; plyr.captions[r] = []; - plyr.captions[r] = record.split('\n'); + + // Get the parts of the captions + var parts = caption.split('\n'), + index = 0; + + // Incase caption numbers are added + if(parts[index].indexOf(":") === -1) { + index = 1; + } + + plyr.captions[r] = [parts[index], parts[index + 1]]; } // Remove first element ('VTT') From b7a14be2ac77a402a9ee7f44057de0b683f919a0 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 21 Feb 2016 14:33:34 +1100 Subject: [PATCH 67/87] Removed npm log --- .gitignore | 1 + npm-debug.log | 20 -------------------- 2 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 npm-debug.log diff --git a/.gitignore b/.gitignore index 69adfe50..4a37ad0d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ aws.json docs/index.dev.html *.mp4 notes.txt +npm-debug.log diff --git a/npm-debug.log b/npm-debug.log deleted file mode 100644 index cc4a1ab7..00000000 --- a/npm-debug.log +++ /dev/null @@ -1,20 +0,0 @@ -0 info it worked if it ends with ok -1 verbose cli [ '/usr/local/Cellar/node/5.0.0/bin/node', -1 verbose cli '/usr/local/bin/npm', -1 verbose cli 'version', -1 verbose cli '1.5.12' ] -2 info using npm@3.3.9 -3 info using node@v5.0.0 -4 verbose stack Error: Version not changed -4 verbose stack at /usr/local/lib/node_modules/npm/lib/version.js:52:49 -4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:76:16 -4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:404:3) -5 verbose cwd /usr/local/var/www/dev/plyr -6 error Darwin 14.5.0 -7 error argv "/usr/local/Cellar/node/5.0.0/bin/node" "/usr/local/bin/npm" "version" "1.5.12" -8 error node v5.0.0 -9 error npm v3.3.9 -10 error Version not changed -11 error If you need help, you may report this error at: -11 error -12 verbose exit [ 1, true ] From 188a2e72eb8c32da5223712c2488441729cc5c83 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Sun, 21 Feb 2016 14:34:49 +1100 Subject: [PATCH 68/87] Update readme.md --- readme.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/readme.md b/readme.md index 2179400c..92f7b09b 100644 --- a/readme.md +++ b/readme.md @@ -163,6 +163,11 @@ You'll notice the `crossorigin` attribute on the example `

Doh.

Looks like something went wrong.

-
Back to plyr.io + Back to plyr.io