From a21ffe983c5db38a828534a83861c74e189df33b Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 2 Oct 2017 14:52:31 +1100 Subject: [PATCH] Demo fixes --- changelog.md | 3 + demo/dist/demo.css | 2 +- demo/dist/demo.js | 2 +- demo/error.html | 37 ++++--- demo/index.html | 4 + demo/src/js/main.js | 176 ++++++++++++++++++-------------- demo/src/less/lib/fontface.less | 2 + dist/plyr.js | 2 +- package.json | 2 +- readme.md | 6 +- src/js/plyr.js | 4 +- 11 files changed, 137 insertions(+), 103 deletions(-) diff --git a/changelog.md b/changelog.md index 9d42eb8d..8601212a 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## v2.0.15 +- Demo fix + ## v2.0.14 - CDN URL updates. Sorry, still working on V3 as hard as I can... diff --git a/demo/dist/demo.css b/demo/dist/demo.css index 392b0c17..d9269d8c 100644 --- a/demo/dist/demo.css +++ b/demo/dist/demo.css @@ -1 +1 @@ -/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/static/fonts/avenir-medium.woff2) format("woff2"),url(//cdn.plyr.io/static/fonts/avenir-medium.woff) format("woff");font-style:normal;font-weight:500}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/static/fonts/avenir-bold.woff2) format("woff2"),url(//cdn.plyr.io/static/fonts/avenir-bold.woff) format("woff");font-style:normal;font-weight:700}html{font-size:100%}body{font-family:Avenir,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5;text-align:center;color:#55646b;font-weight:500;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}h1,h2{letter-spacing:-.025em;color:#3498db;margin:0 0 10px;line-height:1.2;font-weight:700}h1{font-size:64px;font-size:4rem}p,small{margin:0 0 20px}small{display:block;padding:0 10px;font-size:14px;font-size:.875rem}li,ul{list-style:none;margin:0;padding:0}a{text-decoration:none;color:#3498db;border-bottom:1px dotted currentColor;-webkit-transition:background .3s ease,color .3s ease,border .3s ease;transition:background .3s ease,color .3s ease,border .3s ease}a:focus,a:hover{color:#343f4a;border-bottom-color:transparent}a:focus{outline:thin dotted #343f4a;outline-offset:1px}a.logo{border:0}.color--vimeo{color:#19b7ed}.color--youtube{color:#cc181e}*,::after,::before{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none}html{height:100%;background:#f2f5f7 fixed}body{margin:0;padding:10px}header{padding:20px;margin-bottom:20px}header p{font-size:18px;font-size:1.125rem}@media (min-width:480px){header{padding-top:60px;padding-bottom:60px}}section{max-width:1200px;margin:0 auto 20px}@media (min-width:480px){section{margin-bottom:40px}}.icon{fill:currentColor;width:18px;height:18px;vertical-align:-3px}a svg,button svg,label svg{pointer-events:none}.btn .icon,a .icon{margin-right:10px}.btn:not(.btn-large) .icon{width:16px;height:16px}nav ul{list-style:none;margin:0;padding:0;font-size:0}nav li{display:inline-block;margin-top:10px;font-size:16px;font-size:1rem;white-space:nowrap}nav li+li{margin-left:20px}.btn__bar{position:relative;margin:0 auto 20px;max-width:1200px;white-space:nowrap}.btn__bar::before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:#dbe3e8}.btn__bar ul{position:relative;z-index:1;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn__bar li{margin:0}.btn__bar li:first-child .btn{border-radius:4px 0 0 4px}.btn__bar li:last-child .btn{border-radius:0 4px 4px 0}.btn__bar li+li .btn{margin-left:-1px}.btn__bar li.active .btn{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px rgba(0,0,0,.2);position:relative;z-index:1}.btn__bar li.active .btn .icon{color:inherit}.btn__bar li.active+li .btn:hover{z-index:0}.btn__bar .btn{position:relative;display:block;border-radius:0}.btn__bar .btn:focus,.btn__bar .btn:hover{z-index:1}@media (min-width:560px){.btn__bar{margin-bottom:40px}}.btn,.btn__count{display:inline-block;vertical-align:middle;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-weight:700}.btn{padding:10px 12px;background:-webkit-gradient(linear,left top,left bottom,from(#f8fafb),to(#e9eef1));background:linear-gradient(#f8fafb,#e9eef1);border:1px solid #cbd0d3;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05);text-shadow:0 1px 1px #fff;color:#55646b;-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease;font-size:14px;font-size:.875rem}.btn:focus,.btn:hover{border-color:#b5bcc0;color:#55646b;outline:0}.btn--large{padding:10px 20px;font-size:16px;font-size:1rem}.btn--primary,.btn__bar li.active .btn{background-image:-webkit-gradient(linear,left top,left bottom,from(#3498db),to(#258cd1));background-image:linear-gradient(#3498db,#258cd1);background-color:#3498db;border-color:#217dbb;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15);box-shadow:0 1px 1px rgba(0,0,0,.15);text-shadow:0 1px 1px rgba(0,0,0,.1);color:#fff}.btn--primary:focus,.btn--primary:hover{color:#fff;border-color:#196090}.btn--youtube .icon{color:#cc181e}.btn--vimeo .icon{color:#19b7ed}.btn--twitter .icon{color:#4baaf4}.btn__count{position:relative;margin-left:10px;padding:10px 15px;background:#fff;border:1px solid #cbd0d3}.btn__count::before{content:"";position:absolute;display:block;width:8px;height:8px;left:1px;top:50%;margin-top:-4px;background:inherit;border:inherit;border-width:1px 0 0 1px;-webkit-transform:rotate(-45deg) translate(-50%,-50%);transform:rotate(-45deg) translate(-50%,-50%)}.error body,html.error{height:100%}.error body{width:100%;display:table;table-layout:fixed}.error main{display:table-cell;width:100%;vertical-align:middle}video{max-width:100%;vertical-align:middle}.plyr{margin:0 auto;border-radius:6px}.plyr--audio{max-width:520px}.plyr__video-wrapper::after{content:"";pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;border:1px solid rgba(0,0,0,.15);border-radius:inherit}.plyr__cite{display:none;margin-top:20px}.plyr__cite .icon{margin-right:5px}.plyr--audio~ul .plyr__cite--audio,.plyr--video:not(.plyr--youtube):not(.plyr--vimeo)~ul .plyr__cite--video,.plyr--vimeo~ul .plyr__cite--vimeo,.plyr--youtube~ul .plyr__cite--youtube{display:block} \ No newline at end of file +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/static/fonts/avenir-medium.woff2) format("woff2"),url(//cdn.plyr.io/static/fonts/avenir-medium.woff) format("woff");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:Avenir;src:url(//cdn.plyr.io/static/fonts/avenir-bold.woff2) format("woff2"),url(//cdn.plyr.io/static/fonts/avenir-bold.woff) format("woff");font-style:normal;font-weight:700;font-display:swap}html{font-size:100%}body{font-family:Avenir,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5;text-align:center;color:#55646b;font-weight:500;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}h1,h2{letter-spacing:-.025em;color:#3498db;margin:0 0 10px;line-height:1.2;font-weight:700}h1{font-size:64px;font-size:4rem}p,small{margin:0 0 20px}small{display:block;padding:0 10px;font-size:14px;font-size:.875rem}li,ul{list-style:none;margin:0;padding:0}a{text-decoration:none;color:#3498db;border-bottom:1px dotted currentColor;-webkit-transition:background .3s ease,color .3s ease,border .3s ease;transition:background .3s ease,color .3s ease,border .3s ease}a:focus,a:hover{color:#343f4a;border-bottom-color:transparent}a:focus{outline:thin dotted #343f4a;outline-offset:1px}a.logo{border:0}.color--vimeo{color:#19b7ed}.color--youtube{color:#cc181e}*,::after,::before{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none}html{height:100%;background:#f2f5f7 fixed}body{margin:0;padding:10px}header{padding:20px;margin-bottom:20px}header p{font-size:18px;font-size:1.125rem}@media (min-width:480px){header{padding-top:60px;padding-bottom:60px}}section{max-width:1200px;margin:0 auto 20px}@media (min-width:480px){section{margin-bottom:40px}}.icon{fill:currentColor;width:18px;height:18px;vertical-align:-3px}a svg,button svg,label svg{pointer-events:none}.btn .icon,a .icon{margin-right:10px}.btn:not(.btn-large) .icon{width:16px;height:16px}nav ul{list-style:none;margin:0;padding:0;font-size:0}nav li{display:inline-block;margin-top:10px;font-size:16px;font-size:1rem;white-space:nowrap}nav li+li{margin-left:20px}.btn__bar{position:relative;margin:0 auto 20px;max-width:1200px;white-space:nowrap}.btn__bar::before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:#dbe3e8}.btn__bar ul{position:relative;z-index:1;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn__bar li{margin:0}.btn__bar li:first-child .btn{border-radius:4px 0 0 4px}.btn__bar li:last-child .btn{border-radius:0 4px 4px 0}.btn__bar li+li .btn{margin-left:-1px}.btn__bar li.active .btn{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px rgba(0,0,0,.2);position:relative;z-index:1}.btn__bar li.active .btn .icon{color:inherit}.btn__bar li.active+li .btn:hover{z-index:0}.btn__bar .btn{position:relative;display:block;border-radius:0}.btn__bar .btn:focus,.btn__bar .btn:hover{z-index:1}@media (min-width:560px){.btn__bar{margin-bottom:40px}}.btn,.btn__count{display:inline-block;vertical-align:middle;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-weight:700}.btn{padding:10px 12px;background:-webkit-gradient(linear,left top,left bottom,from(#f8fafb),to(#e9eef1));background:linear-gradient(#f8fafb,#e9eef1);border:1px solid #cbd0d3;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05);text-shadow:0 1px 1px #fff;color:#55646b;-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease;font-size:14px;font-size:.875rem}.btn:focus,.btn:hover{border-color:#b5bcc0;color:#55646b;outline:0}.btn--large{padding:10px 20px;font-size:16px;font-size:1rem}.btn--primary,.btn__bar li.active .btn{background-image:-webkit-gradient(linear,left top,left bottom,from(#3498db),to(#258cd1));background-image:linear-gradient(#3498db,#258cd1);background-color:#3498db;border-color:#217dbb;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15);box-shadow:0 1px 1px rgba(0,0,0,.15);text-shadow:0 1px 1px rgba(0,0,0,.1);color:#fff}.btn--primary:focus,.btn--primary:hover{color:#fff;border-color:#196090}.btn--youtube .icon{color:#cc181e}.btn--vimeo .icon{color:#19b7ed}.btn--twitter .icon{color:#4baaf4}.btn__count{position:relative;margin-left:10px;padding:10px 15px;background:#fff;border:1px solid #cbd0d3}.btn__count::before{content:"";position:absolute;display:block;width:8px;height:8px;left:1px;top:50%;margin-top:-4px;background:inherit;border:inherit;border-width:1px 0 0 1px;-webkit-transform:rotate(-45deg) translate(-50%,-50%);transform:rotate(-45deg) translate(-50%,-50%)}.error body,html.error{height:100%}.error body{width:100%;display:table;table-layout:fixed}.error main{display:table-cell;width:100%;vertical-align:middle}video{max-width:100%;vertical-align:middle}.plyr{margin:0 auto;border-radius:6px}.plyr--audio{max-width:520px}.plyr__video-wrapper::after{content:"";pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;border:1px solid rgba(0,0,0,.15);border-radius:inherit}.plyr__cite{display:none;margin-top:20px}.plyr__cite .icon{margin-right:5px}.plyr--audio~ul .plyr__cite--audio,.plyr--video:not(.plyr--youtube):not(.plyr--vimeo)~ul .plyr__cite--video,.plyr--vimeo~ul .plyr__cite--vimeo,.plyr--youtube~ul .plyr__cite--youtube{display:block} \ No newline at end of file diff --git a/demo/dist/demo.js b/demo/dist/demo.js index 5c035bd1..7a67dce6 100644 --- a/demo/dist/demo.js +++ b/demo/dist/demo.js @@ -1 +1 @@ -"document"in self&&("classList"in document.createElement("_")?function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,o=arguments.length;for(i=0;i=0;a--)e(s[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 o=i[0],s=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=s.length-1;c>=0;c--)s[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,o,s,n,r){e.GoogleAnalyticsObject=s,e[s]=e[s]||function(){(e[s].q=e[s].q||[]).push(arguments)},e[s].l=1*new Date,n=t.createElement(i),r=t.getElementsByTagName(i)[0],n.async=1,n.src="//www.google-analytics.com/analytics.js",r.parentNode.insertBefore(n,r)}(window,document,"script",0,"ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file +"document"in self&&("classList"in document.createElement("_")?function(){"use strict";var t=document.createElement("_");if(t.classList.add("c1","c2"),!t.classList.contains("c2")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var i,o=arguments.length;for(i=0;i=0;a--)t(s[a].parentElement,"active",!1);t(document.querySelector('[data-source="'+e+'"]').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 o=i[0],s=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=s.length-1;c>=0;c--)s[c].addEventListener("click",function(){var t=this.getAttribute("data-source");e(t),a&&history.pushState({type:t},"","#"+t)});if(window.addEventListener("popstate",function(t){t.state&&"type"in t.state&&e(t.state.type)}),a){var l=!r.length;l&&(r=n.video),r in n&&history.replaceState({type:r},"",l?"":"#"+r),r!==n.video&&e(r,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(t,e,i,o,s,n,r){t.GoogleAnalyticsObject=s,t[s]=t[s]||function(){(t[s].q=t[s].q||[]).push(arguments)},t[s].l=1*new Date,n=e.createElement(i),r=e.getElementsByTagName(i)[0],n.async=1,n.src="//www.google-analytics.com/analytics.js",r.parentNode.insertBefore(n,r)}(window,document,"script",0,"ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview")); \ No newline at end of file diff --git a/demo/error.html b/demo/error.html index c9ba8c36..6dc22cb1 100644 --- a/demo/error.html +++ b/demo/error.html @@ -1,18 +1,25 @@ - - - Doh. Looks like something went wrong. - - - - - -
-

