aboutsummaryrefslogtreecommitdiffstats
path: root/dist/plyr.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/plyr.js')
-rw-r--r--dist/plyr.js52
1 files changed, 36 insertions, 16 deletions
diff --git a/dist/plyr.js b/dist/plyr.js
index a43c0141..e4891175 100644
--- a/dist/plyr.js
+++ b/dist/plyr.js
@@ -1704,16 +1704,16 @@ var support = {
// Check for support
// Basic functionality vs full UI
- check: function check(type, provider, inline) {
+ check: function check(type, provider, playsinline) {
var api = false;
var ui = false;
var browser = utils.getBrowser();
- var playsInline = browser.isIPhone && inline && support.inline;
+ var canPlayInline = browser.isIPhone && playsinline && support.playsinline;
switch (provider + ':' + type) {
case 'html5:video':
api = support.video;
- ui = api && support.rangeInput && (!browser.isIPhone || playsInline);
+ ui = api && support.rangeInput && (!browser.isIPhone || canPlayInline);
break;
case 'html5:audio':
@@ -1724,7 +1724,7 @@ var support = {
case 'youtube:video':
case 'vimeo:video':
api = true;
- ui = support.rangeInput && (!browser.isIPhone || playsInline);
+ ui = support.rangeInput && (!browser.isIPhone || canPlayInline);
break;
default:
@@ -1752,7 +1752,7 @@ var support = {
// Inline playback support
// https://webkit.org/blog/6784/new-video-policies-for-ios/
- inline: 'playsInline' in document.createElement('video'),
+ playsinline: 'playsInline' in document.createElement('video'),
// Check for mime type support against a player instance
// Credits: http://diveintohtml5.info/everything.html
@@ -3485,6 +3485,11 @@ var controls = {
list = pane && pane.querySelector('ul');
}
+ // If there's no list it means it's not been rendered...
+ if (!utils.is.element(list)) {
+ return;
+ }
+
// Update the label
var label = this.elements.settings.tabs[setting].querySelector('.' + this.config.classNames.menu.value);
label.innerHTML = controls.getLabel.call(this, setting, value);
@@ -6040,10 +6045,14 @@ var vimeo = {
setAspectRatio: function setAspectRatio(input) {
var ratio = utils.is.string(input) ? input.split(':') : this.config.ratio.split(':');
var padding = 100 / ratio[0] * ratio[1];
- var height = 240;
- var offset = (height - padding) / (height / 50);
this.elements.wrapper.style.paddingBottom = padding + '%';
- this.media.style.transform = 'translateY(-' + offset + '%)';
+
+ if (this.supported.ui) {
+ var height = 240;
+ var offset = (height - padding) / (height / 50);
+
+ this.media.style.transform = 'translateY(-' + offset + '%)';
+ }
},
@@ -6062,7 +6071,8 @@ var vimeo = {
title: false,
speed: true,
transparent: 0,
- gesture: 'media'
+ gesture: 'media',
+ playsinline: !this.config.fullscreen.iosNative
};
var params = utils.buildUrlParams(options);
@@ -6096,6 +6106,11 @@ var vimeo = {
player.media.paused = true;
player.media.currentTime = 0;
+ // Disable native text track rendering
+ if (player.supported.ui) {
+ player.embed.disableTextTrack();
+ }
+
// Create a faux HTML5 API using the Vimeo API
player.media.play = function () {
player.embed.play().then(function () {
@@ -6465,7 +6480,7 @@ var source = {
_this2.provider = !utils.is.empty(input.sources[0].provider) ? input.sources[0].provider : providers.html5;
// Check for support
- _this2.supported = support.check(_this2.type, _this2.provider, _this2.config.inline);
+ _this2.supported = support.check(_this2.type, _this2.provider, _this2.config.playsinline);
// Create new markup
switch (_this2.provider + ':' + _this2.type) {
@@ -6513,7 +6528,7 @@ var source = {
if (_this2.config.muted) {
_this2.media.setAttribute('muted', '');
}
- if (_this2.config.inline) {
+ if (_this2.config.playsinline) {
_this2.media.setAttribute('playsinline', '');
}
}
@@ -6717,12 +6732,17 @@ var Plyr = function () {
if (truthy.includes(params.autoplay)) {
this.config.autoplay = true;
}
- if (truthy.includes(params.playsinline)) {
- this.config.inline = true;
- }
if (truthy.includes(params.loop)) {
this.config.loop.active = true;
}
+
+ // TODO: replace fullscreen.iosNative with this playsinline config option
+ // YouTube requires the playsinline in the URL
+ if (this.isYouTube) {
+ this.config.playsinline = truthy.includes(params.playsinline);
+ } else {
+ this.config.playsinline = true;
+ }
}
} else {
// <div> with attributes
@@ -6756,7 +6776,7 @@ var Plyr = function () {
this.config.autoplay = true;
}
if (this.media.hasAttribute('playsinline')) {
- this.config.inline = true;
+ this.config.playsinline = true;
}
if (this.media.hasAttribute('muted')) {
this.config.muted = true;
@@ -6773,7 +6793,7 @@ var Plyr = function () {
}
// Check for support again but with type
- this.supported = support.check(this.type, this.provider, this.config.inline);
+ this.supported = support.check(this.type, this.provider, this.config.playsinline);
// If no support for even API, bail
if (!this.supported.api) {