aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChrysa Papadopoulou <papadopoulou.chrysa@gmail.com>2017-02-14 16:04:58 +0200
committerChrysa Papadopoulou <papadopoulou.chrysa@gmail.com>2017-02-14 16:04:58 +0200
commit1fd742464d258ce75ffc02ee526952c543884ebd (patch)
tree44a42afb0e310076e92ce9bc917c9a1760d20f89 /src
parent9c599884a85d922ad6ceb20f6a6c2cffc132e845 (diff)
downloadplyr-1fd742464d258ce75ffc02ee526952c543884ebd.tar.lz
plyr-1fd742464d258ce75ffc02ee526952c543884ebd.tar.xz
plyr-1fd742464d258ce75ffc02ee526952c543884ebd.zip
Added key bindings for loop
Diffstat (limited to 'src')
-rw-r--r--src/js/plyr.js42
1 files changed, 40 insertions, 2 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js
index 490c2626..4f158f04 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -40,6 +40,11 @@
loop: false,
loopin: 0,
loopout: null,
+ loopKeyEvents: {
+ toggleLoop: 76,
+ loopin: 73,
+ loopout: 79
+ },
seekTime: 10,
volume: 10,
volumeMin: 0,
@@ -2463,7 +2468,7 @@
// Toggle loop
function toggleLoop(toggle) {
- if (['loopin', 'loopout', 'loopall'].indexOf(toggle) === -1) {
+ if (['loopin', 'loopout', 'loopall', 'toggle'].indexOf(toggle) === -1) {
toggle = 'loopclear';
}
@@ -2486,6 +2491,15 @@
config.loopin = 0;
config.loopout = plyr.media.duration - 2;
break;
+ case 'toggle':
+ if (config.loop) {
+ config.loopin = 0;
+ config.loopout = null;
+ } else {
+ config.loopin = 0;
+ config.loopout = plyr.media.duration - 2;
+ }
+ break;
default:
config.loopin = 0;
config.loopout = null;
@@ -3528,8 +3542,9 @@
// Which keycodes should we prevent default
var preventDefault = [48, 49, 50, 51, 52, 53, 54, 56, 57, 32, 75, 38, 40, 77, 39, 37, 70, 67];
var checkFocus = [38, 40];
+ var loopKeyEventsValues = Object.values(config.loopKeyEvents);
- if (inArray(checkFocus, code)) {
+ if (inArray(checkFocus, code) || inArray(loopKeyEventsValues, code)) {
var focused = getFocusElement();
if (is.htmlElement(focused) && getFocusElement().type === "radio") {
@@ -3608,6 +3623,29 @@
break;
}
+ //Loop events
+ var loopKeyBindings = config.loopKeyEvents;
+ var hasBindedKey = loopKeyEventsValues.filter(function(el) {
+ return preventDefault.indexOf(el) > -1;
+ }).length >= 1;
+
+ if (hasBindedKey) {
+ loopKeyBindings = defaults.loopKeyEvents;
+ }
+ console.log(loopKeyBindings,'~~~loopKeyBindings')
+
+ switch (code) {
+ case loopKeyBindings.toggleLoop:
+ toggleLoop('toggle');
+ break;
+ case loopKeyBindings.loopin:
+ toggleLoop('loopin');
+ break;
+ case loopKeyBindings.loopout:
+ toggleLoop('loopout');
+ break;
+ }
+
// Escape is handle natively when in full screen
// So we only need to worry about non native
if (!support.fullscreen && plyr.isFullscreen && code === 27) {