diff options
Diffstat (limited to 'src/js/listeners.js')
-rw-r--r-- | src/js/listeners.js | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/src/js/listeners.js b/src/js/listeners.js index 5c366803..61df32aa 100644 --- a/src/js/listeners.js +++ b/src/js/listeners.js @@ -209,7 +209,7 @@ const listeners = { // Toggle controls on mouse events and entering fullscreen utils.on( this.elements.container, - 'mouseenter mouseleave mousemove touchstart touchend touchcancel touchmove enterfullscreen', + 'click mouseenter mouseleave mousemove touchmove enterfullscreen exitfullscreen', event => { this.toggleControls(event); } @@ -217,11 +217,11 @@ const listeners = { } // Handle user exiting fullscreen by escaping etc - if (fullscreen.enabled) { + /* if (fullscreen.enabled) { utils.on(document, fullscreen.eventType, event => { this.toggleFullscreen(event); }); - } + } */ }, // Listen for media events @@ -230,7 +230,7 @@ const listeners = { utils.on(this.media, 'timeupdate seeking', event => ui.timeUpdate.call(this, event)); // Display duration - utils.on(this.media, 'durationchange loadedmetadata', event => ui.displayDuration.call(this, event)); + utils.on(this.media, 'durationchange loadedmetadata', event => ui.durationUpdate.call(this, event)); // Handle the media finishing utils.on(this.media, 'ended', () => { @@ -463,11 +463,16 @@ const listeners = { controls.showTab.call(this, event); // Settings menu items - use event delegation as items are added/removed - // Settings - Language if (utils.matches(event.target, this.config.selectors.inputs.language)) { + // Settings - Language proxy(event, 'language', () => { - this.toggleCaptions(true); - this.language = event.target.value.toLowerCase(); + const language = event.target.value; + + this.toggleCaptions(!utils.is.empty(language)); + + if (!utils.is.empty(language)) { + this.language = event.target.value.toLowerCase(); + } }); } else if (utils.matches(event.target, this.config.selectors.inputs.quality)) { // Settings - Quality @@ -479,7 +484,7 @@ const listeners = { proxy(event, 'speed', () => { this.speed = parseFloat(event.target.value); }); - } else if (utils.matches(event.target, this.config.selectors.buttons.loop)) { + } /* else if (utils.matches(event.target, this.config.selectors.buttons.loop)) { // Settings - Looping // TODO: use toggle buttons proxy(event, 'loop', () => { @@ -488,7 +493,7 @@ const listeners = { this.console.warn('Set loop'); }); - } + } */ }); // Seek @@ -498,6 +503,20 @@ const listeners = { }) ); + // Current time invert + // Only if one time element is used for both currentTime and duration + if (this.config.toggleInvert && !utils.is.htmlElement(this.elements.display.duration)) { + utils.on(this.elements.display.currentTime, 'click', () => { + // Do nothing if we're at the start + if (this.currentTime === 0) { + return; + } + + this.config.invertTime = !this.config.invertTime; + ui.timeUpdate.call(this); + }); + } + // Volume utils.on(this.elements.inputs.volume, inputEvent, event => proxy(event, 'volume', () => { @@ -533,7 +552,7 @@ const listeners = { // TODO: Check we need capture here utils.on( this.elements.controls, - 'focus blur', + 'focusin focusout', event => { this.toggleControls(event); }, |