diff --git a/.eslintrc.json b/.eslintrc.json index e1ec98f2..71ec9988 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,19 +3,7 @@ "env": { "browser": true }, - "globals": { - "engine": true, - "Modernizr": false, - "ga": false, - "mixpanel": false, - "moment": false, - "fullscreen": false, - "Raven": false, - "templates": false, - "Hogan": false, - "locale_json": false, - "bootbox": false - }, + "globals": {}, "rules": { "no-const-assign": 1, "no-this-before-super": 1, diff --git a/dist/plyr.css b/dist/plyr.css index 46e3ec66..ec672f25 100644 --- a/dist/plyr.css +++ b/dist/plyr.css @@ -1 +1 @@ -@-webkit-keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-progress{to{background-position:25px 0}}@-webkit-keyframes plyr-popup{from{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:.5}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes plyr-popup{from{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:.5}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}.plyr{position:relative;max-width:100%;min-width:200px;font-family:inherit;font-weight:500;direction:ltr}.plyr,.plyr *,.plyr ::after,.plyr ::before{-webkit-box-sizing:border-box;box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr [aria-hidden=true]{display:none}.plyr:focus{outline:0}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle;border-radius:inherit}.plyr input[type=range]{display:block;height:20px;width:100%;margin:0;padding:0;cursor:pointer;border:none;background:0 0;-webkit-appearance:none}.plyr input[type=range]::-webkit-slider-runnable-track{height:8px;background:0 0;border:0;border-radius:4px;-webkit-user-select:none;user-select:none}.plyr input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-4px;position:relative;height:16px;width:16px;background:#fff;border:2px solid transparent;border-radius:100%;-webkit-transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease,-webkit-transform .2s ease;-webkit-box-shadow:0 1px 1px rgba(52,63,74,.15),0 0 0 1px rgba(52,63,74,.2);box-shadow:0 1px 1px rgba(52,63,74,.15),0 0 0 1px rgba(52,63,74,.2);-webkit-box-sizing:border-box;box-sizing:border-box}.plyr input[type=range]::-moz-range-track{height:8px;background:0 0;border:0;border-radius:4px;-moz-user-select:none;user-select:none}.plyr input[type=range]::-moz-range-thumb{position:relative;height:16px;width:16px;background:#fff;border:2px solid transparent;border-radius:100%;-webkit-transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease,-webkit-transform .2s ease;box-shadow:0 1px 1px rgba(52,63,74,.15),0 0 0 1px rgba(52,63,74,.2);box-sizing:border-box}.plyr input[type=range]::-ms-track{height:8px;background:0 0;border:0;color:transparent}.plyr input[type=range]::-ms-fill-upper{height:8px;background:0 0;border:0;border-radius:4px;-ms-user-select:none;user-select:none}.plyr input[type=range]::-ms-fill-lower{height:8px;background:0 0;border:0;border-radius:4px;-ms-user-select:none;user-select:none;background:#1aafff}.plyr input[type=range]::-ms-thumb{position:relative;height:16px;width:16px;background:#fff;border:2px solid transparent;border-radius:100%;-webkit-transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease,-webkit-transform .2s ease;box-shadow:0 1px 1px rgba(52,63,74,.15),0 0 0 1px rgba(52,63,74,.2);box-sizing:border-box;margin-top:0}.plyr input[type=range]::-ms-tooltip{display:none}.plyr input[type=range]:focus{outline:0}.plyr input[type=range]::-moz-focus-outer{border:0}.plyr input[type=range].tab-focus{outline-offset:3px}.plyr input[type=range]:active::-webkit-slider-thumb{background:#1aafff;border-color:#fff;-webkit-transform:scale(1.25);transform:scale(1.25)}.plyr input[type=range]:active::-moz-range-thumb{background:#1aafff;border-color:#fff;transform:scale(1.25)}.plyr input[type=range]:active::-ms-thumb{background:#1aafff;border-color:#fff;transform:scale(1.25)}.plyr--video input[type=range].tab-focus{outline:1px dotted rgba(255,255,255,.5)}.plyr--audio input[type=range].tab-focus{outline:1px dotted rgba(86,93,100,.5)}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute!important;padding:0!important;border:0!important;height:1px!important;width:1px!important}.plyr__video-wrapper{position:relative;background:#000;border-radius:inherit;z-index:0;overflow:hidden}.plyr__video-embed{padding-bottom:56.25%;height:0}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr .plyr__video-embed iframe{pointer-events:none}.plyr video::-webkit-media-text-track-container{display:none}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:10px;-webkit-transform:translateY(-40px);transform:translateY(-40px);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;color:#fff;font-size:14px;text-align:center}.plyr__captions span{border-radius:2px;padding:.2em .5em;background:rgba(52,63,74,.8);-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:170%;white-space:pre-wrap}.plyr__captions span div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{padding:20px;font-size:16px}}@media (min-width:768px){.plyr__captions{font-size:20px}}.plyr--captions-active .plyr__captions{display:block}.plyr--hide-controls .plyr__captions{-webkit-transform:translateY(-15px);transform:translateY(-15px)}@media (min-width:1024px){.plyr--fullscreen-active .plyr__captions{font-size:24px}}.plyr ::-webkit-media-controls{display:none}.plyr__controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1;text-align:center}.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls>.plyr__control{margin-left:5px}.plyr__controls .plyr__menu:first-child,.plyr__controls .plyr__menu:first-child+[data-plyr=pause],.plyr__controls .plyr__progress:first-child,.plyr__controls .plyr__progress:first-child+[data-plyr=pause],.plyr__controls .plyr__time:first-child,.plyr__controls .plyr__time:first-child+[data-plyr=pause],.plyr__controls>.plyr__control:first-child,.plyr__controls>.plyr__control:first-child+[data-plyr=pause]{margin-left:0}.plyr__controls .plyr__volume{margin-left:5px}@media (min-width:480px){.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls>.plyr__control{margin-left:10px}.plyr__controls .plyr__menu+.plyr__control,.plyr__controls>.plyr__control+.plyr__control,.plyr__controls>.plyr__control+.plyr__menu{margin-left:5px}}.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none}.plyr__control{position:relative;display:inline-block;-ms-flex-negative:0;flex-shrink:0;overflow:visible;vertical-align:middle;padding:7px;border:0;background:0 0;border-radius:3px;cursor:pointer;-webkit-transition:background .3s ease,color .3s ease,opacity .3s ease;transition:background .3s ease,color .3s ease,opacity .3s ease;color:inherit}.plyr__control svg{width:18px;height:18px;display:block;fill:currentColor;pointer-events:none;-webkit-filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15));filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}.plyr__control .icon--captions-on,.plyr__control .icon--exit-fullscreen,.plyr__control .icon--muted{display:none}.plyr__control:focus{outline:0}.plyr--video .plyr__controls{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:35px 10px 10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(52,63,74,0)),to(rgba(52,63,74,.85)));background:linear-gradient(rgba(52,63,74,0),rgba(52,63,74,.85));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;color:#fff;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.plyr--video .plyr__controls .plyr__control.tab-focus,.plyr--video .plyr__controls .plyr__control:hover,.plyr--video .plyr__controls .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr--audio .plyr__controls{padding:10px;border-radius:inherit;background:#fff;border:1px solid #dbe3e8;color:#565d64}.plyr--audio .plyr__controls .plyr__control.tab-focus,.plyr--audio .plyr__controls .plyr__control:hover,.plyr--audio .plyr__controls .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr__play-large{display:none;position:absolute;z-index:1;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding:13px;background:rgba(26,175,255,.8);border:3px solid currentColor;border-radius:100%;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15);box-shadow:0 1px 1px rgba(0,0,0,.15);color:#fff;-webkit-transition:all .3s ease;transition:all .3s ease}.plyr__play-large svg{position:relative;left:2px;width:20px;height:20px;display:block;fill:currentColor;pointer-events:none}.plyr__play-large:focus,.plyr__play-large:hover{background:#1aafff}.plyr__play-large:focus{outline:1px dotted rgba(255,255,255,.5)}.plyr .plyr__play-large{display:inline-block}.plyr--audio .plyr__play-large{display:none}.plyr--playing .plyr__play-large{opacity:0;visibility:hidden}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr--captions-active .plyr__control .icon--captions-on,.plyr--fullscreen-active .plyr__control .icon--exit-fullscreen,.plyr--muted .plyr__control .icon--muted{display:block}.plyr--captions-active .plyr__control .icon--captions-on+svg,.plyr--fullscreen-active .plyr__control .icon--exit-fullscreen+svg,.plyr--muted .plyr__control .icon--muted+svg{display:none}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-enabled [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-enabled [data-plyr=pip]{display:inline-block}.plyr__menu{position:relative}.plyr__menu .plyr__control svg{-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{position:absolute;z-index:1;bottom:100%;right:-3px;margin-bottom:10px;-webkit-animation:plyr-popup .2s ease;animation:plyr-popup .2s ease;background:rgba(52,63,74,.9);border-radius:4px;white-space:nowrap;text-align:left;color:#fff;font-size:14px}.plyr__menu__container>div{overflow:hidden;-webkit-transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1);transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{content:'';position:absolute;top:100%;right:15px;height:0;width:0;border:4px solid transparent;border-top-color:rgba(52,63,74,.9)}.plyr__menu__container ul{margin:0;padding:7px;list-style:none;overflow:hidden}.plyr__menu__container .plyr__control{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;padding:7px 14px;color:#fff;font-weight:600;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__menu__container .plyr__control::after{content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);border:4px solid transparent}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{right:5px;border-left-color:rgba(255,255,255,.8)}.plyr__menu__container .plyr__control--back{position:relative;width:calc(100% - 14px);margin:7px;margin-bottom:3px;padding-left:28px;font-weight:500}.plyr__menu__container .plyr__control--back::after{left:7px;border-right-color:rgba(255,255,255,.8)}.plyr__menu__container .plyr__control--back::before{content:'';position:absolute;top:100%;left:0;right:0;height:1px;overflow:hidden;margin-top:4px;background:rgba(0,0,0,.15);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.1);box-shadow:0 1px 0 rgba(255,255,255,.1)}.plyr__menu__container label.plyr__control{padding-left:18px}.plyr__menu__container label.plyr__control input[type=radio]{position:relative;left:-7px}.plyr__menu__container .plyr__menu__value{display:inherit;margin-left:auto;padding-left:25px;pointer-events:none;overflow:hidden;font-weight:500;color:rgba(255,255,255,.8)}.plyr__menu__container .plyr__menu__value .plyr__badge{font-weight:600}.plyr__badge{padding:2px 4px;border-radius:2px;background:#fff;color:rgba(52,63,74,.9);font-size:10px}.plyr__tooltip{position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:5px 7.5px;pointer-events:none;opacity:0;background:rgba(52,63,74,.9);border-radius:3px;color:#fff;font-size:14px;font-weight:500;line-height:1.3;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::before{content:"";position:absolute;width:0;height:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:-4px;border-right:4px solid transparent;border-top:4px solid rgba(52,63,74,.9);border-left:4px solid transparent;z-index:2}.plyr .plyr__control.tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;-webkit-transform:translate(0,10px) scale(.8);transform:translate(0,10px) scale(.8);-webkit-transform-origin:0 100%;transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{right:0;-webkit-transform:translate(0,10px) scale(.8);transform:translate(0,10px) scale(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;-webkit-transform:translateX(50%);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{-webkit-transform:translate(0,0) scale(1);transform:translate(0,0) scale(1)}.plyr__progress{position:relative;display:none;-webkit-box-flex:1;-ms-flex:1;flex:1}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress input[type=range]::-webkit-slider-runnable-track{background:0 0}.plyr__progress input[type=range]::-moz-range-track{background:0 0}.plyr__progress input[type=range]::-ms-fill-upper{background:0 0}.plyr__progress .plyr__tooltip{left:0}.plyr .plyr__progress{display:inline-block}.plyr__progress--buffer,.plyr__progress--played,.plyr__volume--display{position:absolute;left:0;top:50%;width:100%;height:8px;margin:-4px 0 0;padding:0;vertical-align:top;border:none;border-radius:100px;-webkit-appearance:none}.plyr__progress--buffer::-webkit-progress-bar,.plyr__progress--played::-webkit-progress-bar,.plyr__volume--display::-webkit-progress-bar{background:0 0}.plyr__progress--buffer::-webkit-progress-value,.plyr__progress--played::-webkit-progress-value,.plyr__volume--display::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:8px}.plyr__progress--buffer::-moz-progress-bar,.plyr__progress--played::-moz-progress-bar,.plyr__volume--display::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:8px}.plyr__progress--buffer::-ms-fill,.plyr__progress--played::-ms-fill,.plyr__volume--display::-ms-fill{border-radius:100px}.plyr__progress--played,.plyr__volume--display{z-index:1;color:#1aafff;background:0 0;-webkit-transition:none;transition:none}.plyr__progress--played::-webkit-progress-value,.plyr__volume--display::-webkit-progress-value{min-width:8px;max-width:99%;border-top-right-radius:0;border-bottom-right-radius:0;-webkit-transition:none;transition:none}.plyr__progress--played::-moz-progress-bar,.plyr__volume--display::-moz-progress-bar{min-width:8px;max-width:99%;border-top-right-radius:0;border-bottom-right-radius:0;-webkit-transition:none;transition:none}.plyr__progress--played::-ms-fill,.plyr__volume--display::-ms-fill{display:none}.plyr__progress--buffer::-webkit-progress-value{-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress--buffer::-moz-progress-bar{-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress--buffer::-ms-fill{-webkit-transition:width .2s ease;transition:width .2s ease}.plyr--video .plyr__progress--buffer,.plyr--video .plyr__volume--display{background:rgba(255,255,255,.25);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15);box-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr--video .plyr__progress--buffer{color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress--buffer,.plyr--audio .plyr__volume--display{background:rgba(198,214,219,.66)}.plyr--audio .plyr__progress--buffer{color:rgba(198,214,219,.66)}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:25px 25px;background-repeat:repeat-x;background-image:linear-gradient(-45deg,rgba(52,63,74,.2) 25%,transparent 25%,transparent 50%,rgba(52,63,74,.2) 50%,rgba(52,63,74,.2) 75%,transparent 75%,transparent);color:transparent}.plyr--video.plyr--loading .plyr__progress--buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress--buffer{background-color:rgba(198,214,219,.66)}.plyr__time{display:inline-block;vertical-align:middle;font-size:14px}.plyr__time+.plyr__time{display:none}@media (min-width:768px){.plyr__time+.plyr__time{display:inline-block}}.plyr__time+.plyr__time::before{content:"\2044";margin-right:10px}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__volume{display:none}.plyr .plyr__volume{-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative}.plyr .plyr__volume input[type=range]{position:relative;z-index:2}@media (min-width:480px){.plyr .plyr__volume{display:block;max-width:60px}}@media (min-width:768px){.plyr .plyr__volume{max-width:100px}}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute]{display:none!important}.plyr--fullscreen-active{height:100%;width:100%;background:#000;border-radius:0!important}.plyr--fullscreen-active video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__video-embed{overflow:visible}.plyr--fullscreen-active.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.plyr--fullscreen-fallback.plyr--fullscreen-active{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000000} \ No newline at end of file +@-webkit-keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-progress{to{background-position:25px 0}}@-webkit-keyframes plyr-popup{from{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:.5}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes plyr-popup{from{-webkit-transform:translateY(10px);transform:translateY(10px);opacity:.5}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}.plyr{position:relative;max-width:100%;min-width:200px;font-family:inherit;font-weight:500;direction:ltr}.plyr,.plyr *,.plyr ::after,.plyr ::before{-webkit-box-sizing:border-box;box-sizing:border-box}.plyr a,.plyr button,.plyr input,.plyr label{-ms-touch-action:manipulation;touch-action:manipulation}.plyr [aria-hidden=true]{display:none}.plyr:focus{outline:0}.plyr audio,.plyr video{width:100%;height:auto;vertical-align:middle;border-radius:inherit}.plyr input[type=range]{display:block;height:20px;width:100%;margin:0;padding:0;cursor:pointer;border:none;background:0 0;color:#1aafff;-webkit-appearance:none}.plyr input[type=range]::-webkit-slider-runnable-track{height:8px;background:0 0;border:0;border-radius:4px;-webkit-user-select:none;user-select:none}.plyr input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-4px;position:relative;height:16px;width:16px;background:#fff;border:2px solid transparent;border-radius:100%;-webkit-transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease,-webkit-transform .2s ease;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(52,63,74,.2);box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(52,63,74,.2);-webkit-box-sizing:border-box;box-sizing:border-box}.plyr input[type=range]::-moz-range-track{height:8px;background:0 0;border:0;border-radius:4px;-moz-user-select:none;user-select:none}.plyr input[type=range]::-moz-range-thumb{position:relative;height:16px;width:16px;background:#fff;border:2px solid transparent;border-radius:100%;-webkit-transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease,-webkit-transform .2s ease;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(52,63,74,.2);box-sizing:border-box}.plyr input[type=range]::-moz-range-progress{height:8px;background:currentColor;border-radius:4px}.plyr input[type=range]::-ms-track{height:8px;background:0 0;border:0;color:transparent}.plyr input[type=range]::-ms-fill-upper{height:8px;background:0 0;border:0;border-radius:4px;-ms-user-select:none;user-select:none}.plyr input[type=range]::-ms-fill-lower{height:8px;background:0 0;border:0;border-radius:4px;-ms-user-select:none;user-select:none;background:currentColor}.plyr input[type=range]::-ms-thumb{position:relative;height:16px;width:16px;background:#fff;border:2px solid transparent;border-radius:100%;-webkit-transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,-webkit-transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease;transition:background .2s ease,border .2s ease,transform .2s ease,-webkit-transform .2s ease;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(52,63,74,.2);box-sizing:border-box;margin-top:0}.plyr input[type=range]::-ms-tooltip{display:none}.plyr input[type=range]:focus{outline:0}.plyr input[type=range]::-moz-focus-outer{border:0}.plyr input[type=range].tab-focus{outline-offset:3px}.plyr input[type=range]:active::-webkit-slider-thumb{background:#1aafff;border-color:#fff;-webkit-transform:scale(1.25);transform:scale(1.25)}.plyr input[type=range]:active::-moz-range-thumb{background:#1aafff;border-color:#fff;transform:scale(1.25)}.plyr input[type=range]:active::-ms-thumb{background:#1aafff;border-color:#fff;transform:scale(1.25)}.plyr--video input[type=range]::-webkit-slider-runnable-track{background:rgba(255,255,255,.25)}.plyr--video input[type=range]::-moz-range-track{background:rgba(255,255,255,.25)}.plyr--video input[type=range]::-ms-track{background:rgba(255,255,255,.25)}.plyr--video input[type=range].tab-focus{outline:1px dotted rgba(255,255,255,.5)}.plyr--audio input[type=range]::-webkit-slider-runnable-track{background:rgba(198,214,219,.66)}.plyr--audio input[type=range]::-moz-range-track{background:rgba(198,214,219,.66)}.plyr--audio input[type=range]::-ms-track{background:rgba(198,214,219,.66)}.plyr--audio input[type=range].tab-focus{outline:1px dotted rgba(86,93,100,.5)}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;position:absolute!important;padding:0!important;border:0!important;height:1px!important;width:1px!important}.plyr__video-wrapper{position:relative;background:#000;border-radius:inherit;z-index:0;overflow:hidden}.plyr__video-embed{padding-bottom:56.25%;height:0}.plyr__video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__video-embed>div{position:relative;padding-bottom:200%;-webkit-transform:translateY(-35.95%);transform:translateY(-35.95%)}.plyr .plyr__video-embed iframe{pointer-events:none}.plyr video::-webkit-media-text-track-container{display:none}.plyr__captions{display:none;position:absolute;bottom:0;left:0;width:100%;padding:10px;-webkit-transform:translateY(-40px);transform:translateY(-40px);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;color:#fff;font-size:14px;text-align:center}.plyr__captions span{border-radius:2px;padding:.2em .5em;background:rgba(52,63,74,.8);-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:170%;white-space:pre-wrap}.plyr__captions span div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{padding:20px;font-size:16px}}@media (min-width:768px){.plyr__captions{font-size:20px}}.plyr--captions-active .plyr__captions{display:block}.plyr--hide-controls .plyr__captions{-webkit-transform:translateY(-15px);transform:translateY(-15px)}@media (min-width:1024px){.plyr--fullscreen-active .plyr__captions{font-size:24px}}.plyr ::-webkit-media-controls{display:none}.plyr__controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1;text-align:center}.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls>.plyr__control{margin-left:5px}.plyr__controls .plyr__menu:first-child,.plyr__controls .plyr__menu:first-child+[data-plyr=pause],.plyr__controls .plyr__progress:first-child,.plyr__controls .plyr__progress:first-child+[data-plyr=pause],.plyr__controls .plyr__time:first-child,.plyr__controls .plyr__time:first-child+[data-plyr=pause],.plyr__controls>.plyr__control:first-child,.plyr__controls>.plyr__control:first-child+[data-plyr=pause]{margin-left:0}.plyr__controls .plyr__volume{margin-left:5px}@media (min-width:480px){.plyr__controls .plyr__menu,.plyr__controls .plyr__progress,.plyr__controls .plyr__time,.plyr__controls>.plyr__control{margin-left:10px}.plyr__controls .plyr__menu+.plyr__control,.plyr__controls>.plyr__control+.plyr__control,.plyr__controls>.plyr__control+.plyr__menu{margin-left:5px}}.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none}.plyr__control{position:relative;display:inline-block;-ms-flex-negative:0;flex-shrink:0;overflow:visible;vertical-align:middle;padding:7px;border:0;background:0 0;border-radius:3px;cursor:pointer;-webkit-transition:background .3s ease,color .3s ease,opacity .3s ease;transition:background .3s ease,color .3s ease,opacity .3s ease;color:inherit}.plyr__control svg{width:18px;height:18px;display:block;fill:currentColor;pointer-events:none}.plyr__control .icon--captions-on,.plyr__control .icon--exit-fullscreen,.plyr__control .icon--muted{display:none}.plyr__control:focus{outline:0}.plyr--video .plyr__controls{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:35px 10px 10px;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.7)));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;color:#fff;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.plyr--video .plyr__controls .plyr__control svg{-webkit-filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15));filter:drop-shadow(0 1px 1px rgba(0, 0, 0, .15))}.plyr--video .plyr__controls .plyr__control.tab-focus,.plyr--video .plyr__controls .plyr__control:hover,.plyr--video .plyr__controls .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr--audio .plyr__controls{padding:10px;border-radius:inherit;background:#fff;border:1px solid #dbe3e8;color:#565d64}.plyr--audio .plyr__controls .plyr__control.tab-focus,.plyr--audio .plyr__controls .plyr__control:hover,.plyr--audio .plyr__controls .plyr__control[aria-expanded=true]{background:#1aafff;color:#fff}.plyr__play-large{display:none;position:absolute;z-index:1;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding:13px;background:rgba(26,175,255,.8);border:3px solid currentColor;border-radius:100%;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15);box-shadow:0 1px 1px rgba(0,0,0,.15);color:#fff;-webkit-transition:all .3s ease;transition:all .3s ease}.plyr__play-large svg{position:relative;left:2px;width:20px;height:20px;display:block;fill:currentColor;pointer-events:none}.plyr__play-large:focus,.plyr__play-large:hover{background:#1aafff}.plyr__play-large:focus{outline:1px dotted rgba(255,255,255,.5)}.plyr .plyr__play-large{display:inline-block}.plyr--audio .plyr__play-large{display:none}.plyr--playing .plyr__play-large{opacity:0;visibility:hidden}.plyr--playing .plyr__controls [data-plyr=play],.plyr__controls [data-plyr=pause]{display:none}.plyr--playing .plyr__controls [data-plyr=pause]{display:inline-block}.plyr--captions-active .plyr__control .icon--captions-on,.plyr--fullscreen-active .plyr__control .icon--exit-fullscreen,.plyr--muted .plyr__control .icon--muted{display:block}.plyr--captions-active .plyr__control .icon--captions-on+svg,.plyr--fullscreen-active .plyr__control .icon--exit-fullscreen+svg,.plyr--muted .plyr__control .icon--muted+svg{display:none}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-enabled [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-enabled [data-plyr=pip]{display:inline-block}.plyr__menu{position:relative}.plyr__menu .plyr__control svg{-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{position:absolute;z-index:1;bottom:100%;right:-3px;margin-bottom:10px;-webkit-animation:plyr-popup .2s ease;animation:plyr-popup .2s ease;background:rgba(52,63,74,.9);border-radius:4px;white-space:nowrap;text-align:left;color:#fff;font-size:14px}.plyr__menu__container>div{overflow:hidden;-webkit-transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1);transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{content:'';position:absolute;top:100%;right:15px;height:0;width:0;border:4px solid transparent;border-top-color:rgba(52,63,74,.9)}.plyr__menu__container ul{margin:0;padding:7px;list-style:none;overflow:hidden}.plyr__menu__container .plyr__control{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;padding:7px 14px;color:#fff;font-weight:600;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.plyr__menu__container .plyr__control::after{content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);border:4px solid transparent}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{right:5px;border-left-color:rgba(255,255,255,.8)}.plyr__menu__container .plyr__control--back{position:relative;width:calc(100% - 14px);margin:7px;margin-bottom:3px;padding-left:28px;font-weight:500}.plyr__menu__container .plyr__control--back::after{left:7px;border-right-color:rgba(255,255,255,.8)}.plyr__menu__container .plyr__control--back::before{content:'';position:absolute;top:100%;left:0;right:0;height:1px;overflow:hidden;margin-top:4px;background:rgba(0,0,0,.15);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.1);box-shadow:0 1px 0 rgba(255,255,255,.1)}.plyr__menu__container label.plyr__control{padding-left:18px}.plyr__menu__container label.plyr__control input[type=radio]{position:relative;left:-7px}.plyr__menu__container .plyr__menu__value{display:inherit;margin-left:auto;padding-left:25px;pointer-events:none;overflow:hidden;font-weight:500;color:rgba(255,255,255,.8)}.plyr__menu__container .plyr__menu__value .plyr__badge{font-weight:600}.plyr__badge{padding:2px 4px;border-radius:2px;background:#fff;color:rgba(52,63,74,.9);font-size:10px}.plyr__tooltip{position:absolute;z-index:2;bottom:100%;margin-bottom:10px;padding:5px 7.5px;pointer-events:none;opacity:0;background:rgba(52,63,74,.9);border-radius:3px;color:#fff;font-size:14px;font-weight:500;line-height:1.3;-webkit-transform:translate(-50%,10px) scale(.8);transform:translate(-50%,10px) scale(.8);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:opacity .2s .1s ease,-webkit-transform .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease;transition:transform .2s .1s ease,opacity .2s .1s ease,-webkit-transform .2s .1s ease}.plyr__tooltip::before{content:'';position:absolute;width:0;height:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:-4px;border-right:4px solid transparent;border-top:4px solid rgba(52,63,74,.9);border-left:4px solid transparent;z-index:2}.plyr .plyr__control.tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;-webkit-transform:translate(-50%,0) scale(1);transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;-webkit-transform:translate(0,10px) scale(.8);transform:translate(0,10px) scale(.8);-webkit-transform-origin:0 100%;transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{right:0;-webkit-transform:translate(0,10px) scale(.8);transform:translate(0,10px) scale(.8);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;-webkit-transform:translateX(50%);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{-webkit-transform:translate(0,0) scale(1);transform:translate(0,0) scale(1)}.plyr__progress{position:relative;display:none;-webkit-box-flex:1;-ms-flex:1;flex:1}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{left:0}.plyr .plyr__progress{display:inline-block}.plyr__progress--buffer{position:absolute;left:0;top:50%;width:100%;height:8px;margin:-4px 0 0;padding:0;background:0 0;border:none;border-radius:100px;-webkit-appearance:none}.plyr__progress--buffer::-webkit-progress-bar{background:0 0}.plyr__progress--buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:8px}.plyr__progress--buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:8px}.plyr__progress--buffer::-ms-fill{border-radius:100px}.plyr__progress--buffer::-webkit-progress-value{-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress--buffer::-moz-progress-bar{-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress--buffer::-ms-fill{-webkit-transition:width .2s ease;transition:width .2s ease}.plyr--video .plyr__progress--buffer{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.15);box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress--buffer{color:rgba(198,214,219,.66)}.plyr--loading .plyr__progress--buffer{-webkit-animation:plyr-progress 1s linear infinite;animation:plyr-progress 1s linear infinite;background-size:25px 25px;background-repeat:repeat-x;background-image:linear-gradient(-45deg,rgba(52,63,74,.2) 25%,transparent 25%,transparent 50%,rgba(52,63,74,.2) 50%,rgba(52,63,74,.2) 75%,transparent 75%,transparent);color:transparent}.plyr--video.plyr--loading .plyr__progress--buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress--buffer{background-color:rgba(198,214,219,.66)}.plyr__time{display:inline-block;vertical-align:middle;font-size:14px}.plyr__time+.plyr__time{display:none}@media (min-width:768px){.plyr__time+.plyr__time{display:inline-block}}.plyr__time+.plyr__time::before{content:'\2044';margin-right:10px}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__volume{display:none}.plyr .plyr__volume{-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative}.plyr .plyr__volume input[type=range]{position:relative;z-index:2}@media (min-width:480px){.plyr .plyr__volume{display:block;max-width:60px}}@media (min-width:768px){.plyr .plyr__volume{max-width:100px}}.plyr--is-ios .plyr__volume,.plyr--is-ios [data-plyr=mute]{display:none!important}.plyr--fullscreen-active{height:100%;width:100%;background:#000;border-radius:0!important}.plyr--fullscreen-active video{height:100%}.plyr--fullscreen-active .plyr__video-wrapper{height:100%;width:100%}.plyr--fullscreen-active .plyr__video-embed{overflow:visible}.plyr--fullscreen-active.plyr--vimeo .plyr__video-wrapper{height:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.plyr--fullscreen-fallback.plyr--fullscreen-active{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000000} \ No newline at end of file diff --git a/dist/plyr.js b/dist/plyr.js index a46b1cf4..7ba96f27 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -1 +1 @@ -(function(e,t,n){"use strict";"object"==typeof exports?module.exports=n(require):"function"==typeof define&&define.amd?define(n):t[e]=n()}).call(this,"Plyr",this,function(){"use strict";function e(e,t){function r(e,t,n,i){a.dispatchEvent(e,t,n,a.extend({},i,{plyr:de}))}function l(){var e=c("input:not([disabled]), button:not([disabled])"),t=e[0],n=e[e.length-1];a.on(de.elements.container,"keydown",function(e){9===e.which&&de.fullscreen.active&&(e.target!==n||e.shiftKey?e.target===t&&e.shiftKey&&(e.preventDefault(),n.focus()):(e.preventDefault(),t.focus()))},!1)}function c(e){return de.elements.container.querySelectorAll(e)}function u(e){return c(e)[0]}function d(e){a.is.string(e)?(a.removeElement(de.elements[e]),de.elements[e]=null):a.removeElement(e)}function p(e,t){a.is.string(t)?a.insertElement(e,de.media,{src:t}):a.is.array(t)&&(ge(t),t.forEach(function(t){a.insertElement(e,de.media,t)}))}function m(){return{url:de.config.iconUrl,absolute:0===de.config.iconUrl.indexOf("http")||de.browser.isIE}}function g(e,t){var n=m(),i=(n.absolute?"":n.url)+"#"+de.config.iconPrefix,o=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttributes(o,a.extend(t,{role:"presentation"}));var s=document.createElementNS("http://www.w3.org/2000/svg","use");return s.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i+"-"+e),o.appendChild(s),o}function f(e){var t=de.config.i18n[e];switch(e){case"pip":t="PIP";break;case"airplay":t="AirPlay"}return a.createElement("span",{class:de.config.classNames.hidden},t)}function y(e){var t=a.createElement("span",{class:de.config.classNames.menu.value});return t.appendChild(a.createElement("span",{class:de.config.classNames.menu.badge},e)),t}function b(e,t){var n,i,o,s=a.createElement("button");switch(a.is.object(t)||(t={}),"type"in t||(t.type="button"),"class"in t?-1===t.class.indexOf(de.config.classNames.control)&&(t.class+=" "+de.config.classNames.control):t.class=de.config.classNames.control,e){case"mute":o="toggleMute",n="volume",i="muted";break;case"captions":o="toggleCaptions",n="captions-off",i="captions-on";break;case"fullscreen":o="toggleFullscreen",n="enter-fullscreen",i="exit-fullscreen";break;case"play-large":t.class="plyr__play-large",e="play",o="play",n="play";break;default:o=e,n=e}return a.extend(t,a.getAttributesFromSelector(de.config.selectors.buttons[e],t)),a.is.string(i)&&s.appendChild(g(i,{class:"icon--"+i})),s.appendChild(g(n)),s.appendChild(f(o)),a.setAttributes(s,t),de.elements.buttons[e]=s,s}function v(e,t){var n=a.createElement("label",{for:t.id,class:de.config.classNames.hidden},de.config.i18n[e]),i=a.createElement("input",a.extend(a.getAttributesFromSelector(de.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.1,value:0,autocomplete:"off"},t));return de.elements.inputs[e]=i,{label:n,input:i}}function h(e,t){var n=a.createElement("progress",a.extend(a.getAttributesFromSelector(de.config.selectors.display[e]),{min:0,max:100,value:0},t));if("volume"!==e){n.appendChild(a.createElement("span",null,"0"));var i="";switch(e){case"played":i=de.config.i18n.played;break;case"buffer":i=de.config.i18n.buffered}n.textContent="% "+i.toLowerCase()}return de.elements.display[e]=n,n}function w(e){var t=a.createElement("span",{class:"plyr__time"});return t.appendChild(a.createElement("span",{class:de.config.classNames.hidden},de.config.i18n[e])),t.appendChild(a.createElement("span",a.getAttributesFromSelector(de.config.selectors.display[e]),"00:00")),de.elements.display[e]=t,t}function k(e){if(!a.is.empty(de.config.controls)){var t=a.createElement("div",a.getAttributesFromSelector(de.config.selectors.controls.wrapper));if(a.inArray(de.config.controls,"restart")&&t.appendChild(b("restart")),a.inArray(de.config.controls,"rewind")&&t.appendChild(b("rewind")),a.inArray(de.config.controls,"play")&&(t.appendChild(b("play")),t.appendChild(b("pause"))),a.inArray(de.config.controls,"fast-forward")&&t.appendChild(b("fast-forward")),a.inArray(de.config.controls,"progress")){var n=a.createElement("span",a.getAttributesFromSelector(de.config.selectors.progress)),i=v("seek",{id:"plyr-seek-"+e.id});if(n.appendChild(i.label),n.appendChild(i.input),n.appendChild(h("played")),n.appendChild(h("buffer")),de.config.tooltips.seek){var o=a.createElement("span",{role:"tooltip",class:de.config.classNames.tooltip},"00:00");n.appendChild(o),de.elements.display.seekTooltip=o}de.elements.progress=n,t.appendChild(de.elements.progress)}if(a.inArray(de.config.controls,"current-time")&&t.appendChild(w("currentTime")),a.inArray(de.config.controls,"duration")&&t.appendChild(w("duration")),a.inArray(de.config.controls,"mute")&&t.appendChild(b("mute")),a.inArray(de.config.controls,"volume")){var r=a.createElement("span",{class:"plyr__volume"}),l={max:1,step:.05,value:de.config.volume},c=v("volume",a.extend(l,{id:"plyr-volume-"+e.id}));r.appendChild(c.label),r.appendChild(c.input);var u=h("volume",l);r.appendChild(u),t.appendChild(r)}if(a.inArray(de.config.controls,"captions")&&t.appendChild(b("captions")),a.inArray(de.config.controls,"settings")&&!a.is.empty(de.config.settings)){var d=a.createElement("div",{class:"plyr__menu"});d.appendChild(b("settings",{id:"plyr-settings-toggle-"+e.id,"aria-haspopup":!0,"aria-controls":"plyr-settings-"+e.id,"aria-expanded":!1}));var p=a.createElement("form",{class:"plyr__menu__container",id:"plyr-settings-"+e.id,"aria-hidden":!0,"aria-labelled-by":"plyr-settings-toggle-"+e.id,role:"tablist",tabindex:-1}),m=a.createElement("div"),g=a.createElement("div",{id:"plyr-settings-"+e.id+"-home","aria-hidden":!1,"aria-labelled-by":"plyr-settings-toggle-"+e.id,role:"tabpanel"}),f=a.createElement("ul",{role:"tablist"});de.config.settings.forEach(function(t){var n=a.createElement("li",{role:"tab",hidden:""}),i=a.createElement("button",a.extend(a.getAttributesFromSelector(de.config.selectors.buttons.settings),{type:"button",class:de.config.classNames.control+" "+de.config.classNames.control+"--forward",id:"plyr-settings-"+e.id+"-"+t+"-tab","aria-haspopup":!0,"aria-controls":"plyr-settings-"+e.id+"-"+t,"aria-expanded":!1}),de.config.i18n[t]),o=a.createElement("span",{class:de.config.classNames.menu.value});o.innerHTML=e[t],i.appendChild(o),n.appendChild(i),f.appendChild(n),de.elements.settings.tabs[t]=n}),g.appendChild(f),m.appendChild(g),de.config.settings.forEach(function(t){var n=a.createElement("div",{id:"plyr-settings-"+e.id+"-"+t,"aria-hidden":!0,"aria-labelled-by":"plyr-settings-"+e.id+"-"+t+"-tab",role:"tabpanel",tabindex:-1,hidden:""}),i=a.createElement("button",{type:"button",class:de.config.classNames.control+" "+de.config.classNames.control+"--back","aria-haspopup":!0,"aria-controls":"plyr-settings-"+e.id+"-home","aria-expanded":!1},de.config.i18n[t]);n.appendChild(i);var o=a.createElement("ul");n.appendChild(o),m.appendChild(n),de.elements.settings.panes[t]=n}),p.appendChild(m),d.appendChild(p),t.appendChild(d),de.elements.settings.form=p,de.elements.settings.menu=d}return a.inArray(de.config.controls,"pip")&&s.pip&&t.appendChild(b("pip")),a.inArray(de.config.controls,"airplay")&&s.airplay&&t.appendChild(b("airplay")),a.inArray(de.config.controls,"fullscreen")&&t.appendChild(b("fullscreen")),a.inArray(de.config.controls,"play-large")&&(de.elements.buttons.playLarge=b("play-large"),de.elements.container.appendChild(de.elements.buttons.playLarge)),de.elements.controls=t,a.inArray(de.config.controls,"settings")&&a.inArray(de.config.settings,"speed")&&x(),t}}function C(e,t){var n=de.elements.settings.tabs[e],i=de.elements.settings.panes[e];a.is.htmlElement(n)&&(t?n.removeAttribute("hidden"):n.setAttribute("hidden","")),a.is.htmlElement(i)&&(t?i.removeAttribute("hidden"):i.setAttribute("hidden",""))}function E(e,t){function n(e){var t="";switch(e){case"hd2160":t="4K";break;case"hd1440":t="WQHD";break;case"hd1080":case"hd720":t="HD"}return t.length?y(t):null}var i=de.elements.settings.panes.quality.querySelector("ul");a.is.array(e)?de.quality.options=e.filter(function(e){return a.inArray(de.config.quality.options,e)}):de.quality.options=de.config.quality.options,a.is.string(t)&&a.inArray(de.quality.options,t)&&(de.quality.selected=t);var o=!a.is.empty(de.quality.options)&&"youtube"===de.type;C("quality",o),o&&(a.emptyElement(i),de.quality.options.forEach(function(e){var t=a.createElement("li"),o=a.createElement("label",{class:de.config.classNames.control}),s=a.createElement("input",a.extend(a.getAttributesFromSelector(de.config.selectors.inputs.quality),{type:"radio",name:"plyr-quality",value:e}));o.appendChild(s),o.appendChild(document.createTextNode(A("quality",e)));var r=n(e);a.is.htmlElement(r)&&o.appendChild(r),t.appendChild(o),i.appendChild(t)}),T("quality",i))}function A(e,t){switch(e){case"speed":return 1===t?"Normal":t+"×";case"quality":switch(t){case"hd2160":return"2160P";case"hd1440":return"1440P";case"hd1080":return"1080P";case"hd720":return"720P";case"large":return"480P";case"medium":return"360P";case"small":return"240P";case"tiny":return"Tiny";case"default":return"Auto";default:return t}case"captions":return I()}}function T(e,t){var n=de.elements.settings.panes[e],i=null;switch(e){case"captions":i=de.captions.language,de.captions.enabled||(i="");break;default:if(i=de[e].selected,a.is.empty(i)&&(i=de.config[e].default),!a.inArray(de[e].options,i))return void ge("Unsupported option")}a.is.htmlElement(t)||(t=n&&n.querySelector("ul"));var o=t&&t.querySelector('input[value="'+i+'"]');a.is.htmlElement(o)&&(o.checked=!0,de.elements.settings.tabs[e].querySelector("."+de.config.classNames.menu.value).innerHTML=A(e,i))}function S(){var e=de.elements.settings.panes.captions.querySelector("ul");if(C("captions",!a.is.empty(de.captions.tracks)),a.emptyElement(e),!a.is.empty(de.captions.tracks)){var t=[].map.call(de.captions.tracks,function(e){return{language:e.language,badge:!0,label:a.is.empty(e.label)?e.language.toUpperCase():e.label}});t.unshift({language:"",label:de.config.i18n.none}),t.forEach(function(t){var n=a.createElement("li"),i=a.createElement("label",{class:de.config.classNames.control}),o=a.createElement("input",a.extend(a.getAttributesFromSelector(de.config.selectors.inputs.language),{type:"radio",name:"plyr-language",value:t.language}));t.language.toLowerCase()===de.captions.language.toLowerCase()&&(o.checked=!0),i.appendChild(o),i.appendChild(document.createTextNode(t.label||t.language)),t.badge&&i.appendChild(y(t.language.toUpperCase())),n.appendChild(i),e.appendChild(n)}),T("captions",e)}}function x(e,t){a.is.array(e)?de.speed.options=e.filter(function(e){return a.inArray(de.config.speed.options,e)}):de.speed.options=de.config.speed.options,a.is.number(t)&&a.inArray(de.speed.options,t)&&(de.speed.selected=t);var n=!a.is.empty(de.speed.options);if(C("speed",n),n){var i=de.elements.settings.panes.speed.querySelector("ul");de.elements.settings.tabs.speed.removeAttribute("hidden"),de.elements.settings.panes.speed.removeAttribute("hidden"),a.emptyElement(i),de.speed.options.forEach(function(e){var t=a.createElement("li"),n=a.createElement("label",{class:de.config.classNames.control}),o=a.createElement("input",a.extend(a.getAttributesFromSelector(de.config.selectors.inputs.speed),{type:"radio",name:"plyr-speed",value:e}));n.appendChild(o),n.insertAdjacentHTML("beforeend",A("speed",e)),t.appendChild(n),i.appendChild(t)}),T("speed",i)}}function N(){if(de.supported.full&&("audio"!==de.type||de.config.fullscreen.allowAudio)&&de.config.fullscreen.enabled){var e=s.fullscreen;e||de.config.fullscreen.fallback&&!a.inFrame()?(me((e?"Native":"Fallback")+" fullscreen enabled"),e||a.toggleClass(de.elements.container,de.config.classes.fullscreen.fallback,!0),a.toggleClass(de.elements.container,de.config.classNames.fullscreen.enabled,!0)):me("Fullscreen not supported and fallback disabled"),de.elements.buttons&&de.elements.buttons.fullscreen&&a.toggleState(de.elements.buttons.fullscreen,!1),l()}}function P(){function e(){de.captions.currentTrack=null,[].forEach.call(de.captions.tracks,function(e){e.language===de.captions.language.toLowerCase()&&(de.captions.currentTrack=e)})}if(a.is.empty(de.storage.language)?a.is.empty(de.captions.language)&&(de.captions.language=de.config.captions.language.toLowerCase()):de.captions.language=de.storage.language,a.is.boolean(de.captions.enabled)||(a.is.empty(de.storage.language)?de.captions.enabled=de.config.captions.active:de.captions.enabled=de.storage.captions),!a.inArray(["video","vimeo"],de.type)||"video"===de.type&&!s.textTracks)return de.captions.tracks=null,void(a.inArray(de.config.controls,"settings")&&a.inArray(de.config.settings,"captions")&&S());if(a.is.htmlElement(de.elements.captions)||(de.elements.captions=a.createElement("div",a.getAttributesFromSelector(de.config.selectors.captions)),a.insertAfter(de.elements.captions,de.elements.wrapper)),"video"===de.type&&(de.captions.tracks=de.media.textTracks),a.toggleClass(de.elements.container,de.config.classNames.captions.enabled,!a.is.empty(de.captions.tracks)),!a.is.empty(de.captions.tracks)){if(_(),e(),!a.is.track(de.captions.currentTrack)){var t=de.config.captions.language;de.captions.language=t,e(),a.is.track(de.captions.currentTrack)||de.toggleCaptions(!1),T("captions")}if("video"===de.type){[].forEach.call(de.captions.tracks,function(e){a.off(e,"cuechange",q),e.mode="hidden"});var n=a.inArray(["captions","subtitles"],de.captions.currentTrack&&de.captions.currentTrack.kind);a.is.track(de.captions.currentTrack)&&n&&(a.on(de.captions.currentTrack,"cuechange",q),de.captions.currentTrack.activeCues&&de.captions.currentTrack.activeCues.length>0&&q(de.captions.currentTrack))}else"vimeo"===de.type&&de.captions.active&&de.embed.enableTextTrack(de.captions.language);a.inArray(de.config.controls,"settings")&&a.inArray(de.config.settings,"captions")&&S()}}function I(){return!s.textTracks||a.is.empty(de.captions.tracks)?de.config.i18n.none:de.captions.enabled?de.captions.currentTrack.label:de.config.i18n.disabled}function q(e){a.is.event(e)&&(e=e.target);var t=e.activeCues[0];a.is.cue(t)?F(t.getCueAsHTML()):F(),r(de.media,"cuechange")}function F(e){if(a.is.htmlElement(de.elements.captions)){var t=a.createElement("span");a.emptyElement(de.elements.captions),a.is.undefined(e)&&(e=""),a.is.string(e)?t.textContent=e.trim():t.appendChild(e),de.elements.captions.appendChild(t)}else ge("No captions element to render to")}function _(){if(de.elements.buttons.captions){var e=de.storage.captions;a.is.boolean(e)?de.captions.active=e:e=de.captions.active,e&&(a.toggleClass(de.elements.container,de.config.classNames.captions.active,!0),a.toggleState(de.elements.buttons.captions,!0))}}function L(){if(de.config.loadSprite){var e=m();e.absolute?(me("AJAX loading absolute SVG sprite"+(de.browser.isIE?" (due to IE)":"")),a.loadSprite(e.url,"sprite-plyr")):me("Sprite will be used as external resource directly")}de.id=Math.floor(1e4*Math.random());var t=null;t=a.is.string(de.config.controls)?de.config.controls:a.is.function(de.config.controls)?de.config.controls({id:de.id,seektime:de.config.seekTime}):k({id:de.id,seektime:de.config.seekTime,speed:"-",quality:"-",captions:I(),loop:"None"});var n;if(a.is.string(de.config.selectors.controls.container)&&(n=document.querySelector(de.config.selectors.controls.container)),a.is.htmlElement(n)||(n=de.elements.container),a.is.htmlElement(t)?n.appendChild(t):n.insertAdjacentHTML("beforeend",t),a.is.htmlElement(de.elements.controls)&&M(),de.config.tooltips.controls)for(var i=c([de.config.selectors.controls.wrapper," ",de.config.selectors.labels," .",de.config.classNames.hidden].join("")),o=i.length-1;o>=0;o--){var s=i[o];a.toggleClass(s,de.config.classNames.hidden,!1),a.toggleClass(s,de.config.classNames.tooltip,!0)}}function M(){try{return de.elements.controls=u(de.config.selectors.controls.wrapper),de.elements.buttons={play:c(de.config.selectors.buttons.play),pause:u(de.config.selectors.buttons.pause),restart:u(de.config.selectors.buttons.restart),rewind:u(de.config.selectors.buttons.rewind),forward:u(de.config.selectors.buttons.forward),mute:u(de.config.selectors.buttons.mute),pip:u(de.config.selectors.buttons.pip),airplay:u(de.config.selectors.buttons.airplay),settings:u(de.config.selectors.buttons.settings),captions:u(de.config.selectors.buttons.captions),fullscreen:u(de.config.selectors.buttons.fullscreen)},de.elements.progress=u(de.config.selectors.progress),de.elements.inputs={seek:u(de.config.selectors.inputs.seek),volume:u(de.config.selectors.inputs.volume)},de.elements.display={buffer:u(de.config.selectors.display.buffer),played:u(de.config.selectors.display.played),volume:u(de.config.selectors.display.volume),duration:u(de.config.selectors.display.duration),currentTime:u(de.config.selectors.display.currentTime)},a.is.htmlElement(de.elements.progress)&&(de.elements.display.seekTooltip=de.elements.progress.querySelector("."+de.config.classNames.tooltip)),!0}catch(e){return ge("It looks like there is a problem with your custom controls HTML",e),O(!0),!1}}function V(){a.toggleClass(de.elements.container,de.config.selectors.container.replace(".",""),de.supported.full)}function O(e){e&&a.inArray(i.html5,de.type)?de.media.setAttribute("controls",""):de.media.removeAttribute("controls")}function j(e){var t=de.config.i18n.play;if(a.is.string(de.config.title)&&!a.is.empty(de.config.title)&&(t+=", "+de.config.title,de.elements.container.setAttribute("aria-label",de.config.title)),de.supported.full&&(a.is.htmlElement(de.elements.buttons.play)&&de.elements.buttons.play.setAttribute("aria-label",t),a.is.htmlElement(de.elements.buttons.playLarge)&&de.elements.buttons.playLarge.setAttribute("aria-label",t)),a.is.htmlElement(e)){var n=a.is.string(de.config.title)&&!a.is.empty(de.config.title)?de.config.title:"video";e.setAttribute("title",de.config.i18n.frameTitle.replace("{title}",n))}}function D(){var e=null;de.storage={},s.storage&&de.config.storage.enabled&&(window.localStorage.removeItem("plyr-volume"),(e=window.localStorage.getItem(de.config.storage.key))&&(/^\d+(\.\d+)?$/.test(e)?R({volume:parseFloat(e)}):de.storage=JSON.parse(e)))}function R(e){s.storage&&de.config.storage.enabled&&(a.extend(de.storage,e),window.localStorage.setItem(de.config.storage.key,JSON.stringify(de.storage)))}function H(){de.media?(de.supported.full&&(a.toggleClass(de.elements.container,de.config.classNames.type.replace("{0}",de.type),!0),a.inArray(i.embed,de.type)&&a.toggleClass(de.elements.container,de.config.classNames.type.replace("{0}","video"),!0),a.toggleClass(de.elements.container,de.config.classNames.pip.enabled,s.pip&&"video"===de.type),a.toggleClass(de.elements.container,de.config.classNames.airplay.enabled,s.airplay&&a.inArray(i.html5,de.type)),a.toggleClass(de.elements.container,de.config.classNames.stopped,de.config.autoplay),a.toggleClass(de.elements.container,de.config.classNames.isIos,de.browser.isIos),a.toggleClass(de.elements.container,de.config.classNames.isTouch,s.touch)),a.inArray(["video","youtube","vimeo"],de.type)&&(de.elements.wrapper=a.createElement("div",{class:de.config.classNames.video}),a.wrap(de.media,de.elements.wrapper)),a.inArray(i.embed,de.type)&&B()):ge("No media element found!")}function B(){var e,t=de.type+"-"+Math.floor(1e4*Math.random());switch(de.type){case"youtube":e=a.parseYouTubeId(de.embedId);break;default:e=de.embedId}for(var n=c('[id^="'+de.type+'-"]'),i=n.length-1;i>=0;i--)a.removeElement(n[i]);if(a.toggleClass(de.elements.wrapper,de.config.classNames.embed,!0),"youtube"===de.type)de.media.setAttribute("id",t),a.is.object(window.YT)?W(e):(a.injectScript(de.config.urls.youtube.api),window.onYouTubeReadyCallbacks=window.onYouTubeReadyCallbacks||[],window.onYouTubeReadyCallbacks.push(function(){W(e)}),window.onYouTubeIframeAPIReady=function(){window.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===de.type)if(de.media.setAttribute("id",t),a.is.object(window.Vimeo))Q(e);else{a.injectScript(de.config.urls.vimeo.api);var o=window.setInterval(function(){a.is.object(window.Vimeo)&&(window.clearInterval(o),Q(e))},50)}else if("soundcloud"===de.type){var s=a.createElement("iframe");s.loaded=!1,a.on(s,"load",function(){s.loaded=!0}),a.setAttributes(s,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+e,id:t}),de.media.appendChild(s),window.SC||a.injectScript(de.config.urls.soundcloud.api);var r=window.setInterval(function(){window.SC&&s.loaded&&(window.clearInterval(r),U.call(s))},50)}}function Y(){de.supported.full&&(ce(),ue()),j(u("iframe"))}function W(e){de.embed=new window.YT.Player(de.media.id,{videoId:e,playerVars:{autoplay:de.config.autoplay?1:0,controls:de.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,disablekb:1,playsinline:1,origin:window.location.hostname,widget_referrer:window.location.href},events:{onError:function(e){r(de.elements.container,"error",!0,{code:e.data,embed:e.target})},onPlaybackQualityChange:function(e){var t=e.target;de.media.quality=t.getPlaybackQuality(),r(de.media,"qualitychange")},onPlaybackRateChange:function(e){var t=e.target;de.media.playbackRate=t.getPlaybackRate(),r(de.media,"ratechange")},onReady:function(e){var t=e.target;de.media.play=function(){t.playVideo(),de.media.paused=!1},de.media.pause=function(){t.pauseVideo(),de.media.paused=!0},de.media.stop=function(){t.stopVideo(),de.media.paused=!0},de.media.duration=t.getDuration(),de.media.paused=!0,de.media.currentTime=0,de.media.muted=t.isMuted(),a.inArray(de.config.controls,"settings")&&a.inArray(de.config.settings,"speed")&&x(t.getAvailablePlaybackRates(),t.getPlaybackRate()),de.config.title=t.getVideoData().title,de.supported.full&&de.media.setAttribute("tabindex",-1),Y(),r(de.media,"timeupdate"),r(de.media,"durationchange"),window.clearInterval(pe.buffering),pe.buffering=window.setInterval(function(){de.media.buffered=t.getVideoLoadedFraction(),(null===de.media.lastBuffered||de.media.lastBuffered0;n=("0"+n).slice(-2),i=("0"+i).slice(-2);var r=(s?a+":":"")+i+":"+n;return t.textContent=r,r}}function ne(){if(de.supported.full){var e=de.getDuration()||0;!de.elements.display.duration&&de.config.displayDuration&&de.media.paused&&te(e,de.elements.display.currentTime),de.elements.display.duration&&te(e,de.elements.display.duration),oe()}}function ie(e){te(de.media.currentTime,de.elements.display.currentTime),e&&"timeupdate"===e.type&&de.media.seeking||Z(e)}function ae(e){a.is.number(e)||(e=0);var t=de.getDuration(),n=a.getPercentage(e,t);de.elements.progress&&de.elements.display.played&&(de.elements.display.played.value=n),de.elements.buttons&&de.elements.inputs.seek&&(de.elements.inputs.seek.value=n)}function oe(e){var t=de.getDuration();if(de.config.tooltips.seek&&a.is.htmlElement(de.elements.inputs.seek)&&a.is.htmlElement(de.elements.display.seekTooltip)&&0!==t){var n=de.elements.inputs.seek.getBoundingClientRect(),i=0,o=de.config.classNames.tooltip+"--visible";if(a.is.event(e))i=100/n.width*(e.pageX-n.left);else{if(!a.hasClass(de.elements.display.seekTooltip,o))return;i=de.elements.display.seekTooltip.style.left.replace("%","")}i<0?i=0:i>100&&(i=100),te(t/100*i,de.elements.display.seekTooltip),de.elements.display.seekTooltip.style.left=i+"%",a.is.event(e)&&a.inArray(["mouseenter","mouseleave"],e.type)&&a.toggleClass(de.elements.display.seekTooltip,o,"mouseenter"===e.type)}}function se(){function e(){var e=de.togglePlay(),t=de.elements.buttons[e?"pause":"play"];t&&t.focus()}function t(e){return e.keyCode?e.keyCode:e.which}function n(n){var i=t(n),o="keydown"===n.type,l=o&&i===r;if(a.is.number(i))if(o){var c=[48,49,50,51,52,53,54,56,57,32,75,38,40,77,39,37,70,67,73,76,79],u=[38,40];if(a.inArray(u,i)){var d=a.getFocusElement();if(a.is.htmlElement(d)&&"radio"===a.getFocusElement().type)return}switch(a.inArray(c,i)&&(n.preventDefault(),n.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:l||function(){var e=de.media.duration;a.is.number(e)&&de.seek(e/10*(i-48))}();break;case 32:case 75:l||e();break;case 38:de.increaseVolume();break;case 40:de.decreaseVolume();break;case 77:l||de.toggleMute();break;case 39:de.forward();break;case 37:de.rewind();break;case 70:de.toggleFullscreen();break;case 67:l||de.toggleCaptions();break;case 73:de.setLoop("start");break;case 76:de.setLoop();break;case 79:de.setLoop("end")}!s.fullscreen&&de.fullscreen.active&&27===i&&de.toggleFullscreen(),r=i}else r=null}var i=de.browser.isIE?"change":"input";if(de.config.keyboard.focused){var r=null;de.config.keyboard.global&&a.on(window,"keydown keyup",function(e){var i=t(e),o=a.getFocusElement(),s=[48,49,50,51,52,53,54,56,57,75,77,70,67,73,76,79];!a.inArray(s,i)||a.is.htmlElement(o)&&a.matches(o,de.config.selectors.editable)||n(e)},!1),a.on(de.elements.container,"keydown keyup",n,!1)}a.on(de.elements.container,"focusout",function(e){a.toggleClass(e.target,de.config.classNames.tabFocus,!1)}),a.on(de.elements.container,"keydown",function(e){9===e.keyCode&&window.setTimeout(function(){a.toggleClass(a.getFocusElement(),de.config.classNames.tabFocus,!0)},0)});var l=function(e,t,n){a.is.function(t)&&t.call(this,e),a.is.function(n)&&n.call(this,e)};a.proxy(de.elements.buttons.play,"click",de.config.listeners.play,e),a.proxy(de.elements.buttons.playLarge,"click",de.config.listeners.play,e),a.proxy(de.elements.buttons.pause,"click",de.config.listeners.pause,e),a.proxy(de.elements.buttons.restart,"click",de.config.listeners.restart,function(){de.restart()}),a.proxy(de.elements.buttons.rewind,"click",de.config.listeners.rewind,function(){de.rewind()}),a.proxy(de.elements.buttons.forward,"click",de.config.listeners.forward,function(){de.forward()}),a.proxy(de.elements.buttons.mute,"click",de.config.listeners.mute,function(){de.toggleMute()}),a.proxy(de.elements.buttons.captions,"click",de.config.listeners.captions,function(){de.toggleCaptions()}),a.proxy(de.elements.buttons.fullscreen,"click",de.config.listeners.fullscreen,function(e){de.toggleFullscreen(e)}),a.proxy(de.elements.buttons.pip,"click",de.config.listeners.pip,function(){de.togglePictureInPicture()}),a.proxy(de.elements.buttons.airplay,"click",de.config.listeners.airplay,function(){de.airPlay()}),a.on(de.elements.buttons.settings,"click",X),a.on(document.documentElement,"click",X),a.on(de.elements.settings.form,"click",G),a.on(de.elements.settings.form,"click",function(e){a.matches(e.target,de.config.selectors.inputs.language)?l.call(this,e,de.config.listeners.language,function(){de.toggleCaptions(!0),de.setLanguage(e.target.value.toLowerCase())}):a.matches(e.target,de.config.selectors.inputs.quality)?l.call(this,e,de.config.listeners.quality,function(){de.setQuality(e.target.value)}):a.matches(e.target,de.config.selectors.inputs.speed)?l.call(this,e,de.config.listeners.speed,function(){de.setSpeed(parseFloat(e.target.value))}):a.matches(e.target,de.config.selectors.buttons.loop)&&l.call(this,e,de.config.listeners.loop,function(){ge("Set loop")})}),a.proxy(de.elements.inputs.seek,i,de.config.listeners.seek,function(e){var t=de.getDuration();de.seek(e.target.value/e.target.max*t)}),a.proxy(de.elements.inputs.volume,i,de.config.listeners.volume,function(){de.setVolume(event.target.value)}),a.on(de.elements.progress,"mouseenter mouseleave mousemove",oe),de.config.hideControls&&(a.on(de.elements.container,"mouseenter mouseleave mousemove touchstart touchend touchcancel touchmove enterfullscreen",function(e){de.toggleControls(e)}),a.on(de.elements.controls,"mouseenter mouseleave",function(e){de.elements.controls.hover="mouseenter"===e.type}),a.on(de.elements.controls,"mousedown mouseup touchstart touchend touchcancel",function(e){de.elements.controls.pressed=a.inArray(["mousedown","touchstart"],e.type)}),a.on(de.elements.controls,"focus blur",function(e){de.toggleControls(e)},!0)),a.proxy(de.elements.inputs.volume,"wheel",de.config.listeners.volume,function(e){var t=e.webkitDirectionInvertedFromDevice,n=0;(e.deltaY<0||e.deltaX>0)&&(t?(de.decreaseVolume(.02),n=-1):(de.increaseVolume(.02),n=1)),(e.deltaY>0||e.deltaX<0)&&(t?(de.increaseVolume(.02),n=1):(de.decreaseVolume(.02),n=-1)),(1===n&&de.media.volume<1||-1===n&&de.media.volume>0)&&e.preventDefault()},!1),s.fullscreen&&a.on(document,o.eventType,function(e){de.toggleFullscreen(e)})}function re(){if(a.on(de.media,"timeupdate seeking",ie),a.on(de.media,"durationchange loadedmetadata",ne),a.on(de.media,"ended",function(){"video"===de.type&&de.config.showPosterOnEnd&&("video"===de.type&&F(),de.restart(),de.media.load())}),a.on(de.media,"progress playing",Z),a.on(de.media,"volumechange",K),a.on(de.media,"play pause ended",J),a.on(de.media,"waiting canplay seeked",$),de.config.clickToPlay&&"audio"!==de.type){var e=u("."+de.config.classNames.video);if(!e)return;e.style.cursor="pointer",a.on(e,"click",function(){de.config.hideControls&&s.touch&&!de.media.paused||(de.media.paused?de.play():de.media.ended?(de.restart(),de.play()):de.pause())})}de.config.disableContextMenu&&a.on(de.media,"contextmenu",function(e){e.preventDefault()},!1),a.on(de.media,"ratechange",function(){de.speed.selected=de.media.playbackRate,T("speed"),R({speed:de.speed.selected})}),a.on(de.media,"qualitychange",function(){de.quality.selected=de.media.quality,T("quality"),R({quality:de.quality.selected})}),a.on(de.media,"captionchange",function(){R({language:de.captions.language})}),a.on(de.media,"captionsenabled captionsdisabled",function(){T("captions"),R({captions:de.captions.enabled})}),a.on(de.media,de.config.events.concat(["keyup","keydown"]).join(" "),function(e){r(de.elements.container,e.type,!0)})}function le(){if(a.inArray(i.html5,de.type)){for(var e=de.media.querySelectorAll("source"),t=0;t=0;n--){var i=n>0?t.cloneNode(!0):t,a=e[n],o=a.parentNode,s=a.nextSibling;return i.appendChild(a),s?o.insertBefore(i,s):o.appendChild(i),i}},removeElement:function(e){a.is.htmlElement(e)&&a.is.htmlElement(e.parentNode)&&e.parentNode.removeChild(e)},insertAfter:function(e,t){t.parentNode.insertBefore(e,t.nextSibling)},createElement:function(e,t,n){var i=document.createElement(e);return a.is.object(t)&&a.setAttributes(i,t),a.is.string(n)&&(i.textContent=n),i},insertElement:function(e,t,n,i){t.appendChild(a.createElement(e,n,i))},emptyElement:function(e){for(var t=e.childNodes.length;t--;)e.removeChild(e.lastChild)},setAttributes:function(e,t){for(var n in t)e.setAttribute(n,t[n])},getAttributesFromSelector:function(e,t){if(!a.is.string(e)||a.is.empty(e))return{};var n={};return e.split(",").forEach(function(e){switch((e=e.trim()).charAt(0)){case".":var i=e.replace(".","");a.is.object(t)&&a.is.string(t.class)&&(t.class+=" "+i),n.class=i;break;case"#":n.id=e.replace("#","");break;case"[":var o=(e=e.replace(/[[\]]/g,"")).split("="),s=o[0],r=o.length>1?o[1].replace(/["']/g,""):"";n[s]=r}}),n},toggleClass:function(e,t,n){if(a.is.htmlElement(e)){var i=!1;if(e.classList)i=e.classList.contains(t),e.classList[n?"add":"remove"](t);else{i=a.inArray(e.className.split(" "),t);var o=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=o+(n?" "+t:"")}return n&&!i||!n&&i}return null},hasClass:function(e,t){return!!e&&(e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className))},matches:function(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(e){return-1!==[].indexOf.call(document.querySelectorAll(e),this)}).call(e,t)},getFocusElement:function(){var e=document.activeElement;return e=e&&e!==document.body?document.querySelector(":focus"):null},proxy:function(e,t,n,i,o,s){a.on(e,t,function(t){n&&n.apply(e,[t]),i.apply(e,[t])},o,s)},toggleListener:function(e,t,n,i,o,r){if(null!==e&&!a.is.undefined(e)){if(t=t.split(" "),a.is.boolean(r)||(r=!1),a.is.boolean(o)||(o=!0),e instanceof NodeList){var l=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);return l.shift(),void[].forEach.call(e,function(e){e instanceof Node&&a.toggleListener.apply(null,[e].concat(l))})}var c=r;s.passiveListeners&&(c={passive:o,capture:r}),t.forEach(function(t){e[i?"addEventListener":"removeEventListener"](t,n,c)})}},on:function(e,t,n,i,o){a.toggleListener(e,t,n,!0,i,o)},off:function(e,t,n,i,o){a.toggleListener(e,t,n,!1,i,o)},dispatchEvent:function(e,t,n,i){if(e&&t){a.is.boolean(n)||(n=!1);var o;a.is.function(window.CustomEvent)?o=window.CustomEvent:(o=function(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}).prototype=window.Event.prototype;var s=new o(t,{bubbles:n,detail:i});e.dispatchEvent(s)}},toggleState:function(e,t){if(e)return t=a.is.boolean(t)?t:!e.getAttribute("aria-pressed"),e.setAttribute("aria-pressed",t),t},getPercentage:function(e,t){return 0===e||0===t||isNaN(e)||isNaN(t)?0:(e/t*100).toFixed(2)},extend:function(){var e=arguments;if(e.length){if(1===e.length)return e[0];var t=Array.prototype.shift.call(e);a.is.object(t)||(t={});for(var n=e.length,i=0;is&&(n=s),t.core.updateSeekDisplay(n),a.inArray(i.embed,t.type)){switch(t.type){case"youtube":t.embed.seekTo(n);break;case"vimeo":t.embed.setCurrentTime(n);break;case"soundcloud":t.embed.seekTo(1e3*n)}o&&t.pause(),t.core.trigger(t.media,"timeupdate"),t.media.seeking=!0,t.core.trigger(t.media,"seeking")}else t.media.currentTime=n.toFixed(4);return t.core.log("Seeking to "+t.media.currentTime+" seconds"),t},e.prototype.setVolume=function(e){var t=this,n=!a.is.undefined(e);if(a.is.string(e)&&(e=parseFloat(e)),a.is.number(e)||(e=t.storage.volume),a.is.number(e)||(e=t.config.volume),e>1&&(e=1),e<0&&(e=0),t.media.volume=e,a.inArray(i.embed,t.type)){switch(t.type){case"youtube":t.embed.setVolume(100*t.media.volume);break;case"vimeo":case"soundcloud":t.embed.setVolume(t.media.volume)}t.core.trigger(t.media,"volumechange")}return 0===e?t.toggleMute(!0):t.media.muted&&n&&t.toggleMute(),t},e.prototype.increaseVolume=function(e){var t=this,n=t.media.muted?0:t.media.volume;return a.is.number(e)||(e=1),t.setVolume(n+e),t},e.prototype.decreaseVolume=function(e){var t=this,n=t.media.muted?0:t.media.volume;return a.is.number(e)||(e=1),t.setVolume(n-e),t},e.prototype.toggleMute=function(e){var t=this;if(a.is.boolean(e)||(e=!t.media.muted),a.toggleState(t.elements.buttons.mute,e),t.media.muted=e,t.media.muted||0!==t.media.volume||t.setVolume(t.config.volume),a.inArray(i.embed,t.type)){switch(t.type){case"youtube":t.embed[t.media.muted?"mute":"unMute"]();break;case"vimeo":case"soundcloud":t.embed.setVolume(t.media.muted?0:t.config.volume)}t.core.trigger(t.media,"volumechange")}return t},e.prototype.setSpeed=function(e){var t=this;if(a.is.number(e)||(e=parseFloat(t.storage.speed||t.speed.selected||t.config.speed.default)),e<.1&&(e=.1),e>2&&(e=2),a.inArray(t.config.speed.options,e)){switch(t.type){case"youtube":t.embed.setPlaybackRate(e);break;case"vimeo":e=null,t.core.warn("Vimeo playback rate change is not supported");break;default:t.media.playbackRate=e}return t}t.core.warn("Unsupported speed ("+e+")")},e.prototype.setQuality=function(e){var t=this;a.is.string(e)||(e=parseFloat(t.storage.quality||t.config.quality.selected));{if(a.inArray(t.config.quality.options,e)){switch(t.type){case"youtube":t.core.trigger(t.media,"qualityrequested",!1,{quality:e}),t.embed.setPlaybackQuality(e);break;default:t.core.warn("Quality options are only available for YouTube")}return t}t.core.warn("Unsupported quality option ("+e+")")}},e.prototype.setLoop=function(e){var t=this;a.inArray(["start","end","all","none","toggle"],e)||(e="toggle");var n=Number(t.media.currentTime);switch(e){case"start":t.config.loop.end&&t.config.loop.end<=n&&(t.config.loop.end=null),t.config.loop.start=n,t.config.loop.indicator.start=t.elements.display.played.value;break;case"end":if(t.config.loop.start>=n)return;t.config.loop.end=n,t.config.loop.indicator.end=t.elements.display.played.value;break;case"all":t.config.loop.start=0,t.config.loop.end=t.media.duration-2,t.config.loop.indicator.start=0,t.config.loop.indicator.end=100;break;case"toggle":t.config.loop.active?(t.config.loop.start=0,t.config.loop.end=null):(t.config.loop.start=0,t.config.loop.end=t.media.duration-2);break;default:t.config.loop.start=0,t.config.loop.end=null}return t},e.prototype.source=function(e){var t=this;if(a.is.object(e))return t.core.updateSource(e),t;var n;switch(t.type){case"youtube":n=t.embed.getVideoUrl();break;case"vimeo":t.embed.getVideoUrl.then(function(e){n=e});break;case"soundcloud":t.embed.getCurrentSound(function(e){n=e.permalink_url});break;default:n=t.media.currentSrc}return n},e.prototype.poster=function(e){var t=this;return a.is.string(e)?("video"===t.type?t.media.setAttribute("poster",e):t.core.warn("Poster can only be set on HTML5 video"),t):t.media.getAttribute("poster")},e.prototype.toggleCaptions=function(e){var t=this;if(t.supported.full&&t.elements.buttons.captions)return a.is.boolean(e)||(e=-1===t.elements.container.className.indexOf(t.config.classNames.captions.active)),t.captions.enabled===e?t:(t.captions.enabled=e,a.toggleState(t.elements.buttons.captions,t.captions.enabled),a.toggleClass(t.elements.container,t.config.classNames.captions.active,t.captions.enabled),t.core.trigger(t.media,t.captions.enabled?"captionsenabled":"captionsdisabled"),t)},e.prototype.setLanguage=function(e){var t=this;return a.is.empty(e)?(t.toggleCaptions(!1),t):(e=e.toLowerCase(),t.captions.language===e?t:(t.toggleCaptions(!0),t.captions.language=e,t.core.trigger(t.media,"captionchange"),t.core.setCaption(),t.core.setupCaptions(),t))},e.prototype.getLanguage=function(){return this.captions.language},e.prototype.toggleFullscreen=function(e){var n=this,i=s.fullscreen;if(i){if(!a.is.event(e)||e.type!==o.eventType)return o.isFullScreen(n.elements.container)?o.cancelFullScreen():(t={x:window.pageXOffset||0,y:window.pageYOffset||0},o.requestFullScreen(n.elements.container)),void(n.fullscreen.active=o.isFullScreen(n.elements.container));n.fullscreen.active=o.isFullScreen(n.elements.container)}else n.fullscreen.active=!n.fullscreen.active,document.body.style.overflow=n.fullscreen.active?"hidden":"";return a.toggleClass(n.elements.container,n.config.classNames.fullscreen.active,n.fullscreen.active),n.elements.buttons&&n.elements.buttons.fullscreen&&a.toggleState(n.elements.buttons.fullscreen,n.fullscreen.active),n.core.trigger(n.media,n.fullscreen.active?"enterfullscreen":"exitfullscreen",!0),!n.fullscreen.active&&i&&window.scrollTo(t.x,t.y),n},e.prototype.togglePictureInPicture=function(e){var t=this,n={pip:"picture-in-picture",inline:"inline"};if(t.core.support.pip)return a.is.boolean(e)||(e=t.media.webkitPresentationMode===n.inline),t.media.webkitSetPresentationMode(e?n.pip:n.inline),t},e.prototype.airPlay=function(){var e=this;if(e.core.support.airplay)return e.media.webkitShowPlaybackTargetPicker(),e},e.prototype.toggleControls=function(e){var t=this;if(t.config.hideControls&&"audio"!==t.type){var n=0,i=e,o=!1,r=a.hasClass(t.elements.container,t.config.classNames.loading);if(a.is.boolean(e)||(a.is.event(e)?(o="enterfullscreen"===e.type,i=a.inArray(["mousemove","touchstart","mouseenter","focus"],e.type),a.inArray(["mousemove","touchmove"],e.type)&&(n=2e3),"focus"===e.type&&(n=3e3)):i=a.hasClass(t.elements.container,t.config.classNames.hideControls)),window.clearTimeout(t.core.timers.hover),i||t.media.paused||r){if(a.toggleClass(t.elements.container,t.config.classNames.hideControls,!1)&&t.core.trigger(t.media,"controlsshown"),t.media.paused||r)return;s.touch&&(n=3e3)}return i&&t.media.paused||(t.core.timers.hover=window.setTimeout(function(){(!t.elements.controls.pressed&&!t.elements.controls.hover||o)&&a.toggleClass(t.elements.container,t.config.classNames.hideControls,!0)&&(t.core.trigger(t.media,"controlshidden"),a.inArray(t.config.controls,"settings")&&!a.is.empty(t.config.settings)&&t.core.toggleMenu(!1))},n)),t}},e.prototype.on=function(e,t){var n=this;return a.on(n.elements.container,e,t),n},e.prototype.off=function(e,t){var n=this;return a.off(n.elements.container,e,t),n},e.prototype.supports=function(e){return s.mime(this,e)},e.prototype.destroy=function(e,t){function n(){if(null!==i){if(a.is.boolean(t)||(t=!0),document.body.style.overflow="",t){var n=i.elements.container.parentNode;a.is.htmlElement(n)&&n.replaceChild(i.elements.original,i.elements.container)}i.core.trigger(i.elements.original,"destroyed",!0),a.is.function(e)&&e.call(i.elements.original),i=null}}var i=this;switch(i.type){case"youtube":window.clearInterval(i.core.timers.buffering),window.clearInterval(i.core.timers.playing),i.embed.destroy(),n();break;case"vimeo":i.embed.unload().then(n),window.setTimeout(n,200);break;case"video":case"audio":i.core.toggleNativeControls(!0),n()}},e.prototype.getDuration=function(){var e=this,t=parseInt(e.config.duration),n=0;return null===e.media.duration||isNaN(e.media.duration)||(n=e.media.duration),isNaN(t)?n:t},e}); \ No newline at end of file +(function(e,t,n){"use strict";"object"==typeof exports?module.exports=n(require):"function"==typeof define&&define.amd?define(n):t[e]=n()}).call(this,"Plyr",this,function(){"use strict";function e(e,t){function r(e,t,n,i){a.dispatchEvent(e,t,n,a.extend({},i,{plyr:pe}))}function l(){var e=c("input:not([disabled]), button:not([disabled])"),t=e[0],n=e[e.length-1];a.on(pe.elements.container,"keydown",function(e){9===e.which&&pe.fullscreen.active&&(e.target!==n||e.shiftKey?e.target===t&&e.shiftKey&&(e.preventDefault(),n.focus()):(e.preventDefault(),t.focus()))},!1)}function c(e){return pe.elements.container.querySelectorAll(e)}function u(e){return c(e)[0]}function d(e){a.is.string(e)?(a.removeElement(pe.elements[e]),pe.elements[e]=null):a.removeElement(e)}function p(e,t){a.is.string(t)?a.insertElement(e,pe.media,{src:t}):a.is.array(t)&&(fe(t),t.forEach(function(t){a.insertElement(e,pe.media,t)}))}function m(e){if(pe.browser.isWebkit&&a.is.htmlElement(e)){a.is.htmlElement(pe.elements.styleSheet)||(pe.elements.styleSheet=a.createElement("style"),pe.elements.container.appendChild(pe.elements.styleSheet));var t=pe.elements.styleSheet.sheet,n=e.value/e.max*100,i="#"+e.id+"::-webkit-slider-runnable-track",o="{ background-image: linear-gradient(to right, currentColor "+n+"%, transparent "+n+"%) }",s=-1;[].some.call(t.rules,function(e,t){if(e.selectorText===i)return s=t,!0})[0],-1!==s&&t.deleteRule(s),t.insertRule([i,o].join(" "))}}function g(){return{url:pe.config.iconUrl,absolute:0===pe.config.iconUrl.indexOf("http")||pe.browser.isIE}}function f(e,t){var n=g(),i=(n.absolute?"":n.url)+"#"+pe.config.iconPrefix,o=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttributes(o,a.extend(t,{role:"presentation"}));var s=document.createElementNS("http://www.w3.org/2000/svg","use");return s.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i+"-"+e),o.appendChild(s),o}function y(e){var t=pe.config.i18n[e];switch(e){case"pip":t="PIP";break;case"airplay":t="AirPlay"}return a.createElement("span",{class:pe.config.classNames.hidden},t)}function b(e){var t=a.createElement("span",{class:pe.config.classNames.menu.value});return t.appendChild(a.createElement("span",{class:pe.config.classNames.menu.badge},e)),t}function v(e,t){var n,i,o,s=a.createElement("button");switch(a.is.object(t)||(t={}),"type"in t||(t.type="button"),"class"in t?-1===t.class.indexOf(pe.config.classNames.control)&&(t.class+=" "+pe.config.classNames.control):t.class=pe.config.classNames.control,e){case"mute":o="toggleMute",n="volume",i="muted";break;case"captions":o="toggleCaptions",n="captions-off",i="captions-on";break;case"fullscreen":o="toggleFullscreen",n="enter-fullscreen",i="exit-fullscreen";break;case"play-large":t.class="plyr__play-large",e="play",o="play",n="play";break;default:o=e,n=e}return a.extend(t,a.getAttributesFromSelector(pe.config.selectors.buttons[e],t)),a.is.string(i)&&s.appendChild(f(i,{class:"icon--"+i})),s.appendChild(f(n)),s.appendChild(y(o)),a.setAttributes(s,t),pe.elements.buttons[e]=s,s}function h(e,t){var n=a.createElement("label",{for:t.id,class:pe.config.classNames.hidden},pe.config.i18n[e]),i=a.createElement("input",a.extend(a.getAttributesFromSelector(pe.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off"},t));return pe.elements.inputs[e]=i,{label:n,input:i}}function w(e,t){var n=a.createElement("progress",a.extend(a.getAttributesFromSelector(pe.config.selectors.display[e]),{min:0,max:100,value:0},t));if("volume"!==e){n.appendChild(a.createElement("span",null,"0"));var i="";switch(e){case"played":i=pe.config.i18n.played;break;case"buffer":i=pe.config.i18n.buffered}n.textContent="% "+i.toLowerCase()}return pe.elements.display[e]=n,n}function k(e){var t=a.createElement("span",{class:"plyr__time"});return t.appendChild(a.createElement("span",{class:pe.config.classNames.hidden},pe.config.i18n[e])),t.appendChild(a.createElement("span",a.getAttributesFromSelector(pe.config.selectors.display[e]),"00:00")),pe.elements.display[e]=t,t}function E(e){if(!a.is.empty(pe.config.controls)){var t=a.createElement("div",a.getAttributesFromSelector(pe.config.selectors.controls.wrapper));if(a.inArray(pe.config.controls,"restart")&&t.appendChild(v("restart")),a.inArray(pe.config.controls,"rewind")&&t.appendChild(v("rewind")),a.inArray(pe.config.controls,"play")&&(t.appendChild(v("play")),t.appendChild(v("pause"))),a.inArray(pe.config.controls,"fast-forward")&&t.appendChild(v("fast-forward")),a.inArray(pe.config.controls,"progress")){var n=a.createElement("span",a.getAttributesFromSelector(pe.config.selectors.progress)),i=h("seek",{id:"plyr-seek-"+e.id});if(n.appendChild(i.label),n.appendChild(i.input),n.appendChild(w("buffer")),pe.config.tooltips.seek){var o=a.createElement("span",{role:"tooltip",class:pe.config.classNames.tooltip},"00:00");n.appendChild(o),pe.elements.display.seekTooltip=o}pe.elements.progress=n,t.appendChild(pe.elements.progress)}if(a.inArray(pe.config.controls,"current-time")&&t.appendChild(k("currentTime")),a.inArray(pe.config.controls,"duration")&&t.appendChild(k("duration")),a.inArray(pe.config.controls,"mute")&&t.appendChild(v("mute")),a.inArray(pe.config.controls,"volume")){var r=a.createElement("span",{class:"plyr__volume"}),l={max:1,step:.05,value:pe.config.volume},c=h("volume",a.extend(l,{id:"plyr-volume-"+e.id}));r.appendChild(c.label),r.appendChild(c.input),t.appendChild(r)}if(a.inArray(pe.config.controls,"captions")&&t.appendChild(v("captions")),a.inArray(pe.config.controls,"settings")&&!a.is.empty(pe.config.settings)){var u=a.createElement("div",{class:"plyr__menu"});u.appendChild(v("settings",{id:"plyr-settings-toggle-"+e.id,"aria-haspopup":!0,"aria-controls":"plyr-settings-"+e.id,"aria-expanded":!1}));var d=a.createElement("form",{class:"plyr__menu__container",id:"plyr-settings-"+e.id,"aria-hidden":!0,"aria-labelled-by":"plyr-settings-toggle-"+e.id,role:"tablist",tabindex:-1}),p=a.createElement("div"),m=a.createElement("div",{id:"plyr-settings-"+e.id+"-home","aria-hidden":!1,"aria-labelled-by":"plyr-settings-toggle-"+e.id,role:"tabpanel"}),g=a.createElement("ul",{role:"tablist"});pe.config.settings.forEach(function(t){var n=a.createElement("li",{role:"tab",hidden:""}),i=a.createElement("button",a.extend(a.getAttributesFromSelector(pe.config.selectors.buttons.settings),{type:"button",class:pe.config.classNames.control+" "+pe.config.classNames.control+"--forward",id:"plyr-settings-"+e.id+"-"+t+"-tab","aria-haspopup":!0,"aria-controls":"plyr-settings-"+e.id+"-"+t,"aria-expanded":!1}),pe.config.i18n[t]),o=a.createElement("span",{class:pe.config.classNames.menu.value});o.innerHTML=e[t],i.appendChild(o),n.appendChild(i),g.appendChild(n),pe.elements.settings.tabs[t]=n}),m.appendChild(g),p.appendChild(m),pe.config.settings.forEach(function(t){var n=a.createElement("div",{id:"plyr-settings-"+e.id+"-"+t,"aria-hidden":!0,"aria-labelled-by":"plyr-settings-"+e.id+"-"+t+"-tab",role:"tabpanel",tabindex:-1,hidden:""}),i=a.createElement("button",{type:"button",class:pe.config.classNames.control+" "+pe.config.classNames.control+"--back","aria-haspopup":!0,"aria-controls":"plyr-settings-"+e.id+"-home","aria-expanded":!1},pe.config.i18n[t]);n.appendChild(i);var o=a.createElement("ul");n.appendChild(o),p.appendChild(n),pe.elements.settings.panes[t]=n}),d.appendChild(p),u.appendChild(d),t.appendChild(u),pe.elements.settings.form=d,pe.elements.settings.menu=u}return a.inArray(pe.config.controls,"pip")&&s.pip&&t.appendChild(v("pip")),a.inArray(pe.config.controls,"airplay")&&s.airplay&&t.appendChild(v("airplay")),a.inArray(pe.config.controls,"fullscreen")&&t.appendChild(v("fullscreen")),a.inArray(pe.config.controls,"play-large")&&(pe.elements.buttons.playLarge=v("play-large"),pe.elements.container.appendChild(pe.elements.buttons.playLarge)),pe.elements.controls=t,a.inArray(pe.config.controls,"settings")&&a.inArray(pe.config.settings,"speed")&&N(),t}}function C(e,t){var n=pe.elements.settings.tabs[e],i=pe.elements.settings.panes[e];a.is.htmlElement(n)&&(t?n.removeAttribute("hidden"):n.setAttribute("hidden","")),a.is.htmlElement(i)&&(t?i.removeAttribute("hidden"):i.setAttribute("hidden",""))}function A(e,t){function n(e){var t="";switch(e){case"hd2160":t="4K";break;case"hd1440":t="WQHD";break;case"hd1080":case"hd720":t="HD"}return t.length?b(t):null}var i=pe.elements.settings.panes.quality.querySelector("ul");a.is.array(e)?pe.quality.options=e.filter(function(e){return a.inArray(pe.config.quality.options,e)}):pe.quality.options=pe.config.quality.options,a.is.string(t)&&a.inArray(pe.quality.options,t)&&(pe.quality.selected=t);var o=!a.is.empty(pe.quality.options)&&"youtube"===pe.type;C("quality",o),o&&(a.emptyElement(i),pe.quality.options.forEach(function(e){var t=a.createElement("li"),o=a.createElement("label",{class:pe.config.classNames.control}),s=a.createElement("input",a.extend(a.getAttributesFromSelector(pe.config.selectors.inputs.quality),{type:"radio",name:"plyr-quality",value:e}));o.appendChild(s),o.appendChild(document.createTextNode(T("quality",e)));var r=n(e);a.is.htmlElement(r)&&o.appendChild(r),t.appendChild(o),i.appendChild(t)}),S("quality",i))}function T(e,t){switch(e){case"speed":return 1===t?"Normal":t+"×";case"quality":switch(t){case"hd2160":return"2160P";case"hd1440":return"1440P";case"hd1080":return"1080P";case"hd720":return"720P";case"large":return"480P";case"medium":return"360P";case"small":return"240P";case"tiny":return"Tiny";case"default":return"Auto";default:return t}case"captions":return q()}}function S(e,t){var n=pe.elements.settings.panes[e],i=null;switch(e){case"captions":i=pe.captions.language,pe.captions.enabled||(i="");break;default:if(i=pe[e].selected,a.is.empty(i)&&(i=pe.config[e].default),!a.inArray(pe[e].options,i))return void fe("Unsupported option")}a.is.htmlElement(t)||(t=n&&n.querySelector("ul"));var o=t&&t.querySelector('input[value="'+i+'"]');a.is.htmlElement(o)&&(o.checked=!0,pe.elements.settings.tabs[e].querySelector("."+pe.config.classNames.menu.value).innerHTML=T(e,i))}function x(){var e=pe.elements.settings.panes.captions.querySelector("ul");if(C("captions",!a.is.empty(pe.captions.tracks)),a.emptyElement(e),!a.is.empty(pe.captions.tracks)){var t=[].map.call(pe.captions.tracks,function(e){return{language:e.language,badge:!0,label:a.is.empty(e.label)?e.language.toUpperCase():e.label}});t.unshift({language:"",label:pe.config.i18n.none}),t.forEach(function(t){var n=a.createElement("li"),i=a.createElement("label",{class:pe.config.classNames.control}),o=a.createElement("input",a.extend(a.getAttributesFromSelector(pe.config.selectors.inputs.language),{type:"radio",name:"plyr-language",value:t.language}));t.language.toLowerCase()===pe.captions.language.toLowerCase()&&(o.checked=!0),i.appendChild(o),i.appendChild(document.createTextNode(t.label||t.language)),t.badge&&i.appendChild(b(t.language.toUpperCase())),n.appendChild(i),e.appendChild(n)}),S("captions",e)}}function N(e,t){a.is.array(e)?pe.speed.options=e.filter(function(e){return a.inArray(pe.config.speed.options,e)}):pe.speed.options=pe.config.speed.options,a.is.number(t)&&a.inArray(pe.speed.options,t)&&(pe.speed.selected=t);var n=!a.is.empty(pe.speed.options);if(C("speed",n),n){var i=pe.elements.settings.panes.speed.querySelector("ul");pe.elements.settings.tabs.speed.removeAttribute("hidden"),pe.elements.settings.panes.speed.removeAttribute("hidden"),a.emptyElement(i),pe.speed.options.forEach(function(e){var t=a.createElement("li"),n=a.createElement("label",{class:pe.config.classNames.control}),o=a.createElement("input",a.extend(a.getAttributesFromSelector(pe.config.selectors.inputs.speed),{type:"radio",name:"plyr-speed",value:e}));n.appendChild(o),n.insertAdjacentHTML("beforeend",T("speed",e)),t.appendChild(n),i.appendChild(t)}),S("speed",i)}}function P(){if(pe.supported.full&&("audio"!==pe.type||pe.config.fullscreen.allowAudio)&&pe.config.fullscreen.enabled){var e=s.fullscreen;e||pe.config.fullscreen.fallback&&!a.inFrame()?(ge((e?"Native":"Fallback")+" fullscreen enabled"),e||a.toggleClass(pe.elements.container,pe.config.classes.fullscreen.fallback,!0),a.toggleClass(pe.elements.container,pe.config.classNames.fullscreen.enabled,!0)):ge("Fullscreen not supported and fallback disabled"),pe.elements.buttons&&pe.elements.buttons.fullscreen&&a.toggleState(pe.elements.buttons.fullscreen,!1),l()}}function I(){function e(){pe.captions.currentTrack=null,[].forEach.call(pe.captions.tracks,function(e){e.language===pe.captions.language.toLowerCase()&&(pe.captions.currentTrack=e)})}if(a.is.empty(pe.storage.language)?a.is.empty(pe.captions.language)&&(pe.captions.language=pe.config.captions.language.toLowerCase()):pe.captions.language=pe.storage.language,a.is.boolean(pe.captions.enabled)||(a.is.empty(pe.storage.language)?pe.captions.enabled=pe.config.captions.active:pe.captions.enabled=pe.storage.captions),!a.inArray(["video","vimeo"],pe.type)||"video"===pe.type&&!s.textTracks)return pe.captions.tracks=null,void(a.inArray(pe.config.controls,"settings")&&a.inArray(pe.config.settings,"captions")&&x());if(a.is.htmlElement(pe.elements.captions)||(pe.elements.captions=a.createElement("div",a.getAttributesFromSelector(pe.config.selectors.captions)),a.insertAfter(pe.elements.captions,pe.elements.wrapper)),"video"===pe.type&&(pe.captions.tracks=pe.media.textTracks),a.toggleClass(pe.elements.container,pe.config.classNames.captions.enabled,!a.is.empty(pe.captions.tracks)),!a.is.empty(pe.captions.tracks)){if(L(),e(),!a.is.track(pe.captions.currentTrack)){var t=pe.config.captions.language;pe.captions.language=t,e(),a.is.track(pe.captions.currentTrack)||pe.toggleCaptions(!1),S("captions")}if("video"===pe.type){[].forEach.call(pe.captions.tracks,function(e){a.off(e,"cuechange",F),e.mode="hidden"});var n=a.inArray(["captions","subtitles"],pe.captions.currentTrack&&pe.captions.currentTrack.kind);a.is.track(pe.captions.currentTrack)&&n&&(a.on(pe.captions.currentTrack,"cuechange",F),pe.captions.currentTrack.activeCues&&pe.captions.currentTrack.activeCues.length>0&&F(pe.captions.currentTrack))}else"vimeo"===pe.type&&pe.captions.active&&pe.embed.enableTextTrack(pe.captions.language);a.inArray(pe.config.controls,"settings")&&a.inArray(pe.config.settings,"captions")&&x()}}function q(){return!s.textTracks||a.is.empty(pe.captions.tracks)?pe.config.i18n.none:pe.captions.enabled?pe.captions.currentTrack.label:pe.config.i18n.disabled}function F(e){a.is.event(e)&&(e=e.target);var t=e.activeCues[0];a.is.cue(t)?_(t.getCueAsHTML()):_(),r(pe.media,"cuechange")}function _(e){if(a.is.htmlElement(pe.elements.captions)){var t=a.createElement("span");a.emptyElement(pe.elements.captions),a.is.undefined(e)&&(e=""),a.is.string(e)?t.textContent=e.trim():t.appendChild(e),pe.elements.captions.appendChild(t)}else fe("No captions element to render to")}function L(){if(pe.elements.buttons.captions){var e=pe.storage.captions;a.is.boolean(e)?pe.captions.active=e:e=pe.captions.active,e&&(a.toggleClass(pe.elements.container,pe.config.classNames.captions.active,!0),a.toggleState(pe.elements.buttons.captions,!0))}}function M(){if(pe.config.loadSprite){var e=g();e.absolute?(ge("AJAX loading absolute SVG sprite"+(pe.browser.isIE?" (due to IE)":"")),a.loadSprite(e.url,"sprite-plyr")):ge("Sprite will be used as external resource directly")}pe.id=Math.floor(1e4*Math.random());var t=null;t=a.is.string(pe.config.controls)?pe.config.controls:a.is.function(pe.config.controls)?pe.config.controls({id:pe.id,seektime:pe.config.seekTime}):E({id:pe.id,seektime:pe.config.seekTime,speed:"-",quality:"-",captions:q(),loop:"None"});var n;if(a.is.string(pe.config.selectors.controls.container)&&(n=document.querySelector(pe.config.selectors.controls.container)),a.is.htmlElement(n)||(n=pe.elements.container),a.is.htmlElement(t)?n.appendChild(t):n.insertAdjacentHTML("beforeend",t),a.is.htmlElement(pe.elements.controls)&&V(),pe.config.tooltips.controls)for(var i=c([pe.config.selectors.controls.wrapper," ",pe.config.selectors.labels," .",pe.config.classNames.hidden].join("")),o=i.length-1;o>=0;o--){var s=i[o];a.toggleClass(s,pe.config.classNames.hidden,!1),a.toggleClass(s,pe.config.classNames.tooltip,!0)}}function V(){try{return pe.elements.controls=u(pe.config.selectors.controls.wrapper),pe.elements.buttons={play:c(pe.config.selectors.buttons.play),pause:u(pe.config.selectors.buttons.pause),restart:u(pe.config.selectors.buttons.restart),rewind:u(pe.config.selectors.buttons.rewind),forward:u(pe.config.selectors.buttons.forward),mute:u(pe.config.selectors.buttons.mute),pip:u(pe.config.selectors.buttons.pip),airplay:u(pe.config.selectors.buttons.airplay),settings:u(pe.config.selectors.buttons.settings),captions:u(pe.config.selectors.buttons.captions),fullscreen:u(pe.config.selectors.buttons.fullscreen)},pe.elements.progress=u(pe.config.selectors.progress),pe.elements.inputs={seek:u(pe.config.selectors.inputs.seek),volume:u(pe.config.selectors.inputs.volume)},pe.elements.display={buffer:u(pe.config.selectors.display.buffer),duration:u(pe.config.selectors.display.duration),currentTime:u(pe.config.selectors.display.currentTime)},a.is.htmlElement(pe.elements.progress)&&(pe.elements.display.seekTooltip=pe.elements.progress.querySelector("."+pe.config.classNames.tooltip)),!0}catch(e){return fe("It looks like there is a problem with your custom controls HTML",e),j(!0),!1}}function O(){a.toggleClass(pe.elements.container,pe.config.selectors.container.replace(".",""),pe.supported.full)}function j(e){e&&a.inArray(i.html5,pe.type)?pe.media.setAttribute("controls",""):pe.media.removeAttribute("controls")}function D(e){var t=pe.config.i18n.play;if(a.is.string(pe.config.title)&&!a.is.empty(pe.config.title)&&(t+=", "+pe.config.title,pe.elements.container.setAttribute("aria-label",pe.config.title)),pe.supported.full&&(a.is.htmlElement(pe.elements.buttons.play)&&pe.elements.buttons.play.setAttribute("aria-label",t),a.is.htmlElement(pe.elements.buttons.playLarge)&&pe.elements.buttons.playLarge.setAttribute("aria-label",t)),a.is.htmlElement(e)){var n=a.is.string(pe.config.title)&&!a.is.empty(pe.config.title)?pe.config.title:"video";e.setAttribute("title",pe.config.i18n.frameTitle.replace("{title}",n))}}function R(){var e=null;pe.storage={},s.storage&&pe.config.storage.enabled&&(window.localStorage.removeItem("plyr-volume"),(e=window.localStorage.getItem(pe.config.storage.key))&&(/^\d+(\.\d+)?$/.test(e)?H({volume:parseFloat(e)}):pe.storage=JSON.parse(e)))}function H(e){s.storage&&pe.config.storage.enabled&&(a.extend(pe.storage,e),window.localStorage.setItem(pe.config.storage.key,JSON.stringify(pe.storage)))}function B(){pe.media?(pe.supported.full&&(a.toggleClass(pe.elements.container,pe.config.classNames.type.replace("{0}",pe.type),!0),a.inArray(i.embed,pe.type)&&a.toggleClass(pe.elements.container,pe.config.classNames.type.replace("{0}","video"),!0),a.toggleClass(pe.elements.container,pe.config.classNames.pip.enabled,s.pip&&"video"===pe.type),a.toggleClass(pe.elements.container,pe.config.classNames.airplay.enabled,s.airplay&&a.inArray(i.html5,pe.type)),a.toggleClass(pe.elements.container,pe.config.classNames.stopped,pe.config.autoplay),a.toggleClass(pe.elements.container,pe.config.classNames.isIos,pe.browser.isIos),a.toggleClass(pe.elements.container,pe.config.classNames.isTouch,s.touch)),a.inArray(["video","youtube","vimeo"],pe.type)&&(pe.elements.wrapper=a.createElement("div",{class:pe.config.classNames.video}),a.wrap(pe.media,pe.elements.wrapper)),a.inArray(i.embed,pe.type)&&W()):fe("No media element found!")}function W(){var e,t=pe.type+"-"+Math.floor(1e4*Math.random());switch(pe.type){case"youtube":e=a.parseYouTubeId(pe.embedId);break;default:e=pe.embedId}for(var n=c('[id^="'+pe.type+'-"]'),i=n.length-1;i>=0;i--)a.removeElement(n[i]);if(a.toggleClass(pe.elements.wrapper,pe.config.classNames.embed,!0),"youtube"===pe.type)pe.media.setAttribute("id",t),a.is.object(window.YT)?Q(e):(a.injectScript(pe.config.urls.youtube.api),window.onYouTubeReadyCallbacks=window.onYouTubeReadyCallbacks||[],window.onYouTubeReadyCallbacks.push(function(){Q(e)}),window.onYouTubeIframeAPIReady=function(){window.onYouTubeReadyCallbacks.forEach(function(e){e()})});else if("vimeo"===pe.type)if(pe.media.setAttribute("id",t),a.is.object(window.Vimeo))U(e);else{a.injectScript(pe.config.urls.vimeo.api);var o=window.setInterval(function(){a.is.object(window.Vimeo)&&(window.clearInterval(o),U(e))},50)}else if("soundcloud"===pe.type){var s=a.createElement("iframe");s.loaded=!1,a.on(s,"load",function(){s.loaded=!0}),a.setAttributes(s,{src:"https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/"+e,id:t}),pe.media.appendChild(s),window.SC||a.injectScript(pe.config.urls.soundcloud.api);var r=window.setInterval(function(){window.SC&&s.loaded&&(window.clearInterval(r),J.call(s))},50)}}function Y(){pe.supported.full&&(ue(),de()),D(u("iframe"))}function Q(e){pe.embed=new window.YT.Player(pe.media.id,{videoId:e,playerVars:{autoplay:pe.config.autoplay?1:0,controls:pe.supported.full?0:1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,disablekb:1,playsinline:1,origin:window.location.hostname,widget_referrer:window.location.href},events:{onError:function(e){r(pe.elements.container,"error",!0,{code:e.data,embed:e.target})},onPlaybackQualityChange:function(e){var t=e.target;pe.media.quality=t.getPlaybackQuality(),r(pe.media,"qualitychange")},onPlaybackRateChange:function(e){var t=e.target;pe.media.playbackRate=t.getPlaybackRate(),r(pe.media,"ratechange")},onReady:function(e){var t=e.target;pe.media.play=function(){t.playVideo(),pe.media.paused=!1},pe.media.pause=function(){t.pauseVideo(),pe.media.paused=!0},pe.media.stop=function(){t.stopVideo(),pe.media.paused=!0},pe.media.duration=t.getDuration(),pe.media.paused=!0,pe.media.currentTime=0,pe.media.muted=t.isMuted(),a.inArray(pe.config.controls,"settings")&&a.inArray(pe.config.settings,"speed")&&N(t.getAvailablePlaybackRates(),t.getPlaybackRate()),pe.config.title=t.getVideoData().title,pe.supported.full&&pe.media.setAttribute("tabindex",-1),Y(),r(pe.media,"timeupdate"),r(pe.media,"durationchange"),window.clearInterval(me.buffering),me.buffering=window.setInterval(function(){pe.media.buffered=t.getVideoLoadedFraction(),(null===pe.media.lastBuffered||pe.media.lastBuffered0;n=("0"+n).slice(-2),i=("0"+i).slice(-2);var l=(r?o+":":"")+i+":"+n;return t.textContent=l,l}}function ae(){if(pe.supported.full){var e=pe.getDuration()||0;!pe.elements.display.duration&&pe.config.displayDuration&&pe.media.paused&&ie(e,pe.elements.display.currentTime),pe.elements.display.duration&&ie(e,pe.elements.display.duration),se()}}function oe(e){ie(pe.media.currentTime,pe.elements.display.currentTime),e&&"timeupdate"===e.type&&pe.media.seeking||ne(e)}function se(e){var t=pe.getDuration();if(pe.config.tooltips.seek&&a.is.htmlElement(pe.elements.inputs.seek)&&a.is.htmlElement(pe.elements.display.seekTooltip)&&0!==t){var n=pe.elements.inputs.seek.getBoundingClientRect(),i=0,o=pe.config.classNames.tooltip+"--visible";if(a.is.event(e))i=100/n.width*(e.pageX-n.left);else{if(!a.hasClass(pe.elements.display.seekTooltip,o))return;i=pe.elements.display.seekTooltip.style.left.replace("%","")}i<0?i=0:i>100&&(i=100),ie(t/100*i,pe.elements.display.seekTooltip),pe.elements.display.seekTooltip.style.left=i+"%",a.is.event(e)&&a.inArray(["mouseenter","mouseleave"],e.type)&&a.toggleClass(pe.elements.display.seekTooltip,o,"mouseenter"===e.type)}}function re(){function e(){var e=pe.togglePlay(),t=pe.elements.buttons[e?"pause":"play"];a.is.htmlElement(t)&&t.focus()}function t(e){return e.keyCode?e.keyCode:e.which}function n(n){var i=t(n),o="keydown"===n.type,l=o&&i===r;if(a.is.number(i))if(o){var c=[48,49,50,51,52,53,54,56,57,32,75,38,40,77,39,37,70,67,73,76,79],u=[38,40];if(a.inArray(u,i)){var d=a.getFocusElement();if(a.is.htmlElement(d)&&"radio"===a.getFocusElement().type)return}switch(a.inArray(c,i)&&(n.preventDefault(),n.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:l||function(){var e=pe.media.duration;a.is.number(e)&&pe.seek(e/10*(i-48))}();break;case 32:case 75:l||e();break;case 38:pe.increaseVolume();break;case 40:pe.decreaseVolume();break;case 77:l||pe.toggleMute();break;case 39:pe.forward();break;case 37:pe.rewind();break;case 70:pe.toggleFullscreen();break;case 67:l||pe.toggleCaptions();break;case 73:pe.setLoop("start");break;case 76:pe.setLoop();break;case 79:pe.setLoop("end")}!s.fullscreen&&pe.fullscreen.active&&27===i&&pe.toggleFullscreen(),r=i}else r=null}var i=pe.browser.isIE?"change":"input";if(pe.config.keyboard.focused){var r=null;pe.config.keyboard.global&&a.on(window,"keydown keyup",function(e){var i=t(e),o=a.getFocusElement(),s=[48,49,50,51,52,53,54,56,57,75,77,70,67,73,76,79];!a.inArray(s,i)||a.is.htmlElement(o)&&a.matches(o,pe.config.selectors.editable)||n(e)},!1),a.on(pe.elements.container,"keydown keyup",n,!1)}a.on(pe.elements.container,"focusout",function(e){a.toggleClass(e.target,pe.config.classNames.tabFocus,!1)}),a.on(pe.elements.container,"keydown",function(e){9===e.keyCode&&window.setTimeout(function(){a.toggleClass(a.getFocusElement(),pe.config.classNames.tabFocus,!0)},0)});var l=function(e,t,n){a.is.function(t)&&t.call(this,e),a.is.function(n)&&n.call(this,e)};a.proxy(pe.elements.buttons.play,"click",pe.config.listeners.play,e),a.proxy(pe.elements.buttons.playLarge,"click",pe.config.listeners.play,e),a.proxy(pe.elements.buttons.pause,"click",pe.config.listeners.pause,e),a.proxy(pe.elements.buttons.restart,"click",pe.config.listeners.restart,function(){pe.restart()}),a.proxy(pe.elements.buttons.rewind,"click",pe.config.listeners.rewind,function(){pe.rewind()}),a.proxy(pe.elements.buttons.forward,"click",pe.config.listeners.forward,function(){pe.forward()}),a.proxy(pe.elements.buttons.mute,"click",pe.config.listeners.mute,function(){pe.toggleMute()}),a.proxy(pe.elements.buttons.captions,"click",pe.config.listeners.captions,function(){pe.toggleCaptions()}),a.proxy(pe.elements.buttons.fullscreen,"click",pe.config.listeners.fullscreen,function(e){pe.toggleFullscreen(e)}),a.proxy(pe.elements.buttons.pip,"click",pe.config.listeners.pip,function(){pe.togglePictureInPicture()}),a.proxy(pe.elements.buttons.airplay,"click",pe.config.listeners.airplay,function(){pe.airPlay()}),a.on(pe.elements.buttons.settings,"click",z),a.on(document.documentElement,"click",z),a.on(pe.elements.settings.form,"click",function(e){K(e),a.matches(e.target,pe.config.selectors.inputs.language)?l.call(this,e,pe.config.listeners.language,function(){pe.toggleCaptions(!0),pe.setLanguage(e.target.value.toLowerCase())}):a.matches(e.target,pe.config.selectors.inputs.quality)?l.call(this,e,pe.config.listeners.quality,function(){pe.setQuality(e.target.value)}):a.matches(e.target,pe.config.selectors.inputs.speed)?l.call(this,e,pe.config.listeners.speed,function(){pe.setSpeed(parseFloat(e.target.value))}):a.matches(e.target,pe.config.selectors.buttons.loop)&&l.call(this,e,pe.config.listeners.loop,function(){fe("Set loop")})}),a.proxy(pe.elements.inputs.seek,i,pe.config.listeners.seek,function(e){var t=pe.getDuration();pe.seek(e.target.value/e.target.max*t)}),a.proxy(pe.elements.inputs.volume,i,pe.config.listeners.volume,function(){pe.setVolume(event.target.value)}),pe.browser.isWebkit&&a.on(c('input[type="range"]'),[i,"updated"].join(" "),function(e){m(e.target)}),a.on(pe.elements.progress,"mouseenter mouseleave mousemove",se),pe.config.hideControls&&(a.on(pe.elements.container,"mouseenter mouseleave mousemove touchstart touchend touchcancel touchmove enterfullscreen",function(e){pe.toggleControls(e)}),a.on(pe.elements.controls,"mouseenter mouseleave",function(e){pe.elements.controls.hover="mouseenter"===e.type}),a.on(pe.elements.controls,"mousedown mouseup touchstart touchend touchcancel",function(e){pe.elements.controls.pressed=a.inArray(["mousedown","touchstart"],e.type)}),a.on(pe.elements.controls,"focus blur",function(e){pe.toggleControls(e)},!0)),a.proxy(pe.elements.inputs.volume,"wheel",pe.config.listeners.volume,function(e){var t=e.webkitDirectionInvertedFromDevice,n=0;(e.deltaY<0||e.deltaX>0)&&(t?(pe.decreaseVolume(.02),n=-1):(pe.increaseVolume(.02),n=1)),(e.deltaY>0||e.deltaX<0)&&(t?(pe.increaseVolume(.02),n=1):(pe.decreaseVolume(.02),n=-1)),(1===n&&pe.media.volume<1||-1===n&&pe.media.volume>0)&&e.preventDefault()},!1),s.fullscreen&&a.on(document,o.eventType,function(e){pe.toggleFullscreen(e)})}function le(){if(a.on(pe.media,"timeupdate seeking",oe),a.on(pe.media,"durationchange loadedmetadata",ae),a.on(pe.media,"ended",function(){"video"===pe.type&&pe.config.showPosterOnEnd&&("video"===pe.type&&_(),pe.restart(),pe.media.load())}),a.on(pe.media,"progress playing",ne),a.on(pe.media,"volumechange",$),a.on(pe.media,"play pause ended",X),a.on(pe.media,"waiting canplay seeked",Z),pe.config.clickToPlay&&"audio"!==pe.type){var e=u("."+pe.config.classNames.video);if(!e)return;e.style.cursor="pointer",a.on(e,"click",function(){pe.config.hideControls&&s.touch&&!pe.media.paused||(pe.media.paused?pe.play():pe.media.ended?(pe.restart(),pe.play()):pe.pause())})}pe.config.disableContextMenu&&a.on(pe.media,"contextmenu",function(e){e.preventDefault()},!1),a.on(pe.media,"ratechange",function(){pe.speed.selected=pe.media.playbackRate,S("speed"),H({speed:pe.speed.selected})}),a.on(pe.media,"qualitychange",function(){pe.quality.selected=pe.media.quality,S("quality"),H({quality:pe.quality.selected})}),a.on(pe.media,"captionchange",function(){H({language:pe.captions.language})}),a.on(pe.media,"captionsenabled captionsdisabled",function(){S("captions"),H({captions:pe.captions.enabled})}),a.on(pe.media,pe.config.events.concat(["keyup","keydown"]).join(" "),function(e){r(pe.elements.container,e.type,!0)})}function ce(){if(a.inArray(i.html5,pe.type)){for(var e=pe.media.querySelectorAll("source"),t=0;t=0;n--){var i=n>0?t.cloneNode(!0):t,a=e[n],o=a.parentNode,s=a.nextSibling;return i.appendChild(a),s?o.insertBefore(i,s):o.appendChild(i),i}},removeElement:function(e){a.is.htmlElement(e)&&a.is.htmlElement(e.parentNode)&&e.parentNode.removeChild(e)},insertAfter:function(e,t){t.parentNode.insertBefore(e,t.nextSibling)},createElement:function(e,t,n){var i=document.createElement(e);return a.is.object(t)&&a.setAttributes(i,t),a.is.string(n)&&(i.textContent=n),i},insertElement:function(e,t,n,i){t.appendChild(a.createElement(e,n,i))},emptyElement:function(e){for(var t=e.childNodes.length;t--;)e.removeChild(e.lastChild)},setAttributes:function(e,t){for(var n in t)e.setAttribute(n,t[n])},getAttributesFromSelector:function(e,t){if(!a.is.string(e)||a.is.empty(e))return{};var n={};return e.split(",").forEach(function(e){switch((e=e.trim()).charAt(0)){case".":var i=e.replace(".","");a.is.object(t)&&a.is.string(t.class)&&(t.class+=" "+i),n.class=i;break;case"#":n.id=e.replace("#","");break;case"[":var o=(e=e.replace(/[[\]]/g,"")).split("="),s=o[0],r=o.length>1?o[1].replace(/["']/g,""):"";n[s]=r}}),n},toggleClass:function(e,t,n){if(a.is.htmlElement(e)){var i=!1;if(e.classList)i=e.classList.contains(t),e.classList[n?"add":"remove"](t);else{i=a.inArray(e.className.split(" "),t);var o=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=o+(n?" "+t:"")}return n&&!i||!n&&i}return null},hasClass:function(e,t){return!!e&&(e.classList?e.classList.contains(t):new RegExp("(\\s|^)"+t+"(\\s|$)").test(e.className))},matches:function(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(e){return-1!==[].indexOf.call(document.querySelectorAll(e),this)}).call(e,t)},getFocusElement:function(){var e=document.activeElement;return e=e&&e!==document.body?document.querySelector(":focus"):null},proxy:function(e,t,n,i,o,s){a.on(e,t,function(t){n&&n.apply(e,[t]),i.apply(e,[t])},o,s)},toggleListener:function(e,t,n,i,o,r){if(null!==e&&!a.is.undefined(e)){if(t=t.split(" "),a.is.boolean(r)||(r=!1),a.is.boolean(o)||(o=!0),e instanceof NodeList){var l=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);return l.shift(),void[].forEach.call(e,function(e){e instanceof Node&&a.toggleListener.apply(null,[e].concat(l))})}var c=r;s.passiveListeners&&(c={passive:o,capture:r}),t.forEach(function(t){e[i?"addEventListener":"removeEventListener"](t,n,c)})}},on:function(e,t,n,i,o){a.toggleListener(e,t,n,!0,i,o)},off:function(e,t,n,i,o){a.toggleListener(e,t,n,!1,i,o)},dispatchEvent:function(e,t,n,i){if(e&&t){a.is.boolean(n)||(n=!1);var o;a.is.function(window.CustomEvent)?o=window.CustomEvent:(o=function(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}).prototype=window.Event.prototype;var s=new o(t,{bubbles:n,detail:i});e.dispatchEvent(s)}},toggleState:function(e,t){if(e)return t=a.is.boolean(t)?t:!e.getAttribute("aria-pressed"),e.setAttribute("aria-pressed",t),t},getPercentage:function(e,t){return 0===e||0===t||isNaN(e)||isNaN(t)?0:(e/t*100).toFixed(2)},extend:function(){var e=arguments;if(e.length){if(1===e.length)return e[0];var t=Array.prototype.shift.call(e);a.is.object(t)||(t={});for(var n=e.length,i=0;is&&(n=s),a.inArray(i.embed,t.type)){switch(t.type){case"youtube":t.embed.seekTo(n);break;case"vimeo":t.embed.setCurrentTime(n);break;case"soundcloud":t.embed.seekTo(1e3*n)}o&&t.pause(),t.media.seeking=!0,t.core.trigger(t.media,"seeking")}else t.media.currentTime=n.toFixed(4);return t.core.log("Seeking to "+t.media.currentTime+" seconds"),t},e.prototype.setVolume=function(e){var t=this,n=!a.is.undefined(e);if(a.is.string(e)&&(e=parseFloat(e)),a.is.number(e)||(e=t.storage.volume),a.is.number(e)||(e=t.config.volume),e>1&&(e=1),e<0&&(e=0),t.media.volume=e,a.inArray(i.embed,t.type)){switch(t.type){case"youtube":t.embed.setVolume(100*t.media.volume);break;case"vimeo":case"soundcloud":t.embed.setVolume(t.media.volume)}t.core.trigger(t.media,"volumechange")}return 0===e?t.toggleMute(!0):t.media.muted&&n&&t.toggleMute(),t},e.prototype.increaseVolume=function(e){var t=this,n=t.media.muted?0:t.media.volume;return a.is.number(e)||(e=1),t.setVolume(n+e),t},e.prototype.decreaseVolume=function(e){var t=this,n=t.media.muted?0:t.media.volume;return a.is.number(e)||(e=1),t.setVolume(n-e),t},e.prototype.toggleMute=function(e){var t=this;if(a.is.boolean(e)||(e=!t.media.muted),a.toggleState(t.elements.buttons.mute,e),t.media.muted=e,t.media.muted||0!==t.media.volume||t.setVolume(t.config.volume),a.inArray(i.embed,t.type)){switch(t.type){case"youtube":t.embed[t.media.muted?"mute":"unMute"]();break;case"vimeo":case"soundcloud":t.embed.setVolume(t.media.muted?0:t.config.volume)}t.core.trigger(t.media,"volumechange")}return t},e.prototype.setSpeed=function(e){var t=this;if(a.is.number(e)||(e=parseFloat(t.storage.speed||t.speed.selected||t.config.speed.default)),e<.1&&(e=.1),e>2&&(e=2),a.inArray(t.config.speed.options,e)){switch(t.type){case"youtube":t.embed.setPlaybackRate(e);break;case"vimeo":e=null,t.core.warn("Vimeo playback rate change is not supported");break;default:t.media.playbackRate=e}return t}t.core.warn("Unsupported speed ("+e+")")},e.prototype.setQuality=function(e){var t=this;a.is.string(e)||(e=parseFloat(t.storage.quality||t.config.quality.selected));{if(a.inArray(t.config.quality.options,e)){switch(t.type){case"youtube":t.core.trigger(t.media,"qualityrequested",!1,{quality:e}),t.embed.setPlaybackQuality(e);break;default:t.core.warn("Quality options are only available for YouTube")}return t}t.core.warn("Unsupported quality option ("+e+")")}},e.prototype.setLoop=function(e){var t=this;a.inArray(["start","end","all","none","toggle"],e)||(e="toggle");var n=Number(t.media.currentTime);switch(e){case"start":t.config.loop.end&&t.config.loop.end<=n&&(t.config.loop.end=null),t.config.loop.start=n;break;case"end":if(t.config.loop.start>=n)return;t.config.loop.end=n;break;case"all":t.config.loop.start=0,t.config.loop.end=t.media.duration-2,t.config.loop.indicator.start=0,t.config.loop.indicator.end=100;break;case"toggle":t.config.loop.active?(t.config.loop.start=0,t.config.loop.end=null):(t.config.loop.start=0,t.config.loop.end=t.media.duration-2);break;default:t.config.loop.start=0,t.config.loop.end=null}return t},e.prototype.source=function(e){var t=this;if(a.is.object(e))return t.core.updateSource(e),t;var n;switch(t.type){case"youtube":n=t.embed.getVideoUrl();break;case"vimeo":t.embed.getVideoUrl.then(function(e){n=e});break;case"soundcloud":t.embed.getCurrentSound(function(e){n=e.permalink_url});break;default:n=t.media.currentSrc}return n},e.prototype.poster=function(e){var t=this;return a.is.string(e)?("video"===t.type?t.media.setAttribute("poster",e):t.core.warn("Poster can only be set on HTML5 video"),t):t.media.getAttribute("poster")},e.prototype.toggleCaptions=function(e){var t=this;if(t.supported.full&&t.elements.buttons.captions)return a.is.boolean(e)||(e=-1===t.elements.container.className.indexOf(t.config.classNames.captions.active)),t.captions.enabled===e?t:(t.captions.enabled=e,a.toggleState(t.elements.buttons.captions,t.captions.enabled),a.toggleClass(t.elements.container,t.config.classNames.captions.active,t.captions.enabled),t.core.trigger(t.media,t.captions.enabled?"captionsenabled":"captionsdisabled"),t)},e.prototype.setLanguage=function(e){var t=this;return a.is.empty(e)?(t.toggleCaptions(!1),t):(e=e.toLowerCase(),t.captions.language===e?t:(t.toggleCaptions(!0),t.captions.language=e,t.core.trigger(t.media,"captionchange"),t.core.setCaption(),t.core.setupCaptions(),t))},e.prototype.getLanguage=function(){return this.captions.language},e.prototype.toggleFullscreen=function(e){var n=this,i=s.fullscreen;if(i){if(!a.is.event(e)||e.type!==o.eventType)return o.isFullScreen(n.elements.container)?o.cancelFullScreen():(t={x:window.pageXOffset||0,y:window.pageYOffset||0},o.requestFullScreen(n.elements.container)),void(n.fullscreen.active=o.isFullScreen(n.elements.container));n.fullscreen.active=o.isFullScreen(n.elements.container)}else n.fullscreen.active=!n.fullscreen.active,document.body.style.overflow=n.fullscreen.active?"hidden":"";return a.toggleClass(n.elements.container,n.config.classNames.fullscreen.active,n.fullscreen.active),n.elements.buttons&&n.elements.buttons.fullscreen&&a.toggleState(n.elements.buttons.fullscreen,n.fullscreen.active),n.core.trigger(n.media,n.fullscreen.active?"enterfullscreen":"exitfullscreen",!0),!n.fullscreen.active&&i&&window.scrollTo(t.x,t.y),n},e.prototype.togglePictureInPicture=function(e){var t=this,n={pip:"picture-in-picture",inline:"inline"};if(t.core.support.pip)return a.is.boolean(e)||(e=t.media.webkitPresentationMode===n.inline),t.media.webkitSetPresentationMode(e?n.pip:n.inline),t},e.prototype.airPlay=function(){var e=this;if(e.core.support.airplay)return e.media.webkitShowPlaybackTargetPicker(),e},e.prototype.toggleControls=function(e){var t=this;if(t.config.hideControls&&"audio"!==t.type){var n=0,i=e,o=!1,r=a.hasClass(t.elements.container,t.config.classNames.loading);if(a.is.boolean(e)||(a.is.event(e)?(o="enterfullscreen"===e.type,i=a.inArray(["mousemove","touchstart","mouseenter","focus"],e.type),a.inArray(["mousemove","touchmove"],e.type)&&(n=2e3),"focus"===e.type&&(n=3e3)):i=a.hasClass(t.elements.container,t.config.classNames.hideControls)),window.clearTimeout(t.core.timers.hover),i||t.media.paused||r){if(a.toggleClass(t.elements.container,t.config.classNames.hideControls,!1)&&t.core.trigger(t.media,"controlsshown"),t.media.paused||r)return;s.touch&&(n=3e3)}return i&&t.media.paused||(t.core.timers.hover=window.setTimeout(function(){(!t.elements.controls.pressed&&!t.elements.controls.hover||o)&&a.toggleClass(t.elements.container,t.config.classNames.hideControls,!0)&&(t.core.trigger(t.media,"controlshidden"),a.inArray(t.config.controls,"settings")&&!a.is.empty(t.config.settings)&&t.core.toggleMenu(!1))},n)),t}},e.prototype.on=function(e,t){var n=this;return a.on(n.elements.container,e,t),n},e.prototype.off=function(e,t){var n=this;return a.off(n.elements.container,e,t),n},e.prototype.supports=function(e){return s.mime(this,e)},e.prototype.destroy=function(e,t){function n(){if(null!==i){if(a.is.boolean(t)||(t=!0),document.body.style.overflow="",t){var n=i.elements.container.parentNode;a.is.htmlElement(n)&&n.replaceChild(i.elements.original,i.elements.container)}i.core.trigger(i.elements.original,"destroyed",!0),a.is.function(e)&&e.call(i.elements.original),i=null}}var i=this;switch(i.type){case"youtube":window.clearInterval(i.core.timers.buffering),window.clearInterval(i.core.timers.playing),i.embed.destroy(),n();break;case"vimeo":i.embed.unload().then(n),window.setTimeout(n,200);break;case"video":case"audio":i.core.toggleNativeControls(!0),n()}},e.prototype.getDuration=function(){var e=this,t=parseInt(e.config.duration),n=0;return null===e.media.duration||isNaN(e.media.duration)||(n=e.media.duration),isNaN(t)?n:t},e}); \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 3a3d9ee9..7ae7bf97 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,110 +1,88 @@ // ========================================================================== // Gulp build script // ========================================================================== -/* global require, __dirname,Buffer */ -/* jshint -W079 */ -/* beautify ignore:start */ -var fs = require("fs"), - path = require("path"), - gulp = require("gulp"), - gutil = require("gulp-util"), - concat = require("gulp-concat"), - uglify = require("gulp-uglify"), - less = require("gulp-less"), - sass = require("gulp-sass"), - cleanCSS = require("gulp-clean-css"), - run = require("run-sequence"), - prefix = require("gulp-autoprefixer"), - svgstore = require("gulp-svgstore"), - svgmin = require("gulp-svgmin"), - rename = require("gulp-rename"), - s3 = require("gulp-s3"), - replace = require("gulp-replace"), - open = require("gulp-open"), - size = require("gulp-size"), - through = require("through2"); +/* global require, __dirname */ +/* eslint no-console: "off" */ -var root = __dirname, -paths = { +var fs = require('fs'); +var path = require('path'); +var gulp = require('gulp'); +var gutil = require('gulp-util'); +var concat = require('gulp-concat'); +var uglify = require('gulp-uglify'); +var less = require('gulp-less'); +var sass = require('gulp-sass'); +var cleanCSS = require('gulp-clean-css'); +var run = require('run-sequence'); +var prefix = require('gulp-autoprefixer'); +var svgstore = require('gulp-svgstore'); +var svgmin = require('gulp-svgmin'); +var rename = require('gulp-rename'); +var s3 = require('gulp-s3'); +var replace = require('gulp-replace'); +var open = require('gulp-open'); +var size = require('gulp-size'); +var root = __dirname; + +var paths = { plyr: { // Source paths src: { - less: path.join(root, "src/less/**/*"), - scss: path.join(root, "src/scss/**/*"), - js: path.join(root, "src/js/**/*"), - sprite: path.join(root, "src/sprite/*.svg") + less: path.join(root, 'src/less/**/*'), + scss: path.join(root, 'src/scss/**/*'), + js: path.join(root, 'src/js/**/*'), + sprite: path.join(root, 'src/sprite/*.svg'), }, + // Output paths - output: path.join(root, "dist/") + output: path.join(root, 'dist/'), }, demo: { // Source paths src: { - less: path.join(root, "demo/src/less/**/*"), - js: path.join(root, "demo/src/js/**/*"), - sprite: path.join(root, "demo/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, "demo/dist/"), + output: path.join(root, 'demo/dist/'), + // Demo - root: path.join(root, "demo/") + root: path.join(root, 'demo/'), }, - upload: [path.join(root, "dist/**"), path.join(root, "demo/dist/**")] -}, + upload: [path.join(root, 'dist/**'), path.join(root, 'demo/dist/**')], +}; // Task arrays -tasks = { - less: [], - scss: [], - js: [], - sprite: [] -}, +var tasks = { + less: [], + scss: [], + js: [], + sprite: [], +}; // Fetch bundles from JSON -bundles = loadJSON(path.join(root, "bundles.json")), -package = loadJSON(path.join(root, "package.json")); +var bundles = loadJSON(path.join(root, 'bundles.json')); +var package = loadJSON(path.join(root, 'package.json')); // Load json function loadJSON(path) { try { return JSON.parse(fs.readFileSync(path)); - } - catch(err) { + } catch (err) { return {}; } } -// Create a file from a string -// http://stackoverflow.com/questions/23230569/how-do-you-create-a-file-from-a-string-in-gulp -function createFile(filename, string) { - var src = require('stream').Readable({ - objectMode: true - }); - src._read = function () { - this.push(new gutil.File({ - cwd: "", - base: "", - path: filename, - contents: new Buffer(string), - // stats also required for some functions - // https://nodejs.org/api/fs.html#fs_class_fs_stats - stat: { - size: string.length - } - })); - this.push(null); - } - return src -} - var build = { - js: function (files, bundle) { + js: function(files, bundle) { for (var key in files) { (function(key) { - var name = "js-" + key; + var name = 'js-' + key; tasks.js.push(name); - gulp.task(name, function () { + gulp.task(name, function() { return gulp .src(bundles[bundle].js[key]) .pipe(concat(key)) @@ -116,17 +94,17 @@ var build = { }, less: function(files, bundle) { for (var key in files) { - (function (key) { - var name = "less-" + key; + (function(key) { + var name = 'less-' + key; tasks.less.push(name); - gulp.task(name, function () { + gulp.task(name, function() { return gulp .src(bundles[bundle].less[key]) .pipe(less()) - .on("error", gutil.log) + .on('error', gutil.log) .pipe(concat(key)) - .pipe(prefix(["last 2 versions"], { cascade: false })) + .pipe(prefix(['last 2 versions'], { cascade: false })) .pipe(cleanCSS()) .pipe(gulp.dest(paths[bundle].output)); }); @@ -135,17 +113,17 @@ var build = { }, scss: function(files, bundle) { for (var key in files) { - (function (key) { - var name = "scss-" + key; + (function(key) { + var name = 'scss-' + key; tasks.scss.push(name); - gulp.task(name, function () { + gulp.task(name, function() { return gulp .src(bundles[bundle].scss[key]) .pipe(sass()) - .on("error", gutil.log) + .on('error', gutil.log) .pipe(concat(key)) - .pipe(prefix(["last 2 versions"], { cascade: false })) + .pipe(prefix(['last 2 versions'], { cascade: false })) .pipe(cleanCSS()) .pipe(gulp.dest(paths[bundle].output)); }); @@ -153,48 +131,52 @@ var build = { } }, sprite: function(bundle) { - var name = "sprite-" + bundle; + var name = 'sprite-' + bundle; tasks.sprite.push(name); // Process Icons - gulp.task(name, function () { + gulp.task(name, function() { return gulp .src(paths[bundle].src.sprite) - .pipe(svgmin({ - plugins: [{ - removeDesc: true - }] - })) + .pipe( + svgmin({ + plugins: [ + { + removeDesc: true, + }, + ], + }) + ) .pipe(svgstore()) .pipe(rename({ basename: bundle })) .pipe(gulp.dest(paths[bundle].output)); }); - } + }, }; // Plyr core files -build.js(bundles.plyr.js, "plyr"); -build.less(bundles.plyr.less, "plyr"); -build.scss(bundles.plyr.scss, "plyr"); -build.sprite("plyr"); +build.js(bundles.plyr.js, 'plyr'); +build.less(bundles.plyr.less, 'plyr'); +build.scss(bundles.plyr.scss, 'plyr'); +build.sprite('plyr'); // Demo files -build.less(bundles.demo.less, "demo"); -build.js(bundles.demo.js, "demo"); -build.sprite("demo"); +build.less(bundles.demo.less, 'demo'); +build.js(bundles.demo.js, 'demo'); +build.sprite('demo'); // Build all JS -gulp.task("js", function(){ +gulp.task('js', function() { run(tasks.js); }); // Build SCSS (for testing, default is LESS) -gulp.task("scss", function(){ +gulp.task('scss', function() { run(tasks.scss); }); // Watch for file changes -gulp.task("watch", function () { +gulp.task('watch', function() { // Plyr core gulp.watch(paths.plyr.src.js, tasks.js); gulp.watch(paths.plyr.src.less, tasks.less); @@ -207,90 +189,100 @@ gulp.task("watch", function () { }); // Default gulp task -gulp.task("default", function(){ - run(tasks.js, tasks.less, tasks.sprite, "watch"); +gulp.task('default', function() { + run(tasks.js, tasks.less, tasks.sprite, 'watch'); }); // Publish a version to CDN and demo // -------------------------------------------- // Some options -var aws = loadJSON(path.join(root, "aws.json")), -version = package.version, -maxAge = 31536000, // seconds 1 year -options = { +var aws = loadJSON(path.join(root, 'aws.json')); +var version = package.version; +var maxAge = 31536000; // 1 year +var options = { cdn: { headers: { - "Cache-Control": "max-age=" + maxAge, - "Vary": "Accept-Encoding" - } + 'Cache-Control': 'max-age=' + maxAge, + Vary: 'Accept-Encoding', + }, }, demo: { headers: { - "Cache-Control": "no-cache, no-store, must-revalidate, max-age=0", - "Vary": "Accept-Encoding" - } + 'Cache-Control': 'no-cache, no-store, must-revalidate, max-age=0', + Vary: 'Accept-Encoding', + }, }, symlinks: function(version, filename) { return { headers: { // http://stackoverflow.com/questions/2272835/amazon-s3-object-redirect - "x-amz-website-redirect-location": "/" + version + "/" + filename, - "Cache-Control": "no-cache, no-store, must-revalidate, max-age=0" - } - } - } + 'x-amz-website-redirect-location': '/' + version + '/' + filename, + 'Cache-Control': 'no-cache, no-store, must-revalidate, max-age=0', + }, + }; + }, }; // If aws is setup -if("cdn" in aws) { - var regex = "(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)(?:-[\\da-z\\-]+(?:\.[\\da-z\\-]+)*)?(?:\\+[\\da-z\\-]+(?:\.[\\da-z\\-]+)*)?", - cdnpath = new RegExp(aws.cdn.domain + "\/" + regex, "gi"), - semver = new RegExp("v" + regex, "gi"), - localPath = new RegExp("(\.\.\/)?dist", "gi"), - versionPath = "https://" + aws.cdn.domain + "/" + version; +if ('cdn' in aws) { + var regex = + '(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*).(?:0|[1-9][0-9]*)(?:-[\\da-z\\-]+(?:.[\\da-z\\-]+)*)?(?:\\+[\\da-z\\-]+(?:.[\\da-z\\-]+)*)?'; + var cdnpath = new RegExp(aws.cdn.domain + '/' + regex, 'gi'); + var semver = new RegExp('v' + regex, 'gi'); + var localPath = new RegExp('(../)?dist', 'gi'); + var versionPath = 'https://' + aws.cdn.domain + '/' + version; } // Publish version to CDN bucket -gulp.task("cdn", function () { - console.log("Uploading " + version + " to " + aws.cdn.domain + "..."); +gulp.task('cdn', function() { + console.log('Uploading ' + version + ' to ' + aws.cdn.domain + '...'); // Upload to CDN - return gulp.src(paths.upload) - .pipe(size({ - showFiles: true, - gzip: true - })) - .pipe(rename(function (path) { - path.dirname = path.dirname.replace(".", version); - })) + return gulp + .src(paths.upload) + .pipe( + size({ + showFiles: true, + gzip: true, + }) + ) + .pipe( + rename(function(path) { + path.dirname = path.dirname.replace('.', version); + }) + ) .pipe(replace(localPath, versionPath)) .pipe(s3(aws.cdn, options.cdn)); }); // Publish to demo bucket -gulp.task("demo", function () { - console.log("Uploading " + version + " demo to " + aws.demo.domain + "..."); +gulp.task('demo', function() { + console.log('Uploading ' + version + ' demo to ' + aws.demo.domain + '...'); // Replace versioned files in readme.md - gulp.src([root + "/readme.md"]) - .pipe(replace(cdnpath, aws.cdn.domain + "/" + version)) + gulp + .src([root + '/readme.md']) + .pipe(replace(cdnpath, aws.cdn.domain + '/' + version)) .pipe(gulp.dest(root)); // Replace versioned files in plyr.js - gulp.src(path.join(root, "src/js/plyr.js")) - .pipe(replace(semver, "v" + version)) - .pipe(replace(cdnpath, aws.cdn.domain + "/" + version)) - .pipe(gulp.dest(path.join(root, "src/js/"))); + gulp + .src(path.join(root, 'src/js/plyr.js')) + .pipe(replace(semver, 'v' + version)) + .pipe(replace(cdnpath, aws.cdn.domain + '/' + version)) + .pipe(gulp.dest(path.join(root, 'src/js/'))); // 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.demo.root + "*.html"]) + gulp + .src([paths.demo.root + '*.html']) .pipe(replace(localPath, versionPath)) .pipe(s3(aws.demo, options.demo)); // Upload error.html to cdn (as well as demo site) - return gulp.src([paths.demo.root + "error.html"]) + return gulp + .src([paths.demo.root + 'error.html']) .pipe(replace(localPath, versionPath)) .pipe(s3(aws.cdn, options.demo)); }); @@ -319,21 +311,20 @@ gulp.task("demo", function () { });*/ // Open the demo site to check it's sweet -gulp.task("open", function () { - console.log("Opening " + aws.demo.domain + "..."); +gulp.task('open', function() { + console.log('Opening ' + aws.demo.domain + '...'); // 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.demo.root + "index.html"]) - .pipe(open("", { - url: "http://" + aws.demo.domain - })); + return gulp.src([paths.demo.root + 'index.html']).pipe( + open('', { + url: 'http://' + aws.demo.domain, + }) + ); }); // Do everything -gulp.task("publish", function () { - run(tasks.js, tasks.less, tasks.sprite, "cdn", "demo"); +gulp.task('publish', function() { + run(tasks.js, tasks.less, tasks.sprite, 'cdn', 'demo'); }); - -/* beautify ignore:end */ diff --git a/src/js/plyr.js b/src/js/plyr.js index d5d9f11b..c0a39fb9 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -471,6 +471,7 @@ isFirefox: isFirefox, isChrome: isChrome, isSafari: isSafari, + isWebkit: 'WebkitAppearance' in document.documentElement.style, isIPhone: /(iPhone|iPod)/gi.test(navigator.platform), isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform), }; @@ -1429,6 +1430,45 @@ } } + // Webkit polyfill for lower fill range + function updateRangeFill(range) { + if (!player.browser.isWebkit) { + return; + } + + if (!utils.is.htmlElement(range)) { + return; + } + + // Inject the stylesheet if needed + if (!utils.is.htmlElement(player.elements.styleSheet)) { + player.elements.styleSheet = utils.createElement('style'); + player.elements.container.appendChild(player.elements.styleSheet); + } + + var styleSheet = player.elements.styleSheet.sheet; + var percentage = (range.value / range.max) * 100; + var selector = '#' + range.id + '::-webkit-slider-runnable-track'; + var styles = '{ background-image: linear-gradient(to right, currentColor ' + percentage + '%, transparent ' + percentage + '%) }'; + var index = -1; + + // Find old rule if it exists + [].some.call(styleSheet.rules, function(rule, i) { + if (rule.selectorText === selector) { + index = i; + return true; + } + })[0]; + + // Remove old rule + if (index !== -1) { + styleSheet.deleteRule(index); + } + + // Insert new one + styleSheet.insertRule([selector, styles].join(' ')); + } + // Get icon URL function getIconUrl() { return { @@ -1605,7 +1645,7 @@ type: 'range', min: 0, max: 100, - step: 0.1, + step: 0.01, value: 0, autocomplete: 'off', }, @@ -1738,14 +1778,11 @@ container.appendChild(seek.label); container.appendChild(seek.input); - // TODO: Add loop display indicator - - // Played progress - container.appendChild(createProgress('played')); - // Buffer progress container.appendChild(createProgress('buffer')); + // TODO: Add loop display indicator + // Seek tooltip if (player.config.tooltips.seek) { var tooltip = utils.createElement( @@ -1803,10 +1840,6 @@ volume.appendChild(range.label); volume.appendChild(range.input); - // Create the display progress - var progress = createProgress('volume', attributes); - volume.appendChild(progress); - controls.appendChild(volume); } @@ -2701,8 +2734,6 @@ // Display player.elements.display = { buffer: getElement(player.config.selectors.display.buffer), - played: getElement(player.config.selectors.display.played), - volume: getElement(player.config.selectors.display.volume), duration: getElement(player.config.selectors.display.duration), currentTime: getElement(player.config.selectors.display.currentTime), }; @@ -3043,7 +3074,6 @@ // Get current quality player.media.quality = instance.getPlaybackQuality(); - // Trigger timeupdate trigger(player.media, 'qualitychange'); }, onPlaybackRateChange: function(event) { @@ -3053,7 +3083,6 @@ // Get current speed player.media.playbackRate = instance.getPlaybackRate(); - // Trigger timeupdate trigger(player.media, 'ratechange'); }, onReady: function(event) { @@ -3097,10 +3126,7 @@ // Update UI embedReady(); - // Trigger timeupdate trigger(player.media, 'timeupdate'); - - // Trigger timeupdate trigger(player.media, 'durationchange'); // Reset timer @@ -3177,10 +3203,7 @@ // Poll to get playback progress timers.playing = window.setInterval(function() { - // Set the current time player.media.currentTime = instance.getCurrentTime(); - - // Trigger timeupdate trigger(player.media, 'timeupdate'); }, 100); @@ -3248,15 +3271,11 @@ player.embed.getCurrentTime().then(function(value) { player.media.currentTime = value; - - // Trigger timeupdate trigger(player.media, 'timeupdate'); }); player.embed.getDuration().then(function(value) { player.media.duration = value; - - // Trigger timeupdate trigger(player.media, 'durationchange'); }); @@ -3358,8 +3377,6 @@ player.embed.getPosition(function(value) { player.media.currentTime = value; - - // Trigger timeupdate trigger(player.media, 'timeupdate'); }); @@ -3554,10 +3571,7 @@ var value = player.media.muted ? 0 : player.media.volume; if (player.elements.inputs.volume) { - player.elements.inputs.volume.value = value; - } - if (player.elements.display.volume) { - player.elements.display.volume.value = value; + setRange(player.elements.inputs.volume, value); } } @@ -3592,78 +3606,28 @@ }, player.loading ? 250 : 0); } - // Update elements - function updateProgress(event) { - if (!player.supported.full) { + // Update seek value and lower fill + function setRange(range, value) { + if (!utils.is.htmlElement(range)) { return; } - var progress = player.elements.display.played; - var value = 0; - var duration = player.getDuration(); + range.value = value; - if (event) { - switch (event.type) { - // Video playing - case 'timeupdate': - case 'seeking': - value = utils.getPercentage(player.media.currentTime, duration); - - // Set seek range value only if it's a 'natural' time event - if (event.type === 'timeupdate' && player.elements.inputs.seek) { - player.elements.inputs.seek.value = value; - } - - break; - - // Check buffer status - case 'playing': - case 'progress': - progress = player.elements.display.buffer; - value = (function() { - var buffered = player.media.buffered; - - if (buffered && buffered.length) { - // HTML5 - return utils.getPercentage(buffered.end(0), duration); - } else if (utils.is.number(buffered)) { - // YouTube returns between 0 and 1 - return buffered * 100; - } - - return 0; - })(); - - break; - } - } - - // TODO: Loop - this shouldn't be here - /*if (utils.is.number(player.config.loop.start) && utils.is.number(player.config.loop.end) && player.media.currentTime >= player.config.loop.end) { - console.warn('Looping'); - player.seek(player.config.loop.start); - }*/ - - setProgress(progress, value); + // Webkit range fill + updateRangeFill(range); } // Set value function setProgress(progress, value) { - if (!player.supported.full) { - return; - } - // Default to 0 if (utils.is.undefined(value)) { value = 0; } + // Default to buffer or bail if (utils.is.undefined(progress)) { - if (utils.is.htmlElement(player.elements.display.buffer)) { - progress = player.elements.display.buffer; - } else { - return; - } + progress = player.elements.display.buffer; } // Update value and label @@ -3678,10 +3642,63 @@ } } + // Update elements + function updateProgress(event) { + if (!player.supported.full) { + return; + } + + var value = 0; + var duration = player.getDuration(); + + if (event) { + switch (event.type) { + // Video playing + case 'timeupdate': + case 'seeking': + value = utils.getPercentage(player.media.currentTime, duration); + + // Set seek range value only if it's a 'natural' time event + if (event.type === 'timeupdate') { + setRange(player.elements.inputs.seek, value); + } + + break; + + // Check buffer status + case 'playing': + case 'progress': + value = (function() { + var buffered = player.media.buffered; + + if (buffered && buffered.length) { + // HTML5 + return utils.getPercentage(buffered.end(0), duration); + } else if (utils.is.number(buffered)) { + // YouTube returns between 0 and 1 + return buffered * 100; + } + + return 0; + })(); + + setProgress(player.elements.display.buffer, value); + + break; + } + } + + // TODO: Loop - this shouldn't be here + /*if (utils.is.number(player.config.loop.start) && utils.is.number(player.config.loop.end) && player.media.currentTime >= player.config.loop.end) { + console.warn('Looping'); + player.seek(player.config.loop.start); + }*/ + } + // Update the displayed time function updateTimeDisplay(time, element) { // Bail if there's no duration display - if (!element) { + if (!utils.is.htmlElement(element)) { return; } @@ -3749,27 +3766,6 @@ updateProgress(event); } - // Update seek range and progress - function updateSeekDisplay(time) { - // Default to 0 - if (!utils.is.number(time)) { - time = 0; - } - - var duration = player.getDuration(); - var value = utils.getPercentage(time, duration); - - // Update progress - if (player.elements.progress && player.elements.display.played) { - player.elements.display.played.value = value; - } - - // Update seek range input - if (player.elements.buttons && player.elements.inputs.seek) { - player.elements.inputs.seek.value = value; - } - } - // Update hover tooltip for seeking function updateSeekTooltip(event) { var duration = player.getDuration(); @@ -3828,17 +3824,13 @@ return; } - // Update seek range and progress - updateSeekDisplay(); - - // Reset buffer progress - setProgress(); - // Cancel current network requests cancelRequests(); // Destroy instance and re-setup player.destroy(function() { + // TODO: Reset menus here + // Remove elements removeElement(player.media); removeElement('captions'); @@ -3977,7 +3969,7 @@ var target = player.elements.buttons[play ? 'pause' : 'play']; // Transfer focus - if (target) { + if (utils.is.htmlElement(target)) { target.focus(); } } @@ -4262,11 +4254,12 @@ // Click anywhere closes menu utils.on(document.documentElement, 'click', toggleMenu); - // Show tab in menu - utils.on(player.elements.settings.form, 'click', showTab); - - // Settings menu items - use event delegation as items are added/removed + // Settings menu utils.on(player.elements.settings.form, 'click', function(event) { + // Show tab in menu + showTab(event); + + // Settings menu items - use event delegation as items are added/removed // Settings - Language if (utils.matches(event.target, player.config.selectors.inputs.language)) { handlerProxy.call(this, event, player.config.listeners.language, function() { @@ -4306,11 +4299,18 @@ player.seek(event.target.value / event.target.max * duration); }); - // Seek + // Volume utils.proxy(player.elements.inputs.volume, inputEvent, player.config.listeners.volume, function() { player.setVolume(event.target.value); }); + // Polyfill for lower fill in for webkit + if (player.browser.isWebkit) { + utils.on(getElements('input[type="range"]'), [inputEvent, 'updated'].join(' '), function(event) { + updateRangeFill(event.target); + }); + } + // Seek tooltip utils.on(player.elements.progress, 'mouseenter mouseleave mousemove', updateSeekTooltip); @@ -4789,7 +4789,6 @@ setupCaptions: setupCaptions, toggleNativeControls: toggleNativeControls, updateTimeDisplay: updateTimeDisplay, - updateSeekDisplay: updateSeekDisplay, updateSource: updateSource, toggleMenu: toggleMenu, timers: timers, @@ -4925,9 +4924,6 @@ targetTime = duration; } - // Update seek range and progress - player.core.updateSeekDisplay(targetTime); - // Set the current time // Embeds if (utils.inArray(types.embed, player.type)) { @@ -4949,9 +4945,6 @@ player.pause(); } - // Trigger timeupdate - player.core.trigger(player.media, 'timeupdate'); - // Set seeking flag player.media.seeking = true; @@ -5196,7 +5189,7 @@ player.config.loop.end = null; } player.config.loop.start = currentTime; - player.config.loop.indicator.start = player.elements.display.played.value; + //player.config.loop.indicator.start = player.elements.display.played.value; break; case 'end': @@ -5204,7 +5197,7 @@ return; } player.config.loop.end = currentTime; - player.config.loop.indicator.end = player.elements.display.played.value; + //player.config.loop.indicator.end = player.elements.display.played.value; break; case 'all': diff --git a/src/less/mixins.less b/src/less/mixins.less index 0b75b2a6..a620a599 100644 --- a/src/less/mixins.less +++ b/src/less/mixins.less @@ -18,7 +18,7 @@ background: @plyr-range-thumb-bg; border: @plyr-range-thumb-border; border-radius: 100%; - transition: background .2s ease, border .2s ease, transform .2s ease; + transition: background 0.2s ease, border 0.2s ease, transform 0.2s ease; box-shadow: @plyr-range-thumb-shadow; box-sizing: border-box; } @@ -26,4 +26,4 @@ background: @plyr-range-thumb-active-bg; border-color: @plyr-range-thumb-active-border-color; transform: scale(@plyr-range-thumb-active-scale); -} \ No newline at end of file +} diff --git a/src/less/plyr.less b/src/less/plyr.less index 0c36930c..22e29aa2 100644 --- a/src/less/plyr.less +++ b/src/less/plyr.less @@ -1,6 +1,7 @@ // ========================================================================== // Plyr styles // https://github.com/sampotts/plyr +// TODO: break into smaller files and look at use of BEM classnames // ========================================================================== @import 'variables'; @@ -57,7 +58,7 @@ } // ARIA - [aria-hidden="true"] { + [aria-hidden='true'] { display: none; } @@ -77,7 +78,7 @@ // Range inputs // Specificity is for bootstrap compatibility - input[type="range"] { + input[type='range'] { display: block; height: (@plyr-range-thumb-height * @plyr-range-thumb-active-scale); width: 100%; @@ -87,6 +88,9 @@ border: none; background: transparent; + // Used in JS to populate lower fill for WebKit + color: @plyr-range-selected-bg; + // WebKit -webkit-appearance: none; @@ -106,6 +110,11 @@ &::-moz-range-thumb { .plyr-range-thumb(); } + &::-moz-range-progress { + height: @plyr-range-track-height; + background: currentColor; + border-radius: (@plyr-range-track-height / 2); + } // Microsoft &::-ms-track { @@ -119,7 +128,7 @@ } &::-ms-fill-lower { .plyr-range-track(); - background: @plyr-range-selected-bg; + background: currentColor; } &::-ms-thumb { .plyr-range-thumb(); @@ -157,13 +166,37 @@ } // Video range inputs -.plyr--video input[type="range"].tab-focus { - outline: 1px dotted fade(@plyr-video-control-color, 50%); +.plyr--video input[type='range'] { + &::-webkit-slider-runnable-track { + background: @plyr-video-range-track-bg; + } + &::-moz-range-track { + background: @plyr-video-range-track-bg; + } + &::-ms-track { + background: @plyr-video-range-track-bg; + } + + &.tab-focus { + outline: 1px dotted fade(@plyr-video-control-color, 50%); + } } // Audio range inputs -.plyr--audio input[type="range"].tab-focus { - outline: 1px dotted fade(@plyr-audio-control-color, 50%); +.plyr--audio input[type='range'] { + &::-webkit-slider-runnable-track { + background: @plyr-audio-range-track-bg; + } + &::-moz-range-track { + background: @plyr-audio-range-track-bg; + } + &::-ms-track { + background: @plyr-audio-range-track-bg; + } + + &.tab-focus { + outline: 1px dotted fade(@plyr-audio-control-color, 50%); + } } // Screen reader only elements @@ -354,7 +387,6 @@ display: block; fill: currentColor; pointer-events: none; - filter: drop-shadow(0 1px 1px fade(#000, 15%)); } // Hide toggle icons by default @@ -378,17 +410,21 @@ bottom: 0; z-index: 2; padding: (@plyr-control-spacing * 3.5) @plyr-control-spacing @plyr-control-spacing; - background: linear-gradient(fade(@plyr-video-controls-bg, 0%), fade(@plyr-video-controls-bg, 85%)); + background: linear-gradient(fade(@plyr-video-controls-bg, 0%), fade(@plyr-video-controls-bg, 70%)); border-bottom-left-radius: inherit; border-bottom-right-radius: inherit; color: @plyr-video-control-color; transition: opacity 0.3s ease; .plyr__control { + svg { + filter: drop-shadow(0 1px 1px fade(#000, 15%)); + } + // Hover and tab focus &.tab-focus, &:hover, - &[aria-expanded="true"] { + &[aria-expanded='true'] { background: @plyr-video-control-bg-hover; color: @plyr-video-control-color-hover; } @@ -407,7 +443,7 @@ // Hover and tab focus &.tab-focus, &:hover, - &[aria-expanded="true"] { + &[aria-expanded='true'] { background: @plyr-audio-control-bg-hover; color: @plyr-audio-control-color-hover; } @@ -461,11 +497,11 @@ } // States -.plyr__controls [data-plyr="pause"], -.plyr--playing .plyr__controls [data-plyr="play"] { +.plyr__controls [data-plyr='pause'], +.plyr--playing .plyr__controls [data-plyr='play'] { display: none; } -.plyr--playing .plyr__controls [data-plyr="pause"] { +.plyr--playing .plyr__controls [data-plyr='pause'] { display: inline-block; } @@ -481,16 +517,16 @@ } // Some options are hidden by default -.plyr [data-plyr="captions"], -.plyr [data-plyr="fullscreen"], -.plyr [data-plyr="pip"], -.plyr [data-plyr="airplay"] { +.plyr [data-plyr='captions'], +.plyr [data-plyr='fullscreen'], +.plyr [data-plyr='pip'], +.plyr [data-plyr='airplay'] { display: none; } -.plyr--captions-enabled [data-plyr="captions"], -.plyr--fullscreen-enabled [data-plyr="fullscreen"], -.plyr--pip-enabled [data-plyr="pip"], -.plyr--airplay-enabled [data-plyr="airplay"] { +.plyr--captions-enabled [data-plyr='captions'], +.plyr--fullscreen-enabled [data-plyr='fullscreen'], +.plyr--pip-enabled [data-plyr='pip'], +.plyr--airplay-enabled [data-plyr='airplay'] { display: inline-block; } @@ -503,7 +539,7 @@ .plyr__control svg { transition: transform 0.3s ease; } - .plyr__control[aria-expanded="true"] { + .plyr__control[aria-expanded='true'] { svg { transform: rotate(45deg); } @@ -668,7 +704,7 @@ &::before { // Arrows - content: ""; + content: ''; position: absolute; width: 0; height: 0; @@ -739,16 +775,6 @@ input[type='range'] { position: relative; z-index: 2; - - &::-webkit-slider-runnable-track { - background: transparent; - } - &::-moz-range-track { - background: transparent; - } - &::-ms-fill-upper { - background: transparent; - } } // Seek tooltip to show time @@ -760,9 +786,7 @@ display: inline-block; } -.plyr__progress--buffer, -.plyr__progress--played, -.plyr__volume--display { +.plyr__progress--buffer { position: absolute; left: 0; top: 50%; @@ -770,8 +794,7 @@ height: @plyr-range-track-height; margin: -(@plyr-range-track-height / 2) 0 0; padding: 0; - vertical-align: top; - + background: transparent; border: none; border-radius: 100px; @@ -799,31 +822,6 @@ border-radius: 100px; } } -.plyr__progress--played, -.plyr__volume--display { - z-index: 1; - color: @plyr-range-selected-bg; - background: transparent; - transition: none; - - &::-webkit-progress-value { - min-width: @plyr-range-track-height; - max-width: 99%; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - transition: none; - } - &::-moz-progress-bar { - min-width: @plyr-range-track-height; - max-width: 99%; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - transition: none; - } - &::-ms-fill { - display: none; - } -} .plyr__progress--buffer { &::-webkit-progress-value { transition: width 0.2s ease; @@ -835,18 +833,10 @@ transition: width 0.2s ease; } } -.plyr--video .plyr__progress--buffer, -.plyr--video .plyr__volume--display { - background: @plyr-video-range-track-bg; - box-shadow: 0 1px 1px fade(#000, 15%); -} .plyr--video .plyr__progress--buffer { + box-shadow: 0 1px 1px fade(#000, 15%); color: @plyr-video-progress-buffered-bg; } -.plyr--audio .plyr__progress--buffer, -.plyr--audio .plyr__volume--display { - background: @plyr-audio-range-track-bg; -} .plyr--audio .plyr__progress--buffer { color: @plyr-audio-progress-buffered-bg; } @@ -892,7 +882,7 @@ // Add a slash in before &::before { - content: "\2044"; + content: '\2044'; margin-right: @plyr-control-spacing; } } @@ -926,7 +916,7 @@ // It's not supported to change volume using JavaScript: // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html .plyr--is-ios .plyr__volume, -.plyr--is-ios [data-plyr="mute"] { +.plyr--is-ios [data-plyr='mute'] { display: none !important; } diff --git a/src/less/variables.less b/src/less/variables.less index fe6e3e39..8232c3cb 100644 --- a/src/less/variables.less +++ b/src/less/variables.less @@ -29,8 +29,8 @@ // Controls @plyr-control-icon-size: 18px; @plyr-control-spacing: 10px; -@plyr-control-padding: (@plyr-control-spacing * .7); -@plyr-video-controls-bg: #343f4a; +@plyr-control-padding: (@plyr-control-spacing * 0.7); +@plyr-video-controls-bg: #000; @plyr-video-control-color: #fff; @plyr-video-control-color-hover: #fff; @plyr-video-control-bg-hover: @plyr-color-main; @@ -55,10 +55,8 @@ // Progress @plyr-progress-loading-size: 25px; @plyr-progress-loading-bg: fade(#343f4a, 20%); -@plyr-video-progress-bg: fade(#fff, 25%); -@plyr-video-progress-buffered-bg: @plyr-video-progress-bg; -@plyr-audio-progress-bg: fade(#c6d6db, 66%); -@plyr-audio-progress-buffered-bg: @plyr-audio-progress-bg; +@plyr-video-progress-buffered-bg: fade(#fff, 25%); +@plyr-audio-progress-buffered-bg: fade(#c6d6db, 66%); // Range sliders @plyr-range-track-height: 8px;