aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/js/plyr.js65
1 files changed, 51 insertions, 14 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js
index e6980b6b..825f13da 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -36,6 +36,9 @@
loop: false,
seekTime: 10,
volume: 5,
+ volumeMin: 0,
+ volumeMax: 10,
+ volumeStep: 1,
duration: null,
displayDuration: true,
iconPrefix: 'plyr',
@@ -194,7 +197,7 @@
else if ((verOffset=nAgt.indexOf('Safari')) !== -1) {
name = 'Safari';
fullVersion = nAgt.substring(verOffset + 7);
- if ((verOffset=nAgt.indexOf('Version')) !== -1) {
+ if ((verOffset = nAgt.indexOf('Version')) !== -1) {
fullVersion = nAgt.substring(verOffset + 8);
}
}
@@ -773,8 +776,8 @@
html.push(
'<span class="plyr__volume">',
'<label for="volume{id}" class="plyr__sr-only">' + config.i18n.volume + '</label>',
- '<input id="volume{id}" class="plyr__volume--input" type="range" min="0" max="10" value="5" data-plyr="volume">',
- '<progress class="plyr__volume--display" max="10" value="0" role="presentation"></progress>',
+ '<input id="volume{id}" class="plyr__volume--input" type="range" min="' + config.volumeMin + '" max="' + config.volumeMax + '" value="' + config.volume + '" data-plyr="volume">',
+ '<progress class="plyr__volume--display" max="' + config.volumeMax + '" value="' + config.volumeMin + '" role="presentation"></progress>',
'</span>'
);
}
@@ -1390,7 +1393,7 @@
window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];
// Add to queue
- window.onYouTubeReadyCallbacks.push(function() { _youTubeReady(mediaId, container) });
+ window.onYouTubeReadyCallbacks.push(function() { _youTubeReady(mediaId, container); });
// Set callback to process queue
window.onYouTubeIframeAPIReady = function () {
@@ -1610,6 +1613,10 @@
_triggerEvent(plyr.media, 'pause');
break;
}
+
+ _triggerEvent(plyr.container, 'statechange', false, {
+ code: event.data
+ });
}
}
});
@@ -2016,11 +2023,11 @@
break;
case 'vimeo':
- plyr.embed.api('setVolume', plyr.media.muted ? 0 : parseFloat(config.volume / 10));
+ plyr.embed.api('setVolume', plyr.media.muted ? 0 : parseFloat(config.volume / config.volumeMax));
break;
case 'soundcloud':
- plyr.embed.setVolume(plyr.media.muted ? 0 : parseFloat(config.volume / 10));
+ plyr.embed.setVolume(plyr.media.muted ? 0 : parseFloat(config.volume / config.volumeMax));
break;
}
@@ -2031,6 +2038,9 @@
// Set volume
function _setVolume(volume) {
+ var max = config.volumeMax,
+ min = config.volumeMin;
+
// Use default if no value specified
if (typeof volume === 'undefined') {
volume = config.volume;
@@ -2049,17 +2059,17 @@
volume = config.volume;
}
- // Maximum is 10
- if (volume > 10) {
- volume = 10;
+ // Maximum is volumeMax
+ if (volume > max) {
+ volume = max;
}
- // Minimum is 0
- if (volume < 0) {
- volume = 0;
+ // Minimum is volumeMin
+ if (volume < min) {
+ volume = min;
}
// Set the player volume
- plyr.media.volume = parseFloat(volume / 10);
+ plyr.media.volume = parseFloat(volume / max);
// Set the display
if (plyr.volume.display) {
@@ -2093,10 +2103,24 @@
}
}
+ // Increase volume
+ function _increaseVolume() {
+ var volume = plyr.media.muted ? 0 : (plyr.media.volume * config.volumeMax);
+
+ _setVolume(volume + config.volumeStep);
+ }
+
+ // Decrease volume
+ function _decreaseVolume() {
+ var volume = plyr.media.muted ? 0 : (plyr.media.volume * config.volumeMax);
+
+ _setVolume(volume - config.volumeStep);
+ }
+
// Update volume UI and storage
function _updateVolume() {
// Get the current volume
- var volume = plyr.media.muted ? 0 : (plyr.media.volume * 10);
+ var volume = plyr.media.muted ? 0 : (plyr.media.volume * config.volumeMax);
// Update the <input type="range"> if present
if (plyr.supported.full) {
@@ -2684,6 +2708,7 @@
}
}
}
+
_on(window, 'keyup', function(event) {
var code = (event.keyCode ? event.keyCode : event.which);
@@ -2755,6 +2780,18 @@
// Focus in/out on controls
_on(plyr.controls, 'focus blur', _toggleControls, true);
}
+
+ _on(plyr.volume.input, 'wheel', function(event) {
+ event.preventDefault();
+
+ if (event.deltaY < 0 || event.deltaX > 0) {
+ _increaseVolume();
+ }
+
+ if (event.deltaY > 0 || event.deltaX < 0) {
+ _decreaseVolume();
+ }
+ });
}
// Listen for media events