diff options
author | Chrysa Papadopoulou <papadopoulou.chrysa@gmail.com> | 2017-01-31 17:21:33 +0200 |
---|---|---|
committer | Chrysa Papadopoulou <papadopoulou.chrysa@gmail.com> | 2017-01-31 17:21:33 +0200 |
commit | ea30ad949407c7bc2a744d03bab4d99da6c2df45 (patch) | |
tree | 0446f841093afa39f671a3591ca67ca107358178 /src | |
parent | 7608615702af22ea14340e0d45e2652e7fa31753 (diff) | |
download | plyr-ea30ad949407c7bc2a744d03bab4d99da6c2df45.tar.lz plyr-ea30ad949407c7bc2a744d03bab4d99da6c2df45.tar.xz plyr-ea30ad949407c7bc2a744d03bab4d99da6c2df45.zip |
Playback speed control settings
Diffstat (limited to 'src')
-rw-r--r-- | src/js/plyr.js | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js index c2000234..346bfb7e 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -85,7 +85,8 @@ fullscreen: '[data-plyr="fullscreen"]', settings: '[data-plyr="settings"]', pip: '[data-plyr="pip"]', - airplay: '[data-plyr="airplay"]' + airplay: '[data-plyr="airplay"]', + speed: '[data-plyr="speed"]' }, volume: { input: '[data-plyr="volume"]', @@ -987,7 +988,7 @@ '<li role="tab">', '<button type="button" class="plyr__control plyr__control--forward" id="plyr-settings-{id}-speed-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-speed" aria-expanded="false">', config.i18n.speed + - '<span class="plyr__menu__value">{speed}</span>', + '<span class="plyr__menu__value" data-menu="speed">{speed}</span>', '</button>', '</li>', '<li role="tab">', @@ -1013,7 +1014,7 @@ '</li>', '</ul>', '</div>', - '<div class="plyr__menu__secondary" id="plyr-settings-{id}-speed" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-speed-toggle" role="tabpanel" tabindex="-1">', + '<form class="plyr__menu__secondary" id="plyr-settings-{id}-speed" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-speed-toggle" role="tabpanel" tabindex="-1">', '<ul>', '<li role="tab">', '<button type="button" class="plyr__control plyr__control--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', @@ -1021,19 +1022,31 @@ '</button>', '</li>', '<li>', - '<button type="button" class="plyr__control">2×</button>', + '<label class="plyr__control">', + '<input type="radio" name="speed" data-plyr="speed" value="2.0" '+ (config.currentSpeed === 2 ? 'checked' : '') +'>', + '2.0×', + '</label>', '</li>', '<li>', - '<button type="button" class="plyr__control">1.5×</button>', + '<label class="plyr__control">', + '<input type="radio" name="speed" data-plyr="speed" value="1.5" '+ (config.currentSpeed === 1.5 ? 'checked' : '') +'>', + '1.5×', + '</label>', '</li>', '<li>', - '<button type="button" class="plyr__control">1×</button>', + '<label class="plyr__control">', + '<input type="radio" name="speed" data-plyr="speed" value="1.0" '+ (config.currentSpeed === 1 ? 'checked' : '') +'>', + '1.0×', + '</label>', '</li>', '<li>', - '<button type="button" class="plyr__control">0.5×</button>', + '<label class="plyr__control">', + '<input type="radio" name="speed" data-plyr="speed" value="0.5" '+ (config.currentSpeed === 0.5 ? 'checked' : '') +'>', + '0.5×', + '</label>', '</li>', '</ul>', - '</div>', + '</form>', '<div class="plyr__menu__secondary" id="plyr-settings-{id}-quality" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-quality-toggle" role="tabpanel" tabindex="-1">', '<ul>', '<li role="tab">', @@ -1643,8 +1656,8 @@ // Replace seek time instances html = replaceAll(html, '{seektime}', config.seekTime); - // Replace seek time instances - html = replaceAll(html, '{speed}', config.currentSpeed.toFixed(1).toString().replace('.0', '') + '×'); + // Replace speed time instances + html = replaceAll(html, '{speed}', getSpeedDisplayValue()); // Replace current captions language html = replaceAll(html, '{lang}', 'English'); @@ -1682,6 +1695,10 @@ } } + function getSpeedDisplayValue() { + return config.currentSpeed.toFixed(1).toString().replace('.0', '') + '×' + } + // Find the UI controls and store references function findElements() { try { @@ -1697,7 +1714,8 @@ forward: getElement(config.selectors.buttons.forward), fullscreen: getElement(config.selectors.buttons.fullscreen), settings: getElement(config.selectors.buttons.settings), - pip: getElement(config.selectors.buttons.pip) + pip: getElement(config.selectors.buttons.pip), + speed: document.querySelectorAll(config.selectors.buttons.speed) }; // Inputs @@ -2427,6 +2445,9 @@ updateStorage({ speed: speed }); + + //Update current value of menu + document.querySelector('[data-menu="speed"]').innerHTML = getSpeedDisplayValue(); } // Rewind @@ -3537,7 +3558,10 @@ proxy(plyr.buttons.forward, 'click', config.listeners.forward, forward); // Speed-up - proxy(plyr.buttons.speed, 'click', config.listeners.speed, setSpeed); + proxy(plyr.buttons.speed, 'click', config.listeners.speed, function () { + var speedValue = document.querySelector('[data-plyr="speed"]:checked').value; + setSpeed(Number(speedValue)); + }); // Seek proxy(plyr.buttons.seek, inputEvent, config.listeners.seek, seek); |