aboutsummaryrefslogtreecommitdiffstats
path: root/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js')
-rw-r--r--src/js/controls.js26
-rw-r--r--src/js/defaults.js2
-rw-r--r--src/js/listeners.js2
-rw-r--r--src/js/plugins/vimeo.js17
-rw-r--r--src/js/plugins/youtube.js3
-rw-r--r--src/js/plyr.js2
-rw-r--r--src/js/plyr.polyfilled.js2
7 files changed, 41 insertions, 13 deletions
diff --git a/src/js/controls.js b/src/js/controls.js
index c4cc7531..106dfe67 100644
--- a/src/js/controls.js
+++ b/src/js/controls.js
@@ -706,7 +706,12 @@ const controls = {
},
// Set a list of available captions languages
- setSpeedMenu() {
+ setSpeedMenu(options) {
+ // Do nothing if not selected
+ if (!this.config.controls.includes('settings') || !this.config.settings.includes('speed')) {
+ return;
+ }
+
// Menu required
if (!utils.is.element(this.elements.settings.panes.speed)) {
return;
@@ -714,8 +719,8 @@ const controls = {
const type = 'speed';
- // Set the default speeds
- if (!utils.is.array(this.options.speed) || !this.options.speed.length) {
+ // Set the speed options
+ if (!utils.is.array(options)) {
this.options.speed = [
0.5,
0.75,
@@ -725,6 +730,8 @@ const controls = {
1.75,
2,
];
+ } else {
+ this.options.speed = options;
}
// Set options if passed and filter based on config
@@ -734,6 +741,9 @@ const controls = {
const toggle = !utils.is.empty(this.options.speed);
controls.toggleTab.call(this, type, toggle);
+ // Check if we need to toggle the parent
+ controls.checkMenu.call(this);
+
// If we're hiding, nothing more to do
if (!toggle) {
return;
@@ -755,6 +765,14 @@ const controls = {
controls.updateSetting.call(this, type, list);
},
+ // Check if we need to hide/show the settings menu
+ checkMenu() {
+ const speedHidden = this.elements.settings.tabs.speed.getAttribute('hidden') !== null;
+ const languageHidden = this.elements.settings.tabs.captions.getAttribute('hidden') !== null;
+
+ utils.toggleHidden(this.elements.settings.menu, speedHidden && languageHidden);
+ },
+
// Show/hide menu
toggleMenu(event) {
const { form } = this.elements.settings;
@@ -1159,7 +1177,7 @@ const controls = {
this.elements.controls = container;
- if (this.config.controls.includes('settings') && this.config.settings.includes('speed')) {
+ if (this.isHTML5) {
controls.setSpeedMenu.call(this);
}
diff --git a/src/js/defaults.js b/src/js/defaults.js
index 5d2cb657..bef54d4c 100644
--- a/src/js/defaults.js
+++ b/src/js/defaults.js
@@ -56,7 +56,7 @@ const defaults = {
// Sprite (for icons)
loadSprite: true,
iconPrefix: 'plyr',
- iconUrl: 'https://cdn.plyr.io/3.0.6/plyr.svg',
+ iconUrl: 'https://cdn.plyr.io/3.0.7/plyr.svg',
// Blank video (used to prevent errors on source change)
blankVideo: 'https://cdn.plyr.io/static/blank.mp4',
diff --git a/src/js/listeners.js b/src/js/listeners.js
index b9d189b7..bc3f62b0 100644
--- a/src/js/listeners.js
+++ b/src/js/listeners.js
@@ -129,7 +129,7 @@ class Listeners {
case 39:
// Arrow forward
- this.player.fastForward();
+ this.player.forward();
break;
case 37:
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js
index 0f522221..7e104ffe 100644
--- a/src/js/plugins/vimeo.js
+++ b/src/js/plugins/vimeo.js
@@ -4,6 +4,7 @@
import utils from './../utils';
import captions from './../captions';
+import controls from './../controls';
import ui from './../ui';
const vimeo = {
@@ -139,10 +140,18 @@ const vimeo = {
return speed;
},
set(input) {
- player.embed.setPlaybackRate(input).then(() => {
- speed = input;
- utils.dispatchEvent.call(player, player.media, 'ratechange');
- });
+ player.embed
+ .setPlaybackRate(input)
+ .then(() => {
+ speed = input;
+ utils.dispatchEvent.call(player, player.media, 'ratechange');
+ })
+ .catch(error => {
+ // Hide menu item (and menu if empty)
+ if (error.name === 'Error') {
+ controls.setSpeedMenu.call(player, []);
+ }
+ });
},
});
diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js
index b8f5aa89..93f8cd33 100644
--- a/src/js/plugins/youtube.js
+++ b/src/js/plugins/youtube.js
@@ -294,7 +294,8 @@ const youtube = {
});
// Get available speeds
- player.options.speed = instance.getAvailablePlaybackRates();
+ const options = instance.getAvailablePlaybackRates();
+ controls.setSpeedMenu.call(player, options);
// Set the tabindex to avoid focus entering iframe
if (player.supported.ui) {
diff --git a/src/js/plyr.js b/src/js/plyr.js
index be930796..f239451a 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -1,6 +1,6 @@
// ==========================================================================
// Plyr
-// plyr.js v3.0.6
+// plyr.js v3.0.7
// https://github.com/sampotts/plyr
// License: The MIT License (MIT)
// ==========================================================================
diff --git a/src/js/plyr.polyfilled.js b/src/js/plyr.polyfilled.js
index 71b33c0f..2dd73112 100644
--- a/src/js/plyr.polyfilled.js
+++ b/src/js/plyr.polyfilled.js
@@ -1,6 +1,6 @@
// ==========================================================================
// Plyr Polyfilled Build
-// plyr.js v3.0.6
+// plyr.js v3.0.7
// https://github.com/sampotts/plyr
// License: The MIT License (MIT)
// ==========================================================================