Refactor keyboard navigation for video controls to streamline event handling
This commit is contained in:
		@@ -177,7 +177,6 @@
 | 
				
			|||||||
		let customControls = null;
 | 
							let customControls = null;
 | 
				
			||||||
		let playPauseButton = null;
 | 
							let playPauseButton = null;
 | 
				
			||||||
		let seekBar = null;
 | 
							let seekBar = null;
 | 
				
			||||||
        let videoPlaying = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		function exitVideoPlayback() {
 | 
							function exitVideoPlayback() {
 | 
				
			||||||
			if (videoElement && videoElement.pause) {
 | 
								if (videoElement && videoElement.pause) {
 | 
				
			||||||
@@ -219,8 +218,6 @@
 | 
				
			|||||||
			if ($(".video-container").is(":visible") && $('#play-button').length) {
 | 
								if ($(".video-container").is(":visible") && $('#play-button').length) {
 | 
				
			||||||
				$('#play-button').focus();
 | 
									$('#play-button').focus();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
            videoPlaying = false;
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		function showControlsAndResetTimer() {
 | 
							function showControlsAndResetTimer() {
 | 
				
			||||||
@@ -244,6 +241,7 @@
 | 
				
			|||||||
					videoElement.pause();
 | 
										videoElement.pause();
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					            updatePlayPauseButtonState();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		function updatePlayPauseButtonState() {
 | 
							function updatePlayPauseButtonState() {
 | 
				
			||||||
@@ -344,7 +342,6 @@
 | 
				
			|||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					videoElement.play().catch(err => console.error("Error attempting to play video:", err));
 | 
										videoElement.play().catch(err => console.error("Error attempting to play video:", err));
 | 
				
			||||||
                    videoPlaying = true;
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -389,20 +386,36 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                // Global key handling for overlay
 | 
					                // Global key handling for overlay
 | 
				
			||||||
                if (isOverlayVisible) {
 | 
					                if (isOverlayVisible) {
 | 
				
			||||||
                    if (e.key === 'Backspace' || e.keyCode === 8) { // Backspace
 | 
					                    switch (e.key || e.keyCode) {
 | 
				
			||||||
                        e.preventDefault();
 | 
											case 'Backspace':
 | 
				
			||||||
                        if (backButton && backButton.length) backButton.click();
 | 
											case 8:
 | 
				
			||||||
                        return;
 | 
												e.preventDefault();
 | 
				
			||||||
                    }
 | 
												if (backButton && backButton.length) backButton.click();
 | 
				
			||||||
                    if (e.keyCode === 179) { // MediaPlayPause
 | 
												return;
 | 
				
			||||||
                        e.preventDefault();
 | 
											case 'Enter':
 | 
				
			||||||
                        if (playPauseButton && playPauseButton.length) playPauseButton.click();
 | 
											case 13:
 | 
				
			||||||
                        return;
 | 
											case 179: // MediaPlayPause
 | 
				
			||||||
                    }
 | 
												e.preventDefault();
 | 
				
			||||||
                    if (e.keyCode === 178) { // MediaStop
 | 
												if (playPauseButton && playPauseButton.length) playPauseButton.click();
 | 
				
			||||||
                         e.preventDefault();
 | 
												return;
 | 
				
			||||||
                         exitVideoPlayback();
 | 
											case 178: // MediaStop
 | 
				
			||||||
                         return;
 | 
												 e.preventDefault();
 | 
				
			||||||
 | 
												 exitVideoPlayback();
 | 
				
			||||||
 | 
												 return;
 | 
				
			||||||
 | 
											case 'ArrowLeft':
 | 
				
			||||||
 | 
											case 37: // ArrowLeft
 | 
				
			||||||
 | 
					                            videoElement.currentTime = Math.max(0, videoElement.currentTime - 5); // Seek back 5s
 | 
				
			||||||
 | 
					                            handleVideoTimeUpdate();
 | 
				
			||||||
 | 
					                            showControlsAndResetTimer();
 | 
				
			||||||
 | 
					                            e.preventDefault();
 | 
				
			||||||
 | 
					                            return;
 | 
				
			||||||
 | 
											case 'ArrowRight':
 | 
				
			||||||
 | 
											case 39: // ArrowRight
 | 
				
			||||||
 | 
												videoElement.currentTime = Math.min(videoElement.duration, videoElement.currentTime + 5); // Seek forward 5s
 | 
				
			||||||
 | 
												handleVideoTimeUpdate();
 | 
				
			||||||
 | 
												showControlsAndResetTimer();
 | 
				
			||||||
 | 
												e.preventDefault();
 | 
				
			||||||
 | 
												return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -416,11 +429,7 @@
 | 
				
			|||||||
                switch (e.key || e.keyCode) {
 | 
					                switch (e.key || e.keyCode) {
 | 
				
			||||||
                    case 'ArrowLeft':
 | 
					                    case 'ArrowLeft':
 | 
				
			||||||
                    case 37: // ArrowLeft
 | 
					                    case 37: // ArrowLeft
 | 
				
			||||||
						if (videoPlaying) {
 | 
											if (currentIndex !== -1) {
 | 
				
			||||||
                            videoElement.currentTime = Math.max(0, videoElement.currentTime - 5); // Seek back 5s
 | 
					 | 
				
			||||||
                            handleVideoTimeUpdate();
 | 
					 | 
				
			||||||
                            showControlsAndResetTimer();
 | 
					 | 
				
			||||||
						} else if (currentIndex !== -1) {
 | 
					 | 
				
			||||||
                            let nextIndex = (currentIndex - 1 + activeFocusableSet.length) % activeFocusableSet.length;
 | 
					                            let nextIndex = (currentIndex - 1 + activeFocusableSet.length) % activeFocusableSet.length;
 | 
				
			||||||
                            activeFocusableSet[nextIndex].focus();
 | 
					                            activeFocusableSet[nextIndex].focus();
 | 
				
			||||||
                        } else if (activeFocusableSet.length > 0) { // If nothing specific focused, focus last
 | 
					                        } else if (activeFocusableSet.length > 0) { // If nothing specific focused, focus last
 | 
				
			||||||
@@ -431,11 +440,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    case 'ArrowRight':
 | 
					                    case 'ArrowRight':
 | 
				
			||||||
                    case 39: // ArrowRight
 | 
					                    case 39: // ArrowRight
 | 
				
			||||||
						if (videoPlaying) {
 | 
											if (currentIndex !== -1) {
 | 
				
			||||||
                            videoElement.currentTime = Math.min(videoElement.duration, videoElement.currentTime + 5); // Seek forward 5s
 | 
					 | 
				
			||||||
                            handleVideoTimeUpdate();
 | 
					 | 
				
			||||||
                            showControlsAndResetTimer();
 | 
					 | 
				
			||||||
						} else if (currentIndex !== -1) {
 | 
					 | 
				
			||||||
                            let nextIndex = (currentIndex + 1) % activeFocusableSet.length;
 | 
					                            let nextIndex = (currentIndex + 1) % activeFocusableSet.length;
 | 
				
			||||||
                            activeFocusableSet[nextIndex].focus();
 | 
					                            activeFocusableSet[nextIndex].focus();
 | 
				
			||||||
                        } else if (activeFocusableSet.length > 0) { // If nothing specific focused, focus first
 | 
					                        } else if (activeFocusableSet.length > 0) { // If nothing specific focused, focus first
 | 
				
			||||||
@@ -446,9 +451,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    case 'Enter':
 | 
					                    case 'Enter':
 | 
				
			||||||
                    case 13: // Enter
 | 
					                    case 13: // Enter
 | 
				
			||||||
						if (videoPlaying) {
 | 
											if (currentIndex !== -1) {
 | 
				
			||||||
                            $('#play-button').click();
 | 
					 | 
				
			||||||
						} else if (currentIndex !== -1) {
 | 
					 | 
				
			||||||
                            activeFocusableSet[currentIndex].click();
 | 
					                            activeFocusableSet[currentIndex].click();
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        keyHandled = true;
 | 
					                        keyHandled = true;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user