Tweaks
This commit is contained in:
parent
8ea4cbd942
commit
04b8d0bac8
2
demo/dist/demo.js
vendored
2
demo/dist/demo.js
vendored
@ -1 +1 @@
|
|||||||
"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,s=arguments.length;for(i=0;i<s;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",s=e.Element[i],n=Object,o=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;t<i;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=o.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,n=i.length;s<n;s++)this.push(i[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],d=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",c(this,e)!==-1},u.add=function(){var e,t=arguments,i=0,s=t.length,n=!1;do e=t[i]+"",c(this,e)===-1&&(this.push(e),n=!0);while(++i<s);n&&this._updateClassName()},u.remove=function(){var e,t,i=arguments,s=0,n=i.length,o=!1;do for(e=i[s]+"",t=c(this,e);t!==-1;)this.splice(t,1),o=!0,t=c(this,e);while(++s<n);o&&this._updateClassName()},u.toggle=function(e,t){e+="";var i=this.contains(e),s=i?t!==!0&&"remove":t!==!1&&"add";return s&&this[s](e),t===!0||t===!1?t:!i},u.toString=function(){return this.join(" ")},n.defineProperty){var p={get:d,enumerable:!0,configurable:!0};try{n.defineProperty(s,t,p)}catch(e){e.number===-2146823252&&(p.enumerable=!1,n.defineProperty(s,t,p))}}else n[i].__defineGetter__&&s.__defineGetter__(t,d)}}(self)),function(){function e(e,t,i){if(e)if(e.classList)e.classList[i?"add":"remove"](t);else{var s=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=s+(i?" "+t:"")}}function t(t,i){if(t in o&&(i||t!==r)&&(r.length||t!==o.video)){switch(t){case o.video:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4",type:"video/mp4"}],poster:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0}]});break;case o.audio:s.source({type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]});break;case o.youtube:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"bTqVqk7FSmY",type:"youtube"}]});break;case o.vimeo:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"143418951",type:"vimeo"}]})}r=t;for(var a=n.length-1;a>=0;a--)e(n[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}var i=plyr.setup({debug:!0,title:"Video demo",iconUrl:"../dist/plyr.svg",tooltips:{controls:!0},captions:{defaultActive:!0},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","fullscreen","pip","airplay"]});plyr.loadSprite("dist/demo.svg");for(var s=i[0],n=document.querySelectorAll("[data-source]"),o={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState,c=n.length-1;c>=0;c--)n[c].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),a&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),a){var l=!r.length;l&&(r=o.video),r in o&&history.replaceState({type:r},"",l?"":"#"+r),r!==o.video&&t(r,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,n,o,r){e.GoogleAnalyticsObject=n,e[n]=e[n]||function(){(e[n].q=e[n].q||[]).push(arguments)},e[n].l=1*new Date,o=t.createElement(i),r=t.getElementsByTagName(i)[0],o.async=1,o.src=s,r.parentNode.insertBefore(o,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview"));
|
"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var i,s=arguments.length;for(i=0;i<s;i++)e=arguments[i],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:i.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",i="prototype",s=e.Element[i],o=Object,n=String[i].trim||function(){return this.replace(/^\s+|\s+$/g,"")},r=Array[i].indexOf||function(e){for(var t=0,i=this.length;t<i;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return r.call(e,t)},l=function(e){for(var t=n.call(e.getAttribute("class")||""),i=t?t.split(/\s+/):[],s=0,o=i.length;s<o;s++)this.push(i[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[i]=[],p=function(){return new l(this)};if(a[i]=Error[i],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",c(this,e)!==-1},u.add=function(){var e,t=arguments,i=0,s=t.length,o=!1;do e=t[i]+"",c(this,e)===-1&&(this.push(e),o=!0);while(++i<s);o&&this._updateClassName()},u.remove=function(){var e,t,i=arguments,s=0,o=i.length,n=!1;do for(e=i[s]+"",t=c(this,e);t!==-1;)this.splice(t,1),n=!0,t=c(this,e);while(++s<o);n&&this._updateClassName()},u.toggle=function(e,t){e+="";var i=this.contains(e),s=i?t!==!0&&"remove":t!==!1&&"add";return s&&this[s](e),t===!0||t===!1?t:!i},u.toString=function(){return this.join(" ")},o.defineProperty){var d={get:p,enumerable:!0,configurable:!0};try{o.defineProperty(s,t,d)}catch(e){e.number===-2146823252&&(d.enumerable=!1,o.defineProperty(s,t,d))}}else o[i].__defineGetter__&&s.__defineGetter__(t,p)}}(self)),function(){function e(e,t,i){if(e)if(e.classList)e.classList[i?"add":"remove"](t);else{var s=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=s+(i?" "+t:"")}}function t(t,i){if(t in n&&(i||t!==r)&&(r.length||t!==n.video)){switch(t){case n.video:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4",type:"video/mp4"}],poster:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0}]});break;case n.audio:s.source({type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]});break;case n.youtube:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://www.youtube.com/watch?v=bTqVqk7FSmY",type:"youtube"}]});break;case n.vimeo:s.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://vimeo.com/147860358",type:"vimeo"}]})}r=t;for(var a=o.length-1;a>=0;a--)e(o[a].parentElement,"active",!1);e(document.querySelector('[data-source="'+t+'"]').parentElement,"active",!0)}}var i=plyr.setup({debug:!0,title:"Video demo",iconUrl:"../dist/plyr.svg",tooltips:{controls:!0},captions:{defaultActive:!0},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","fullscreen","pip","airplay"]});plyr.loadSprite("dist/demo.svg");for(var s=i[0],o=document.querySelectorAll("[data-source]"),n={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState,c=o.length-1;c>=0;c--)o[c].addEventListener("click",function(){var e=this.getAttribute("data-source");t(e),a&&history.pushState({type:e},"","#"+e)});if(window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&t(e.state.type)}),a){var l=!r.length;l&&(r=n.video),r in n&&history.replaceState({type:r},"",l?"":"#"+r),r!==n.video&&t(r,!0)}}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,i,s,o,n,r){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,n=t.createElement(i),r=t.getElementsByTagName(i)[0],n.async=1,n.src=s,r.parentNode.insertBefore(n,r)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview"));
|
@ -154,7 +154,7 @@
|
|||||||
type: 'video',
|
type: 'video',
|
||||||
title: 'View From A Blue Moon',
|
title: 'View From A Blue Moon',
|
||||||
sources: [{
|
sources: [{
|
||||||
src: 'bTqVqk7FSmY',
|
src: 'https://www.youtube.com/watch?v=bTqVqk7FSmY',
|
||||||
type: 'youtube'
|
type: 'youtube'
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
@ -165,7 +165,7 @@
|
|||||||
type: 'video',
|
type: 'video',
|
||||||
title: 'View From A Blue Moon',
|
title: 'View From A Blue Moon',
|
||||||
sources: [{
|
sources: [{
|
||||||
src: '143418951',
|
src: 'https://vimeo.com/147860358',
|
||||||
type: 'vimeo'
|
type: 'vimeo'
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
4
dist/plyr.js
vendored
4
dist/plyr.js
vendored
File diff suppressed because one or more lines are too long
31
notes.md
31
notes.md
@ -1,15 +1,22 @@
|
|||||||
### Todo
|
### Todo
|
||||||
|
|
||||||
#### To build
|
#### To build
|
||||||
- Get list of subtitles/captions available (HTML5)
|
[x] Get list of subtitles/captions available (HTML5)
|
||||||
- Add preferred quality option into config
|
[x] Add preferred quality option into config
|
||||||
- Update quality options on YouTube play (can't get up front?!)
|
[ ] Update quality options on YouTube play (can't get up front?!)
|
||||||
- Update speed options on YouTube load
|
[ ] Update speed options on YouTube load
|
||||||
- Get quality options for HTML5 somehow (multi source?)
|
[ ] Get quality options for HTML5 somehow (multi source?)
|
||||||
- Finish and test PiP (need Sierra VM)
|
[ ] Finish and test PiP (need Sierra VM)
|
||||||
- Finish and test AirPlay (need Sierra VM)
|
[ ] Finish and test AirPlay (need Sierra VM)
|
||||||
- Download button - grab first <source> or src attribute (or maybe use currentSrc?) for HTML5 and links for embedded players
|
[ ] Download button - grab first <source> or src attribute (or maybe use currentSrc?) for HTML5 and links for embedded players
|
||||||
- Controls hide/show events
|
[ ] Controls hide/show events
|
||||||
|
|
||||||
|
#### Bugs
|
||||||
|
[ ] Fix audio setup bug when calling .setup() again
|
||||||
|
[ ] Fix events on unsupported devices (iOS)
|
||||||
|
[ ] Investigate iOS inline playback
|
||||||
|
[ ] Look at Vimeo's "background" option
|
||||||
|
[ ] Fix YouTube rights blocking (origin perhaps?)
|
||||||
|
|
||||||
# Notes
|
# Notes
|
||||||
- No quality HTML5 support (yet)
|
- No quality HTML5 support (yet)
|
||||||
@ -18,12 +25,6 @@
|
|||||||
- No PiP or AirPlay for Vimeo/YouTube
|
- No PiP or AirPlay for Vimeo/YouTube
|
||||||
- Settings won't be supported for custom controls (coming soon, need to work on templating)
|
- Settings won't be supported for custom controls (coming soon, need to work on templating)
|
||||||
|
|
||||||
#### Bugs
|
|
||||||
- Fix audio setup bug when calling .setup() again
|
|
||||||
- Fix events on unsupported devices (iOS)
|
|
||||||
- Investigate iOS inline playback
|
|
||||||
- Look at Vimeo's "background" option
|
|
||||||
|
|
||||||
#### Breaking changes
|
#### Breaking changes
|
||||||
- New config options for loop
|
- New config options for loop
|
||||||
- Selectors changes (new `input` and `display` object) - DOCUMENT
|
- Selectors changes (new `input` and `display` object) - DOCUMENT
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
// Default config
|
// Default config
|
||||||
var defaults = {
|
var defaults = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
title: '',
|
||||||
debug: false,
|
debug: false,
|
||||||
autoplay: false,
|
autoplay: false,
|
||||||
seekTime: 10,
|
seekTime: 10,
|
||||||
@ -233,6 +234,7 @@
|
|||||||
end: 'End',
|
end: 'End',
|
||||||
all: 'All',
|
all: 'All',
|
||||||
reset: 'Reset',
|
reset: 'Reset',
|
||||||
|
none: 'None'
|
||||||
},
|
},
|
||||||
|
|
||||||
// URLs
|
// URLs
|
||||||
@ -806,7 +808,7 @@
|
|||||||
// Parse YouTube ID from url
|
// Parse YouTube ID from url
|
||||||
function parseYouTubeId(url) {
|
function parseYouTubeId(url) {
|
||||||
var regex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
|
var regex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
|
||||||
return (url.match(regex)) ? RegExp.$2 : url;
|
return url.match(regex) ? RegExp.$2 : url;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fullscreen API
|
// Fullscreen API
|
||||||
@ -1663,11 +1665,23 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
[].forEach.call(player.captions.tracks, function(track) {
|
// Re-map the tracks into just the data we need
|
||||||
if (is.function(track)) {
|
var tracks = [].map.call(player.captions.tracks, function(track) {
|
||||||
return;
|
return {
|
||||||
|
language: track.language,
|
||||||
|
badge: true,
|
||||||
|
label: !is.empty(track.label) ? track.label : track.language.toUpperCase()
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add the "None" option to turn off captions
|
||||||
|
tracks.unshift({
|
||||||
|
language: 'off',
|
||||||
|
label: config.i18n.none
|
||||||
|
});
|
||||||
|
|
||||||
|
// Generate options
|
||||||
|
tracks.forEach(function(track) {
|
||||||
var item = createElement('li');
|
var item = createElement('li');
|
||||||
|
|
||||||
var label = createElement('label', {
|
var label = createElement('label', {
|
||||||
@ -1688,7 +1702,10 @@
|
|||||||
|
|
||||||
label.appendChild(radio);
|
label.appendChild(radio);
|
||||||
label.appendChild(document.createTextNode(track.label || track.language));
|
label.appendChild(document.createTextNode(track.label || track.language));
|
||||||
label.appendChild(createBadge(track.language.toUpperCase()));
|
|
||||||
|
if (track.badge) {
|
||||||
|
label.appendChild(createBadge(track.language.toUpperCase()));
|
||||||
|
}
|
||||||
|
|
||||||
item.appendChild(label);
|
item.appendChild(label);
|
||||||
|
|
||||||
@ -2099,7 +2116,7 @@
|
|||||||
var label = config.i18n.play;
|
var label = config.i18n.play;
|
||||||
|
|
||||||
// If there's a media title set, use that for the label
|
// If there's a media title set, use that for the label
|
||||||
if (is.string(config.title) && config.title.length) {
|
if (is.string(config.title) && !is.empty(config.title)) {
|
||||||
label += ', ' + config.title;
|
label += ', ' + config.title;
|
||||||
|
|
||||||
// Set container label
|
// Set container label
|
||||||
@ -2119,7 +2136,8 @@
|
|||||||
// Set iframe title
|
// Set iframe title
|
||||||
// https://github.com/Selz/plyr/issues/124
|
// https://github.com/Selz/plyr/issues/124
|
||||||
if (is.htmlElement(iframe)) {
|
if (is.htmlElement(iframe)) {
|
||||||
iframe.setAttribute('title', config.i18n.frameTitle.replace('{title}', config.title));
|
var title = is.string(config.title) && !is.empty(config.title) ? config.title : 'video';
|
||||||
|
iframe.setAttribute('title', config.i18n.frameTitle.replace('{title}', title));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2529,9 +2547,9 @@
|
|||||||
function vimeoReady(mediaId, container) {
|
function vimeoReady(mediaId, container) {
|
||||||
// Setup instance
|
// Setup instance
|
||||||
// https://github.com/vimeo/player.js
|
// https://github.com/vimeo/player.js
|
||||||
plyr.embed = new window.Vimeo.Player(container, {
|
player.embed = new window.Vimeo.Player(container, {
|
||||||
id: mediaId,
|
id: mediaId,
|
||||||
loop: config.loop,
|
loop: config.loop.active,
|
||||||
autoplay: config.autoplay,
|
autoplay: config.autoplay,
|
||||||
byline: false,
|
byline: false,
|
||||||
portrait: false,
|
portrait: false,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user