diff --git a/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js b/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js index 07d3f2b4..7f0dbd1a 100644 --- a/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js +++ b/src/components/MediaPlayer/VideoJS/VideoJSPlayer.js @@ -458,6 +458,32 @@ function VideoJSPlayer({ } }; + /** + * Toggle play/pause on video touch for mobile browsers + * @param {Object} e onTouchEnd event + */ + const mobilePlayToggle = (e) => { + if (e.changedTouches[0].clientX == touchX && e.changedTouches[0].clientY == touchY) { + if (player.paused()) { + player.play(); + } else { + player.pause(); + } + } + }; + + /** + * Save coordinates of touch start for comparison to touch end to prevent play/pause + * when user is scrolling. + * @param {Object} e onTouchStart event + */ + let touchX = null; + let touchY = null; + const saveTouchStartCoords = (e) => { + touchX = e.touches[0].clientX + touchY = e.touches[0].clientY + }; + /** * Clear currentNavItem and other related state variables to update the tracker * in structure navigation and highlights within the player. @@ -514,6 +540,8 @@ function VideoJSPlayer({ data-canvasindex={cIndex} ref={(node) => (playerRef.current = node)} className="video-js vjs-big-play-centered" + onTouchStart={saveTouchStartCoords} + onTouchEnd={mobilePlayToggle} > ) : ( diff --git a/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js b/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js index 3e5afe77..476ccadf 100644 --- a/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js +++ b/src/components/MediaPlayer/VideoJS/components/js/VideoJSProgress.js @@ -362,7 +362,7 @@ function ProgressBar({ player, handleTimeUpdate, initCurrentTime, times, options role="slider" data-srcindex={t.sIndex} className="vjs-custom-progress-inactive" - onMouseMove={(e) => handleMouseMove(e, true)} + onPointerMove={(e) => handleMouseMove(e, true)} onClick={handleClick} key={t.sIndex} tabIndex={0} @@ -399,7 +399,8 @@ function ProgressBar({ player, handleTimeUpdate, initCurrentTime, times, options data-srcindex={srcIndex} className="vjs-custom-progress" onChange={updateProgress} - onMouseMove={(e) => handleMouseMove(e, false)} + onPointerDown={(e) => handleMouseMove(e, false)} + onPointerMove={(e) => handleMouseMove(e, false)} id="slider-range" ref={sliderRangeRef} tabIndex={0}