diff options
-rw-r--r-- | bundles.json | 10 | ||||
-rw-r--r-- | changelog.md | 17 | ||||
-rw-r--r-- | demo/dist/demo.css (renamed from docs/dist/docs.css) | 0 | ||||
-rw-r--r-- | demo/dist/demo.js | 1 | ||||
-rw-r--r-- | demo/dist/demo.svg (renamed from docs/dist/docs.svg) | 0 | ||||
-rw-r--r-- | demo/error.html (renamed from docs/error.html) | 0 | ||||
-rw-r--r-- | demo/index.html (renamed from docs/index.html) | 24 | ||||
-rw-r--r-- | demo/src/js/lib/classlist.js (renamed from docs/src/js/lib/classlist.js) | 0 | ||||
-rw-r--r-- | demo/src/js/main.js (renamed from docs/src/js/docs.js) | 40 | ||||
-rw-r--r-- | demo/src/less/components/base.less (renamed from docs/src/less/components/base.less) | 0 | ||||
-rw-r--r-- | demo/src/less/components/buttons.less (renamed from docs/src/less/components/buttons.less) | 0 | ||||
-rw-r--r-- | demo/src/less/components/error.less (renamed from docs/src/less/components/error.less) | 0 | ||||
-rw-r--r-- | demo/src/less/components/examples.less (renamed from docs/src/less/components/examples.less) | 0 | ||||
-rw-r--r-- | demo/src/less/components/icons.less (renamed from docs/src/less/components/icons.less) | 0 | ||||
-rw-r--r-- | demo/src/less/components/type.less (renamed from docs/src/less/components/type.less) | 0 | ||||
-rw-r--r-- | demo/src/less/demo.less (renamed from docs/src/less/docs.less) | 2 | ||||
-rw-r--r-- | demo/src/less/lib/animation.less (renamed from docs/src/less/lib/animation.less) | 0 | ||||
-rw-r--r-- | demo/src/less/lib/fontface.less (renamed from docs/src/less/lib/fontface.less) | 0 | ||||
-rw-r--r-- | demo/src/less/lib/mixins.less (renamed from docs/src/less/lib/mixins.less) | 0 | ||||
-rw-r--r-- | demo/src/less/lib/normalize.less (renamed from docs/src/less/lib/normalize.less) | 0 | ||||
-rw-r--r-- | demo/src/less/variables.less (renamed from docs/src/less/variables.less) | 0 | ||||
-rwxr-xr-x | demo/src/sprite/icon-github.svg (renamed from docs/src/sprite/icon-github.svg) | 0 | ||||
-rwxr-xr-x | demo/src/sprite/icon-twitter.svg (renamed from docs/src/sprite/icon-twitter.svg) | 0 | ||||
-rwxr-xr-x | demo/src/sprite/icon-vimeo.svg (renamed from docs/src/sprite/icon-vimeo.svg) | 0 | ||||
-rwxr-xr-x | demo/src/sprite/icon-youtube.svg (renamed from docs/src/sprite/icon-youtube.svg) | 0 | ||||
-rw-r--r-- | dist/plyr.js | 4 | ||||
-rw-r--r-- | docs/dist/docs.js | 1 | ||||
-rw-r--r-- | gulpfile.js | 66 | ||||
-rw-r--r-- | package.json | 4 | ||||
-rw-r--r-- | readme.md | 163 | ||||
-rw-r--r-- | src/js/plyr.js | 37 | ||||
-rw-r--r-- | src/scss/plyr.scss | 1 |
32 files changed, 199 insertions, 171 deletions
diff --git a/bundles.json b/bundles.json index a2d35eae..d6fdf733 100644 --- a/bundles.json +++ b/bundles.json @@ -10,14 +10,14 @@ "plyr.js": ["src/js/plyr.js"] } }, - "docs": { + "demo": { "less": { - "docs.css": ["docs/src/less/docs.less"] + "demo.css": ["demo/src/less/demo.less"] }, "js": { - "docs.js": [ - "docs/src/js/lib/classlist.js", - "docs/src/js/docs.js" + "demo.js": [ + "demo/src/js/lib/classlist.js", + "demo/src/js/main.js" ] } } diff --git a/changelog.md b/changelog.md index be090649..c1cca012 100644 --- a/changelog.md +++ b/changelog.md @@ -1,18 +1,25 @@ # Changelog -# v1.6.20 +# 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. + +## v1.6.20 - Fix for multiple sprites being requested (fixes #259) -# v1.6.19 +## v1.6.19 - Fix for scroll direction issues on volume control (fixes #258) -# v1.6.18 +## v1.6.18 - Reduced rounding of seek value from 1 decimal point to 4 (fixes #242) -# v1.6.17 +## v1.6.17 - Added `disableContextMenu` option to hide the right click context menu (fixes #248 and #225) -# v1.6.16 +## v1.6.16 - Always hide standard controls (fixes #225) - Fix for Tooltips overflowing (fixes #230) diff --git a/docs/dist/docs.css b/demo/dist/demo.css index d731059a..d731059a 100644 --- a/docs/dist/docs.css +++ b/demo/dist/demo.css diff --git a/demo/dist/demo.js b/demo/dist/demo.js new file mode 100644 index 00000000..fdb89c46 --- /dev/null +++ b/demo/dist/demo.js @@ -0,0 +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 – “It All Began With A Burst”",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 diff --git a/docs/dist/docs.svg b/demo/dist/demo.svg index 6f09b44b..6f09b44b 100644 --- a/docs/dist/docs.svg +++ b/demo/dist/demo.svg diff --git a/docs/error.html b/demo/error.html index f867c915..f867c915 100644 --- a/docs/error.html +++ b/demo/error.html diff --git a/docs/index.html b/demo/index.html index 1d469e83..17663c7b 100644 --- a/docs/index.html +++ b/demo/index.html @@ -11,7 +11,7 @@ <link rel="stylesheet" href="../dist/plyr.css"> <!-- Docs styles --> - <link rel="stylesheet" href="dist/docs.css"> + <link rel="stylesheet" href="dist/demo.css"> </head> <body> <header> @@ -51,19 +51,17 @@ </ul> </nav> <section> - <div class="js-media-player"> - <video poster="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg" controls crossorigin> - <!-- Video files --> - <source src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4" type="video/mp4"> - <source src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm" type="video/webm"> + <video poster="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg" controls crossorigin> + <!-- Video files --> + <source src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4" type="video/mp4"> + <source src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm" type="video/webm"> - <!-- Text track file --> - <track kind="captions" label="English" srclang="en" src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.en.vtt" default> + <!-- Text track file --> + <track kind="captions" label="English" srclang="en" src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.en.vtt" default> - <!-- Fallback for browsers that don't support the <video> element --> - <a href="https://cdn.selz.com/plyr/1.0/movie.mp4">Download</a> - </video> - </div> + <!-- Fallback for browsers that don't support the <video> element --> + <a href="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4" download>Download</a> + </video> <ul> <li class="plyr__cite plyr__cite--video"><small><a href="http://viewfromabluemoon.com/" target="_blank">View From A Blue Moon</a> © Brainfarm</small></li> @@ -78,7 +76,7 @@ <script src="../dist/plyr.js"></script> <!-- Docs script --> - <script src="dist/docs.js"></script> + <script src="dist/demo.js"></script> <!-- Rangetouch to fix <input type="range"> on touch devices (see https://rangetouch.com) --> <script src="https://cdn.rangetouch.com/0.0.9/rangetouch.js"></script> diff --git a/docs/src/js/lib/classlist.js b/demo/src/js/lib/classlist.js index eac1e99e..eac1e99e 100644 --- a/docs/src/js/lib/classlist.js +++ b/demo/src/js/lib/classlist.js diff --git a/docs/src/js/docs.js b/demo/src/js/main.js index 08557f76..719672bd 100644 --- a/docs/src/js/docs.js +++ b/demo/src/js/main.js @@ -1,25 +1,32 @@ // ========================================================================== -// Docs example +// Plyr.io demo +// This code is purely for the plyr.io website +// Please see readme.md in the root or github.com/selz/plyr // ========================================================================== /*global plyr*/ -// Setup the player -plyr.setup('.js-media-player', { - debug: true, - title: 'Video demo', - iconUrl: '../dist/plyr.svg', - tooltips: { - controls: true - }, - captions: { - defaultActive: true - } -}); -plyr.loadSprite('dist/docs.svg'); // General functions -(function() { +;(function() { + // Setup the player + var instances = plyr.setup({ + debug: true, + title: 'Video demo', + iconUrl: '../dist/plyr.svg', + tooltips: { + controls: true + }, + captions: { + defaultActive: true + } + }); + plyr.loadSprite('dist/demo.svg'); + + // Plyr returns an array regardless + var player = instances[0]; + + // Setup type toggle var buttons = document.querySelectorAll('[data-source]'), types = { video: 'video', @@ -90,9 +97,6 @@ plyr.loadSprite('dist/docs.svg'); return; } - // Get plyr instance - var player = document.querySelector('.js-media-player').plyr; - switch(type) { case types.video: player.source({ diff --git a/docs/src/less/components/base.less b/demo/src/less/components/base.less index c584b57e..c584b57e 100644 --- a/docs/src/less/components/base.less +++ b/demo/src/less/components/base.less diff --git a/docs/src/less/components/buttons.less b/demo/src/less/components/buttons.less index c99a0836..c99a0836 100644 --- a/docs/src/less/components/buttons.less +++ b/demo/src/less/components/buttons.less diff --git a/docs/src/less/components/error.less b/demo/src/less/components/error.less index b1427173..b1427173 100644 --- a/docs/src/less/components/error.less +++ b/demo/src/less/components/error.less diff --git a/docs/src/less/components/examples.less b/demo/src/less/components/examples.less index 24bf1e9c..24bf1e9c 100644 --- a/docs/src/less/components/examples.less +++ b/demo/src/less/components/examples.less diff --git a/docs/src/less/components/icons.less b/demo/src/less/components/icons.less index 9530b601..9530b601 100644 --- a/docs/src/less/components/icons.less +++ b/demo/src/less/components/icons.less diff --git a/docs/src/less/components/type.less b/demo/src/less/components/type.less index 951be36d..951be36d 100644 --- a/docs/src/less/components/type.less +++ b/demo/src/less/components/type.less diff --git a/docs/src/less/docs.less b/demo/src/less/demo.less index e828d3b3..ac15a3c0 100644 --- a/docs/src/less/docs.less +++ b/demo/src/less/demo.less @@ -1,5 +1,5 @@ // ========================================================================== -// HTML5 Video Player Demo Page +// Plyr.io Demo Page // ========================================================================== // CSS Reset diff --git a/docs/src/less/lib/animation.less b/demo/src/less/lib/animation.less index 386c6613..386c6613 100644 --- a/docs/src/less/lib/animation.less +++ b/demo/src/less/lib/animation.less diff --git a/docs/src/less/lib/fontface.less b/demo/src/less/lib/fontface.less index a7da5ad9..a7da5ad9 100644 --- a/docs/src/less/lib/fontface.less +++ b/demo/src/less/lib/fontface.less diff --git a/docs/src/less/lib/mixins.less b/demo/src/less/lib/mixins.less index 923df1ea..923df1ea 100644 --- a/docs/src/less/lib/mixins.less +++ b/demo/src/less/lib/mixins.less diff --git a/docs/src/less/lib/normalize.less b/demo/src/less/lib/normalize.less index 562891ab..562891ab 100644 --- a/docs/src/less/lib/normalize.less +++ b/demo/src/less/lib/normalize.less diff --git a/docs/src/less/variables.less b/demo/src/less/variables.less index 4768cdd6..4768cdd6 100644 --- a/docs/src/less/variables.less +++ b/demo/src/less/variables.less diff --git a/docs/src/sprite/icon-github.svg b/demo/src/sprite/icon-github.svg index 685dd746..685dd746 100755 --- a/docs/src/sprite/icon-github.svg +++ b/demo/src/sprite/icon-github.svg diff --git a/docs/src/sprite/icon-twitter.svg b/demo/src/sprite/icon-twitter.svg index b3f644b1..b3f644b1 100755 --- a/docs/src/sprite/icon-twitter.svg +++ b/demo/src/sprite/icon-twitter.svg diff --git a/docs/src/sprite/icon-vimeo.svg b/demo/src/sprite/icon-vimeo.svg index 83dd3dc0..83dd3dc0 100755 --- a/docs/src/sprite/icon-vimeo.svg +++ b/demo/src/sprite/icon-vimeo.svg diff --git a/docs/src/sprite/icon-youtube.svg b/demo/src/sprite/icon-youtube.svg index 8b5d6897..8b5d6897 100755 --- a/docs/src/sprite/icon-youtube.svg +++ b/demo/src/sprite/icon-youtube.svg diff --git a/dist/plyr.js b/dist/plyr.js index 118bc473..8ff3218e 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;a.appendChild(r),o?s.insertBefore(a,o):s.appendChild(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,t,n,a){e&&g(e,t,n,!0,a)}function b(e,t,n,a){e&&g(e,t,n,!1,a)}function v(e,t,n,a,r){y(e,t,function(t){n&&n.apply(e,[t]),a.apply(e,[t])},r)}function g(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&&g(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 h(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 k(e,t){return e?(t="boolean"==typeof t?t:!e.getAttribute("aria-pressed"),e.setAttribute("aria-pressed",t),t):void 0}function w(e,t){return 0===e||0===t||isNaN(e)||isNaN(t)?0:(e/t*100).toFixed(2)}function x(){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]||{},x(t[s],r[s])):t[s]=r[s]}return t}}function T(){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 E(){var t={supported:function(){if(!("localStorage"in e))return!1;try{e.localStorage.setItem("___test","OK");var t=e.localStorage.getItem("___test");return e.localStorage.removeItem("___test"),"OK"===t}catch(n){return!1}return!1}()};return t}function _(g,x){function _(t,n){x.debug&&e.console&&console[n?"warn":"log"](t)}function F(){return{url:x.iconUrl,external:0===x.iconUrl.indexOf("http")}}function N(){var e=[],t=F(),n=(t.external?"":t.url)+"#"+x.iconPrefix;return s(x.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">'+x.i18n.play+"</span>","</button>"),e.push('<div class="plyr__controls">'),s(x.controls,"restart")&&e.push('<button type="button" data-plyr="restart">','<svg><use xlink:href="'+n+'-restart" /></svg>','<span class="plyr__sr-only">'+x.i18n.restart+"</span>","</button>"),s(x.controls,"rewind")&&e.push('<button type="button" data-plyr="rewind">','<svg><use xlink:href="'+n+'-rewind" /></svg>','<span class="plyr__sr-only">'+x.i18n.rewind+"</span>","</button>"),s(x.controls,"play")&&e.push('<button type="button" data-plyr="play">','<svg><use xlink:href="'+n+'-play" /></svg>','<span class="plyr__sr-only">'+x.i18n.play+"</span>","</button>",'<button type="button" data-plyr="pause">','<svg><use xlink:href="'+n+'-pause" /></svg>','<span class="plyr__sr-only">'+x.i18n.pause+"</span>","</button>"),s(x.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">'+x.i18n.forward+"</span>","</button>"),s(x.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>% "+x.i18n.buffered,"</progress>"),x.tooltips.seek&&e.push('<span class="plyr__tooltip">00:00</span>'),e.push("</span>")),s(x.controls,"current-time")&&e.push('<span class="plyr__time">','<span class="plyr__sr-only">'+x.i18n.currentTime+"</span>",'<span class="plyr__time--current">00:00</span>',"</span>"),s(x.controls,"duration")&&e.push('<span class="plyr__time">','<span class="plyr__sr-only">'+x.i18n.duration+"</span>",'<span class="plyr__time--duration">00:00</span>',"</span>"),s(x.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">'+x.i18n.toggleMute+"</span>","</button>"),s(x.controls,"volume")&&e.push('<span class="plyr__volume">','<label for="volume{id}" class="plyr__sr-only">'+x.i18n.volume+"</label>",'<input id="volume{id}" class="plyr__volume--input" type="range" min="'+x.volumeMin+'" max="'+x.volumeMax+'" value="'+x.volume+'" data-plyr="volume">','<progress class="plyr__volume--display" max="'+x.volumeMax+'" value="'+x.volumeMin+'" role="presentation"></progress>',"</span>"),s(x.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">'+x.i18n.toggleCaptions+"</span>","</button>"),s(x.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">'+x.i18n.toggleFullscreen+"</span>","</button>"),e.push("</div>"),e.join("")}function P(){if(Be.supported.full&&("audio"!=Be.type||x.fullscreen.allowAudio)&&x.fullscreen.enabled){var e=I.supportsFullScreen;e||x.fullscreen.fallback&&!G()?(_((e?"Native":"Fallback")+" fullscreen enabled"),m(Be.container,x.classes.fullscreen.enabled,!0)):_("Fullscreen not supported and fallback disabled"),k(Be.buttons.fullscreen,!1),W()}}function R(){if("video"===Be.type){V(x.selectors.captions)||Be.videoContainer.insertAdjacentHTML("afterbegin",'<div class="'+A(x.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,_("No caption track found")):_("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)&&(_("Detected browser with known TextTrack issues - using manual fallback"),Be.usingTextTracks=!1),Be.usingTextTracks){_("TextTracks supported");for(var o=0;o<r.length;o++){var i=r[o];"captions"!==i.kind&&"subtitles"!==i.kind||y(i,"cuechange",function(){this.activeCues[0]&&"text"in this.activeCues[0]?L(this.activeCues[0].getCueAsHTML()):L()})}}else if(_("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(),_("Successfully loaded the caption file via AJAX")}else _("There was a problem loading the caption file via AJAX",!0)},l.open("get",t,!0),l.send()}}else m(Be.container,x.classes.captions.enabled)}}function L(e){var n=V(x.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,x.classes.captions.enabled,!0),x.captions.defaultActive&&(m(Be.container,x.classes.captions.active,!0),k(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];y(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(x.loadSprite){var e=F();e.external?(_("Loading external SVG sprite"),C(e.url,"sprite-plyr")):_("Sprite will be used inline")}var n=x.html;_("Injecting custom controls"),n||(n=N()),n=o(n,"{seektime}",x.seekTime),n=o(n,"{id}",Math.floor(1e4*Math.random()));var a;if(null!==x.selectors.controls.container&&(a=x.selectors.controls.container,"string"==typeof selector&&(a=t.querySelector(a))),a instanceof HTMLElement||(a=Be.container),a.insertAdjacentHTML("beforeend",n),x.tooltips.controls)for(var r=H([x.selectors.controls.wrapper," ",x.selectors.labels," .",x.classes.hidden].join("")),s=r.length-1;s>=0;s--){var i=r[s];m(i,x.classes.hidden,!1),m(i,x.classes.tooltip,!0)}}function D(){try{return Be.controls=V(x.selectors.controls.wrapper),Be.buttons={},Be.buttons.seek=V(x.selectors.buttons.seek),Be.buttons.play=H(x.selectors.buttons.play),Be.buttons.pause=V(x.selectors.buttons.pause),Be.buttons.restart=V(x.selectors.buttons.restart),Be.buttons.rewind=V(x.selectors.buttons.rewind),Be.buttons.forward=V(x.selectors.buttons.forward),Be.buttons.fullscreen=V(x.selectors.buttons.fullscreen),Be.buttons.mute=V(x.selectors.buttons.mute),Be.buttons.captions=V(x.selectors.buttons.captions),Be.progress={},Be.progress.container=V(x.selectors.progress.container),Be.progress.buffer={},Be.progress.buffer.bar=V(x.selectors.progress.buffer),Be.progress.buffer.text=Be.progress.buffer.bar&&Be.progress.buffer.bar.getElementsByTagName("span")[0],Be.progress.played=V(x.selectors.progress.played),Be.progress.tooltip=Be.progress.container&&Be.progress.container.querySelector("."+x.classes.tooltip),Be.volume={},Be.volume.input=V(x.selectors.volume.input),Be.volume.display=V(x.selectors.volume.display),Be.duration=V(x.selectors.duration),Be.currentTime=V(x.selectors.currentTime),Be.seekTime=H(x.selectors.seekTime),!0}catch(e){return _("It looks like there is a problem with your controls html",!0),X(!0),!1}}function Q(){m(Be.container,x.selectors.container.replace(".",""),Be.supported.full)}function X(e){e?Be.media.setAttribute("controls",""):Be.media.removeAttribute("controls")}function j(e){var t=x.i18n.play;if("undefined"!=typeof x.title&&x.title.length&&(t+=", "+x.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",x.i18n.frameTitle.replace("{title}",x.title))}function z(){if(!Be.media)return _("No audio or video element found",!0),!1;if(Be.supported.full&&(m(Be.container,x.classes.type.replace("{0}",Be.type),!0),s(x.types.embed,Be.type)&&m(Be.container,x.classes.type.replace("{0}","video"),!0),m(Be.container,x.classes.stopped,x.autoplay),m(Be.container,x.classes.isIos,Be.browser.ios),m(Be.container,x.classes.isTouch,Be.browser.touch),"video"===Be.type)){var e=t.createElement("div");e.setAttribute("class",x.classes.videoWrapper),i(Be.media,e),Be.videoContainer=e}s(x.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,x.classes.videoWrapper,!0),m(Be.media,x.classes.embedWrapper,!0),"youtube"===Be.type)Be.media.appendChild(n),n.setAttribute("id",s),"object"==typeof YT?$(a,n):(r(x.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,y(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(x.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,y(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(x.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(),j(V("iframe"))}function $(t,n){"timer"in Be||(Be.timer={}),Be.embed=new YT.Player(n.id,{videoId:t,playerVars:{autoplay:x.autoplay?1:0,controls:Be.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:x.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){h(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(),x.title=n.getVideoData().title,h(Be.media,"timeupdate"),e.clearInterval(Be.timer.buffering),Be.timer.buffering=e.setInterval(function(){Be.media.buffered=n.getVideoLoadedFraction(),h(Be.media,"progress"),1===Be.media.buffered&&(e.clearInterval(Be.timer.buffering),h(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,h(Be.media,"ended");break;case 1:Be.media.paused=!1,Be.media.seeking=!1,h(Be.media,"play"),h(Be.media,"playing"),Be.timer.playing=e.setInterval(function(){Be.media.currentTime=n.getCurrentTime(),h(Be.media,"timeupdate")},100);break;case 2:Be.media.paused=!0,h(Be.media,"pause")}h(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,h(Be.media,"timeupdate")}),Be.embed.api("getDuration",function(e){Be.media.duration=e,we()}),Be.embed.addEvent("play",function(){Be.media.paused=!1,h(Be.media,"play"),h(Be.media,"playing")}),Be.embed.addEvent("pause",function(){Be.media.paused=!0,h(Be.media,"pause")}),Be.embed.addEvent("playProgress",function(e){Be.media.seeking=!1,Be.media.currentTime=e.seconds,h(Be.media,"timeupdate")}),Be.embed.addEvent("loadProgress",function(e){Be.media.buffered=e.percent,h(Be.media,"progress"),1===parseInt(e.percent)&&h(Be.media,"canplaythrough")}),Be.embed.addEvent("finish",function(){Be.media.paused=!0,h(Be.media,"ended")}),x.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,h(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,h(Be.media,"play"),h(Be.media,"playing")}),Be.embed.bind(e.SC.Widget.Events.PAUSE,function(){Be.media.paused=!0,h(Be.media,"pause")}),Be.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS,function(e){Be.media.seeking=!1,Be.media.currentTime=e.currentPosition/1e3,h(Be.media,"timeupdate")}),Be.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS,function(e){Be.media.buffered=e.loadProgress,h(Be.media,"progress"),1===parseInt(e.loadProgress)&&h(Be.media,"canplaythrough")}),Be.embed.bind(e.SC.Widget.Events.FINISH,function(){Be.media.paused=!0,h(Be.media,"ended")}),x.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=x.seekTime),se(Be.media.currentTime-e)}function re(e){"number"!=typeof e&&(e=x.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(x.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(),h(Be.media,"timeupdate"),Be.media.seeking=!0}_("Seeking to "+Be.media.currentTime+" seconds"),B(t)}function oe(){var e=parseInt(x.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,x.classes.playing,!Be.media.paused),m(Be.container,x.classes.stopped,Be.media.paused),_e(Be.media.paused)}function le(){M={x:e.pageXOffset||0,y:e.pageYOffset||0}}function ue(){e.scrollTo(M.x,M.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?(y(t,"keyup",pe),t.body.style.overflow="hidden"):(b(t,"keyup",pe),t.body.style.overflow="")),m(Be.container,x.classes.fullscreen.active,Be.isFullscreen),Be.isFullscreen?Be.container.setAttribute("tabindex","-1"):Be.container.removeAttribute("tabindex"),W(Be.isFullscreen),k(Be.buttons.fullscreen,Be.isFullscreen),h(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),k(Be.buttons.mute,e),Be.media.muted=e,0===Be.media.volume&&Ae(x.volume),s(x.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(x.volume/x.volumeMax));break;case"soundcloud":Be.embed.setVolume(Be.media.muted?0:parseFloat(x.volume/x.volumeMax))}h(Be.media,"volumechange")}}function Ae(t){var n=x.volumeMax,a=x.volumeMin;if("undefined"==typeof t&&(t=x.volume,x.storage.enabled&&E().supported&&(t=e.localStorage.getItem(x.storage.key),e.localStorage.removeItem("plyr-volume"))),(null===t||isNaN(t))&&(t=x.volume),t>n&&(t=n),a>t&&(t=a),Be.media.volume=parseFloat(t/n),Be.volume.display&&(Be.volume.display.value=t),s(x.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)}h(Be.media,"volumechange")}Be.media.muted&&t>0&&de()}function me(){var e=Be.media.muted?0:Be.media.volume*x.volumeMax;Ae(e+x.volumeStep/5)}function fe(){var e=Be.media.muted?0:Be.media.volume*x.volumeMax;Ae(e-x.volumeStep/5)}function ye(){var t=Be.media.muted?0:Be.media.volume*x.volumeMax;Be.supported.full&&(Be.volume.input&&(Be.volume.input.value=t),Be.volume.display&&(Be.volume.display.value=t)),x.storage.enabled&&E().supported&&!isNaN(t)&&e.localStorage.setItem(x.storage.key,t),m(Be.container,x.classes.muted,0===t),Be.supported.full&&Be.buttons.mute&&k(Be.buttons.mute,0===t)}function be(e){Be.supported.full&&Be.buttons.captions&&("boolean"!=typeof e&&(e=-1===Be.container.className.indexOf(x.classes.captions.active)),Be.captionsEnabled=e,k(Be.buttons.captions,Be.captionsEnabled),m(Be.container,x.classes.captions.active,Be.captionsEnabled),h(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,x.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=w(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?w(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&&x.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=w(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(x.tooltips.seek&&Be.progress.container&&0!==t){var n=Be.progress.container.getBoundingClientRect(),a=0,r=x.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(x.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,x.classes.hideControls)),e.clearTimeout(Be.timers.hover),r||Be.media.paused){if(m(Be.container,x.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,x.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 _("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(x.types.embed,a.type)&&(Be.type=a.type)}switch(Be.supported=S(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&&(x.autoplay=n.autoplay),s(x.types.html5,Be.type)&&(x.crossorigin&&Be.media.setAttribute("crossorigin",""),x.autoplay&&Be.media.setAttribute("autoplay",""),"poster"in n&&Be.media.setAttribute("poster",n.poster),x.loop&&Be.media.setAttribute("loop","")),Be.container.className=Be.originalClassName,m(Be.container,x.classes.fullscreen.active,Be.isFullscreen),m(Be.container,x.classes.captions.active,Be.captionsEnabled),Q(),s(x.types.html5,Be.type)&&Y("source",n.sources),z(),s(x.types.html5,Be.type)&&("tracks"in n&&Y("track",n.tracks),Be.media.load(),Le(),we()),x.title=n.title,j(),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 a=f(t,x.classes.tabFocus);setTimeout(function(){n.focus(),a&&(m(t,x.classes.tabFocus,!1),m(n,x.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],x.classes.tabFocus,a[r]===e);else m(a,x.classes.tabFocus,a===e)}}var r="IE"==Be.browser.name?"change":"input";y(e,"keyup",function(e){var t=e.keyCode?e.keyCode:e.which;9==t&&a()}),y(t.body,"click",function(){m(V("."+x.classes.tabFocus),x.classes.tabFocus,!1)});for(var s in Be.buttons){var o=Be.buttons[s];y(o,"blur",function(){m(o,"tab-focus",!1)})}v(Be.buttons.play,"click",x.listeners.play,n),v(Be.buttons.pause,"click",x.listeners.pause,n),v(Be.buttons.restart,"click",x.listeners.restart,se),v(Be.buttons.rewind,"click",x.listeners.rewind,ae),v(Be.buttons.forward,"click",x.listeners.forward,re),v(Be.buttons.seek,r,x.listeners.seek,se),v(Be.volume.input,r,x.listeners.volume,function(){Ae(Be.volume.input.value)}),v(Be.buttons.mute,"click",x.listeners.mute,de),v(Be.buttons.fullscreen,"click",x.listeners.fullscreen,ce),I.supportsFullScreen&&y(t,I.fullScreenEventName,ce),y(Be.buttons.captions,"click",be),y(Be.progress.container,"mouseenter mouseleave mousemove",Ee),x.hideControls&&(y(Be.container,"mouseenter mouseleave mousemove enterfullscreen",_e),y(Be.controls,"mouseenter mouseleave",function(e){Be.controls.active="mouseenter"===e.type}),y(Be.controls,"focus blur",_e,!0)),y(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(y(Be.media,"timeupdate seeking",xe),y(Be.media,"timeupdate",B),y(Be.media,"durationchange loadedmetadata",we),y(Be.media,"ended",function(){"video"===Be.type&&L(),ie(),se(0),we(),"video"===Be.type&&x.showPosterOnEnd&&Be.media.load()}),y(Be.media,"progress playing",ge),y(Be.media,"volumechange",ye),y(Be.media,"play pause",ie),y(Be.media,"waiting canplay seeked",ve),x.clickToPlay&&"audio"!==Be.type){var e=V("."+x.classes.videoWrapper);if(!e)return;e.style.cursor="pointer",y(e,"click",function(){return Be.browser.touch&&!Be.media.paused?void _e(!0):void(Be.media.paused?ee():Be.media.ended?(se(),ee()):te())})}x.disableContextMenu&&y(Be.media,"contextmenu",function(e){ -e.preventDefault()}),y(Be.media,x.events.join(" "),function(e){h(Be.container,e.type,!0)})}function Ne(){if(s(x.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(),_("Cancelled network requests for old media")}}function Pe(){if(!Be.init)return null;if(Be.container.setAttribute("class",A(x.selectors.container)),Be.init=!1,u(V(x.selectors.controls.wrapper)),"youtube"===Be.type)return void Be.embed.destroy();"video"===Be.type&&(u(V(x.selectors.captions)),l(Be.videoContainer)),X(!0);var e=Be.media.cloneNode(!0);Be.media.parentNode.replaceChild(e,Be.media)}function Re(){if(Be.init)return null;if(I=T(),Be.browser=n(),Be.media=Be.container.querySelectorAll("audio, video")[0],Be.media||(Be.media=Be.container.querySelectorAll("div")[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,x.crossorigin=null!==Be.media.getAttribute("crossorigin"),x.autoplay=x.autoplay||null!==Be.media.getAttribute("autoplay"),x.loop=x.loop||null!==Be.media.getAttribute("loop")),Be.supported=S(Be.type),Q(),!Be.supported.basic)return!1;if(_(Be.browser.name+" "+Be.browser.version),z(),s(x.types.html5,Be.type)){if(!Be.supported.full)return void(Be.init=!0);Le(),j(),x.autoplay&&ee()}Be.init=!0}}function Le(){if(!Be.supported.full)return _("No full support for this media type ("+Be.type+")",!0),u(V(x.selectors.controls.wrapper)),u(V(x.selectors.buttons.play)),void X(!0);var e=!H(x.selectors.controls.wrapper).length;e&&q(),D()&&(e&&Ie(),Me(),X(),P(),R(),Ae(),ye(),xe(),ie(),we(),h(Be.container,"ready"))}var Be=this;return Be.container=g,Be.timers={},_(x),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 C(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 S(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 F(e,n){var a=[];if("string"==typeof e?e=t.querySelectorAll(e):e instanceof HTMLElement?e=[e]:e instanceof NodeList||"string"==typeof e||("undefined"==typeof n&&"object"==typeof e&&(n=e),e=t.querySelectorAll(N.selectors.container)),!S().basic||!e.length)return!1;for(var r=0;r<e.length;r++){var s=e[r];if("undefined"==typeof s.plyr){var o=x(N,n,JSON.parse(s.getAttribute("data-plyr")));if(!o.enabled)return null;var i=new _(s,o);s.plyr=Object.keys(i).length?i:!1,h(s,"setup",{plyr:s.plyr})}a.push(s.plyr)}return a}var I,M={x:0,y:0},N={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.19/plyr.svg",clickToPlay:!0,hideControls:!0,showPosterOnEnd:!1,disableContextMenu:!0,tooltips:{controls:!1,seek:!0},selectors:{container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{seek:'[data-plyr="seek"]',play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',forward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',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:F,supported:S,loadSprite:C}}),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,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 diff --git a/docs/dist/docs.js b/docs/dist/docs.js deleted file mode 100644 index 10de65a0..00000000 --- a/docs/dist/docs.js +++ /dev/null @@ -1 +0,0 @@ -"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)),plyr.setup(".js-media-player",{debug:!0,title:"Video demo",iconUrl:"../dist/plyr.svg",tooltips:{controls:!0},captions:{defaultActive:!0}}),plyr.loadSprite("dist/docs.svg"),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,n){if(t in s&&(n||t!=o)&&(o.length||t!=s.video)){var r=document.querySelector(".js-media-player").plyr;switch(t){case s.video:r.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 s.audio:r.source({type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",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 s.youtube:r.source({type:"video",title:"View From A Blue Moon",sources:[{src:"bTqVqk7FSmY",type:"youtube"}]});break;case s.vimeo:r.source({type:"video",title:"View From A Blue Moon",sources:[{src:"143418951",type:"vimeo"}]})}o=t;for(var a=i.length-1;a>=0;a--)e(i[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}for(var i=document.querySelectorAll("[data-source]"),s={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},o=window.location.hash.replace("#",""),n=window.history&&window.history.pushState,r=i.length-1;r>=0;r--)i[r].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),n&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),n){var a=!o.length;a&&(o=s.video),o in s&&history.replaceState({type:o},"",a?"":"#"+o),o!==s.video&&t(o,!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/gulpfile.js b/gulpfile.js index 99fcfedd..d800f5ef 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -37,19 +37,19 @@ paths = { // Output paths output: path.join(root, "dist/") }, - docs: { + demo: { // Source paths src: { - less: path.join(root, "docs/src/less/**/*"), - js: path.join(root, "docs/src/js/**/*"), - sprite: path.join(root, "docs/src/sprite/**/*") + less: path.join(root, "demo/src/less/**/*"), + js: path.join(root, "demo/src/js/**/*"), + sprite: path.join(root, "demo/src/sprite/**/*") }, // Output paths - output: path.join(root, "docs/dist/"), - // Docs - root: path.join(root, "docs/") + output: path.join(root, "demo/dist/"), + // Demo + root: path.join(root, "demo/") }, - upload: [path.join(root, "dist/**"), path.join(root, "docs/dist/**")] + upload: [path.join(root, "dist/**"), path.join(root, "demo/dist/**")] }, // Task arrays @@ -178,10 +178,10 @@ build.less(bundles.plyr.less, "plyr"); build.scss(bundles.plyr.scss, "plyr"); build.sprite("plyr"); -// Docs files -build.less(bundles.docs.less, "docs"); -build.js(bundles.docs.js, "docs"); -build.sprite("docs"); +// Demo files +build.less(bundles.demo.less, "demo"); +build.js(bundles.demo.js, "demo"); +build.sprite("demo"); // Build all JS gulp.task("js", function(){ @@ -200,10 +200,10 @@ gulp.task("watch", function () { gulp.watch(paths.plyr.src.less, tasks.less); gulp.watch(paths.plyr.src.sprite, tasks.sprite); - // Docs - gulp.watch(paths.docs.src.js, tasks.js); - gulp.watch(paths.docs.src.less, tasks.less); - gulp.watch(paths.docs.src.sprite, tasks.sprite); + // Demo + gulp.watch(paths.demo.src.js, tasks.js); + gulp.watch(paths.demo.src.less, tasks.less); + gulp.watch(paths.demo.src.sprite, tasks.sprite); }); // Default gulp task @@ -211,7 +211,7 @@ gulp.task("default", function(){ run(tasks.js, tasks.less, tasks.sprite, "watch"); }); -// Publish a version to CDN and docs +// Publish a version to CDN and demo // -------------------------------------------- // Some options @@ -225,7 +225,7 @@ options = { "Vary": "Accept-Encoding" } }, - docs: { + demo: { headers: { "Cache-Control": "no-cache, no-store, must-revalidate, max-age=0", "Vary": "Accept-Encoding" @@ -268,9 +268,9 @@ gulp.task("cdn", function () { .pipe(s3(aws.cdn, options.cdn)); }); -// Publish to Docs bucket -gulp.task("docs", function () { - console.log("Uploading " + version + " docs to " + aws.docs.bucket + "..."); +// Publish to demo bucket +gulp.task("demo", function () { + console.log("Uploading " + version + " demo to " + aws.demo.bucket + "..."); // Replace versioned files in readme.md gulp.src([root + "/readme.md"]) @@ -283,19 +283,19 @@ gulp.task("docs", function () { .pipe(replace(cdnpath, aws.cdn.bucket + "/" + version)) .pipe(gulp.dest(path.join(root, "src/js/"))); - // Replace local file paths with remote paths in docs HTML + // Replace local file paths with remote paths in demo HTML // e.g. "../dist/plyr.js" to "https://cdn.plyr.io/x.x.x/plyr.js" - gulp.src([paths.docs.root + "*.html"]) + gulp.src([paths.demo.root + "*.html"]) .pipe(replace(localPath, versionPath)) - .pipe(s3(aws.docs, options.docs)); + .pipe(s3(aws.demo, options.demo)); - // Upload error.html to cdn (as well as docs site) - return gulp.src([paths.docs.root + "error.html"]) + // Upload error.html to cdn (as well as demo site) + return gulp.src([paths.demo.root + "error.html"]) .pipe(replace(localPath, versionPath)) - .pipe(s3(aws.cdn, options.docs)); + .pipe(s3(aws.cdn, options.demo)); }); -// Open the docs site to check it's sweet +// Open the demo site to check it's sweet gulp.task("symlinks", function () { console.log("Updating symlinks..."); @@ -318,20 +318,20 @@ gulp.task("symlinks", function () { })); }); -// Open the docs site to check it's sweet +// Open the demo site to check it's sweet gulp.task("open", function () { - console.log("Opening " + aws.docs.bucket + "..."); + console.log("Opening " + aws.demo.bucket + "..."); // A file must be specified or gulp will skip the task // Doesn't matter which file since we set the URL above // Weird, I know... - return gulp.src([paths.docs.root + "index.html"]) + return gulp.src([paths.demo.root + "index.html"]) .pipe(open("", { - url: "http://" + aws.docs.bucket + url: "http://" + aws.demo.bucket })); }); // Do everything gulp.task("publish", function () { - run(tasks.js, tasks.less, tasks.sprite, "cdn", "docs", "symlinks"); + run(tasks.js, tasks.less, tasks.sprite, "cdn", "demo", "symlinks"); }); diff --git a/package.json b/package.json index ee495138..04a024ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plyr", - "version": "1.6.20", + "version": "1.7.0", "description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player", "homepage": "http://plyr.io", "main": "src/js/plyr.js", @@ -38,7 +38,7 @@ "url": "https://github.com/selz/plyr/issues" }, "directories": { - "doc": "docs" + "doc": "readme.md" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -38,22 +38,15 @@ Check out the [changelog](changelog.md) to see what's new with Plyr. If you have any cool ideas or features, please let me know by [creating an issue](https://github.com/Selz/plyr/issues/new) or, of course, forking and sending a pull request. -## Implementation -Check `docs/index.html` and `docs/src/js/docs.js` for an example setup. - -**Heads up:** the example `index.html` file needs to be served from a webserver (such as Apache, Nginx, IIS or similar) unless you change the file sources to include http or https. e.g. change `//cdn.plyr.io/1.6.20/plyr.js` to `https://cdn.plyr.io/1.6.20/plyr.js` +## Using package managers ### npm - -Using `npm`, you can grab Plyr: ``` npm install plyr ``` [https://www.npmjs.com/package/plyr](https://www.npmjs.com/package/plyr) ### Bower - -If bower is your thing, you can grab Plyr using: ``` bower install plyr ``` @@ -68,124 +61,126 @@ ember addon:install ember-cli-plyr ``` More info is on [npm](https://www.npmjs.com/package/ember-cli-plyr) and [GitHub](https://github.com/louisrudner/ember-cli-plyr) -### CDN -If you want to use our CDN, you can use the following: + +## Quick setup +Here's a quick run through on getting up and running. + +### HTML +Plyr extends upon the standard HTML5 markup so that's all you need for those types. + +#### HTML5 Video ```html -<link rel="stylesheet" href="https://cdn.plyr.io/1.6.20/plyr.css"> -<script src="https://cdn.plyr.io/1.6.20/plyr.js"></script> +<video poster="/path/to/poster.jpg" controls> + <source src="/path/to/video.mp4" type="video/mp4"> + <source src="/path/to/video.webm" type="video/webm"> + <!-- Captions are optional --> + <track kind="captions" label="English captions" src="/path/to/captions.vtt" srclang="en" default> +</video> ``` -The SVG sprite/defs file can be found here: `https://cdn.plyr.io/1.6.20/plyr.svg`. - -### CSS & Styling -If you want to use the default css, add the `plyr.css` file from `/dist` into your head, or even better use `plyr.less` or `plyr.scss` file included in `/src` in your build to save a request. +#### HTML5 Audio ```html -<link rel="stylesheet" href="dist/plyr.css"> +<audio controls> + <source src="/path/to/audio.mp3" type="audio/mp3"> + <source src="/path/to/audio.ogg" type="audio/ogg"> +</audio> ``` -The default setup uses the BEM methodology with `plyr` as the block, e.g. `.plyr__controls`. You can change the class hooks in the options. Check out the source for more on this. +For YouTube and Vimeo, Plyr uses the standard YouTube API markup (an empty `<div>`): -### SVG -The icons used in the Plyr controls are loaded in an SVG sprite. The sprite is automatically loaded from our CDN by default. If you already have an icon build system in place, you can include the source plyr icons (see `/src/sprite` for source icons). +#### YouTube embed -#### Using the `iconUrl` option -You can however specify your own `iconUrl` option and Plyr will determine if the url is absolute and requires loading by AJAX/CORS due to current browser limitations or if it's a relative path, just use the path directly. +```html +<div data-type="youtube" data-video-id="bTqVqk7FSmY"></div> +``` -If you're using the `<base>` tag on your site, you may need to use something like this: -[svgfixer.js](https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2) +#### Vimeo embed -More info on SVG sprites here: -[http://css-tricks.com/svg-sprites-use-better-icon-fonts/](http://css-tricks.com/svg-sprites-use-better-icon-fonts/) -and the AJAX technique here: -[http://css-tricks.com/ajaxing-svg-sprite/](http://css-tricks.com/ajaxing-svg-sprite/) +```html +<div data-type="vimeo" data-video-id="143418951"></div> +``` + +### JavaScript +Include the `plyr.js` script before the closing `</body>` tag and then call `plyr.setup()`. More info on `setup()` can be found under [#initialising](initialising). -### HTML -The only extra markup that's needed to use plyr is a `<div>` wrapper. Replace the source, poster and captions with urls for your media. ```html -<div class="plyr"> - <video poster="/path/to/poster.jpg" controls> - <!-- Video files --> - <source src="/path/to/video.mp4" type="video/mp4"> - <source src="/path/to/video.webm" type="video/webm"> - - <!-- Text track file --> - <track kind="captions" label="English captions" src="/path/to/captions.vtt" srclang="en" default> - - <!-- Fallback for browsers that don't support the <video> element --> - <a href="/path/to/movie.mp4">Download</a> - </video> -</div> +<script src="path/to/plyr.js"></script> +<script>plyr.setup();</script> ``` -And the same for `<audio>` + +If you want to use our CDN for the JavaScript, you can use the following: ```html -<div class="plyr"> - <audio controls> - <!-- Audio files --> - <source src="/path/to/audio.mp3" type="audio/mp3"> - <source src="/path/to/audio.ogg" type="audio/ogg"> - - <!-- Fallback for browsers that don't support the <audio> element --> - <a href="/path/to/audio.mp3">Download</a> - </audio> -</div> +<script src="https://cdn.plyr.io/1.7.0/plyr.js"></script> ``` -For YouTube and Vimeo, Plyr uses the standard YouTube API markup (an empty `<div>`): +### CSS +Include the `plyr.css` stylsheet into your `<head>` ```html -<div class="plyr"> - <div data-video-id="bTqVqk7FSmY" data-type="youtube"></div> -</div> +<link rel="stylesheet" href="path/to/plyr.css"> ``` + +If you want to use our CDN for the default CSS, you can use the following: + ```html -<div class="plyr"> - <div data-video-id="143418951" data-type="vimeo"></div> -</div> +<link rel="stylesheet" href="https://cdn.plyr.io/1.7.0/plyr.css"> ``` -#### Cross Origin (CORS) -You'll notice the `crossorigin` attribute on the example `<video>` and `<audio>` elements. This is because the media is loaded from another domain. If your media is hosted on another domain, you may need to add this attribute. +### 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`. -More info on CORS here: -[https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) +## Advanced -### Captions -WebVTT captions are supported. To add a caption track, check the HTML example above and look for the `<track>` element. +### LESS & SASS/SCSS +You can use `plyr.less` or `plyr.scss` file included in `/src` as part of your build and change variables to suit your design. The HTML markup uses the BEM methodology with `plyr` as the block, e.g. `.plyr__controls`. You can change the class hooks in the options to match any custom CSS you write. Check out the JavaScript source for more on this. -Be sure to [validate your caption files](https://quuz.org/webvtt/) +### SVG +The icons used in the Plyr controls are loaded in an SVG sprite. The sprite is automatically loaded from our CDN by default. If you already have an icon build system in place, you can include the source plyr icons (see `/src/sprite` for source icons). -### JavaScript +#### Using the `iconUrl` option +You can however specify your own `iconUrl` option and Plyr will determine if the url is absolute and requires loading by AJAX/CORS due to current browser limitations or if it's a relative path, just use the path directly. + +If you're using the `<base>` tag on your site, you may need to use something like this: +[svgfixer.js](https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2) -#### Quick setup +More info on SVG sprites here: +[http://css-tricks.com/svg-sprites-use-better-icon-fonts/](http://css-tricks.com/svg-sprites-use-better-icon-fonts/) +and the AJAX technique here: +[http://css-tricks.com/ajaxing-svg-sprite/](http://css-tricks.com/ajaxing-svg-sprite/) -Here's an example of a default setup: +### Cross Origin (CORS) +You'll notice the `crossorigin` attribute on the example `<video>` elements. This is because the TextTrack captions are loaded from another domain. If your TextTrack captions are also hosted on another domain, you will need to add this attribute and make sure your host has the correct headers setup. For more info on CORS checkout the MDN docs: +[https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) -```html -<script src="https://cdn.plyr.io/1.6.20/plyr.js"></script> -<script>plyr.setup();</script> -``` +### Captions +WebVTT captions are supported. To add a caption track, check the HTML example above and look for the `<track>` element. Be sure to [validate your caption files](https://quuz.org/webvtt/). + +### JavaScript + +#### Initialising -This will look for all elements with the specified container classname (default is `plyr`) and setup plyr on each element 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). +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: Passing a [NodeList](https://developer.mozilla.org/en-US/docs/Web/API/NodeList): ```javascript -plyr.setup(document.querySelectorAll('.js-plyr'), options); +plyr.setup(document.querySelectorAll('.js-player'), options); ``` Passing a [HTMLElement](https://developer.mozilla.org/en/docs/Web/API/HTMLElement): ```javascript -plyr.setup(document.querySelector('.js-plyr'), options); +plyr.setup(document.querySelector('.js-player'), options); ``` Passing a [string selector](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll): ```javascript -plyr.setup('.js-plyr', options); +plyr.setup('.js-player', options); ``` +This can be the target `<video>`, `<audio>` or `[data-type]` elements or a container element. Passing just the options object: ```javascript @@ -200,7 +195,7 @@ Some touch browsers (particularly Mobile Safari on iOS) seem to have issues with Options must be passed as an object to the `setup()` method as above or as JSON in `data-plyr` attribute on each of your target elements: ```html -<div class="plyr" data-plyr='{ title: "testing" }'> +<video data-plyr='{ title: "testing" }'></video> ``` Note the single quotes encapsulating the JSON and double quotes on the object keys. @@ -404,16 +399,16 @@ Note the single quotes encapsulating the JSON and double quotes on the object ke #### Fetching 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-plyr`) like so: +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: ```javascript -var player = document.querySelector('.js-plyr').plyr; +var player = document.querySelector('.js-player').plyr; ``` -Or you can use the returned object from your call to the setup method: +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-plyr')[0]; +var player = plyr.setup('.js-player')[0]; ``` This will return an array of plyr instances setup, so you need to specify the index of the instance you want. This is less useful if you are setting up 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). diff --git a/src/js/plyr.js b/src/js/plyr.js index 2e05bb2e..1e7df62e 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1,6 +1,6 @@ // ========================================================================== // Plyr -// plyr.js v1.6.20 +// plyr.js v1.7.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.6.20/plyr.svg', + iconUrl: 'https://cdn.plyr.io/1.7.0/plyr.svg', clickToPlay: true, hideControls: true, showPosterOnEnd: false, @@ -54,6 +54,8 @@ seek: true }, selectors: { + html5: 'video, audio', + embed: '[data-type]', container: '.plyr', controls: { container: null, @@ -323,6 +325,8 @@ else { parent.appendChild(child); } + + return child; } } @@ -404,6 +408,17 @@ return false; } + // Element matches selector + function _matches(element, selector) { + var p = Element.prototype; + + var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) { + return [].indexOf.call(document.querySelectorAll(s), this) !== -1; + }; + + return f.call(element, selector); + } + // Bind event function _on(element, events, callback, useCapture) { if (element) { @@ -3045,7 +3060,7 @@ // Get the div placeholder for YouTube and Vimeo if (!plyr.media) { - plyr.media = plyr.container.querySelectorAll('div')[0]; + plyr.media = plyr.container.querySelectorAll('[data-type]')[0]; } // Bail if nothing to setup @@ -3285,7 +3300,8 @@ // Setup function function setup(elements, options) { // Get the players - var instances = []; + var instances = [], + selector = [defaults.selectors.html5, defaults.selectors.embed].join(','); // Select the elements // Assume elements is a NodeList by default @@ -3304,7 +3320,7 @@ } // Use default selector - elements = document.querySelectorAll(defaults.selectors.container); + elements = document.querySelectorAll(selector); } // Bail if disabled or no basic support @@ -3318,10 +3334,19 @@ // Get the current element var element = elements[i]; + // Custom settings passed as data attribute + var settings = element.getAttribute("data-plyr"); + + // Wrap each media element if needed + 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') { // Create instance-specific config - var config = _extend(defaults, options, JSON.parse(element.getAttribute("data-plyr"))); + var config = _extend({}, defaults, options, JSON.parse(settings)); // Bail if not enabled if (!config.enabled) { diff --git a/src/scss/plyr.scss b/src/scss/plyr.scss index 011a8281..9fbb3803 100644 --- a/src/scss/plyr.scss +++ b/src/scss/plyr.scss @@ -487,7 +487,6 @@ // First tooltip .plyr__controls button:first-child .plyr__tooltip { - $tooltip-arrow-offset: ; left: 0; transform: translate(0, 10px) scale(.8); transform-origin: 0 100%; |