diff options
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/controls.js | 26 | ||||
-rw-r--r-- | src/js/defaults.js | 2 | ||||
-rw-r--r-- | src/js/listeners.js | 2 | ||||
-rw-r--r-- | src/js/plugins/vimeo.js | 17 | ||||
-rw-r--r-- | src/js/plugins/youtube.js | 3 | ||||
-rw-r--r-- | src/js/plyr.js | 2 | ||||
-rw-r--r-- | src/js/plyr.polyfilled.js | 2 |
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) // ========================================================================== |