Doh.

-

Looks like something went wrong.

- Back to plyr.io -
- - + + + Doh. Looks like something went wrong. + + + + + + + + + + + +
+

Doh.

+

Looks like something went wrong.

+ Back to plyr.io +
+ + + \ No newline at end of file diff --git a/demo/index.html b/demo/index.html index 98f626ad..b6941537 100644 --- a/demo/index.html +++ b/demo/index.html @@ -13,6 +13,10 @@ + + + + diff --git a/demo/src/js/main.js b/demo/src/js/main.js index e2926df5..7d732dcd 100644 --- a/demo/src/js/main.js +++ b/demo/src/js/main.js @@ -12,68 +12,68 @@ // Setup the player var instances = plyr.setup({ - debug: true, - title: 'Video demo', - iconUrl: '../dist/plyr.svg', + debug: true, + title: "Video demo", + iconUrl: "../dist/plyr.svg", tooltips: { - controls: true + controls: true }, captions: { - defaultActive: true + defaultActive: true } }); - plyr.loadSprite('dist/demo.svg'); + plyr.loadSprite("dist/demo.svg"); // Plyr returns an array regardless var player = instances[0]; // Setup type toggle - var buttons = document.querySelectorAll('[data-source]'), + var buttons = document.querySelectorAll("[data-source]"), types = { - video: 'video', - audio: 'audio', - youtube: 'youtube', - vimeo: 'vimeo' + video: "video", + audio: "audio", + youtube: "youtube", + vimeo: "vimeo" }, - currentType = window.location.hash.replace('#', ''), - historySupport = (window.history && window.history.pushState); + currentType = window.location.hash.replace("#", ""), + historySupport = window.history && window.history.pushState; // Bind to each button for (var i = buttons.length - 1; i >= 0; i--) { - buttons[i].addEventListener('click', function() { - var type = this.getAttribute('data-source'); + buttons[i].addEventListener("click", function() { + var type = this.getAttribute("data-source"); newSource(type); if (historySupport) { - history.pushState({ 'type': type }, '', '#' + type); + history.pushState({ type: type }, "", "#" + type); } }); } // List for backwards/forwards - window.addEventListener('popstate', function(event) { - if(event.state && 'type' in event.state) { + window.addEventListener("popstate", function(event) { + if (event.state && "type" in event.state) { newSource(event.state.type); } }); // On load - if(historySupport) { + if (historySupport) { var video = !currentType.length; // If there's no current type set, assume video - if(video) { + if (video) { currentType = types.video; } // Replace current history state - if(currentType in types) { - history.replaceState({ 'type': currentType }, '', (video ? '' : '#' + currentType)); + if (currentType in types) { + history.replaceState({ type: currentType }, "", video ? "" : "#" + currentType); } // If it's not video, load the source - if(currentType !== types.video) { + if (currentType !== types.video) { newSource(currentType, true); } } @@ -82,11 +82,10 @@ function toggleClass(element, className, state) { if (element) { if (element.classList) { - element.classList[state ? 'add' : 'remove'](className); - } - else { - var name = (' ' + element.className + ' ').replace(/\s+/g, ' ').replace(' ' + className + ' ', ''); - element.className = name + (state ? ' ' + className : ''); + element.classList[state ? "add" : "remove"](className); + } else { + var name = (" " + element.className + " ").replace(/\s+/g, " ").replace(" " + className + " ", ""); + element.className = name + (state ? " " + className : ""); } } } @@ -94,68 +93,78 @@ // Set a new source function newSource(type, init) { // Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video - if(!(type in types) || (!init && type === currentType) || (!currentType.length && type === types.video)) { + if (!(type in types) || (!init && type === currentType) || (!currentType.length && type === types.video)) { return; } - switch(type) { + switch (type) { case types.video: player.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: true - }] + type: "video", + title: "View From A Blue Moon", + sources: [ + { + src: "https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4", + type: "video/mp4" + }, + { + src: "https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.webm", + type: "video/webm" + } + ], + poster: "https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg", + tracks: [ + { + kind: "captions", + label: "English", + srclang: "en", + src: "https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt", + default: true + } + ] }); break; case types.audio: player.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' - }] + type: "audio", + title: "Kishi Bashi – “It All Began With A Burst”", + sources: [ + { + src: "https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3", + type: "audio/mp3" + }, + { + src: "https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg", + type: "audio/ogg" + } + ] }); break; case types.youtube: player.source({ - type: 'video', - title: 'View From A Blue Moon', - sources: [{ - src: 'bTqVqk7FSmY', - type: 'youtube' - }] + type: "video", + title: "View From A Blue Moon", + sources: [ + { + src: "bTqVqk7FSmY", + type: "youtube" + } + ] }); break; case types.vimeo: player.source({ - type: 'video', - title: 'View From A Blue Moon', - sources: [{ - src: '147865858', - type: 'vimeo' - }] + type: "video", + title: "View From A Blue Moon", + sources: [ + { + src: "147865858", + type: "vimeo" + } + ] }); break; } @@ -165,21 +174,30 @@ // Remove active classes for (var x = buttons.length - 1; x >= 0; x--) { - toggleClass(buttons[x].parentElement, 'active', false); + toggleClass(buttons[x].parentElement, "active", false); } // Set active on parent - toggleClass(document.querySelector('[data-source="'+ type +'"]').parentElement, 'active', true); + toggleClass(document.querySelector('[data-source="' + type + '"]').parentElement, "active", true); } })(); // Google analytics // For demo site (http://[www.]plyr.io) only -if(document.domain.indexOf('plyr.io') > -1) { - (function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', 'UA-40881672-11', 'auto'); - ga('send', 'pageview'); +if (document.domain.indexOf("plyr.io") > -1) { + (function(i, s, o, g, r, a, m) { + i.GoogleAnalyticsObject = r; + (i[r] = + i[r] || + function() { + (i[r].q = i[r].q || []).push(arguments); + }), + (i[r].l = 1 * new Date()); + (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]); + a.async = 1; + a.src = g; + m.parentNode.insertBefore(a, m); + })(window, document, "script", "//www.google-analytics.com/analytics.js", "ga"); + ga("create", "UA-40881672-11", "auto"); + ga("send", "pageview"); } diff --git a/demo/src/less/lib/fontface.less b/demo/src/less/lib/fontface.less index 70ad4486..cdecc256 100644 --- a/demo/src/less/lib/fontface.less +++ b/demo/src/less/lib/fontface.less @@ -8,6 +8,7 @@ url("//cdn.plyr.io/static/fonts/avenir-medium.woff") format("woff"); font-style: normal; font-weight: @font-weight-base; + font-display: swap; } @font-face { font-family: "Avenir"; @@ -15,4 +16,5 @@ url("//cdn.plyr.io/static/fonts/avenir-bold.woff") format("woff"); font-style: normal; font-weight: @font-weight-bold; + font-display: swap; } diff --git a/dist/plyr.js b/dist/plyr.js index 1dc794bb..ec0fa4bb 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1 +1 @@ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t(e,document):"function"==typeof define&&define.amd?define([],function(){return t(e,document)}):e.plyr=t(e,document)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(){var e,n,r,a=navigator.userAgent,s=navigator.appName,o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10),l=!1,u=!1,c=!1,d=!1;return-1!==navigator.appVersion.indexOf("Windows NT")&&-1!==navigator.appVersion.indexOf("rv:11")?(l=!0,s="IE",o="11"):-1!==(n=a.indexOf("MSIE"))?(l=!0,s="IE",o=a.substring(n+5)):-1!==(n=a.indexOf("Chrome"))?(c=!0,s="Chrome",o=a.substring(n+7)):-1!==(n=a.indexOf("Safari"))?(d=!0,s="Safari",o=a.substring(n+7),-1!==(n=a.indexOf("Version"))&&(o=a.substring(n+8))):-1!==(n=a.indexOf("Firefox"))?(u=!0,s="Firefox",o=a.substring(n+8)):(e=a.lastIndexOf(" ")+1)<(n=a.lastIndexOf("/"))&&(s=a.substring(e,n),o=a.substring(n+1),s.toLowerCase()===s.toUpperCase()&&(s=navigator.appName)),-1!==(r=o.indexOf(";"))&&(o=o.substring(0,r)),-1!==(r=o.indexOf(" "))&&(o=o.substring(0,r)),i=parseInt(""+o,10),isNaN(i)&&(o=""+parseFloat(navigator.appVersion),i=parseInt(navigator.appVersion,10)),{name:s,version:i,isIE:l,isFirefox:u,isChrome:c,isSafari:d,isIos:/(iPad|iPhone|iPod)/g.test(navigator.platform),isIphone:/(iPhone|iPod)/g.test(navigator.userAgent),isTouch:"ontouchstart"in t.documentElement}}function r(e,t){var n=e.media;if("video"===e.type)switch(t){case"video/webm":return!(!n.canPlayType||!n.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/,""));case"video/mp4":return!(!n.canPlayType||!n.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/,""));case"video/ogg":return!(!n.canPlayType||!n.canPlayType('video/ogg; codecs="theora"').replace(/no/,""))}else if("audio"===e.type)switch(t){case"audio/mpeg":return!(!n.canPlayType||!n.canPlayType("audio/mpeg;").replace(/no/,""));case"audio/ogg":return!(!n.canPlayType||!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/,""));case"audio/wav":return!(!n.canPlayType||!n.canPlayType('audio/wav; codecs="1"').replace(/no/,""))}return!1}function a(e){if(!t.querySelectorAll('script[src="'+e+'"]').length){var n=t.createElement("script");n.src=e;var r=t.getElementsByTagName("script")[0];r.parentNode.insertBefore(n,r)}}function s(e,t){return Array.prototype.indexOf&&-1!==e.indexOf(t)}function o(e,t,n){return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g,"\\$1"),"g"),n)}function i(e,t){e.length||(e=[e]);for(var n=e.length-1;n>=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;return r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r),r}}function l(e){e&&e.parentNode.removeChild(e)}function u(e,t){e.insertBefore(t,e.firstChild)}function c(e,t){for(var n in t)e.setAttribute(n,M.boolean(t[n])&&t[n]?"":t[n])}function d(e,n,r){var a=t.createElement(e);c(a,r),u(n,a)}function p(e){return e.replace(".","")}function m(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=r+(n?" "+t:"")}}function f(e,t){return!!e&&(e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className))}function y(e,n){var r=Element.prototype;return(r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.msMatchesSelector||function(e){return-1!==[].indexOf.call(t.querySelectorAll(e),this)}).call(e,n)}function b(e,t,n,r,a){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])},a)}function v(e,t,n,r,a){var s=t.split(" ");if(M.boolean(a)||(a=!1),e instanceof NodeList)for(var o=0;o','',''+E.i18n.play+"",""),e.push('
'),s(E.controls,"restart")&&e.push('"),s(E.controls,"rewind")&&e.push('"),s(E.controls,"play")&&e.push('",'"),s(E.controls,"fast-forward")&&e.push('"),s(E.controls,"progress")&&(e.push('','','','','',"0% "+E.i18n.buffered,""),E.tooltips.seek&&e.push('00:00'),e.push("")),s(E.controls,"current-time")&&e.push('',''+E.i18n.currentTime+"",'00:00',""),s(E.controls,"duration")&&e.push('',''+E.i18n.duration+"",'00:00',""),s(E.controls,"mute")&&e.push('"),s(E.controls,"volume")&&e.push('','",'','',""),s(E.controls,"captions")&&e.push('"),s(E.controls,"fullscreen")&&e.push('"),e.push("
"),e.join("")}function q(){if(We.supported.full&&("audio"!==We.type||E.fullscreen.allowAudio)&&E.fullscreen.enabled){var e=I.supportsFullScreen;e||E.fullscreen.fallback&&!X()?(Be((e?"Native":"Fallback")+" fullscreen enabled"),m(We.container,E.classes.fullscreen.enabled,!0)):Be("Fullscreen not supported and fallback disabled"),We.buttons&&We.buttons.fullscreen&&k(We.buttons.fullscreen,!1),$()}}function D(){if("video"===We.type){B(E.selectors.captions)||We.videoContainer.insertAdjacentHTML("afterbegin",'
'),We.usingTextTracks=!1,We.media.textTracks&&(We.usingTextTracks=!0);for(var e,t="",n=We.media.childNodes,r=0;r=10||We.browser.isFirefox&&We.browser.version>=31)&&(Be("Detected browser with known TextTrack issues - using manual fallback"),We.usingTextTracks=!1),We.usingTextTracks){Be("TextTracks supported");for(var o=0;oWe.captions.length-1){We.subcount=We.captions.length-1;break}We.media.currentTime.toFixed(1)>=function(e){return t(e,0)}(We.captions[We.subcount][0])&&We.media.currentTime.toFixed(1)<=n(We.captions[We.subcount][0])?(We.currentCaption=We.captions[We.subcount][1],H(We.currentCaption)):H()}}function Y(){if(We.buttons.captions){m(We.container,E.classes.captions.enabled,!0);var e=We.storage.captionsEnabled;M.boolean(e)||(e=E.captions.defaultActive),e&&(m(We.container,E.classes.captions.active,!0),k(We.buttons.captions,!0))}}function U(e){return We.container.querySelectorAll(e)}function B(e){return U(e)[0]}function X(){try{return e.self!==e.top}catch(e){return!0}}function $(){var e=U("input:not([disabled]), button:not([disabled])"),t=e[0],n=e[e.length-1];g(We.container,"keydown",function(e){9===e.which&&We.isFullscreen&&(e.target!==n||e.shiftKey?e.target===t&&e.shiftKey&&(e.preventDefault(),n.focus()):(e.preventDefault(),t.focus()))})}function J(e,t){if(M.string(t))d(e,We.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,We.media,t[n])}function z(){if(E.loadSprite){var e=V();e.absolute?(Be("AJAX loading absolute SVG sprite"+(We.browser.isIE?" (due to IE)":"")),C(e.url,"sprite-plyr")):Be("Sprite will be used as external resource directly")}var n=E.html;Be("Injecting custom controls"),n||(n=R()),n=o(n=o(n,"{seektime}",E.seekTime),"{id}",Math.floor(1e4*Math.random()));var r;if(M.string(E.selectors.controls.container)&&(r=t.querySelector(E.selectors.controls.container)),M.htmlElement(r)||(r=We.container),r.insertAdjacentHTML("beforeend",n),E.tooltips.controls)for(var a=U([E.selectors.controls.wrapper," ",E.selectors.labels," .",E.classes.hidden].join("")),s=a.length-1;s>=0;s--){var i=a[s];m(i,E.classes.hidden,!1),m(i,E.classes.tooltip,!0)}}function G(){try{return We.controls=B(E.selectors.controls.wrapper),We.buttons={},We.buttons.seek=B(E.selectors.buttons.seek),We.buttons.play=U(E.selectors.buttons.play),We.buttons.pause=B(E.selectors.buttons.pause),We.buttons.restart=B(E.selectors.buttons.restart),We.buttons.rewind=B(E.selectors.buttons.rewind),We.buttons.forward=B(E.selectors.buttons.forward),We.buttons.fullscreen=B(E.selectors.buttons.fullscreen),We.buttons.mute=B(E.selectors.buttons.mute),We.buttons.captions=B(E.selectors.buttons.captions),We.progress={},We.progress.container=B(E.selectors.progress.container),We.progress.buffer={},We.progress.buffer.bar=B(E.selectors.progress.buffer),We.progress.buffer.text=We.progress.buffer.bar&&We.progress.buffer.bar.getElementsByTagName("span")[0],We.progress.played=B(E.selectors.progress.played),We.progress.tooltip=We.progress.container&&We.progress.container.querySelector("."+E.classes.tooltip),We.volume={},We.volume.input=B(E.selectors.volume.input),We.volume.display=B(E.selectors.volume.display),We.duration=B(E.selectors.duration),We.currentTime=B(E.selectors.currentTime),We.seekTime=U(E.selectors.seekTime),!0}catch(e){return Xe("It looks like there is a problem with your controls HTML"),Q(!0),!1}}function K(){m(We.container,E.selectors.container.replace(".",""),We.supported.full)}function Q(e){e&&s(E.types.html5,We.type)?We.media.setAttribute("controls",""):We.media.removeAttribute("controls")}function Z(e){var t=E.i18n.play;if(M.string(E.title)&&E.title.length&&(t+=", "+E.title,We.container.setAttribute("aria-label",E.title)),We.supported.full&&We.buttons.play)for(var n=We.buttons.play.length-1;n>=0;n--)We.buttons.play[n].setAttribute("aria-label",t);M.htmlElement(e)&&e.setAttribute("title",E.i18n.frameTitle.replace("{title}",E.title))}function ee(){var t=null;We.storage={},O.supported&&E.storage.enabled&&(e.localStorage.removeItem("plyr-volume"),(t=e.localStorage.getItem(E.storage.key))&&(/^\d+(\.\d+)?$/.test(t)?te({volume:parseFloat(t)}):We.storage=JSON.parse(t)))}function te(t){O.supported&&E.storage.enabled&&(x(We.storage,t),e.localStorage.setItem(E.storage.key,JSON.stringify(We.storage)))}function ne(){if(We.media){if(We.supported.full&&(m(We.container,E.classes.type.replace("{0}",We.type),!0),s(E.types.embed,We.type)&&m(We.container,E.classes.type.replace("{0}","video"),!0),m(We.container,E.classes.stopped,E.autoplay),m(We.container,E.classes.isIos,We.browser.isIos),m(We.container,E.classes.isTouch,We.browser.isTouch),"video"===We.type)){var e=t.createElement("div");e.setAttribute("class",E.classes.videoWrapper),i(We.media,e),We.videoContainer=e}s(E.types.embed,We.type)&&re()}else Xe("No media element found!")}function re(){var n,r=t.createElement("div"),s=We.type+"-"+Math.floor(1e4*Math.random());switch(We.type){case"youtube":n=T(We.embedId);break;case"vimeo":n=S(We.embedId);break;default:n=We.embedId}for(var o=U('[id^="'+We.type+'-"]'),i=o.length-1;i>=0;i--)l(o[i]);if(m(We.media,E.classes.videoWrapper,!0),m(We.media,E.classes.embedWrapper,!0),"youtube"===We.type)We.media.appendChild(r),r.setAttribute("id",s),M.object(e.YT)?se(n,r):(a(E.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){se(n,r)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===We.type)if(We.supported.full?We.media.appendChild(r):r=We.media,r.setAttribute("id",s),M.object(e.Vimeo))oe(n,r);else{a(E.urls.vimeo.api);var u=e.setInterval(function(){M.object(e.Vimeo)&&(e.clearInterval(u),oe(n,r))},50)}else if("soundcloud"===We.type){var d=t.createElement("iframe");d.loaded=!1,g(d,"load",function(){d.loaded=!0}),c(d,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+n,id:s}),r.appendChild(d),We.media.appendChild(r),e.SC||a(E.urls.soundcloud.api);var p=e.setInterval(function(){e.SC&&d.loaded&&(e.clearInterval(p),ie.call(d))},50)}}function ae(){We.supported.full&&(qe(),De()),Z(B("iframe"))}function se(t,n){We.embed=new e.YT.Player(n.id,{videoId:t,playerVars:{autoplay:E.autoplay?1:0,controls:We.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:E.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){L(We.container,"error",!0,{code:e.data,embed:e.target})},onReady:function(t){var n=t.target;We.media.play=function(){n.playVideo(),We.media.paused=!1},We.media.pause=function(){n.pauseVideo(),We.media.paused=!0},We.media.stop=function(){n.stopVideo(),We.media.paused=!0},We.media.duration=n.getDuration(),We.media.paused=!0,We.media.currentTime=0,We.media.muted=n.isMuted(),E.title=n.getVideoData().title,We.supported.full&&We.media.querySelector("iframe").setAttribute("tabindex","-1"),ae(),L(We.media,"timeupdate"),L(We.media,"durationchange"),e.clearInterval(Ye.buffering),Ye.buffering=e.setInterval(function(){We.media.buffered=n.getVideoLoadedFraction(),(null===We.media.lastBuffered||We.media.lastBufferedr&&(t=r),Ne(t);try{We.media.currentTime=t.toFixed(4)}catch(e){}if(s(E.types.embed,We.type)){switch(We.type){case"youtube":We.embed.seekTo(t);break;case"vimeo":We.embed.setCurrentTime(t.toFixed(0));break;case"soundcloud":We.embed.seekTo(1e3*t)}n&&ue(),L(We.media,"timeupdate"),We.media.seeking=!0,L(We.media,"seeking")}Be("Seeking to "+We.media.currentTime+" seconds"),W(t)}function fe(){var e=parseInt(E.duration),t=0;return null===We.media.duration||isNaN(We.media.duration)||(t=We.media.duration),isNaN(e)?t:e}function ye(){m(We.container,E.classes.playing,!We.media.paused),m(We.container,E.classes.stopped,We.media.paused),Me(We.media.paused)}function be(){N={x:e.pageXOffset||0,y:e.pageYOffset||0}}function ve(){e.scrollTo(N.x,N.y)}function ge(e){var n=I.supportsFullScreen;if(n){if(!e||e.type!==I.fullScreenEventName)return I.isFullScreen(We.container)?I.cancelFullScreen():(be(),I.requestFullScreen(We.container)),void(We.isFullscreen=I.isFullScreen(We.container));We.isFullscreen=I.isFullScreen(We.container)}else We.isFullscreen=!We.isFullscreen,t.body.style.overflow=We.isFullscreen?"hidden":"";m(We.container,E.classes.fullscreen.active,We.isFullscreen),$(We.isFullscreen),We.buttons&&We.buttons.fullscreen&&k(We.buttons.fullscreen,We.isFullscreen),L(We.container,We.isFullscreen?"enterfullscreen":"exitfullscreen",!0),!We.isFullscreen&&n&&ve()}function he(e){if(M.boolean(e)||(e=!We.media.muted),k(We.buttons.mute,e),We.media.muted=e,0===We.media.volume&&ke(E.volume),s(E.types.embed,We.type)){switch(We.type){case"youtube":We.embed[We.media.muted?"mute":"unMute"]();break;case"vimeo":case"soundcloud":We.embed.setVolume(We.media.muted?0:parseFloat(E.volume/E.volumeMax))}L(We.media,"volumechange")}}function ke(e){var t=E.volumeMax,n=E.volumeMin;if(M.undefined(e)&&(e=We.storage.volume),(null===e||isNaN(e))&&(e=E.volume),e>t&&(e=t),e0&&he()}function we(e){var t=We.media.muted?0:We.media.volume*E.volumeMax;M.number(e)||(e=E.volumeStep),ke(t+e)}function xe(e){var t=We.media.muted?0:We.media.volume*E.volumeMax;M.number(e)||(e=E.volumeStep),ke(t-e)}function Te(){var e=We.media.muted?0:We.media.volume*E.volumeMax;We.supported.full&&(We.volume.input&&(We.volume.input.value=e),We.volume.display&&(We.volume.display.value=e)),te({volume:e}),m(We.container,E.classes.muted,0===e),We.supported.full&&We.buttons.mute&&k(We.buttons.mute,0===e)}function Se(e){We.supported.full&&We.buttons.captions&&(M.boolean(e)||(e=-1===We.container.className.indexOf(E.classes.captions.active)),We.captionsEnabled=e,k(We.buttons.captions,We.captionsEnabled),m(We.container,E.classes.captions.active,We.captionsEnabled),L(We.container,We.captionsEnabled?"captionsenabled":"captionsdisabled",!0),te({captionsEnabled:We.captionsEnabled}))}function _e(e){var t="waiting"===e.type;clearTimeout(Ye.loading),Ye.loading=setTimeout(function(){m(We.container,E.classes.loading,t),Me(t)},t?250:0)}function Ee(e){if(We.supported.full){var t=We.progress.played,n=0,r=fe();if(e)switch(e.type){case"timeupdate":case"seeking":if(We.controls.pressed)return;n=w(We.media.currentTime,r),"timeupdate"===e.type&&We.buttons.seek&&(We.buttons.seek.value=n);break;case"playing":case"progress":t=We.progress.buffer,n=function(){var e=We.media.buffered;return e&&e.length?w(e.end(0),r):M.number(e)?100*e:0}()}Ce(t,n)}}function Ce(e,t){if(We.supported.full){if(M.undefined(t)&&(t=0),M.undefined(e)){if(!We.progress||!We.progress.buffer)return;e=We.progress.buffer}M.htmlElement(e)?e.value=t:e&&(e.bar&&(e.bar.value=t),e.text&&(e.text.innerHTML=t))}}function Fe(e,t){if(t){isNaN(e)&&(e=0),We.secs=parseInt(e%60),We.mins=parseInt(e/60%60),We.hours=parseInt(e/60/60%60);var n=parseInt(fe()/60/60%60)>0;We.secs=("0"+We.secs).slice(-2),We.mins=("0"+We.mins).slice(-2),t.innerHTML=(n?We.hours+":":"")+We.mins+":"+We.secs}}function Ae(){if(We.supported.full){var e=fe()||0;!We.duration&&E.displayDuration&&We.media.paused&&Fe(e,We.currentTime),We.duration&&Fe(e,We.duration),Pe()}}function Ie(e){Fe(We.media.currentTime,We.currentTime),e&&"timeupdate"===e.type&&We.media.seeking||Ee(e)}function Ne(e){M.number(e)||(e=0);var t=w(e,fe());We.progress&&We.progress.played&&(We.progress.played.value=t),We.buttons&&We.buttons.seek&&(We.buttons.seek.value=t)}function Pe(e){var t=fe();if(E.tooltips.seek&&We.progress.container&&0!==t){var n=We.progress.container.getBoundingClientRect(),r=0,a=E.classes.tooltip+"--visible";if(e)r=100/n.width*(e.pageX-n.left);else{if(!f(We.progress.tooltip,a))return;r=We.progress.tooltip.style.left.replace("%","")}r<0?r=0:r>100&&(r=100),Fe(t/100*r,We.progress.tooltip),We.progress.tooltip.style.left=r+"%",e&&s(["mouseenter","mouseleave"],e.type)&&m(We.progress.tooltip,a,"mouseenter"===e.type)}}function Me(t){if(E.hideControls&&"audio"!==We.type){var n=0,r=!1,a=t,o=f(We.container,E.classes.loading);if(M.boolean(t)||(t&&t.type?(r="enterfullscreen"===t.type,a=s(["mousemove","touchstart","mouseenter","focus"],t.type),s(["mousemove","touchmove"],t.type)&&(n=2e3),"focus"===t.type&&(n=3e3)):a=f(We.container,E.classes.hideControls)),e.clearTimeout(Ye.hover),a||We.media.paused||o){if(m(We.container,E.classes.hideControls,!1),We.media.paused||o)return;We.browser.isTouch&&(n=3e3)}a&&We.media.paused||(Ye.hover=e.setTimeout(function(){(!We.controls.pressed&&!We.controls.hover||r)&&m(We.container,E.classes.hideControls,!0)},n))}}function Oe(e){M.object(e)&&"sources"in e&&e.sources.length?(m(We.container,E.classes.ready,!1),ue(),Ne(),Ce(),Ve(),Re(function(){if(We.embed=null,l(We.media),"video"===We.type&&We.videoContainer&&l(We.videoContainer),We.container&&We.container.removeAttribute("class"),"type"in e&&(We.type=e.type,"video"===We.type)){var n=e.sources[0];"type"in n&&s(E.types.embed,n.type)&&(We.type=n.type)}switch(We.supported=F(We.type),We.type){case"video":We.media=t.createElement("video");break;case"audio":We.media=t.createElement("audio");break;case"youtube":case"vimeo":case"soundcloud":We.media=t.createElement("div"),We.embedId=e.sources[0].src}u(We.container,We.media),M.boolean(e.autoplay)&&(E.autoplay=e.autoplay),s(E.types.html5,We.type)&&(E.crossorigin&&We.media.setAttribute("crossorigin",""),E.autoplay&&We.media.setAttribute("autoplay",""),"poster"in e&&We.media.setAttribute("poster",e.poster),E.loop&&We.media.setAttribute("loop","")),m(We.container,E.classes.fullscreen.active,We.isFullscreen),m(We.container,E.classes.captions.active,We.captionsEnabled),K(),s(E.types.html5,We.type)&&J("source",e.sources),ne(),s(E.types.html5,We.type)&&("tracks"in e&&J("track",e.tracks),We.media.load()),(s(E.types.html5,We.type)||s(E.types.embed,We.type)&&!We.supported.full)&&(qe(),De()),E.title=e.title,Z()},!1)):Xe("Invalid source format")}function Le(){function n(){var e=ce(),t=We.buttons[e?"play":"pause"],n=We.buttons[e?"pause":"play"];if(n=n&&n.length>1?n[n.length-1]:n[0]){var r=f(t,E.classes.tabFocus);setTimeout(function(){n.focus(),r&&(m(t,E.classes.tabFocus,!1),m(n,E.classes.tabFocus,!0))},100)}}function r(){var e=t.activeElement;return e=e&&e!==t.body?t.querySelector(":focus"):null}function a(e){return e.keyCode?e.keyCode:e.which}function o(e){for(var t in We.buttons){var n=We.buttons[t];if(M.nodeList(n))for(var r=0;r0)&&(t?xe(n):we(n)),(e.deltaY>0||e.deltaX<0)&&(t?we(n):xe(n))})}function je(){if(g(We.media,"timeupdate seeking",Ie),g(We.media,"timeupdate",W),g(We.media,"durationchange loadedmetadata",Ae),g(We.media,"ended",function(){"video"===We.type&&E.showPosterOnEnd&&("video"===We.type&&H(),me(),We.media.load())}),g(We.media,"progress playing",Ee),g(We.media,"volumechange",Te),g(We.media,"play pause ended",ye),g(We.media,"waiting canplay seeked",_e),E.clickToPlay&&"audio"!==We.type){var e=B("."+E.classes.videoWrapper);if(!e)return;e.style.cursor="pointer",g(e,"click",function(){E.hideControls&&We.browser.isTouch&&!We.media.paused||(We.media.paused?le():We.media.ended?(me(),le()):ue())})}E.disableContextMenu&&g(We.media,"contextmenu",function(e){e.preventDefault()}),g(We.media,E.events.concat(["keyup","keydown"]).join(" "),function(e){L(We.container,e.type,!0)})}function Ve(){if(s(E.types.html5,We.type)){for(var e=We.media.querySelectorAll("source"),t=0;t=10&&(c=!0);break;case"soundcloud":u=!0,c=!a&&!o;break;default:c=(u=i&&l)&&!a}return{basic:u,full:c}}function A(e){if(M.string(e)?e=t.querySelector(e):M.undefined(e)&&(e=t.body),M.htmlElement(e)){var n=e.querySelectorAll("."+P.classes.setup),r=[];return Array.prototype.slice.call(n).forEach(function(e){M.object(e.plyr)&&r.push(e.plyr)}),r}return[]}var I,N={x:0,y:0},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:10,volumeMin:0,volumeMax:10,volumeStep:1,duration:null,displayDuration:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/2.0.13/plyr.svg",blankUrl:"https://cdn.plyr.io/static/blank.mp4",clickToPlay:!0,hideControls:!0,showPosterOnEnd:!1,disableContextMenu:!0,keyboardShorcuts:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},selectors:{html5:"video, audio",embed:"[data-type]",editable:"input, textarea, select, [contenteditable]",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:{setup:"plyr--setup",ready:"plyr--ready",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://player.vimeo.com/api/player.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:["ready","ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied"],logPrefix:"[Plyr]"},M={object:function(e){return null!==e&&"object"==typeof e},array:function(e){return null!==e&&"object"==typeof e&&e.constructor===Array},number:function(e){return null!==e&&("number"==typeof e&&!isNaN(e-0)||"object"==typeof e&&e.constructor===Number)},string:function(e){return null!==e&&("string"==typeof e||"object"==typeof e&&e.constructor===String)},boolean:function(e){return null!==e&&"boolean"==typeof e},nodeList:function(e){return null!==e&&e instanceof NodeList},htmlElement:function(e){return null!==e&&e instanceof HTMLElement},function:function(e){return null!==e&&"function"==typeof e},undefined:function(e){return null!==e&&void 0===e}},O={supported:function(){try{e.localStorage.setItem("___test","OK");var t=e.localStorage.getItem("___test");return e.localStorage.removeItem("___test"),"OK"===t}catch(e){return!1}return!1}()};return{setup:function(e,n){function r(e,t){f(t,P.classes.hook)||a.push({target:e,media:t})}var a=[],s=[],o=[P.selectors.html5,P.selectors.embed].join(",");if(M.string(e)?e=t.querySelectorAll(e):M.htmlElement(e)?e=[e]:M.nodeList(e)||M.array(e)||M.string(e)||(M.undefined(n)&&M.object(e)&&(n=e),e=t.querySelectorAll(o)),M.nodeList(e)&&(e=Array.prototype.slice.call(e)),!F().basic||!e.length)return!1;for(var i=0;i=0;n--){var r=n>0?t.cloneNode(!0):t,a=e[n],s=a.parentNode,o=a.nextSibling;return r.appendChild(a),o?s.insertBefore(r,o):s.appendChild(r),r}}function l(e){e&&e.parentNode.removeChild(e)}function u(e,t){e.insertBefore(t,e.firstChild)}function c(e,t){for(var n in t)e.setAttribute(n,M.boolean(t[n])&&t[n]?"":t[n])}function d(e,n,r){var a=t.createElement(e);c(a,r),u(n,a)}function p(e){return e.replace(".","")}function m(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=r+(n?" "+t:"")}}function f(e,t){return!!e&&(e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className))}function y(e,n){var r=Element.prototype;return(r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.msMatchesSelector||function(e){return-1!==[].indexOf.call(t.querySelectorAll(e),this)}).call(e,n)}function b(e,t,n,r,a){g(e,t,function(t){n&&n.apply(e,[t]),r.apply(e,[t])},a)}function v(e,t,n,r,a){var s=t.split(" ");if(M.boolean(a)||(a=!1),e instanceof NodeList)for(var o=0;o','',''+E.i18n.play+"",""),e.push('
'),s(E.controls,"restart")&&e.push('"),s(E.controls,"rewind")&&e.push('"),s(E.controls,"play")&&e.push('",'"),s(E.controls,"fast-forward")&&e.push('"),s(E.controls,"progress")&&(e.push('','','','','',"0% "+E.i18n.buffered,""),E.tooltips.seek&&e.push('00:00'),e.push("")),s(E.controls,"current-time")&&e.push('',''+E.i18n.currentTime+"",'00:00',""),s(E.controls,"duration")&&e.push('',''+E.i18n.duration+"",'00:00',""),s(E.controls,"mute")&&e.push('"),s(E.controls,"volume")&&e.push('','",'','',""),s(E.controls,"captions")&&e.push('"),s(E.controls,"fullscreen")&&e.push('"),e.push("
"),e.join("")}function q(){if(We.supported.full&&("audio"!==We.type||E.fullscreen.allowAudio)&&E.fullscreen.enabled){var e=I.supportsFullScreen;e||E.fullscreen.fallback&&!X()?(Be((e?"Native":"Fallback")+" fullscreen enabled"),m(We.container,E.classes.fullscreen.enabled,!0)):Be("Fullscreen not supported and fallback disabled"),We.buttons&&We.buttons.fullscreen&&k(We.buttons.fullscreen,!1),$()}}function D(){if("video"===We.type){B(E.selectors.captions)||We.videoContainer.insertAdjacentHTML("afterbegin",'
'),We.usingTextTracks=!1,We.media.textTracks&&(We.usingTextTracks=!0);for(var e,t="",n=We.media.childNodes,r=0;r=10||We.browser.isFirefox&&We.browser.version>=31)&&(Be("Detected browser with known TextTrack issues - using manual fallback"),We.usingTextTracks=!1),We.usingTextTracks){Be("TextTracks supported");for(var o=0;oWe.captions.length-1){We.subcount=We.captions.length-1;break}We.media.currentTime.toFixed(1)>=function(e){return t(e,0)}(We.captions[We.subcount][0])&&We.media.currentTime.toFixed(1)<=n(We.captions[We.subcount][0])?(We.currentCaption=We.captions[We.subcount][1],H(We.currentCaption)):H()}}function Y(){if(We.buttons.captions){m(We.container,E.classes.captions.enabled,!0);var e=We.storage.captionsEnabled;M.boolean(e)||(e=E.captions.defaultActive),e&&(m(We.container,E.classes.captions.active,!0),k(We.buttons.captions,!0))}}function U(e){return We.container.querySelectorAll(e)}function B(e){return U(e)[0]}function X(){try{return e.self!==e.top}catch(e){return!0}}function $(){var e=U("input:not([disabled]), button:not([disabled])"),t=e[0],n=e[e.length-1];g(We.container,"keydown",function(e){9===e.which&&We.isFullscreen&&(e.target!==n||e.shiftKey?e.target===t&&e.shiftKey&&(e.preventDefault(),n.focus()):(e.preventDefault(),t.focus()))})}function J(e,t){if(M.string(t))d(e,We.media,{src:t});else if(t.constructor===Array)for(var n=t.length-1;n>=0;n--)d(e,We.media,t[n])}function z(){if(E.loadSprite){var e=V();e.absolute?(Be("AJAX loading absolute SVG sprite"+(We.browser.isIE?" (due to IE)":"")),C(e.url,"sprite-plyr")):Be("Sprite will be used as external resource directly")}var n=E.html;Be("Injecting custom controls"),n||(n=R()),n=o(n=o(n,"{seektime}",E.seekTime),"{id}",Math.floor(1e4*Math.random()));var r;if(M.string(E.selectors.controls.container)&&(r=t.querySelector(E.selectors.controls.container)),M.htmlElement(r)||(r=We.container),r.insertAdjacentHTML("beforeend",n),E.tooltips.controls)for(var a=U([E.selectors.controls.wrapper," ",E.selectors.labels," .",E.classes.hidden].join("")),s=a.length-1;s>=0;s--){var i=a[s];m(i,E.classes.hidden,!1),m(i,E.classes.tooltip,!0)}}function G(){try{return We.controls=B(E.selectors.controls.wrapper),We.buttons={},We.buttons.seek=B(E.selectors.buttons.seek),We.buttons.play=U(E.selectors.buttons.play),We.buttons.pause=B(E.selectors.buttons.pause),We.buttons.restart=B(E.selectors.buttons.restart),We.buttons.rewind=B(E.selectors.buttons.rewind),We.buttons.forward=B(E.selectors.buttons.forward),We.buttons.fullscreen=B(E.selectors.buttons.fullscreen),We.buttons.mute=B(E.selectors.buttons.mute),We.buttons.captions=B(E.selectors.buttons.captions),We.progress={},We.progress.container=B(E.selectors.progress.container),We.progress.buffer={},We.progress.buffer.bar=B(E.selectors.progress.buffer),We.progress.buffer.text=We.progress.buffer.bar&&We.progress.buffer.bar.getElementsByTagName("span")[0],We.progress.played=B(E.selectors.progress.played),We.progress.tooltip=We.progress.container&&We.progress.container.querySelector("."+E.classes.tooltip),We.volume={},We.volume.input=B(E.selectors.volume.input),We.volume.display=B(E.selectors.volume.display),We.duration=B(E.selectors.duration),We.currentTime=B(E.selectors.currentTime),We.seekTime=U(E.selectors.seekTime),!0}catch(e){return Xe("It looks like there is a problem with your controls HTML"),Q(!0),!1}}function K(){m(We.container,E.selectors.container.replace(".",""),We.supported.full)}function Q(e){e&&s(E.types.html5,We.type)?We.media.setAttribute("controls",""):We.media.removeAttribute("controls")}function Z(e){var t=E.i18n.play;if(M.string(E.title)&&E.title.length&&(t+=", "+E.title,We.container.setAttribute("aria-label",E.title)),We.supported.full&&We.buttons.play)for(var n=We.buttons.play.length-1;n>=0;n--)We.buttons.play[n].setAttribute("aria-label",t);M.htmlElement(e)&&e.setAttribute("title",E.i18n.frameTitle.replace("{title}",E.title))}function ee(){var t=null;We.storage={},O.supported&&E.storage.enabled&&(e.localStorage.removeItem("plyr-volume"),(t=e.localStorage.getItem(E.storage.key))&&(/^\d+(\.\d+)?$/.test(t)?te({volume:parseFloat(t)}):We.storage=JSON.parse(t)))}function te(t){O.supported&&E.storage.enabled&&(x(We.storage,t),e.localStorage.setItem(E.storage.key,JSON.stringify(We.storage)))}function ne(){if(We.media){if(We.supported.full&&(m(We.container,E.classes.type.replace("{0}",We.type),!0),s(E.types.embed,We.type)&&m(We.container,E.classes.type.replace("{0}","video"),!0),m(We.container,E.classes.stopped,E.autoplay),m(We.container,E.classes.isIos,We.browser.isIos),m(We.container,E.classes.isTouch,We.browser.isTouch),"video"===We.type)){var e=t.createElement("div");e.setAttribute("class",E.classes.videoWrapper),i(We.media,e),We.videoContainer=e}s(E.types.embed,We.type)&&re()}else Xe("No media element found!")}function re(){var n,r=t.createElement("div"),s=We.type+"-"+Math.floor(1e4*Math.random());switch(We.type){case"youtube":n=T(We.embedId);break;case"vimeo":n=S(We.embedId);break;default:n=We.embedId}for(var o=U('[id^="'+We.type+'-"]'),i=o.length-1;i>=0;i--)l(o[i]);if(m(We.media,E.classes.videoWrapper,!0),m(We.media,E.classes.embedWrapper,!0),"youtube"===We.type)We.media.appendChild(r),r.setAttribute("id",s),M.object(e.YT)?se(n,r):(a(E.urls.youtube.api),e.onYouTubeReadyCallbacks=e.onYouTubeReadyCallbacks||[],e.onYouTubeReadyCallbacks.push(function(){se(n,r)}),e.onYouTubeIframeAPIReady=function(){e.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===We.type)if(We.supported.full?We.media.appendChild(r):r=We.media,r.setAttribute("id",s),M.object(e.Vimeo))oe(n,r);else{a(E.urls.vimeo.api);var u=e.setInterval(function(){M.object(e.Vimeo)&&(e.clearInterval(u),oe(n,r))},50)}else if("soundcloud"===We.type){var d=t.createElement("iframe");d.loaded=!1,g(d,"load",function(){d.loaded=!0}),c(d,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+n,id:s}),r.appendChild(d),We.media.appendChild(r),e.SC||a(E.urls.soundcloud.api);var p=e.setInterval(function(){e.SC&&d.loaded&&(e.clearInterval(p),ie.call(d))},50)}}function ae(){We.supported.full&&(qe(),De()),Z(B("iframe"))}function se(t,n){We.embed=new e.YT.Player(n.id,{videoId:t,playerVars:{autoplay:E.autoplay?1:0,controls:We.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,cc_load_policy:E.captions.defaultActive?1:0,cc_lang_pref:"en",wmode:"transparent",modestbranding:1,disablekb:1,origin:"*"},events:{onError:function(e){L(We.container,"error",!0,{code:e.data,embed:e.target})},onReady:function(t){var n=t.target;We.media.play=function(){n.playVideo(),We.media.paused=!1},We.media.pause=function(){n.pauseVideo(),We.media.paused=!0},We.media.stop=function(){n.stopVideo(),We.media.paused=!0},We.media.duration=n.getDuration(),We.media.paused=!0,We.media.currentTime=0,We.media.muted=n.isMuted(),E.title=n.getVideoData().title,We.supported.full&&We.media.querySelector("iframe").setAttribute("tabindex","-1"),ae(),L(We.media,"timeupdate"),L(We.media,"durationchange"),e.clearInterval(Ye.buffering),Ye.buffering=e.setInterval(function(){We.media.buffered=n.getVideoLoadedFraction(),(null===We.media.lastBuffered||We.media.lastBufferedr&&(t=r),Ne(t);try{We.media.currentTime=t.toFixed(4)}catch(e){}if(s(E.types.embed,We.type)){switch(We.type){case"youtube":We.embed.seekTo(t);break;case"vimeo":We.embed.setCurrentTime(t.toFixed(0));break;case"soundcloud":We.embed.seekTo(1e3*t)}n&&ue(),L(We.media,"timeupdate"),We.media.seeking=!0,L(We.media,"seeking")}Be("Seeking to "+We.media.currentTime+" seconds"),W(t)}function fe(){var e=parseInt(E.duration),t=0;return null===We.media.duration||isNaN(We.media.duration)||(t=We.media.duration),isNaN(e)?t:e}function ye(){m(We.container,E.classes.playing,!We.media.paused),m(We.container,E.classes.stopped,We.media.paused),Me(We.media.paused)}function be(){N={x:e.pageXOffset||0,y:e.pageYOffset||0}}function ve(){e.scrollTo(N.x,N.y)}function ge(e){var n=I.supportsFullScreen;if(n){if(!e||e.type!==I.fullScreenEventName)return I.isFullScreen(We.container)?I.cancelFullScreen():(be(),I.requestFullScreen(We.container)),void(We.isFullscreen=I.isFullScreen(We.container));We.isFullscreen=I.isFullScreen(We.container)}else We.isFullscreen=!We.isFullscreen,t.body.style.overflow=We.isFullscreen?"hidden":"";m(We.container,E.classes.fullscreen.active,We.isFullscreen),$(We.isFullscreen),We.buttons&&We.buttons.fullscreen&&k(We.buttons.fullscreen,We.isFullscreen),L(We.container,We.isFullscreen?"enterfullscreen":"exitfullscreen",!0),!We.isFullscreen&&n&&ve()}function he(e){if(M.boolean(e)||(e=!We.media.muted),k(We.buttons.mute,e),We.media.muted=e,0===We.media.volume&&ke(E.volume),s(E.types.embed,We.type)){switch(We.type){case"youtube":We.embed[We.media.muted?"mute":"unMute"]();break;case"vimeo":case"soundcloud":We.embed.setVolume(We.media.muted?0:parseFloat(E.volume/E.volumeMax))}L(We.media,"volumechange")}}function ke(e){var t=E.volumeMax,n=E.volumeMin;if(M.undefined(e)&&(e=We.storage.volume),(null===e||isNaN(e))&&(e=E.volume),e>t&&(e=t),e0&&he()}function we(e){var t=We.media.muted?0:We.media.volume*E.volumeMax;M.number(e)||(e=E.volumeStep),ke(t+e)}function xe(e){var t=We.media.muted?0:We.media.volume*E.volumeMax;M.number(e)||(e=E.volumeStep),ke(t-e)}function Te(){var e=We.media.muted?0:We.media.volume*E.volumeMax;We.supported.full&&(We.volume.input&&(We.volume.input.value=e),We.volume.display&&(We.volume.display.value=e)),te({volume:e}),m(We.container,E.classes.muted,0===e),We.supported.full&&We.buttons.mute&&k(We.buttons.mute,0===e)}function Se(e){We.supported.full&&We.buttons.captions&&(M.boolean(e)||(e=-1===We.container.className.indexOf(E.classes.captions.active)),We.captionsEnabled=e,k(We.buttons.captions,We.captionsEnabled),m(We.container,E.classes.captions.active,We.captionsEnabled),L(We.container,We.captionsEnabled?"captionsenabled":"captionsdisabled",!0),te({captionsEnabled:We.captionsEnabled}))}function _e(e){var t="waiting"===e.type;clearTimeout(Ye.loading),Ye.loading=setTimeout(function(){m(We.container,E.classes.loading,t),Me(t)},t?250:0)}function Ee(e){if(We.supported.full){var t=We.progress.played,n=0,r=fe();if(e)switch(e.type){case"timeupdate":case"seeking":if(We.controls.pressed)return;n=w(We.media.currentTime,r),"timeupdate"===e.type&&We.buttons.seek&&(We.buttons.seek.value=n);break;case"playing":case"progress":t=We.progress.buffer,n=function(){var e=We.media.buffered;return e&&e.length?w(e.end(0),r):M.number(e)?100*e:0}()}Ce(t,n)}}function Ce(e,t){if(We.supported.full){if(M.undefined(t)&&(t=0),M.undefined(e)){if(!We.progress||!We.progress.buffer)return;e=We.progress.buffer}M.htmlElement(e)?e.value=t:e&&(e.bar&&(e.bar.value=t),e.text&&(e.text.innerHTML=t))}}function Fe(e,t){if(t){isNaN(e)&&(e=0),We.secs=parseInt(e%60),We.mins=parseInt(e/60%60),We.hours=parseInt(e/60/60%60);var n=parseInt(fe()/60/60%60)>0;We.secs=("0"+We.secs).slice(-2),We.mins=("0"+We.mins).slice(-2),t.innerHTML=(n?We.hours+":":"")+We.mins+":"+We.secs}}function Ae(){if(We.supported.full){var e=fe()||0;!We.duration&&E.displayDuration&&We.media.paused&&Fe(e,We.currentTime),We.duration&&Fe(e,We.duration),Pe()}}function Ie(e){Fe(We.media.currentTime,We.currentTime),e&&"timeupdate"===e.type&&We.media.seeking||Ee(e)}function Ne(e){M.number(e)||(e=0);var t=w(e,fe());We.progress&&We.progress.played&&(We.progress.played.value=t),We.buttons&&We.buttons.seek&&(We.buttons.seek.value=t)}function Pe(e){var t=fe();if(E.tooltips.seek&&We.progress.container&&0!==t){var n=We.progress.container.getBoundingClientRect(),r=0,a=E.classes.tooltip+"--visible";if(e)r=100/n.width*(e.pageX-n.left);else{if(!f(We.progress.tooltip,a))return;r=We.progress.tooltip.style.left.replace("%","")}r<0?r=0:r>100&&(r=100),Fe(t/100*r,We.progress.tooltip),We.progress.tooltip.style.left=r+"%",e&&s(["mouseenter","mouseleave"],e.type)&&m(We.progress.tooltip,a,"mouseenter"===e.type)}}function Me(t){if(E.hideControls&&"audio"!==We.type){var n=0,r=!1,a=t,o=f(We.container,E.classes.loading);if(M.boolean(t)||(t&&t.type?(r="enterfullscreen"===t.type,a=s(["mousemove","touchstart","mouseenter","focus"],t.type),s(["mousemove","touchmove"],t.type)&&(n=2e3),"focus"===t.type&&(n=3e3)):a=f(We.container,E.classes.hideControls)),e.clearTimeout(Ye.hover),a||We.media.paused||o){if(m(We.container,E.classes.hideControls,!1),We.media.paused||o)return;We.browser.isTouch&&(n=3e3)}a&&We.media.paused||(Ye.hover=e.setTimeout(function(){(!We.controls.pressed&&!We.controls.hover||r)&&m(We.container,E.classes.hideControls,!0)},n))}}function Oe(e){M.object(e)&&"sources"in e&&e.sources.length?(m(We.container,E.classes.ready,!1),ue(),Ne(),Ce(),Ve(),Re(function(){if(We.embed=null,l(We.media),"video"===We.type&&We.videoContainer&&l(We.videoContainer),We.container&&We.container.removeAttribute("class"),"type"in e&&(We.type=e.type,"video"===We.type)){var n=e.sources[0];"type"in n&&s(E.types.embed,n.type)&&(We.type=n.type)}switch(We.supported=F(We.type),We.type){case"video":We.media=t.createElement("video");break;case"audio":We.media=t.createElement("audio");break;case"youtube":case"vimeo":case"soundcloud":We.media=t.createElement("div"),We.embedId=e.sources[0].src}u(We.container,We.media),M.boolean(e.autoplay)&&(E.autoplay=e.autoplay),s(E.types.html5,We.type)&&(E.crossorigin&&We.media.setAttribute("crossorigin",""),E.autoplay&&We.media.setAttribute("autoplay",""),"poster"in e&&We.media.setAttribute("poster",e.poster),E.loop&&We.media.setAttribute("loop","")),m(We.container,E.classes.fullscreen.active,We.isFullscreen),m(We.container,E.classes.captions.active,We.captionsEnabled),K(),s(E.types.html5,We.type)&&J("source",e.sources),ne(),s(E.types.html5,We.type)&&("tracks"in e&&J("track",e.tracks),We.media.load()),(s(E.types.html5,We.type)||s(E.types.embed,We.type)&&!We.supported.full)&&(qe(),De()),E.title=e.title,Z()},!1)):Xe("Invalid source format")}function Le(){function n(){var e=ce(),t=We.buttons[e?"play":"pause"],n=We.buttons[e?"pause":"play"];if(n=n&&n.length>1?n[n.length-1]:n[0]){var r=f(t,E.classes.tabFocus);setTimeout(function(){n.focus(),r&&(m(t,E.classes.tabFocus,!1),m(n,E.classes.tabFocus,!0))},100)}}function r(){var e=t.activeElement;return e=e&&e!==t.body?t.querySelector(":focus"):null}function a(e){return e.keyCode?e.keyCode:e.which}function o(e){for(var t in We.buttons){var n=We.buttons[t];if(M.nodeList(n))for(var r=0;r0)&&(t?xe(n):we(n)),(e.deltaY>0||e.deltaX<0)&&(t?we(n):xe(n))})}function je(){if(g(We.media,"timeupdate seeking",Ie),g(We.media,"timeupdate",W),g(We.media,"durationchange loadedmetadata",Ae),g(We.media,"ended",function(){"video"===We.type&&E.showPosterOnEnd&&("video"===We.type&&H(),me(),We.media.load())}),g(We.media,"progress playing",Ee),g(We.media,"volumechange",Te),g(We.media,"play pause ended",ye),g(We.media,"waiting canplay seeked",_e),E.clickToPlay&&"audio"!==We.type){var e=B("."+E.classes.videoWrapper);if(!e)return;e.style.cursor="pointer",g(e,"click",function(){E.hideControls&&We.browser.isTouch&&!We.media.paused||(We.media.paused?le():We.media.ended?(me(),le()):ue())})}E.disableContextMenu&&g(We.media,"contextmenu",function(e){e.preventDefault()}),g(We.media,E.events.concat(["keyup","keydown"]).join(" "),function(e){L(We.container,e.type,!0)})}function Ve(){if(s(E.types.html5,We.type)){for(var e=We.media.querySelectorAll("source"),t=0;t=10&&(c=!0);break;case"soundcloud":u=!0,c=!a&&!o;break;default:c=(u=i&&l)&&!a}return{basic:u,full:c}}function A(e){if(M.string(e)?e=t.querySelector(e):M.undefined(e)&&(e=t.body),M.htmlElement(e)){var n=e.querySelectorAll("."+P.classes.setup),r=[];return Array.prototype.slice.call(n).forEach(function(e){M.object(e.plyr)&&r.push(e.plyr)}),r}return[]}var I,N={x:0,y:0},P={enabled:!0,debug:!1,autoplay:!1,loop:!1,seekTime:10,volume:10,volumeMin:0,volumeMax:10,volumeStep:1,duration:null,displayDuration:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/2.0.14/plyr.svg",blankUrl:"https://cdn.plyr.io/static/blank.mp4",clickToPlay:!0,hideControls:!0,showPosterOnEnd:!1,disableContextMenu:!0,keyboardShorcuts:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},selectors:{html5:"video, audio",embed:"[data-type]",editable:"input, textarea, select, [contenteditable]",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:{setup:"plyr--setup",ready:"plyr--ready",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://player.vimeo.com/api/player.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:["ready","ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied"],logPrefix:"[Plyr]"},M={object:function(e){return null!==e&&"object"==typeof e},array:function(e){return null!==e&&"object"==typeof e&&e.constructor===Array},number:function(e){return null!==e&&("number"==typeof e&&!isNaN(e-0)||"object"==typeof e&&e.constructor===Number)},string:function(e){return null!==e&&("string"==typeof e||"object"==typeof e&&e.constructor===String)},boolean:function(e){return null!==e&&"boolean"==typeof e},nodeList:function(e){return null!==e&&e instanceof NodeList},htmlElement:function(e){return null!==e&&e instanceof HTMLElement},function:function(e){return null!==e&&"function"==typeof e},undefined:function(e){return null!==e&&void 0===e}},O={supported:function(){try{e.localStorage.setItem("___test","OK");var t=e.localStorage.getItem("___test");return e.localStorage.removeItem("___test"),"OK"===t}catch(e){return!1}return!1}()};return{setup:function(e,n){function r(e,t){f(t,P.classes.hook)||a.push({target:e,media:t})}var a=[],s=[],o=[P.selectors.html5,P.selectors.embed].join(",");if(M.string(e)?e=t.querySelectorAll(e):M.htmlElement(e)?e=[e]:M.nodeList(e)||M.array(e)||M.string(e)||(M.undefined(n)&&M.object(e)&&(n=e),e=t.querySelectorAll(o)),M.nodeList(e)&&(e=Array.prototype.slice.call(e)),!F().basic||!e.length)return!1;for(var i=0;i` tag and then call `ply If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript, you can use the following: ```html - + ``` ### CSS @@ -150,11 +150,11 @@ Include the `plyr.css` stylsheet into your `` If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the following: ```html - + ``` ### SVG Sprite -The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/2.0.14/plyr.svg`. +The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/2.0.15/plyr.svg`. ## Advanced diff --git a/src/js/plyr.js b/src/js/plyr.js index 9f3420fe..992400c1 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -1,6 +1,6 @@ // ========================================================================== // Plyr -// plyr.js v2.0.14 +// plyr.js v2.0.15 // https://github.com/sampotts/plyr // License: The MIT License (MIT) // ========================================================================== @@ -44,7 +44,7 @@ displayDuration: true, loadSprite: true, iconPrefix: "plyr", - iconUrl: "https://cdn.plyr.io/2.0.14/plyr.svg", + iconUrl: "https://cdn.plyr.io/2.0.15/plyr.svg", blankUrl: "https://cdn.plyr.io/static/blank.mp4", clickToPlay: true, hideControls: true,