fix slider not working on tap

This commit is contained in:
Araxeus
2021-11-01 22:23:26 +02:00
parent b83afa22d9
commit 41285ac9fc

View File

@ -24,6 +24,7 @@ const updatePlayBackSpeed = () => {
}; };
let menu; let menu;
let observingSlider = false;
const observePopupContainer = () => { const observePopupContainer = () => {
const observer = new MutationObserver(() => { const observer = new MutationObserver(() => {
@ -33,6 +34,10 @@ const observePopupContainer = () => {
if (menu && !menu.contains(slider)) { if (menu && !menu.contains(slider)) {
menu.prepend(slider); menu.prepend(slider);
if (!observingSlider) {
setupSliderListener();
observingSlider = true;
}
} }
}); });
@ -47,14 +52,7 @@ const observeVideo = () => {
$('video').addEventListener('loadeddata', forcePlaybackRate) $('video').addEventListener('loadeddata', forcePlaybackRate)
} }
const setupSliderListeners = () => { const setupWheelListener = () => {
slider.addEventListener('immediate-value-change', () => {
playbackSpeed = computePlayBackSpeed($('#playback-speed-slider #sliderBar').value);
if (isNaN(playbackSpeed)) {
playbackSpeed = 1;
}
updatePlayBackSpeed();
})
slider.addEventListener('wheel', e => { slider.addEventListener('wheel', e => {
e.preventDefault(); e.preventDefault();
if (isNaN(playbackSpeed)) { if (isNaN(playbackSpeed)) {
@ -72,6 +70,16 @@ const setupSliderListeners = () => {
}) })
} }
function setupSliderListener() {
$('#playback-speed-slider').addEventListener('immediate-value-changed', () => {
playbackSpeed = computePlayBackSpeed($('#playback-speed-slider #sliderBar').value);
if (isNaN(playbackSpeed)) {
playbackSpeed = 1;
}
updatePlayBackSpeed();
})
}
function forcePlaybackRate(e) { function forcePlaybackRate(e) {
if (e.target.playbackRate !== playbackSpeed) { if (e.target.playbackRate !== playbackSpeed) {
e.target.playbackRate = playbackSpeed e.target.playbackRate = playbackSpeed
@ -82,6 +90,6 @@ module.exports = () => {
document.addEventListener('apiLoaded', e => { document.addEventListener('apiLoaded', e => {
observePopupContainer(); observePopupContainer();
observeVideo(); observeVideo();
setupSliderListeners(); setupWheelListener();
}, { once: true, passive: true }) }, { once: true, passive: true })
}; };