aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam <me@sampotts.me>2016-06-09 09:49:01 +0100
committerSam <me@sampotts.me>2016-06-09 09:49:01 +0100
commit98792168e4d76ab126f3fb643b9cc7d462b5d1b2 (patch)
tree2f99332c8e887abc4a3f72e453d5633636ee6140
parent1a745e1eaa027425ba645adcb648d0ba1aa64885 (diff)
downloadplyr-98792168e4d76ab126f3fb643b9cc7d462b5d1b2.tar.lz
plyr-98792168e4d76ab126f3fb643b9cc7d462b5d1b2.tar.xz
plyr-98792168e4d76ab126f3fb643b9cc7d462b5d1b2.zip
Changes to setup return value, SVG bug fix (fixes #269)
-rw-r--r--changelog.md8
-rw-r--r--demo/dist/demo.js2
-rw-r--r--demo/src/js/main.js3
-rw-r--r--dist/plyr.js4
-rw-r--r--package.json2
-rw-r--r--readme.md23
-rw-r--r--src/js/plyr.js148
7 files changed, 118 insertions, 72 deletions
diff --git a/changelog.md b/changelog.md
index c1cca012..08607786 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,11 +1,15 @@
# Changelog
+# v1.8.0
+- ***(Important)*** `setup()` now returns the element Plyr was setup on rather than the `plyr` object. This means `var player = plyr.setup()[0];` would now be `var player = plyr.setup()[0].plyr;`. This improves support for React and other virtual dom frameworks as mentioned in #254
+- Fixed using a relative URL for `iconUrl` in IE (fixes #269)
+
# v1.7.0
- SASS cleanup (fixes #265)
- Docs tidy up to help quick start (fixes #253)
- Fix for issues with data attribute options passing (fixes #257)
-- Removed the requirement for a wrapper div to setup Plyr and removed the dependency on the `plyr` classname as a JS hook. By default it will now look for `<video>`, `<audio>` and `[data-type]` elements. If you are just calling `setup()` with a `<div class="plyr">` you may want to give it a good test after upgrading. You can probably remove the wrapper div. The reason behind this is to make setup easier for newcomers and prevent the styling being used on unsupported players (because the plyr classname was used as a CSS and JS hook - which isn't ideal)
-- Renamed the 'docs' folder to `demo` to avoid confusion. The readme is the docs after all.
+- ***(Important)*** Removed the requirement for a wrapper div to setup Plyr and removed the dependency on the `plyr` classname as a JS hook. By default it will now look for `<video>`, `<audio>` and `[data-type]` elements. If you are just calling `setup()` with a `<div class="plyr">` you may want to give it a good test after upgrading. You can probably remove the wrapper div. The reason behind this is to make setup easier for newcomers and prevent the styling being used on unsupported players (because the plyr classname was used as a CSS and JS hook - which isn't ideal)
+- Renamed the 'docs' folder to `demo` to avoid confusion - the readme is the docs after all
## v1.6.20
- Fix for multiple sprites being requested (fixes #259)
diff --git a/demo/dist/demo.js b/demo/dist/demo.js
index fdb89c46..c166e667 100644
--- a/demo/dist/demo.js
+++ b/demo/dist/demo.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],o=Object,n=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=n.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,o=i.length;o>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,o=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),o=!0);while(++i<s);o&&this._updateClassName()},u.remove=function(){var e,t,i=arguments,s=0,o=i.length,n=!1;do for(e=i[s]+"",t=c(this,e);-1!==t;)this.splice(t,1),n=!0,t=c(this,e);while(++s<o);n&&this._updateClassName()},u.toggle=function(e,t){e+="";var i=this.contains(e),s=i?t!==!0&&"remove":t!==!1&&"add";return s&&this[s](e),t===!0||t===!1?t:!i},u.toString=function(){return this.join(" ")},o.defineProperty){var p={get:d,enumerable:!0,configurable:!0};try{o.defineProperty(s,t,p)}catch(h){-2146823252===h.number&&(p.enumerable=!1,o.defineProperty(s,t,p))}}else o[i].__defineGetter__&&s.__defineGetter__(t,d)}}(self)),function(){function e(e,t,i){if(e)if(e.classList)e.classList[i?"add":"remove"](t);else{var s=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=s+(i?" "+t:"")}}function t(t,i){if(t in n&&(i||t!=r)&&(r.length||t!=n.video)){switch(t){case n.video:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4",type:"video/mp4"},{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm",type:"video/webm"}],poster:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.en.vtt","default":!0}]});break;case n.audio:s.source({type:"audio",title:"Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;",sources:[{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]});break;case n.youtube:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"bTqVqk7FSmY",type:"youtube"}]});break;case n.vimeo:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"143418951",type:"vimeo"}]})}r=t;for(var a=o.length-1;a>=0;a--)e(o[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}var i=plyr.setup({debug:!0,title:"Video demo",iconUrl:"../dist/plyr.svg",tooltips:{controls:!0},captions:{defaultActive:!0}});plyr.loadSprite("dist/demo.svg");for(var s=i[0],o=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState,c=o.length-1;c>=0;c--)o[c].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),a&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),a){var l=!r.length;l&&(r=n.video),r in n&&history.replaceState({type:r},"",l?"":"#"+r),r!==n.video&&t(r,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,o,n,r){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,n=t.createElement(i),r=t.getElementsByTagName(i)[0],n.async=1,n.src=s,r.parentNode.insertBefore(n,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],o=Object,n=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=n.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,o=i.length;o>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,o=!1;do e=t[i]+"",-1===c(this,e)&&(this.push(e),o=!0);while(++i<s);o&&this._updateClassName()},u.remove=function(){var e,t,i=arguments,s=0,o=i.length,n=!1;do for(e=i[s]+"",t=c(this,e);-1!==t;)this.splice(t,1),n=!0,t=c(this,e);while(++s<o);n&&this._updateClassName()},u.toggle=function(e,t){e+="";var i=this.contains(e),s=i?t!==!0&&"remove":t!==!1&&"add";return s&&this[s](e),t===!0||t===!1?t:!i},u.toString=function(){return this.join(" ")},o.defineProperty){var p={get:d,enumerable:!0,configurable:!0};try{o.defineProperty(s,t,p)}catch(h){-2146823252===h.number&&(p.enumerable=!1,o.defineProperty(s,t,p))}}else o[i].__defineGetter__&&s.__defineGetter__(t,d)}}(self)),function(){function e(e,t,i){if(e)if(e.classList)e.classList[i?"add":"remove"](t);else{var s=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=s+(i?" "+t:"")}}function t(t,i){if(t in n&&(i||t!=r)&&(r.length||t!=n.video)){switch(t){case n.video:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4",type:"video/mp4"},{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm",type:"video/webm"}],poster:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.en.vtt","default":!0}]});break;case n.audio:s.source({type:"audio",title:"Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;",sources:[{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]});break;case n.youtube:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"bTqVqk7FSmY",type:"youtube"}]});break;case n.vimeo:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"143418951",type:"vimeo"}]})}r=t;for(var a=o.length-1;a>=0;a--)e(o[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}var i=plyr.setup({debug:!0,title:"Video demo",iconUrl:"../dist/plyr.svg",tooltips:{controls:!0},captions:{defaultActive:!0}});plyr.loadSprite("dist/demo.svg");for(var s=i[0].plyr,o=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState,c=o.length-1;c>=0;c--)o[c].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),a&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),a){var l=!r.length;l&&(r=n.video),r in n&&history.replaceState({type:r},"",l?"":"#"+r),r!==n.video&&t(r,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,o,n,r){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,n=t.createElement(i),r=t.getElementsByTagName(i)[0],n.async=1,n.src=s,r.parentNode.insertBefore(n,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/demo/src/js/main.js b/demo/src/js/main.js
index 719672bd..093d35d3 100644
--- a/demo/src/js/main.js
+++ b/demo/src/js/main.js
@@ -6,7 +6,6 @@
/*global plyr*/
-
// General functions
;(function() {
// Setup the player
@@ -24,7 +23,7 @@
plyr.loadSprite('dist/demo.svg');
// Plyr returns an array regardless
- var player = instances[0];
+ var player = instances[0].plyr;
// Setup type toggle
var buttons = document.querySelectorAll('[data-source]'),
diff --git a/dist/plyr.js b/dist/plyr.js
index 8ff3218e..12acaac3 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,a,r=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=r.indexOf("MSIE"))?(s="IE",o=r.substring(n+5)):-1!==(n=r.indexOf("Chrome"))?(s="Chrome",o=r.substring(n+7)):-1!==(n=r.indexOf("Safari"))?(s="Safari",o=r.substring(n+7),-1!==(n=r.indexOf("Version"))&&(o=r.substring(n+8))):-1!==(n=r.indexOf("Firefox"))?(s="Firefox",o=r.substring(n+8)):(e=r.lastIndexOf(" ")+1)<(n=r.lastIndexOf("/"))&&(s=r.substring(e,n),o=r.substring(n+1),s.toLowerCase()==s.toUpperCase()&&(s=navigator.appName)),-1!==(a=o.indexOf(";"))&&(o=o.substring(0,a)),-1!==(a=o.indexOf(" "))&&(o=o.substring(0,a)),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 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 r(e){if(!t.querySelectorAll('script[src="'+e+'"]').length){var n=t.createElement("script");n.src=e;var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a)}}function s(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 a=n>0?t.cloneNode(!0):t,r=e[n],s=r.parentNode,o=r.nextSibling;return a.appendChild(r),o?s.insertBefore(a,o):s.appendChild(a),a}}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,a){var r=t.createElement(e);p(r,a),c(n,r)}function A(e){return e.replace(".","")}function m(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var a=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=a+(n?" "+t:"")}}function f(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function y(e,n){var a=Element.prototype,r=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.msMatchesSelector||function(e){return-1!==[].indexOf.call(t.querySelectorAll(e),this)};return r.call(e,n)}function b(e,t,n,a){e&&h(e,t,n,!0,a)}function v(e,t,n,a){e&&h(e,t,n,!1,a)}function g(e,t,n,a,r){b(e,t,function(t){n&&n.apply(e,[t]),a.apply(e,[t])},r)}function h(e,t,n,a,r){var s=t.split(" ");if("boolean"!=typeof r&&(r=!1),e instanceof NodeList)for(var o=0;o<e.length;o++)e[o]instanceof Node&&h(e[o],arguments[1],arguments[2],arguments[3]);else for(var i=0;i<s.length;i++)e[a?"addEventListener":"removeEventListener"](s[i],n,r)}function k(e,t,n,a){if(e&&t){"boolean"!=typeof n&&(n=!1);var r=new CustomEvent(t,{bubbles:n,detail:a});e.dispatchEvent(r)}}function w(e,t){return e?(t="boolean"==typeof t?t:!e.getAttribute("aria-pressed"),e.setAttribute("aria-pressed",t),t):void 0}function x(e,t){return 0===e||0===t||isNaN(e)||isNaN(t)?0:(e/t*100).toFixed(2)}function T(){var e=arguments;if(e.length){if(1==e.lenth)return e[0];for(var t=Array.prototype.shift.call(e),n=e.length,a=0;n>a;a++){var r=e[a];for(var s in r)r[s]&&r[s].constructor&&r[s].constructor===Object?(t[s]=t[s]||{},T(t[s],r[s])):t[s]=r[s]}return t}}function E(){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 a=0,r=n.length;r>a;a++){if(e.prefix=n[a],"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 _(){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(y,h){function T(t,n){h.debug&&e.console&&console[n?"warn":"log"](t)}function C(){return{url:h.iconUrl,external:0===h.iconUrl.indexOf("http")}}function M(){var e=[],t=C(),n=(t.external?"":t.url)+"#"+h.iconPrefix;return s(h.controls,"play-large")&&e.push('<button type="button" data-plyr="play" class="plyr__play-large">','<svg><use xlink:href="'+n+'-play" /></svg>','<span class="plyr__sr-only">'+h.i18n.play+"</span>","</button>"),e.push('<div class="plyr__controls">'),s(h.controls,"restart")&&e.push('<button type="button" data-plyr="restart">','<svg><use xlink:href="'+n+'-restart" /></svg>','<span class="plyr__sr-only">'+h.i18n.restart+"</span>","</button>"),s(h.controls,"rewind")&&e.push('<button type="button" data-plyr="rewind">','<svg><use xlink:href="'+n+'-rewind" /></svg>','<span class="plyr__sr-only">'+h.i18n.rewind+"</span>","</button>"),s(h.controls,"play")&&e.push('<button type="button" data-plyr="play">','<svg><use xlink:href="'+n+'-play" /></svg>','<span class="plyr__sr-only">'+h.i18n.play+"</span>","</button>",'<button type="button" data-plyr="pause">','<svg><use xlink:href="'+n+'-pause" /></svg>','<span class="plyr__sr-only">'+h.i18n.pause+"</span>","</button>"),s(h.controls,"fast-forward")&&e.push('<button type="button" data-plyr="fast-forward">','<svg><use xlink:href="'+n+'-fast-forward" /></svg>','<span class="plyr__sr-only">'+h.i18n.forward+"</span>","</button>"),s(h.controls,"progress")&&(e.push('<span class="plyr__progress">','<label for="seek{id}" class="plyr__sr-only">Seek</label>','<input id="seek{id}" class="plyr__progress--seek" type="range" min="0" max="100" step="0.1" value="0" data-plyr="seek">','<progress class="plyr__progress--played" max="100" value="0" role="presentation"></progress>','<progress class="plyr__progress--buffer" max="100" value="0">',"<span>0</span>% "+h.i18n.buffered,"</progress>"),h.tooltips.seek&&e.push('<span class="plyr__tooltip">00:00</span>'),e.push("</span>")),s(h.controls,"current-time")&&e.push('<span class="plyr__time">','<span class="plyr__sr-only">'+h.i18n.currentTime+"</span>",'<span class="plyr__time--current">00:00</span>',"</span>"),s(h.controls,"duration")&&e.push('<span class="plyr__time">','<span class="plyr__sr-only">'+h.i18n.duration+"</span>",'<span class="plyr__time--duration">00:00</span>',"</span>"),s(h.controls,"mute")&&e.push('<button type="button" data-plyr="mute">','<svg class="icon--muted"><use xlink:href="'+n+'-muted" /></svg>','<svg><use xlink:href="'+n+'-volume" /></svg>','<span class="plyr__sr-only">'+h.i18n.toggleMute+"</span>","</button>"),s(h.controls,"volume")&&e.push('<span class="plyr__volume">','<label for="volume{id}" class="plyr__sr-only">'+h.i18n.volume+"</label>",'<input id="volume{id}" class="plyr__volume--input" type="range" min="'+h.volumeMin+'" max="'+h.volumeMax+'" value="'+h.volume+'" data-plyr="volume">','<progress class="plyr__volume--display" max="'+h.volumeMax+'" value="'+h.volumeMin+'" role="presentation"></progress>',"</span>"),s(h.controls,"captions")&&e.push('<button type="button" data-plyr="captions">','<svg class="icon--captions-on"><use xlink:href="'+n+'-captions-on" /></svg>','<svg><use xlink:href="'+n+'-captions-off" /></svg>','<span class="plyr__sr-only">'+h.i18n.toggleCaptions+"</span>","</button>"),s(h.controls,"fullscreen")&&e.push('<button type="button" data-plyr="fullscreen">','<svg class="icon--exit-fullscreen"><use xlink:href="'+n+'-exit-fullscreen" /></svg>','<svg><use xlink:href="'+n+'-enter-fullscreen" /></svg>','<span class="plyr__sr-only">'+h.i18n.toggleFullscreen+"</span>","</button>"),e.push("</div>"),e.join("")}function P(){if(Be.supported.full&&("audio"!=Be.type||h.fullscreen.allowAudio)&&h.fullscreen.enabled){var e=I.supportsFullScreen;e||h.fullscreen.fallback&&!G()?(T((e?"Native":"Fallback")+" fullscreen enabled"),m(Be.container,h.classes.fullscreen.enabled,!0)):T("Fullscreen not supported and fallback disabled"),w(Be.buttons.fullscreen,!1),W()}}function R(){if("video"===Be.type){V(h.selectors.captions)||Be.videoContainer.insertAdjacentHTML("afterbegin",'<div class="'+A(h.selectors.captions)+'"></div>'),Be.usingTextTracks=!1,Be.media.textTracks&&(Be.usingTextTracks=!0);for(var e,t="",n=Be.media.childNodes,a=0;a<n.length;a++)"track"===n[a].nodeName.toLowerCase()&&(e=n[a].kind,"captions"!==e&&"subtitles"!==e||(t=n[a].getAttribute("src")));if(Be.captionExists=!0,""===t?(Be.captionExists=!1,T("No caption track found")):T("Caption track found; URI: "+t),Be.captionExists){for(var r=Be.media.textTracks,s=0;s<r.length;s++)r[s].mode="hidden";if(O(Be),("IE"===Be.browser.name&&Be.browser.version>=10||"Firefox"===Be.browser.name&&Be.browser.version>=31)&&(T("Detected browser with known TextTrack issues - using manual fallback"),Be.usingTextTracks=!1),Be.usingTextTracks){T("TextTracks supported");for(var o=0;o<r.length;o++){var i=r[o];"captions"!==i.kind&&"subtitles"!==i.kind||b(i,"cuechange",function(){this.activeCues[0]&&"text"in this.activeCues[0]?L(this.activeCues[0].getCueAsHTML()):L()})}}else if(T("TextTracks not supported so rendering captions manually"),Be.currentCaption="",Be.captions=[],""!==t){var l=new XMLHttpRequest;l.onreadystatechange=function(){if(4===l.readyState)if(200===l.status){var e,t=[],n=l.responseText;t=n.split("\n\n");for(var a=0;a<t.length;a++){e=t[a],Be.captions[a]=[];var r=e.split("\n"),s=0;-1===r[s].indexOf(":")&&(s=1),Be.captions[a]=[r[s],r[s+1]]}Be.captions.shift(),T("Successfully loaded the caption file via AJAX")}else T("There was a problem loading the caption file via AJAX",!0)},l.open("get",t,!0),l.send()}}else m(Be.container,h.classes.captions.enabled)}}function L(e){var n=V(h.selectors.captions),a=t.createElement("span");n.innerHTML="","undefined"==typeof e&&(e=""),"string"==typeof e?a.innerHTML=e.trim():a.appendChild(e),n.appendChild(a);n.offsetHeight}function B(e){function t(e,t){var n=[];n=e.split(" --> ");for(var a=0;a<n.length;a++)n[a]=n[a].replace(/(\d+:\d+:\d+\.\d+).*/,"$1");return r(n[t])}function n(e){return t(e,0)}function a(e){return t(e,1)}function r(e){if(null===e||void 0===e)return 0;var t,n=[],a=[];return n=e.split(","),a=n[0].split(":"),t=Math.floor(60*a[0]*60)+Math.floor(60*a[1])+Math.floor(a[2])}if(!Be.usingTextTracks&&"video"===Be.type&&Be.supported.full&&(Be.subcount=0,e="number"==typeof e?e:Be.media.currentTime,Be.captions[Be.subcount])){for(;a(Be.captions[Be.subcount][0])<e.toFixed(1);)if(Be.subcount++,Be.subcount>Be.captions.length-1){Be.subcount=Be.captions.length-1;break}Be.media.currentTime.toFixed(1)>=n(Be.captions[Be.subcount][0])&&Be.media.currentTime.toFixed(1)<=a(Be.captions[Be.subcount][0])?(Be.currentCaption=Be.captions[Be.subcount][1],L(Be.currentCaption)):L()}}function O(){Be.buttons.captions&&(m(Be.container,h.classes.captions.enabled,!0),h.captions.defaultActive&&(m(Be.container,h.classes.captions.active,!0),w(Be.buttons.captions,!0)))}function H(e){return Be.container.querySelectorAll(e)}function V(e){return H(e)[0]}function G(){try{return e.self!==e.top}catch(t){return!0}}function W(){function e(e){9===e.which&&Be.isFullscreen&&(e.target!==a||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),a.focus()):(e.preventDefault(),n.focus()))}var t=H("input:not([disabled]), button:not([disabled])"),n=t[0],a=t[t.length-1];b(Be.container,"keydown",e)}function Y(e,t){if("string"==typeof t)d(e,Be.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,Be.media,t[n])}function q(){if(h.loadSprite){var e=C();e.external?(T("Loading external SVG sprite"),S(e.url,"sprite-plyr")):T("Sprite will be used inline")}var n=h.html;T("Injecting custom controls"),n||(n=M()),n=o(n,"{seektime}",h.seekTime),n=o(n,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==h.selectors.controls.container&&(a=h.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Be.container),a.insertAdjacentHTML("beforeend",n),h.tooltips.controls)for(var r=H([h.selectors.controls.wrapper," ",h.selectors.labels," .",h.classes.hidden].join("")),s=r.length-1;s>=0;s--){var i=r[s];m(i,h.classes.hidden,!1),m(i,h.classes.tooltip,!0)}}function j(){try{return Be.controls=V(h.selectors.controls.wrapper),Be.buttons={},Be.buttons.seek=V(h.selectors.buttons.seek),Be.buttons.play=H(h.selectors.buttons.play),Be.buttons.pause=V(h.selectors.buttons.pause),Be.buttons.restart=V(h.selectors.buttons.restart),Be.buttons.rewind=V(h.selectors.buttons.rewind),Be.buttons.forward=V(h.selectors.buttons.forward),Be.buttons.fullscreen=V(h.selectors.buttons.fullscreen),Be.buttons.mute=V(h.selectors.buttons.mute),Be.buttons.captions=V(h.selectors.buttons.captions),Be.progress={},Be.progress.container=V(h.selectors.progress.container),Be.progress.buffer={},Be.progress.buffer.bar=V(h.selectors.progress.buffer),Be.progress.buffer.text=Be.progress.buffer.bar&&Be.progress.buffer.bar.getElementsByTagName("span")[0],Be.progress.played=V(h.selectors.progress.played),Be.progress.tooltip=Be.progress.container&&Be.progress.container.querySelector("."+h.classes.tooltip),Be.volume={},Be.volume.input=V(h.selectors.volume.input),Be.volume.display=V(h.selectors.volume.display),Be.duration=V(h.selectors.duration),Be.currentTime=V(h.selectors.currentTime),Be.seekTime=H(h.selectors.seekTime),!0}catch(e){return T("It looks like there is a problem with your controls html",!0),D(!0),!1}}function z(){m(Be.container,h.selectors.container.replace(".",""),Be.supported.full)}function D(e){e?Be.media.setAttribute("controls",""):Be.media.removeAttribute("controls")}function Q(e){var t=h.i18n.play;if("undefined"!=typeof h.title&&h.title.length&&(t+=", "+h.title),Be.supported.full&&Be.buttons.play)for(var n=Be.buttons.play.length-1;n>=0;n--)Be.buttons.play[n].setAttribute("aria-label",t);e instanceof HTMLElement&&e.setAttribute("title",h.i18n.frameTitle.replace("{title}",h.title))}function X(){if(!Be.media)return T("No audio or video element found",!0),!1;if(Be.supported.full&&(m(Be.container,h.classes.type.replace("{0}",Be.type),!0),s(h.types.embed,Be.type)&&m(Be.container,h.classes.type.replace("{0}","video"),!0),m(Be.container,h.classes.stopped,h.autoplay),m(Be.container,h.classes.isIos,Be.browser.ios),m(Be.container,h.classes.isTouch,Be.browser.touch),"video"===Be.type)){var e=t.createElement("div");e.setAttribute("class",h.classes.videoWrapper),i(Be.media,e),Be.videoContainer=e}s(h.types.embed,Be.type)&&(U(),Be.embedId=null)}function U(){for(var n=t.createElement("div"),a=Be.embedId,s=Be.type+"-"+Math.floor(1e4*Math.random()),o=H('[id^="'+Be.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(m(Be.media,h.classes.videoWrapper,!0),m(Be.media,h.classes.embedWrapper,!0),"youtube"===Be.type)Be.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?$(a,n):(r(h.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){$(a,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Be.type){var l=t.createElement("iframe");l.loaded=!1,b(l,"load",function(){l.loaded=!0}),p(l,{src:"https://player.vimeo.com/video/"+a+"?player_id="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,allowfullscreen:"",frameborder:0}),Be.supported.full?(n.appendChild(l),Be.media.appendChild(n)):Be.media.appendChild(l),"$f"in e||r(h.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),J.call(l))},50)}else if("soundcloud"===Be.type){var d=t.createElement("iframe");d.loaded=!1,b(d,"load",function(){d.loaded=!0}),p(d,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+a,id:s}),n.appendChild(d),Be.media.appendChild(n),e.SC||r(h.urls.soundcloud.api);var A=e.setInterval(function(){e.SC&&d.loaded&&(e.clearInterval(A),K.call(d))},50)}}function Z(){Be.container.plyr.embed=Be.embed,Le(),Q(V("iframe"))}function $(t,n){"timer"in Be||(Be.timer={}),Be.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:h.autoplay?1:0,controls:Be.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:h.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){k(Be.container,"error",!0,{code:e.data,embed:e.target})},onReady:function(t){var n=t.target;Be.media.play=function(){n.playVideo(),Be.media.paused=!1},Be.media.pause=function(){n.pauseVideo(),Be.media.paused=!0},Be.media.stop=function(){n.stopVideo(),Be.media.paused=!0},Be.media.duration=n.getDuration(),Be.media.paused=!0,Be.media.currentTime=n.getCurrentTime(),Be.media.muted=n.isMuted(),h.title=n.getVideoData().title,k(Be.media,"timeupdate"),e.clearInterval(Be.timer.buffering),Be.timer.buffering=e.setInterval(function(){Be.media.buffered=n.getVideoLoadedFraction(),k(Be.media,"progress"),1===Be.media.buffered&&(e.clearInterval(Be.timer.buffering),k(Be.media,"canplaythrough"))},200),Z(),we()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Be.timer.playing),t.data){case 0:Be.media.paused=!0,k(Be.media,"ended");break;case 1:Be.media.paused=!1,Be.media.seeking=!1,k(Be.media,"play"),k(Be.media,"playing"),Be.timer.playing=e.setInterval(function(){Be.media.currentTime=n.getCurrentTime(),k(Be.media,"timeupdate")},100);break;case 2:Be.media.paused=!0,k(Be.media,"pause")}k(Be.container,"statechange",!1,{code:t.data})}}})}function J(){Be.embed=$f(this),Be.embed.addEvent("ready",function(){Be.media.play=function(){Be.embed.api("play"),Be.media.paused=!1},Be.media.pause=function(){Be.embed.api("pause"),Be.media.paused=!0},Be.media.stop=function(){Be.embed.api("stop"),Be.media.paused=!0},Be.media.paused=!0,Be.media.currentTime=0,Z(),Be.embed.api("getCurrentTime",function(e){Be.media.currentTime=e,k(Be.media,"timeupdate")}),Be.embed.api("getDuration",function(e){Be.media.duration=e,we()}),Be.embed.addEvent("play",function(){Be.media.paused=!1,k(Be.media,"play"),k(Be.media,"playing")}),Be.embed.addEvent("pause",function(){Be.media.paused=!0,k(Be.media,"pause")}),Be.embed.addEvent("playProgress",function(e){Be.media.seeking=!1,Be.media.currentTime=e.seconds,k(Be.media,"timeupdate")}),Be.embed.addEvent("loadProgress",function(e){Be.media.buffered=e.percent,k(Be.media,"progress"),1===parseInt(e.percent)&&k(Be.media,"canplaythrough")}),Be.embed.addEvent("finish",function(){Be.media.paused=!0,k(Be.media,"ended")}),h.autoplay&&Be.embed.api("play")})}function K(){Be.embed=e.SC.Widget(this),Be.embed.bind(e.SC.Widget.Events.READY,function(){Be.media.play=function(){Be.embed.play(),Be.media.paused=!1},Be.media.pause=function(){Be.embed.pause(),Be.media.paused=!0},Be.media.stop=function(){Be.embed.seekTo(0),Be.embed.pause(),Be.media.paused=!0},Be.media.paused=!0,Be.media.currentTime=0,Z(),Be.embed.getPosition(function(e){Be.media.currentTime=e,k(Be.media,"timeupdate")}),Be.embed.getDuration(function(e){Be.media.duration=e/1e3,we()}),Be.embed.bind(e.SC.Widget.Events.PLAY,function(){Be.media.paused=!1,k(Be.media,"play"),k(Be.media,"playing")}),Be.embed.bind(e.SC.Widget.Events.PAUSE,function(){Be.media.paused=!0,k(Be.media,"pause")}),Be.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS,function(e){Be.media.seeking=!1,Be.media.currentTime=e.currentPosition/1e3,k(Be.media,"timeupdate")}),Be.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS,function(e){Be.media.buffered=e.loadProgress,k(Be.media,"progress"),1===parseInt(e.loadProgress)&&k(Be.media,"canplaythrough")}),Be.embed.bind(e.SC.Widget.Events.FINISH,function(){Be.media.paused=!0,k(Be.media,"ended")}),h.autoplay&&Be.embed.play()})}function ee(){"play"in Be.media&&Be.media.play()}function te(){"pause"in Be.media&&Be.media.pause()}function ne(e){e===!0?ee():e===!1?te():Be.media[Be.media.paused?"play":"pause"]()}function ae(e){"number"!=typeof e&&(e=h.seekTime),se(Be.media.currentTime-e)}function re(e){"number"!=typeof e&&(e=h.seekTime),se(Be.media.currentTime+e)}function se(e){var t=0,n=Be.media.paused,a=oe();"number"==typeof e?t=e:"object"!=typeof e||"input"!==e.type&&"change"!==e.type||(t=e.target.value/e.target.max*a),0>t?t=0:t>a&&(t=a),Te(t);try{Be.media.currentTime=t.toFixed(4)}catch(r){}if(s(h.types.embed,Be.type)){switch(Be.type){case"youtube":Be.embed.seekTo(t);break;case"vimeo":Be.embed.api("seekTo",t.toFixed(0));break;case"soundcloud":Be.embed.seekTo(1e3*t)}n&&te(),k(Be.media,"timeupdate"),Be.media.seeking=!0}T("Seeking to "+Be.media.currentTime+" seconds"),B(t)}function oe(){var e=parseInt(h.duration),t=0;return null===Be.media.duration||isNaN(Be.media.duration)||(t=Be.media.duration),isNaN(e)?t:e}function ie(){m(Be.container,h.classes.playing,!Be.media.paused),m(Be.container,h.classes.stopped,Be.media.paused),_e(Be.media.paused)}function le(){N={x:e.pageXOffset||0,y:e.pageYOffset||0}}function ue(){e.scrollTo(N.x,N.y)}function ce(e){var n=I.supportsFullScreen;e&&e.type===I.fullScreenEventName?Be.isFullscreen=I.isFullScreen(Be.container):n?(I.isFullScreen(Be.container)?I.cancelFullScreen():(le(),I.requestFullScreen(Be.container)),Be.isFullscreen=I.isFullScreen(Be.container)):(Be.isFullscreen=!Be.isFullscreen,Be.isFullscreen?(b(t,"keyup",pe),t.body.style.overflow="hidden"):(v(t,"keyup",pe),t.body.style.overflow="")),m(Be.container,h.classes.fullscreen.active,Be.isFullscreen),Be.isFullscreen?Be.container.setAttribute("tabindex","-1"):Be.container.removeAttribute("tabindex"),W(Be.isFullscreen),w(Be.buttons.fullscreen,Be.isFullscreen),k(Be.container,Be.isFullscreen?"enterfullscreen":"exitfullscreen"),!Be.isFullscreen&&n&&ue()}function pe(e){27===(e.which||e.charCode||e.keyCode)&&Be.isFullscreen&&ce()}function de(e){if("boolean"!=typeof e&&(e=!Be.media.muted),w(Be.buttons.mute,e),Be.media.muted=e,0===Be.media.volume&&Ae(h.volume),s(h.types.embed,Be.type)){switch(Be.type){case"youtube":Be.embed[Be.media.muted?"mute":"unMute"]();break;case"vimeo":Be.embed.api("setVolume",Be.media.muted?0:parseFloat(h.volume/h.volumeMax));break;case"soundcloud":Be.embed.setVolume(Be.media.muted?0:parseFloat(h.volume/h.volumeMax))}k(Be.media,"volumechange")}}function Ae(t){var n=h.volumeMax,a=h.volumeMin;if("undefined"==typeof t&&(t=h.volume,h.storage.enabled&&_().supported&&(t=e.localStorage.getItem(h.storage.key),e.localStorage.removeItem("plyr-volume"))),(null===t||isNaN(t))&&(t=h.volume),t>n&&(t=n),a>t&&(t=a),Be.media.volume=parseFloat(t/n),Be.volume.display&&(Be.volume.display.value=t),s(h.types.embed,Be.type)){switch(Be.type){case"youtube":Be.embed.setVolume(100*Be.media.volume);break;case"vimeo":Be.embed.api("setVolume",Be.media.volume);break;case"soundcloud":Be.embed.setVolume(Be.media.volume)}k(Be.media,"volumechange")}Be.media.muted&&t>0&&de()}function me(){var e=Be.media.muted?0:Be.media.volume*h.volumeMax;Ae(e+h.volumeStep/5)}function fe(){var e=Be.media.muted?0:Be.media.volume*h.volumeMax;Ae(e-h.volumeStep/5)}function ye(){var t=Be.media.muted?0:Be.media.volume*h.volumeMax;Be.supported.full&&(Be.volume.input&&(Be.volume.input.value=t),Be.volume.display&&(Be.volume.display.value=t)),h.storage.enabled&&_().supported&&!isNaN(t)&&e.localStorage.setItem(h.storage.key,t),m(Be.container,h.classes.muted,0===t),Be.supported.full&&Be.buttons.mute&&w(Be.buttons.mute,0===t)}function be(e){Be.supported.full&&Be.buttons.captions&&("boolean"!=typeof e&&(e=-1===Be.container.className.indexOf(h.classes.captions.active)),Be.captionsEnabled=e,w(Be.buttons.captions,Be.captionsEnabled),m(Be.container,h.classes.captions.active,Be.captionsEnabled),k(Be.container,Be.captionsEnabled?"captionsenabled":"captionsdisabled"))}function ve(e){var t="waiting"===e.type;clearTimeout(Be.timers.loading),Be.timers.loading=setTimeout(function(){m(Be.container,h.classes.loading,t)},t?250:0)}function ge(e){if(Be.supported.full){var t=Be.progress.played,n=0,a=oe();if(e)switch(e.type){case"timeupdate":case"seeking":n=x(Be.media.currentTime,a),"timeupdate"==e.type&&Be.buttons.seek&&(Be.buttons.seek.value=n);break;case"playing":case"progress":t=Be.progress.buffer,n=function(){var e=Be.media.buffered;return e&&e.length?x(e.end(0),a):"number"==typeof e?100*e:0}()}he(t,n)}}function he(e,t){if(Be.supported.full){if("undefined"==typeof t&&(t=0),"undefined"==typeof e){if(!Be.progress||!Be.progress.buffer)return;e=Be.progress.buffer}e instanceof HTMLElement?e.value=t:e&&(e.bar&&(e.bar.value=t),e.text&&(e.text.innerHTML=t))}}function ke(e,t){if(t){isNaN(e)&&(e=0),Be.secs=parseInt(e%60),Be.mins=parseInt(e/60%60),Be.hours=parseInt(e/60/60%60);var n=parseInt(oe()/60/60%60)>0;Be.secs=("0"+Be.secs).slice(-2),Be.mins=("0"+Be.mins).slice(-2),t.innerHTML=(n?Be.hours+":":"")+Be.mins+":"+Be.secs}}function we(){if(Be.supported.full){var e=oe()||0;!Be.duration&&h.displayDuration&&Be.media.paused&&ke(e,Be.currentTime),Be.duration&&ke(e,Be.duration),Ee()}}function xe(e){ke(Be.media.currentTime,Be.currentTime),e&&"timeupdate"==e.type&&Be.media.seeking||ge(e)}function Te(e){"number"!=typeof e&&(e=0);var t=oe(),n=x(e,t);Be.progress&&Be.progress.played&&(Be.progress.played.value=n),Be.buttons&&Be.buttons.seek&&(Be.buttons.seek.value=n)}function Ee(e){var t=oe();if(h.tooltips.seek&&Be.progress.container&&0!==t){var n=Be.progress.container.getBoundingClientRect(),a=0,r=h.classes.tooltip+"--visible";if(e)a=100/n.width*(e.pageX-n.left);else{if(!f(Be.progress.tooltip,r))return;a=Be.progress.tooltip.style.left.replace("%","")}0>a?a=0:a>100&&(a=100),ke(t/100*a,Be.progress.tooltip),Be.progress.tooltip.style.left=a+"%",e&&s(["mouseenter","mouseleave"],e.type)&&m(Be.progress.tooltip,r,"mouseenter"===e.type)}}function _e(t){if(h.hideControls&&"audio"!==Be.type){var n=0,a=!1,r=t;if("boolean"!=typeof t&&(t&&t.type?(a="enterfullscreen"===t.type,r=s(["mousemove","mouseenter","focus"],t.type),"mousemove"===t.type&&(n=2e3),"focus"===t.type&&(n=3e3)):r=!f(Be.container,h.classes.hideControls)),e.clearTimeout(Be.timers.hover),r||Be.media.paused){if(m(Be.container,h.classes.hideControls,!1),Be.media.paused)return;Be.browser.touch&&(n=3e3)}r&&Be.media.paused||(Be.timers.hover=e.setTimeout(function(){Be.controls.active&&!a||m(Be.container,h.classes.hideControls,!0)},n))}}function Ce(e){if("undefined"!=typeof e)return void Se(e);var t;switch(Be.type){case"youtube":t=Be.embed.getVideoUrl();break;case"vimeo":Be.embed.api("getVideoUrl",function(e){t=e});break;case"soundcloud":Be.embed.getCurrentSound(function(e){t=e.permalink_url});break;default:t=Be.media.currentSrc}return t||""}function Se(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void T("Invalid source format",!0);if(te(),Te(),he(),Ne(),"youtube"===Be.type?(Be.embed.destroy(),e.clearInterval(Be.timer.buffering),e.clearInterval(Be.timer.playing)):"video"===Be.type&&Be.videoContainer&&u(Be.videoContainer),Be.embed=null,u(Be.media),"type"in n&&(Be.type=n.type,"video"===Be.type)){var a=n.sources[0];"type"in a&&s(h.types.embed,a.type)&&(Be.type=a.type)}switch(Be.supported=F(Be.type),Be.type){case"video":Be.media=t.createElement("video");break;case"audio":Be.media=t.createElement("audio");break;case"youtube":case"vimeo":case"soundcloud":Be.media=t.createElement("div"),Be.embedId=n.sources[0].src}c(Be.container,Be.media),"undefined"!=typeof n.autoplay&&(h.autoplay=n.autoplay),s(h.types.html5,Be.type)&&(h.crossorigin&&Be.media.setAttribute("crossorigin",""),h.autoplay&&Be.media.setAttribute("autoplay",""),"poster"in n&&Be.media.setAttribute("poster",n.poster),h.loop&&Be.media.setAttribute("loop","")),Be.container.className=Be.originalClassName,m(Be.container,h.classes.fullscreen.active,Be.isFullscreen),m(Be.container,h.classes.captions.active,Be.captionsEnabled),z(),s(h.types.html5,Be.type)&&Y("source",n.sources),X(),s(h.types.html5,Be.type)&&("tracks"in n&&Y("track",n.tracks),Be.media.load(),Le(),we()),h.title=n.title,Q(),Be.container.plyr.media=Be.media}function Fe(e){"video"===Be.type&&Be.media.setAttribute("poster",e)}function Me(){function n(){var e=Be.media.paused;e?ee():te();var t=Be.buttons[e?"play":"pause"],n=Be.buttons[e?"pause":"play"];if(n=n&&n.length>1?n[n.length-1]:n[0]){var a=f(t,h.classes.tabFocus);setTimeout(function(){n.focus(),a&&(m(t,h.classes.tabFocus,!1),m(n,h.classes.tabFocus,!0))},100)}}function a(){var e=t.activeElement;e&&e!=t.body?t.querySelector&&(e=t.querySelector(":focus")):e=null;for(var n in Be.buttons){var a=Be.buttons[n];if(a instanceof NodeList)for(var r=0;r<a.length;r++)m(a[r],h.classes.tabFocus,a[r]===e);else m(a,h.classes.tabFocus,a===e)}}var r="IE"==Be.browser.name?"change":"input";b(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&a()}),b(t.body,"click",function(){m(V("."+h.classes.tabFocus),h.classes.tabFocus,!1)});for(var s in Be.buttons){var o=Be.buttons[s];b(o,"blur",function(){m(o,"tab-focus",!1)})}g(Be.buttons.play,"click",h.listeners.play,n),g(Be.buttons.pause,"click",h.listeners.pause,n),g(Be.buttons.restart,"click",h.listeners.restart,se),g(Be.buttons.rewind,"click",h.listeners.rewind,ae),g(Be.buttons.forward,"click",h.listeners.forward,re),g(Be.buttons.seek,r,h.listeners.seek,se),g(Be.volume.input,r,h.listeners.volume,function(){Ae(Be.volume.input.value)}),g(Be.buttons.mute,"click",h.listeners.mute,de),g(Be.buttons.fullscreen,"click",h.listeners.fullscreen,ce),I.supportsFullScreen&&b(t,I.fullScreenEventName,ce),b(Be.buttons.captions,"click",be),b(Be.progress.container,"mouseenter mouseleave mousemove",Ee),h.hideControls&&(b(Be.container,"mouseenter mouseleave mousemove enterfullscreen",_e),b(Be.controls,"mouseenter mouseleave",function(e){Be.controls.active="mouseenter"===e.type}),b(Be.controls,"focus blur",_e,!0)),b(Be.volume.input,"wheel",function(e){e.preventDefault();var t=e.webkitDirectionInvertedFromDevice;(e.deltaY<0||e.deltaX>0)&&(t?fe():me()),(e.deltaY>0||e.deltaX<0)&&(t?me():fe())})}function Ie(){if(b(Be.media,"timeupdate seeking",xe),b(Be.media,"timeupdate",B),b(Be.media,"durationchange loadedmetadata",we),b(Be.media,"ended",function(){"video"===Be.type&&L(),ie(),se(0),we(),"video"===Be.type&&h.showPosterOnEnd&&Be.media.load()}),b(Be.media,"progress playing",ge),b(Be.media,"volumechange",ye),b(Be.media,"play pause",ie),b(Be.media,"waiting canplay seeked",ve),h.clickToPlay&&"audio"!==Be.type){var e=V("."+h.classes.videoWrapper);
-if(!e)return;e.style.cursor="pointer",b(e,"click",function(){return Be.browser.touch&&!Be.media.paused?void _e(!0):void(Be.media.paused?ee():Be.media.ended?(se(),ee()):te())})}h.disableContextMenu&&b(Be.media,"contextmenu",function(e){e.preventDefault()}),b(Be.media,h.events.join(" "),function(e){k(Be.container,e.type,!0)})}function Ne(){if(s(h.types.html5,Be.type)){for(var e=Be.media.querySelectorAll("source"),t=0;t<e.length;t++)u(e[t]);Be.media.setAttribute("src","data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAGm1kYXQAAAGzABAHAAABthBgUYI9t+8AAAMNbW9vdgAAAGxtdmhkAAAAAMXMvvrFzL76AAAD6AAAACoAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAABhpb2RzAAAAABCAgIAHAE/////+/wAAAiF0cmFrAAAAXHRraGQAAAAPxcy++sXMvvoAAAABAAAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAgAAAAIAAAAAAG9bWRpYQAAACBtZGhkAAAAAMXMvvrFzL76AAAAGAAAAAEVxwAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAABaG1pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAShzdGJsAAAAxHN0c2QAAAAAAAAAAQAAALRtcDR2AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAgACABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAAXmVzZHMAAAAAA4CAgE0AAQAEgICAPyARAAAAAAMNQAAAAAAFgICALQAAAbABAAABtYkTAAABAAAAASAAxI2IAMUARAEUQwAAAbJMYXZjNTMuMzUuMAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAAABAAAAAQAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAAASAAAAAQAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYHVkdGEAAABYbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAraWxzdAAAACOpdG9vAAAAG2RhdGEAAAABAAAAAExhdmY1My4yMS4x"),Be.media.load(),T("Cancelled network requests for old media")}}function Pe(){if(!Be.init)return null;if(Be.container.setAttribute("class",A(h.selectors.container)),Be.init=!1,u(V(h.selectors.controls.wrapper)),"youtube"===Be.type)return void Be.embed.destroy();"video"===Be.type&&(u(V(h.selectors.captions)),l(Be.videoContainer)),D(!0);var e=Be.media.cloneNode(!0);Be.media.parentNode.replaceChild(e,Be.media)}function Re(){if(Be.init)return null;if(I=E(),Be.browser=n(),Be.media=Be.container.querySelectorAll("audio, video")[0],Be.media||(Be.media=Be.container.querySelectorAll("[data-type]")[0]),Be.media){Be.originalClassName=Be.container.className;var e=Be.media.tagName.toLowerCase();if("div"===e?(Be.type=Be.media.getAttribute("data-type"),Be.embedId=Be.media.getAttribute("data-video-id"),Be.media.removeAttribute("data-type"),Be.media.removeAttribute("data-video-id")):(Be.type=e,h.crossorigin=null!==Be.media.getAttribute("crossorigin"),h.autoplay=h.autoplay||null!==Be.media.getAttribute("autoplay"),h.loop=h.loop||null!==Be.media.getAttribute("loop")),Be.supported=F(Be.type),z(),!Be.supported.basic)return!1;if(T(Be.browser.name+" "+Be.browser.version),X(),s(h.types.html5,Be.type)){if(!Be.supported.full)return void(Be.init=!0);Le(),Q(),h.autoplay&&ee()}Be.init=!0}}function Le(){if(!Be.supported.full)return T("No full support for this media type ("+Be.type+")",!0),u(V(h.selectors.controls.wrapper)),u(V(h.selectors.buttons.play)),void D(!0);var e=!H(h.selectors.controls.wrapper).length;e&&q(),j()&&(e&&Me(),Ie(),D(),P(),R(),Ae(),ye(),xe(),ie(),we(),k(Be.container,"ready"))}var Be=this;return Be.container=y,Be.timers={},T(h),Re(),Be.init?{media:Be.media,play:ee,pause:te,restart:se,rewind:ae,forward:re,seek:se,source:Ce,poster:Fe,setVolume:Ae,togglePlay:ne,toggleMute:de,toggleCaptions:be,toggleFullscreen:ce,toggleControls:_e,isFullscreen:function(){return Be.isFullscreen||!1},support:function(e){return a(Be,e)},destroy:Pe,restore:Re}:{}}function S(e,n){var a=new XMLHttpRequest;"string"==typeof n&&null!==t.querySelector("#"+n)||"withCredentials"in a&&(a.open("GET",e,!0),a.onload=function(){var e=t.createElement("div");e.setAttribute("hidden",""),"string"==typeof n&&e.setAttribute("id",n),e.innerHTML=a.responseText,t.body.insertBefore(e,t.body.childNodes[0])},a.send())}function F(e){var a,r,s=n(),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":a=u,r=a&&!o&&!i;break;case"audio":a=l,r=a&&!o;break;case"vimeo":case"youtube":case"soundcloud":a=!0,r=!o&&!i;break;default:a=l&&u,r=a&&!o}return{basic:a,full:r}}function M(e,n){var a=[],r=[P.selectors.html5,P.selectors.embed].join(",");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(r)),!F().basic||!e.length)return!1;for(var s=0;s<e.length;s++){var o=e[s],l=o.getAttribute("data-plyr");if(y(o,r)&&(o=i(o,t.createElement("div"))),"undefined"==typeof o.plyr){var u=T({},P,n,JSON.parse(l));if(!u.enabled)return null;var c=new C(o,u);o.plyr=Object.keys(c).length?c:!1,k(o,"setup",{plyr:o.plyr})}a.push(o.plyr)}return a}var I,N={x:0,y:0},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,volumeMin:0,volumeMax:10,volumeStep:1,duration:null,displayDuration:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/1.6.20/plyr.svg",clickToPlay:!0,hideControls:!0,showPosterOnEnd:!1,disableContextMenu:!0,tooltips:{controls:!1,seek:!0},selectors:{html5:"video, audio",embed:"[data-type]",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"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},volume:{input:'[data-plyr="volume"]',display:".plyr__volume--display"},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",hideControls:"plyr--hide-controls",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"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","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","soundcloud"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.1/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"},soundcloud:{api:"https://w.soundcloud.com/player/api.js"}},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{setup:M,supported:F,loadSprite: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}return"function"==typeof window.CustomEvent?!1:(e.prototype=window.Event.prototype,void(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,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10),l=!1,u=!1,c=!1,p=!1;return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(l=!0,o="11;"):-1!==(n=a.indexOf("MSIE"))?(l=!0,o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(c=!0,o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(p=!0,o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(u=!0,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,isIE:l,isFirefox:u,isChrome:c,isSafari:p,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 a(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 s(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,a=e[n],s=a.parentNode,o=a.nextSibling;return r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r),r}}function l(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}function u(e){e&&e.parentNode.removeChild(e)}function c(e,t){e.insertBefore(t,e.firstChild)}function 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 a=t.createElement(e);p(a,r),c(n,a)}function A(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 f(e,t){return e?e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className):!1}function y(e,n){var r=Element.prototype,a=r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.msMatchesSelector||function(e){return-1!==[].indexOf.call(t.querySelectorAll(e),this)};return a.call(e,n)}function b(e,t,n,r){e&&h(e,t,n,!0,r)}function v(e,t,n,r){e&&h(e,t,n,!1,r)}function g(e,t,n,r,a){b(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])},a)}function h(e,t,n,r,a){var s=t.split(" ");if("boolean"!=typeof a&&(a=!1),e instanceof NodeList)for(var o=0;o<e.length;o++)e[o]instanceof Node&&h(e[o],arguments[1],arguments[2],arguments[3]);else for(var i=0;i<s.length;i++)e[r?"addEventListener":"removeEventListener"](s[i],n,a)}function k(e,t,n,r){if(e&&t){"boolean"!=typeof n&&(n=!1);var a=new CustomEvent(t,{bubbles:n,detail:r});e.dispatchEvent(a)}}function w(e,t){return e?(t="boolean"==typeof t?t:!e.getAttribute("aria-pressed"),e.setAttribute("aria-pressed",t),t):void 0}function x(e,t){return 0===e||0===t||isNaN(e)||isNaN(t)?0:(e/t*100).toFixed(2)}function T(){var e=arguments;if(e.length){if(1==e.lenth)return e[0];for(var t=Array.prototype.shift.call(e),n=e.length,r=0;n>r;r++){var a=e[r];for(var s in a)a[s]&&a[s].constructor&&a[s].constructor===Object?(t[s]=t[s]||{},T(t[s],a[s])):t[s]=a[s]}return t}}function E(){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,a=n.length;a>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 _(){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(y,h){function T(t,n){h.debug&&e.console&&console[n?"warn":"log"](t)}function C(){return{url:h.iconUrl,external:0===h.iconUrl.indexOf("http")}}function I(){var e=[],t=C(),n=(t.external?"":t.url)+"#"+h.iconPrefix;return s(h.controls,"play-large")&&e.push('<button type="button" data-plyr="play" class="plyr__play-large">','<svg><use xlink:href="'+n+'-play" /></svg>','<span class="plyr__sr-only">'+h.i18n.play+"</span>","</button>"),e.push('<div class="plyr__controls">'),s(h.controls,"restart")&&e.push('<button type="button" data-plyr="restart">','<svg><use xlink:href="'+n+'-restart" /></svg>','<span class="plyr__sr-only">'+h.i18n.restart+"</span>","</button>"),s(h.controls,"rewind")&&e.push('<button type="button" data-plyr="rewind">','<svg><use xlink:href="'+n+'-rewind" /></svg>','<span class="plyr__sr-only">'+h.i18n.rewind+"</span>","</button>"),s(h.controls,"play")&&e.push('<button type="button" data-plyr="play">','<svg><use xlink:href="'+n+'-play" /></svg>','<span class="plyr__sr-only">'+h.i18n.play+"</span>","</button>",'<button type="button" data-plyr="pause">','<svg><use xlink:href="'+n+'-pause" /></svg>','<span class="plyr__sr-only">'+h.i18n.pause+"</span>","</button>"),s(h.controls,"fast-forward")&&e.push('<button type="button" data-plyr="fast-forward">','<svg><use xlink:href="'+n+'-fast-forward" /></svg>','<span class="plyr__sr-only">'+h.i18n.forward+"</span>","</button>"),s(h.controls,"progress")&&(e.push('<span class="plyr__progress">','<label for="seek{id}" class="plyr__sr-only">Seek</label>','<input id="seek{id}" class="plyr__progress--seek" type="range" min="0" max="100" step="0.1" value="0" data-plyr="seek">','<progress class="plyr__progress--played" max="100" value="0" role="presentation"></progress>','<progress class="plyr__progress--buffer" max="100" value="0">',"<span>0</span>% "+h.i18n.buffered,"</progress>"),h.tooltips.seek&&e.push('<span class="plyr__tooltip">00:00</span>'),e.push("</span>")),s(h.controls,"current-time")&&e.push('<span class="plyr__time">','<span class="plyr__sr-only">'+h.i18n.currentTime+"</span>",'<span class="plyr__time--current">00:00</span>',"</span>"),s(h.controls,"duration")&&e.push('<span class="plyr__time">','<span class="plyr__sr-only">'+h.i18n.duration+"</span>",'<span class="plyr__time--duration">00:00</span>',"</span>"),s(h.controls,"mute")&&e.push('<button type="button" data-plyr="mute">','<svg class="icon--muted"><use xlink:href="'+n+'-muted" /></svg>','<svg><use xlink:href="'+n+'-volume" /></svg>','<span class="plyr__sr-only">'+h.i18n.toggleMute+"</span>","</button>"),s(h.controls,"volume")&&e.push('<span class="plyr__volume">','<label for="volume{id}" class="plyr__sr-only">'+h.i18n.volume+"</label>",'<input id="volume{id}" class="plyr__volume--input" type="range" min="'+h.volumeMin+'" max="'+h.volumeMax+'" value="'+h.volume+'" data-plyr="volume">','<progress class="plyr__volume--display" max="'+h.volumeMax+'" value="'+h.volumeMin+'" role="presentation"></progress>',"</span>"),s(h.controls,"captions")&&e.push('<button type="button" data-plyr="captions">','<svg class="icon--captions-on"><use xlink:href="'+n+'-captions-on" /></svg>','<svg><use xlink:href="'+n+'-captions-off" /></svg>','<span class="plyr__sr-only">'+h.i18n.toggleCaptions+"</span>","</button>"),s(h.controls,"fullscreen")&&e.push('<button type="button" data-plyr="fullscreen">','<svg class="icon--exit-fullscreen"><use xlink:href="'+n+'-exit-fullscreen" /></svg>','<svg><use xlink:href="'+n+'-enter-fullscreen" /></svg>','<span class="plyr__sr-only">'+h.i18n.toggleFullscreen+"</span>","</button>"),e.push("</div>"),e.join("")}function P(){if(Be.supported.full&&("audio"!=Be.type||h.fullscreen.allowAudio)&&h.fullscreen.enabled){var e=M.supportsFullScreen;e||h.fullscreen.fallback&&!G()?(T((e?"Native":"Fallback")+" fullscreen enabled"),m(Be.container,h.classes.fullscreen.enabled,!0)):T("Fullscreen not supported and fallback disabled"),w(Be.buttons.fullscreen,!1),W()}}function R(){if("video"===Be.type){V(h.selectors.captions)||Be.videoContainer.insertAdjacentHTML("afterbegin",'<div class="'+A(h.selectors.captions)+'"></div>'),Be.usingTextTracks=!1,Be.media.textTracks&&(Be.usingTextTracks=!0);for(var e,t="",n=Be.media.childNodes,r=0;r<n.length;r++)"track"===n[r].nodeName.toLowerCase()&&(e=n[r].kind,"captions"!==e&&"subtitles"!==e||(t=n[r].getAttribute("src")));if(Be.captionExists=!0,""===t?(Be.captionExists=!1,T("No caption track found")):T("Caption track found; URI: "+t),Be.captionExists){for(var a=Be.media.textTracks,s=0;s<a.length;s++)a[s].mode="hidden";if(O(Be),(Be.browser.isIE&&Be.browser.version>=10||Be.browser.isFirefox&&Be.browser.version>=31)&&(T("Detected browser with known TextTrack issues - using manual fallback"),Be.usingTextTracks=!1),Be.usingTextTracks){T("TextTracks supported");for(var o=0;o<a.length;o++){var i=a[o];"captions"!==i.kind&&"subtitles"!==i.kind||b(i,"cuechange",function(){this.activeCues[0]&&"text"in this.activeCues[0]?L(this.activeCues[0].getCueAsHTML()):L()})}}else if(T("TextTracks not supported so rendering captions manually"),Be.currentCaption="",Be.captions=[],""!==t){var l=new XMLHttpRequest;l.onreadystatechange=function(){if(4===l.readyState)if(200===l.status){var e,t=[],n=l.responseText;t=n.split("\n\n");for(var r=0;r<t.length;r++){e=t[r],Be.captions[r]=[];var a=e.split("\n"),s=0;-1===a[s].indexOf(":")&&(s=1),Be.captions[r]=[a[s],a[s+1]]}Be.captions.shift(),T("Successfully loaded the caption file via AJAX")}else T("There was a problem loading the caption file via AJAX",!0)},l.open("get",t,!0),l.send()}}else m(Be.container,h.classes.captions.enabled)}}function L(e){var n=V(h.selectors.captions),r=t.createElement("span");n.innerHTML="","undefined"==typeof e&&(e=""),"string"==typeof e?r.innerHTML=e.trim():r.appendChild(e),n.appendChild(r);n.offsetHeight}function B(e){function t(e,t){var n=[];n=e.split(" --> ");for(var r=0;r<n.length;r++)n[r]=n[r].replace(/(\d+:\d+:\d+\.\d+).*/,"$1");return a(n[t])}function n(e){return t(e,0)}function r(e){return t(e,1)}function a(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])}if(!Be.usingTextTracks&&"video"===Be.type&&Be.supported.full&&(Be.subcount=0,e="number"==typeof e?e:Be.media.currentTime,Be.captions[Be.subcount])){for(;r(Be.captions[Be.subcount][0])<e.toFixed(1);)if(Be.subcount++,Be.subcount>Be.captions.length-1){Be.subcount=Be.captions.length-1;break}Be.media.currentTime.toFixed(1)>=n(Be.captions[Be.subcount][0])&&Be.media.currentTime.toFixed(1)<=r(Be.captions[Be.subcount][0])?(Be.currentCaption=Be.captions[Be.subcount][1],L(Be.currentCaption)):L()}}function O(){Be.buttons.captions&&(m(Be.container,h.classes.captions.enabled,!0),h.captions.defaultActive&&(m(Be.container,h.classes.captions.active,!0),w(Be.buttons.captions,!0)))}function H(e){return Be.container.querySelectorAll(e)}function V(e){return H(e)[0]}function G(){try{return e.self!==e.top}catch(t){return!0}}function W(){function e(e){9===e.which&&Be.isFullscreen&&(e.target!==r||e.shiftKey?e.target===n&&e.shiftKey&&(e.preventDefault(),r.focus()):(e.preventDefault(),n.focus()))}var t=H("input:not([disabled]), button:not([disabled])"),n=t[0],r=t[t.length-1];b(Be.container,"keydown",e)}function Y(e,t){if("string"==typeof t)d(e,Be.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,Be.media,t[n])}function q(){if(h.loadSprite){var e=C(),n=e.external;n||Be.browser.isIE?(T("AJAX loading external SVG sprite"+(Be.browser.isIE?" (due to IE)":"")),S(e.url,"sprite-plyr")):T("Sprite will be used as external resource directly")}var r=h.html;T("Injecting custom controls"),r||(r=I()),r=o(r,"{seektime}",h.seekTime),r=o(r,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==h.selectors.controls.container&&(a=h.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Be.container),a.insertAdjacentHTML("beforeend",r),h.tooltips.controls)for(var s=H([h.selectors.controls.wrapper," ",h.selectors.labels," .",h.classes.hidden].join("")),i=s.length-1;i>=0;i--){var l=s[i];m(l,h.classes.hidden,!1),m(l,h.classes.tooltip,!0)}}function X(){try{return Be.controls=V(h.selectors.controls.wrapper),Be.buttons={},Be.buttons.seek=V(h.selectors.buttons.seek),Be.buttons.play=H(h.selectors.buttons.play),Be.buttons.pause=V(h.selectors.buttons.pause),Be.buttons.restart=V(h.selectors.buttons.restart),Be.buttons.rewind=V(h.selectors.buttons.rewind),Be.buttons.forward=V(h.selectors.buttons.forward),Be.buttons.fullscreen=V(h.selectors.buttons.fullscreen),Be.buttons.mute=V(h.selectors.buttons.mute),Be.buttons.captions=V(h.selectors.buttons.captions),Be.progress={},Be.progress.container=V(h.selectors.progress.container),Be.progress.buffer={},Be.progress.buffer.bar=V(h.selectors.progress.buffer),Be.progress.buffer.text=Be.progress.buffer.bar&&Be.progress.buffer.bar.getElementsByTagName("span")[0],Be.progress.played=V(h.selectors.progress.played),Be.progress.tooltip=Be.progress.container&&Be.progress.container.querySelector("."+h.classes.tooltip),Be.volume={},Be.volume.input=V(h.selectors.volume.input),Be.volume.display=V(h.selectors.volume.display),Be.duration=V(h.selectors.duration),Be.currentTime=V(h.selectors.currentTime),Be.seekTime=H(h.selectors.seekTime),!0}catch(e){return T("It looks like there is a problem with your controls html",!0),z(!0),!1}}function j(){m(Be.container,h.selectors.container.replace(".",""),Be.supported.full)}function z(e){e?Be.media.setAttribute("controls",""):Be.media.removeAttribute("controls")}function D(e){var t=h.i18n.play;if("undefined"!=typeof h.title&&h.title.length&&(t+=", "+h.title),Be.supported.full&&Be.buttons.play)for(var n=Be.buttons.play.length-1;n>=0;n--)Be.buttons.play[n].setAttribute("aria-label",t);e instanceof HTMLElement&&e.setAttribute("title",h.i18n.frameTitle.replace("{title}",h.title))}function Q(){if(!Be.media)return T("No audio or video element found",!0),!1;if(Be.supported.full&&(m(Be.container,h.classes.type.replace("{0}",Be.type),!0),s(h.types.embed,Be.type)&&m(Be.container,h.classes.type.replace("{0}","video"),!0),m(Be.container,h.classes.stopped,h.autoplay),m(Be.container,h.classes.isIos,Be.browser.ios),m(Be.container,h.classes.isTouch,Be.browser.touch),"video"===Be.type)){var e=t.createElement("div");e.setAttribute("class",h.classes.videoWrapper),i(Be.media,e),Be.videoContainer=e}s(h.types.embed,Be.type)&&(U(),Be.embedId=null)}function U(){for(var n=t.createElement("div"),r=Be.embedId,s=Be.type+"-"+Math.floor(1e4*Math.random()),o=H('[id^="'+Be.type+'-"]'),i=o.length-1;i>=0;i--)u(o[i]);if(m(Be.media,h.classes.videoWrapper,!0),m(Be.media,h.classes.embedWrapper,!0),"youtube"===Be.type)Be.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?$(r,n):(a(h.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){$(r,n)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===Be.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="+s+"&api=1&badge=0&byline=0&portrait=0&title=0",id:s,allowfullscreen:"",frameborder:0}),Be.supported.full?(n.appendChild(l),Be.media.appendChild(n)):Be.media.appendChild(l),"$f"in e||a(h.urls.vimeo.api);var c=e.setInterval(function(){"$f"in e&&l.loaded&&(e.clearInterval(c),J.call(l))},50)}else if("soundcloud"===Be.type){var d=t.createElement("iframe");d.loaded=!1,b(d,"load",function(){d.loaded=!0}),p(d,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+r,id:s}),n.appendChild(d),Be.media.appendChild(n),e.SC||a(h.urls.soundcloud.api);var A=e.setInterval(function(){e.SC&&d.loaded&&(e.clearInterval(A),K.call(d))},50)}}function Z(){Be.container.plyr.embed=Be.embed,Le(),D(V("iframe"))}function $(t,n){"timer"in Be||(Be.timer={}),Be.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:h.autoplay?1:0,controls:Be.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:h.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){k(Be.container,"error",!0,{code:e.data,embed:e.target})},onReady:function(t){var n=t.target;Be.media.play=function(){n.playVideo(),Be.media.paused=!1},Be.media.pause=function(){n.pauseVideo(),Be.media.paused=!0},Be.media.stop=function(){n.stopVideo(),Be.media.paused=!0},Be.media.duration=n.getDuration(),Be.media.paused=!0,Be.media.currentTime=n.getCurrentTime(),Be.media.muted=n.isMuted(),h.title=n.getVideoData().title,k(Be.media,"timeupdate"),e.clearInterval(Be.timer.buffering),Be.timer.buffering=e.setInterval(function(){Be.media.buffered=n.getVideoLoadedFraction(),k(Be.media,"progress"),1===Be.media.buffered&&(e.clearInterval(Be.timer.buffering),k(Be.media,"canplaythrough"))},200),Z(),we()},onStateChange:function(t){var n=t.target;switch(e.clearInterval(Be.timer.playing),t.data){case 0:Be.media.paused=!0,k(Be.media,"ended");break;case 1:Be.media.paused=!1,Be.media.seeking=!1,k(Be.media,"play"),k(Be.media,"playing"),Be.timer.playing=e.setInterval(function(){Be.media.currentTime=n.getCurrentTime(),k(Be.media,"timeupdate")},100);break;case 2:Be.media.paused=!0,k(Be.media,"pause")}k(Be.container,"statechange",!1,{code:t.data})}}})}function J(){Be.embed=$f(this),Be.embed.addEvent("ready",function(){Be.media.play=function(){Be.embed.api("play"),Be.media.paused=!1},Be.media.pause=function(){Be.embed.api("pause"),Be.media.paused=!0},Be.media.stop=function(){Be.embed.api("stop"),Be.media.paused=!0},Be.media.paused=!0,Be.media.currentTime=0,Z(),Be.embed.api("getCurrentTime",function(e){Be.media.currentTime=e,k(Be.media,"timeupdate")}),Be.embed.api("getDuration",function(e){Be.media.duration=e,we()}),Be.embed.addEvent("play",function(){Be.media.paused=!1,k(Be.media,"play"),k(Be.media,"playing")}),Be.embed.addEvent("pause",function(){Be.media.paused=!0,k(Be.media,"pause")}),Be.embed.addEvent("playProgress",function(e){Be.media.seeking=!1,Be.media.currentTime=e.seconds,k(Be.media,"timeupdate")}),Be.embed.addEvent("loadProgress",function(e){Be.media.buffered=e.percent,k(Be.media,"progress"),1===parseInt(e.percent)&&k(Be.media,"canplaythrough")}),Be.embed.addEvent("finish",function(){Be.media.paused=!0,k(Be.media,"ended")}),h.autoplay&&Be.embed.api("play")})}function K(){Be.embed=e.SC.Widget(this),Be.embed.bind(e.SC.Widget.Events.READY,function(){Be.media.play=function(){Be.embed.play(),Be.media.paused=!1},Be.media.pause=function(){Be.embed.pause(),Be.media.paused=!0},Be.media.stop=function(){Be.embed.seekTo(0),Be.embed.pause(),Be.media.paused=!0},Be.media.paused=!0,Be.media.currentTime=0,Z(),Be.embed.getPosition(function(e){Be.media.currentTime=e,k(Be.media,"timeupdate")}),Be.embed.getDuration(function(e){Be.media.duration=e/1e3,we()}),Be.embed.bind(e.SC.Widget.Events.PLAY,function(){Be.media.paused=!1,k(Be.media,"play"),k(Be.media,"playing")}),Be.embed.bind(e.SC.Widget.Events.PAUSE,function(){Be.media.paused=!0,k(Be.media,"pause")}),Be.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS,function(e){Be.media.seeking=!1,Be.media.currentTime=e.currentPosition/1e3,k(Be.media,"timeupdate")}),Be.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS,function(e){Be.media.buffered=e.loadProgress,k(Be.media,"progress"),1===parseInt(e.loadProgress)&&k(Be.media,"canplaythrough")}),Be.embed.bind(e.SC.Widget.Events.FINISH,function(){Be.media.paused=!0,k(Be.media,"ended")}),h.autoplay&&Be.embed.play()})}function ee(){"play"in Be.media&&Be.media.play()}function te(){"pause"in Be.media&&Be.media.pause()}function ne(e){e===!0?ee():e===!1?te():Be.media[Be.media.paused?"play":"pause"]()}function re(e){"number"!=typeof e&&(e=h.seekTime),se(Be.media.currentTime-e)}function ae(e){"number"!=typeof e&&(e=h.seekTime),se(Be.media.currentTime+e)}function se(e){var t=0,n=Be.media.paused,r=oe();"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),Te(t);try{Be.media.currentTime=t.toFixed(4)}catch(a){}if(s(h.types.embed,Be.type)){switch(Be.type){case"youtube":Be.embed.seekTo(t);break;case"vimeo":Be.embed.api("seekTo",t.toFixed(0));break;case"soundcloud":Be.embed.seekTo(1e3*t)}n&&te(),k(Be.media,"timeupdate"),Be.media.seeking=!0}T("Seeking to "+Be.media.currentTime+" seconds"),B(t)}function oe(){var e=parseInt(h.duration),t=0;return null===Be.media.duration||isNaN(Be.media.duration)||(t=Be.media.duration),isNaN(e)?t:e}function ie(){m(Be.container,h.classes.playing,!Be.media.paused),m(Be.container,h.classes.stopped,Be.media.paused),_e(Be.media.paused)}function le(){N={x:e.pageXOffset||0,y:e.pageYOffset||0}}function ue(){e.scrollTo(N.x,N.y)}function ce(e){var n=M.supportsFullScreen;e&&e.type===M.fullScreenEventName?Be.isFullscreen=M.isFullScreen(Be.container):n?(M.isFullScreen(Be.container)?M.cancelFullScreen():(le(),M.requestFullScreen(Be.container)),Be.isFullscreen=M.isFullScreen(Be.container)):(Be.isFullscreen=!Be.isFullscreen,Be.isFullscreen?(b(t,"keyup",pe),t.body.style.overflow="hidden"):(v(t,"keyup",pe),t.body.style.overflow="")),m(Be.container,h.classes.fullscreen.active,Be.isFullscreen),Be.isFullscreen?Be.container.setAttribute("tabindex","-1"):Be.container.removeAttribute("tabindex"),W(Be.isFullscreen),w(Be.buttons.fullscreen,Be.isFullscreen),k(Be.container,Be.isFullscreen?"enterfullscreen":"exitfullscreen"),!Be.isFullscreen&&n&&ue()}function pe(e){27===(e.which||e.charCode||e.keyCode)&&Be.isFullscreen&&ce()}function de(e){if("boolean"!=typeof e&&(e=!Be.media.muted),w(Be.buttons.mute,e),Be.media.muted=e,0===Be.media.volume&&Ae(h.volume),s(h.types.embed,Be.type)){switch(Be.type){case"youtube":Be.embed[Be.media.muted?"mute":"unMute"]();break;case"vimeo":Be.embed.api("setVolume",Be.media.muted?0:parseFloat(h.volume/h.volumeMax));break;case"soundcloud":Be.embed.setVolume(Be.media.muted?0:parseFloat(h.volume/h.volumeMax))}k(Be.media,"volumechange")}}function Ae(t){var n=h.volumeMax,r=h.volumeMin;if("undefined"==typeof t&&(t=h.volume,h.storage.enabled&&_().supported&&(t=e.localStorage.getItem(h.storage.key),e.localStorage.removeItem("plyr-volume"))),(null===t||isNaN(t))&&(t=h.volume),t>n&&(t=n),r>t&&(t=r),Be.media.volume=parseFloat(t/n),Be.volume.display&&(Be.volume.display.value=t),s(h.types.embed,Be.type)){switch(Be.type){case"youtube":Be.embed.setVolume(100*Be.media.volume);break;case"vimeo":Be.embed.api("setVolume",Be.media.volume);break;case"soundcloud":Be.embed.setVolume(Be.media.volume)}k(Be.media,"volumechange")}Be.media.muted&&t>0&&de()}function me(){var e=Be.media.muted?0:Be.media.volume*h.volumeMax;Ae(e+h.volumeStep/5)}function fe(){var e=Be.media.muted?0:Be.media.volume*h.volumeMax;Ae(e-h.volumeStep/5)}function ye(){var t=Be.media.muted?0:Be.media.volume*h.volumeMax;Be.supported.full&&(Be.volume.input&&(Be.volume.input.value=t),Be.volume.display&&(Be.volume.display.value=t)),h.storage.enabled&&_().supported&&!isNaN(t)&&e.localStorage.setItem(h.storage.key,t),m(Be.container,h.classes.muted,0===t),Be.supported.full&&Be.buttons.mute&&w(Be.buttons.mute,0===t)}function be(e){Be.supported.full&&Be.buttons.captions&&("boolean"!=typeof e&&(e=-1===Be.container.className.indexOf(h.classes.captions.active)),Be.captionsEnabled=e,w(Be.buttons.captions,Be.captionsEnabled),m(Be.container,h.classes.captions.active,Be.captionsEnabled),k(Be.container,Be.captionsEnabled?"captionsenabled":"captionsdisabled"))}function ve(e){var t="waiting"===e.type;clearTimeout(Be.timers.loading),Be.timers.loading=setTimeout(function(){m(Be.container,h.classes.loading,t)},t?250:0)}function ge(e){if(Be.supported.full){var t=Be.progress.played,n=0,r=oe();if(e)switch(e.type){case"timeupdate":case"seeking":n=x(Be.media.currentTime,r),"timeupdate"==e.type&&Be.buttons.seek&&(Be.buttons.seek.value=n);break;case"playing":case"progress":t=Be.progress.buffer,n=function(){var e=Be.media.buffered;return e&&e.length?x(e.end(0),r):"number"==typeof e?100*e:0}()}he(t,n)}}function he(e,t){if(Be.supported.full){if("undefined"==typeof t&&(t=0),"undefined"==typeof e){if(!Be.progress||!Be.progress.buffer)return;e=Be.progress.buffer}e instanceof HTMLElement?e.value=t:e&&(e.bar&&(e.bar.value=t),e.text&&(e.text.innerHTML=t))}}function ke(e,t){if(t){isNaN(e)&&(e=0),Be.secs=parseInt(e%60),Be.mins=parseInt(e/60%60),Be.hours=parseInt(e/60/60%60);var n=parseInt(oe()/60/60%60)>0;Be.secs=("0"+Be.secs).slice(-2),Be.mins=("0"+Be.mins).slice(-2),t.innerHTML=(n?Be.hours+":":"")+Be.mins+":"+Be.secs}}function we(){if(Be.supported.full){var e=oe()||0;!Be.duration&&h.displayDuration&&Be.media.paused&&ke(e,Be.currentTime),Be.duration&&ke(e,Be.duration),Ee()}}function xe(e){ke(Be.media.currentTime,Be.currentTime),e&&"timeupdate"==e.type&&Be.media.seeking||ge(e)}function Te(e){"number"!=typeof e&&(e=0);var t=oe(),n=x(e,t);Be.progress&&Be.progress.played&&(Be.progress.played.value=n),Be.buttons&&Be.buttons.seek&&(Be.buttons.seek.value=n)}function Ee(e){var t=oe();if(h.tooltips.seek&&Be.progress.container&&0!==t){var n=Be.progress.container.getBoundingClientRect(),r=0,a=h.classes.tooltip+"--visible";if(e)r=100/n.width*(e.pageX-n.left);else{if(!f(Be.progress.tooltip,a))return;r=Be.progress.tooltip.style.left.replace("%","")}0>r?r=0:r>100&&(r=100),ke(t/100*r,Be.progress.tooltip),Be.progress.tooltip.style.left=r+"%",e&&s(["mouseenter","mouseleave"],e.type)&&m(Be.progress.tooltip,a,"mouseenter"===e.type)}}function _e(t){if(h.hideControls&&"audio"!==Be.type){var n=0,r=!1,a=t;if("boolean"!=typeof t&&(t&&t.type?(r="enterfullscreen"===t.type,a=s(["mousemove","mouseenter","focus"],t.type),"mousemove"===t.type&&(n=2e3),"focus"===t.type&&(n=3e3)):a=!f(Be.container,h.classes.hideControls)),e.clearTimeout(Be.timers.hover),a||Be.media.paused){if(m(Be.container,h.classes.hideControls,!1),Be.media.paused)return;Be.browser.touch&&(n=3e3)}a&&Be.media.paused||(Be.timers.hover=e.setTimeout(function(){Be.controls.active&&!r||m(Be.container,h.classes.hideControls,!0)},n))}}function Ce(e){if("undefined"!=typeof e)return void Se(e);var t;switch(Be.type){case"youtube":t=Be.embed.getVideoUrl();break;case"vimeo":Be.embed.api("getVideoUrl",function(e){t=e});break;case"soundcloud":Be.embed.getCurrentSound(function(e){t=e.permalink_url});break;default:t=Be.media.currentSrc}return t||""}function Se(n){if(!("undefined"!=typeof n&&"sources"in n&&n.sources.length))return void T("Invalid source format",!0);if(te(),Te(),he(),Ne(),"youtube"===Be.type?(Be.embed.destroy(),e.clearInterval(Be.timer.buffering),e.clearInterval(Be.timer.playing)):"video"===Be.type&&Be.videoContainer&&u(Be.videoContainer),Be.embed=null,u(Be.media),"type"in n&&(Be.type=n.type,"video"===Be.type)){var r=n.sources[0];"type"in r&&s(h.types.embed,r.type)&&(Be.type=r.type)}switch(Be.supported=F(Be.type),Be.type){case"video":Be.media=t.createElement("video");break;case"audio":Be.media=t.createElement("audio");break;case"youtube":case"vimeo":case"soundcloud":Be.media=t.createElement("div"),Be.embedId=n.sources[0].src}c(Be.container,Be.media),"undefined"!=typeof n.autoplay&&(h.autoplay=n.autoplay),s(h.types.html5,Be.type)&&(h.crossorigin&&Be.media.setAttribute("crossorigin",""),h.autoplay&&Be.media.setAttribute("autoplay",""),"poster"in n&&Be.media.setAttribute("poster",n.poster),h.loop&&Be.media.setAttribute("loop","")),Be.container.className=Be.originalClassName,m(Be.container,h.classes.fullscreen.active,Be.isFullscreen),m(Be.container,h.classes.captions.active,Be.captionsEnabled),j(),s(h.types.html5,Be.type)&&Y("source",n.sources),Q(),s(h.types.html5,Be.type)&&("tracks"in n&&Y("track",n.tracks),Be.media.load(),Le(),we()),h.title=n.title,D(),Be.container.plyr.media=Be.media}function Fe(e){"video"===Be.type&&Be.media.setAttribute("poster",e)}function Ie(){function n(){var e=Be.media.paused;e?ee():te();var t=Be.buttons[e?"play":"pause"],n=Be.buttons[e?"pause":"play"];if(n=n&&n.length>1?n[n.length-1]:n[0]){var r=f(t,h.classes.tabFocus);setTimeout(function(){n.focus(),r&&(m(t,h.classes.tabFocus,!1),m(n,h.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 Be.buttons){var r=Be.buttons[n];if(r instanceof NodeList)for(var a=0;a<r.length;a++)m(r[a],h.classes.tabFocus,r[a]===e);else m(r,h.classes.tabFocus,r===e)}}var a=Be.browser.isIE?"change":"input";b(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&r()}),b(t.body,"click",function(){m(V("."+h.classes.tabFocus),h.classes.tabFocus,!1)});for(var s in Be.buttons){var o=Be.buttons[s];b(o,"blur",function(){m(o,"tab-focus",!1)})}g(Be.buttons.play,"click",h.listeners.play,n),g(Be.buttons.pause,"click",h.listeners.pause,n),g(Be.buttons.restart,"click",h.listeners.restart,se),g(Be.buttons.rewind,"click",h.listeners.rewind,re),g(Be.buttons.forward,"click",h.listeners.forward,ae),g(Be.buttons.seek,a,h.listeners.seek,se),g(Be.volume.input,a,h.listeners.volume,function(){Ae(Be.volume.input.value)}),g(Be.buttons.mute,"click",h.listeners.mute,de),g(Be.buttons.fullscreen,"click",h.listeners.fullscreen,ce),M.supportsFullScreen&&b(t,M.fullScreenEventName,ce),b(Be.buttons.captions,"click",be),b(Be.progress.container,"mouseenter mouseleave mousemove",Ee),h.hideControls&&(b(Be.container,"mouseenter mouseleave mousemove enterfullscreen",_e),b(Be.controls,"mouseenter mouseleave",function(e){Be.controls.active="mouseenter"===e.type}),b(Be.controls,"focus blur",_e,!0)),b(Be.volume.input,"wheel",function(e){e.preventDefault();var t=e.webkitDirectionInvertedFromDevice;(e.deltaY<0||e.deltaX>0)&&(t?fe():me()),(e.deltaY>0||e.deltaX<0)&&(t?me():fe())})}function Me(){if(b(Be.media,"timeupdate seeking",xe),b(Be.media,"timeupdate",B),b(Be.media,"durationchange loadedmetadata",we),b(Be.media,"ended",function(){"video"===Be.type&&L(),ie(),se(0),we(),"video"===Be.type&&h.showPosterOnEnd&&Be.media.load()}),b(Be.media,"progress playing",ge),b(Be.media,"volumechange",ye),b(Be.media,"play pause",ie),
+b(Be.media,"waiting canplay seeked",ve),h.clickToPlay&&"audio"!==Be.type){var e=V("."+h.classes.videoWrapper);if(!e)return;e.style.cursor="pointer",b(e,"click",function(){return Be.browser.touch&&!Be.media.paused?void _e(!0):void(Be.media.paused?ee():Be.media.ended?(se(),ee()):te())})}h.disableContextMenu&&b(Be.media,"contextmenu",function(e){e.preventDefault()}),b(Be.media,h.events.join(" "),function(e){k(Be.container,e.type,!0)})}function Ne(){if(s(h.types.html5,Be.type)){for(var e=Be.media.querySelectorAll("source"),t=0;t<e.length;t++)u(e[t]);Be.media.setAttribute("src","data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAAGm1kYXQAAAGzABAHAAABthBgUYI9t+8AAAMNbW9vdgAAAGxtdmhkAAAAAMXMvvrFzL76AAAD6AAAACoAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAABhpb2RzAAAAABCAgIAHAE/////+/wAAAiF0cmFrAAAAXHRraGQAAAAPxcy++sXMvvoAAAABAAAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAgAAAAIAAAAAAG9bWRpYQAAACBtZGhkAAAAAMXMvvrFzL76AAAAGAAAAAEVxwAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAABaG1pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAShzdGJsAAAAxHN0c2QAAAAAAAAAAQAAALRtcDR2AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAgACABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAAXmVzZHMAAAAAA4CAgE0AAQAEgICAPyARAAAAAAMNQAAAAAAFgICALQAAAbABAAABtYkTAAABAAAAASAAxI2IAMUARAEUQwAAAbJMYXZjNTMuMzUuMAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAAABAAAAAQAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAAASAAAAAQAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYHVkdGEAAABYbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAraWxzdAAAACOpdG9vAAAAG2RhdGEAAAABAAAAAExhdmY1My4yMS4x"),Be.media.load(),T("Cancelled network requests for old media")}}function Pe(){if(!Be.init)return null;if(Be.container.setAttribute("class",A(h.selectors.container)),Be.init=!1,u(V(h.selectors.controls.wrapper)),"youtube"===Be.type)return void Be.embed.destroy();"video"===Be.type&&(u(V(h.selectors.captions)),l(Be.videoContainer)),z(!0);var e=Be.media.cloneNode(!0);Be.media.parentNode.replaceChild(e,Be.media)}function Re(){if(Be.init)return null;if(M=E(),Be.browser=n(),Be.media=Be.container.querySelectorAll("audio, video")[0],Be.media||(Be.media=Be.container.querySelectorAll("[data-type]")[0]),Be.media){Be.originalClassName=Be.container.className;var e=Be.media.tagName.toLowerCase();if("div"===e?(Be.type=Be.media.getAttribute("data-type"),Be.embedId=Be.media.getAttribute("data-video-id"),Be.media.removeAttribute("data-type"),Be.media.removeAttribute("data-video-id")):(Be.type=e,h.crossorigin=null!==Be.media.getAttribute("crossorigin"),h.autoplay=h.autoplay||null!==Be.media.getAttribute("autoplay"),h.loop=h.loop||null!==Be.media.getAttribute("loop")),Be.supported=F(Be.type),j(),!Be.supported.basic)return!1;if(T(Be.browser.name+" "+Be.browser.version),Q(),s(h.types.html5,Be.type)){if(!Be.supported.full)return void(Be.init=!0);Le(),D(),h.autoplay&&ee()}Be.init=!0}}function Le(){if(!Be.supported.full)return T("No full support for this media type ("+Be.type+")",!0),u(V(h.selectors.controls.wrapper)),u(V(h.selectors.buttons.play)),void z(!0);var e=!H(h.selectors.controls.wrapper).length;e&&q(),X()&&(e&&Ie(),Me(),z(),P(),R(),Ae(),ye(),xe(),ie(),we(),k(Be.container,"ready"))}var Be=this;return Be.container=y,Be.timers={},T(h),Re(),Be.init?{media:Be.media,play:ee,pause:te,restart:se,rewind:re,forward:ae,seek:se,source:Ce,poster:Fe,setVolume:Ae,togglePlay:ne,toggleMute:de,toggleCaptions:be,toggleFullscreen:ce,toggleControls:_e,isFullscreen:function(){return Be.isFullscreen||!1},support:function(e){return r(Be,e)},destroy:Pe,restore:Re}:{}}function S(e,n){var r=new XMLHttpRequest;"string"==typeof n&&null!==t.querySelector("#"+n)||"withCredentials"in r&&(r.open("GET",e,!0),r.onload=function(){var e=t.createElement("div");e.setAttribute("hidden",""),"string"==typeof n&&e.setAttribute("id",n),e.innerHTML=r.responseText,t.body.insertBefore(e,t.body.childNodes[0])},r.send())}function F(e){var r,a,s=n(),o=s.isIE&&s.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,a=r&&!o&&!i;break;case"audio":r=l,a=r&&!o;break;case"vimeo":case"youtube":case"soundcloud":r=!0,a=!o&&!i;break;default:r=l&&u,a=r&&!o}return{basic:r,full:a}}function I(e,n){var r=[],a=[],s=[P.selectors.html5,P.selectors.embed].join(",");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(s)),!F().basic||!e.length)return!1;e instanceof NodeList&&(e=Array.prototype.slice.call(e));for(var o=0;o<e.length;o++){var l=e[o],u=l.querySelectorAll(s);if(u.length>1)for(var c=0;c<u.length;c++)a.push({element:i(u[c],t.createElement("div")),original:l});else a.push({element:l})}for(var p in a){var d=a[p].element,A=a[p].original||d;if(y(d,s)&&(d=i(d,t.createElement("div"))),!("plyr"in d)){var m=T({},P,n,JSON.parse(A.getAttribute("data-plyr")));if(!m.enabled)return null;var f=new C(d,m);d.plyr=Object.keys(f).length?f:!1,k(A,"setup",{plyr:d.plyr})}r.push(d)}return r}var M,N={x:0,y:0},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:5,volumeMin:0,volumeMax:10,volumeStep:1,duration:null,displayDuration:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/1.7.0/plyr.svg",clickToPlay:!0,hideControls:!0,showPosterOnEnd:!1,disableContextMenu:!0,tooltips:{controls:!1,seek:!0},selectors:{html5:"video, audio",embed:"[data-type]",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"]',captions:'[data-plyr="captions"]',fullscreen:'[data-plyr="fullscreen"]'},volume:{input:'[data-plyr="volume"]',display:".plyr__volume--display"},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",hideControls:"plyr--hide-controls",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"},tabFocus:"tab-focus"},captions:{defaultActive:!1},fullscreen:{enabled:!0,fallback:!0,allowAudio:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","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","soundcloud"],html5:["video","audio"]},urls:{vimeo:{api:"https://cdn.plyr.io/froogaloop/1.0.1/plyr.froogaloop.js"},youtube:{api:"https://www.youtube.com/iframe_api"},soundcloud:{api:"https://w.soundcloud.com/player/api.js"}},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{setup:I,supported:F,loadSprite: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}return"function"==typeof window.CustomEvent?!1:(e.prototype=window.Event.prototype,void(window.CustomEvent=e))}(); \ No newline at end of file
diff --git a/package.json b/package.json
index 04a024ce..b958cbd5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "plyr",
- "version": "1.7.0",
+ "version": "1.8.0",
"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 c1fcc1f2..866198ea 100644
--- a/readme.md
+++ b/readme.md
@@ -113,7 +113,7 @@ Include the `plyr.js` script before the closing `</body>` tag and then call `ply
If you want to use our CDN for the JavaScript, you can use the following:
```html
-<script src="https://cdn.plyr.io/1.7.0/plyr.js"></script>
+<script src="https://cdn.plyr.io/1.8.0/plyr.js"></script>
```
### CSS
@@ -126,11 +126,11 @@ Include the `plyr.css` stylsheet into your `<head>`
If you want to use our CDN for the default CSS, you can use the following:
```html
-<link rel="stylesheet" href="https://cdn.plyr.io/1.7.0/plyr.css">
+<link rel="stylesheet" href="https://cdn.plyr.io/1.8.0/plyr.css">
```
### SVG Sprite
-The SVG sprite is loaded automatically from our CDN. To change this, see the [#options](Options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/1.7.0/plyr.svg`.
+The SVG sprite is loaded automatically from our CDN. To change this, see the [#options](Options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/1.8.0/plyr.svg`.
## Advanced
@@ -162,9 +162,7 @@ WebVTT captions are supported. To add a caption track, check the HTML example ab
#### Initialising
-By default, Plyr looks for all `<video>`, `<audio>` and `[data-type]` elements and initialises on any found. You can specify other options, including a different selector hook below. The container classname will be added to the specified element(s) if it is not already present (for the CSS).
-
-You can initialize the player a few other ways:
+By default, Plyr looks for all `<video>`, `<audio>` and `[data-type]` elements with the document and initialises on any found. You can specify other options, including a different NodeList, HTMLElement or string selector as below:
Passing a [NodeList](https://developer.mozilla.org/en-US/docs/Web/API/NodeList):
```javascript
@@ -180,13 +178,16 @@ Passing a [string selector](https://developer.mozilla.org/en-US/docs/Web/API/Doc
```javascript
plyr.setup('.js-player', options);
```
-This can be the target `<video>`, `<audio>` or `[data-type]` elements or a container element.
+
+The NodeList, HTMLElement or string selector can be the target `<video>`, `<audio>` or `[data-type]` (for embeds) element or a container element. If a container has several media elements inside, each media element will be wrapped in a `<div>` and setup individually.
Passing just the options object:
```javascript
plyr.setup(options);
```
+`setup()` will return an array of all the elements Plyr was setup on. The `plyr` object can be accessed on these elements and used for the API.
+
#### RangeTouch
Some touch browsers (particularly Mobile Safari on iOS) seem to have issues with `<input type="range">` elements whereby touching the track to set the value doesn't work and sliding the thumb can be tricky. To combat this, I've created [RangeTouch](https://rangetouch.com) which I'd recommend including in your solution. It's a tiny script with a nice benefit for users on touch devices.
@@ -396,7 +397,7 @@ Note the single quotes encapsulating the JSON and double quotes on the object ke
## API
-#### Fetching the plyr instance
+#### Getting the `plyr` instance
A `plyr` object is added to any element that Plyr is initialized on. You can then control the player by accessing methods in the `plyr` object.
There are two ways to access the instance, firstly you re-query the element container you used for setup (e.g. `.js-player`) like so:
@@ -405,13 +406,15 @@ There are two ways to access the instance, firstly you re-query the element cont
var player = document.querySelector('.js-player').plyr;
```
+You can listen for the `setup` [event](#events) on the container, after which the `plyr` key will be available and also passed in the to your callback (in the `plyr` key of the event object).
+
The other method is using the return value from the call to `setup()`. An array of instances is returned so you need to use an index:
```javascript
-var player = plyr.setup('.js-player')[0];
+var player = plyr.setup('.js-player')[0].plyr;
```
-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 multiple 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).
+This will return an array of plyr instances that were setup, so you need to specify the index of the instance you want or loop through of course. This is less useful if you are setting up multiple instances.
Once you have your instance, you can use the API methods below on it. For example to pause it:
diff --git a/src/js/plyr.js b/src/js/plyr.js
index 1e7df62e..8d4e321b 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -1,6 +1,6 @@
// ==========================================================================
// Plyr
-// plyr.js v1.7.0
+// plyr.js v1.8.0
// https://github.com/selz/plyr
// License: The MIT License (MIT)
// ==========================================================================
@@ -44,7 +44,7 @@
displayDuration: true,
loadSprite: true,
iconPrefix: 'plyr',
- iconUrl: 'https://cdn.plyr.io/1.7.0/plyr.svg',
+ iconUrl: 'https://cdn.plyr.io/1.8.0/plyr.svg',
clickToPlay: true,
hideControls: true,
showPosterOnEnd: false,
@@ -175,51 +175,56 @@
// Credits: http://paypal.github.io/accessible-html5-video-player/
// Unfortunately, due to mixed support, UA sniffing is required
function _browserSniff() {
- var nAgt = navigator.userAgent,
+ var ua = navigator.userAgent,
name = navigator.appName,
fullVersion = '' + parseFloat(navigator.appVersion),
majorVersion = parseInt(navigator.appVersion, 10),
nameOffset,
verOffset,
- ix;
+ ix,
+ isIE = false,
+ isFirefox = false,
+ isChrome = false,
+ isSafari = false;
// MSIE 11
if ((navigator.appVersion.indexOf('Windows NT') !== -1) && (navigator.appVersion.indexOf('rv:11') !== -1)) {
- name = 'IE';
+ isIE = true;
fullVersion = '11;';
}
// MSIE
- else if ((verOffset=nAgt.indexOf('MSIE')) !== -1) {
- name = 'IE';
- fullVersion = nAgt.substring(verOffset + 5);
+ else if ((verOffset = ua.indexOf('MSIE')) !== -1) {
+ isIE = true;
+ fullVersion = ua.substring(verOffset + 5);
}
// Chrome
- else if ((verOffset=nAgt.indexOf('Chrome')) !== -1) {
- name = 'Chrome';
- fullVersion = nAgt.substring(verOffset + 7);
+ else if ((verOffset = ua.indexOf('Chrome')) !== -1) {
+ isChrome = true;
+ fullVersion = ua.substring(verOffset + 7);
}
// Safari
- else if ((verOffset=nAgt.indexOf('Safari')) !== -1) {
- name = 'Safari';
- fullVersion = nAgt.substring(verOffset + 7);
- if ((verOffset = nAgt.indexOf('Version')) !== -1) {
- fullVersion = nAgt.substring(verOffset + 8);
+ else if ((verOffset = ua.indexOf('Safari')) !== -1) {
+ isSafari = true;
+ fullVersion = ua.substring(verOffset + 7);
+ if ((verOffset = ua.indexOf('Version')) !== -1) {
+ fullVersion = ua.substring(verOffset + 8);
}
}
// Firefox
- else if ((verOffset=nAgt.indexOf('Firefox')) !== -1) {
- name = 'Firefox';
- fullVersion = nAgt.substring(verOffset + 8);
+ else if ((verOffset = ua.indexOf('Firefox')) !== -1) {
+ isFirefox = true;
+ fullVersion = ua.substring(verOffset + 8);
}
// In most other browsers, 'name/version' is at the end of userAgent
- else if ((nameOffset=nAgt.lastIndexOf(' ') + 1) < (verOffset=nAgt.lastIndexOf('/'))) {
- name = nAgt.substring(nameOffset,verOffset);
- fullVersion = nAgt.substring(verOffset + 1);
+ else if ((nameOffset = ua.lastIndexOf(' ') + 1) < (verOffset = ua.lastIndexOf('/'))) {
+ name = ua.substring(nameOffset,verOffset);
+ fullVersion = ua.substring(verOffset + 1);
if (name.toLowerCase() == name.toUpperCase()) {
name = navigator.appName;
}
}
+
// Trim the fullVersion string at semicolon/space if present
if ((ix = fullVersion.indexOf(';')) !== -1) {
fullVersion = fullVersion.substring(0, ix);
@@ -227,6 +232,7 @@
if ((ix = fullVersion.indexOf(' ')) !== -1) {
fullVersion = fullVersion.substring(0, ix);
}
+
// Get major version
majorVersion = parseInt('' + fullVersion, 10);
if (isNaN(majorVersion)) {
@@ -238,6 +244,10 @@
return {
name: name,
version: majorVersion,
+ isIE: isIE,
+ isFirefox: isFirefox,
+ isChrome: isChrome,
+ isSafari: isSafari,
ios: /(iPad|iPhone|iPod)/g.test(navigator.platform),
touch: 'ontouchstart' in document.documentElement
};
@@ -924,8 +934,8 @@
// Disable unsupported browsers than report false positive
// Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1033144
- if ((plyr.browser.name === 'IE' && plyr.browser.version >= 10) ||
- (plyr.browser.name === 'Firefox' && plyr.browser.version >= 31)) {
+ if ((plyr.browser.isIE && plyr.browser.version >= 10) ||
+ (plyr.browser.isFirefox && plyr.browser.version >= 31)) {
// Debugging
_log('Detected browser with known TextTrack issues - using manual fallback');
@@ -1191,15 +1201,16 @@
function _injectControls() {
// Sprite
if (config.loadSprite) {
- var iconUrl = _getIconUrl();
+ var iconUrl = _getIconUrl(),
+ isExternal = iconUrl.external;
// Only load external sprite using AJAX
- if (iconUrl.external) {
- _log('Loading external SVG sprite');
+ if (isExternal || plyr.browser.isIE) {
+ _log('AJAX loading external SVG sprite' + (plyr.browser.isIE ? ' (due to IE)' : ''));
loadSprite(iconUrl.url, "sprite-plyr");
}
else {
- _log('Sprite will be used inline');
+ _log('Sprite will be used as external resource directly');
}
}
@@ -2715,7 +2726,7 @@
// 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');
+ var inputEvent = (plyr.browser.isIE ? 'change' : 'input');
// Click play/pause helper
function _togglePlay() {
@@ -3262,7 +3273,7 @@
// Check for support
function supported(type) {
var browser = _browserSniff(),
- oldIE = (browser.name === 'IE' && browser.version <= 9),
+ oldIE = (browser.isIE && browser.version <= 9),
iPhone = /iPhone|iPod/i.test(navigator.userAgent),
audio = !!document.createElement('audio').canPlayType,
video = !!document.createElement('video').canPlayType,
@@ -3298,55 +3309,82 @@
}
// Setup function
- function setup(elements, options) {
+ function setup(targets, options) {
// Get the players
- var instances = [],
- selector = [defaults.selectors.html5, defaults.selectors.embed].join(',');
+ var elements = [],
+ containers = [],
+ selector = [defaults.selectors.html5, defaults.selectors.embed].join(',');
// Select the elements
// Assume elements is a NodeList by default
- if (typeof elements === 'string') {
- elements = document.querySelectorAll(elements);
+ if (typeof targets === 'string') {
+ targets = document.querySelectorAll(targets);
}
// Single HTMLElement passed
- else if (elements instanceof HTMLElement) {
- elements = [elements];
+ else if (targets instanceof HTMLElement) {
+ targets = [targets];
}
// No selector passed, possibly options as first argument
- else if (!(elements instanceof NodeList) && typeof elements !== 'string') {
+ else if (!(targets instanceof NodeList) && typeof targets !== 'string') {
// If options are the first argument
- if (typeof options === 'undefined' && typeof elements === 'object') {
- options = elements;
+ if (typeof options === 'undefined' && typeof targets === 'object') {
+ options = targets;
}
// Use default selector
- elements = document.querySelectorAll(selector);
+ targets = document.querySelectorAll(selector);
}
// Bail if disabled or no basic support
// You may want to disable certain UAs etc
- if (!supported().basic || !elements.length) {
+ if (!supported().basic || !targets.length) {
return false;
}
- // Create a player instance for each element
- for (var i = 0; i < elements.length; i++) {
- // Get the current element
- var element = elements[i];
+ // Convert NodeList to array
+ if (targets instanceof NodeList) {
+ targets = Array.prototype.slice.call(targets);
+ }
+
+ // Check if the targets have multiple media elements
+ for (var i = 0; i < targets.length; i++) {
+ var target = targets[i];
+
+ // Get children
+ var children = target.querySelectorAll(selector);
+
+ // If there's more than one media element, wrap them
+ if (children.length > 1) {
+ for (var x = 0; x < children.length; x++) {
+ containers.push({
+ element: _wrap(children[x], document.createElement('div')),
+ original: target
+ });
+ }
+ }
+ else {
+ containers.push({
+ element: target
+ });
+ }
+ }
- // Custom settings passed as data attribute
- var settings = element.getAttribute("data-plyr");
+ // Create a player instance for each element
+ for (var key in containers) {
+ var element = containers[key].element,
+ original = containers[key].original || element;
- // Wrap each media element if needed
+ // Wrap each media element if is target is media element
+ // as opposed to a wrapper
if (_matches(element, selector)) {
// Wrap in a <div>
element = _wrap(element, document.createElement('div'));
}
// Setup a player instance and add to the element
- if (typeof element.plyr === 'undefined') {
+ if (!('plyr' in element)) {
// Create instance-specific config
- var config = _extend({}, defaults, options, JSON.parse(settings));
+ var config = _extend({}, defaults, options, JSON.parse(original.getAttribute('data-plyr')));
// Bail if not enabled
if (!config.enabled) {
@@ -3360,14 +3398,16 @@
element.plyr = (Object.keys(instance).length ? instance : false);
// Callback
- _triggerEvent(element, 'setup', { plyr: element.plyr });
+ _triggerEvent(original, 'setup', {
+ plyr: element.plyr
+ });
}
// Add to return array even if it's already setup
- instances.push(element.plyr);
+ elements.push(element);
}
- return instances;
+ return elements;
}
return {