Merge pull request #284 from willianpm/feature/fullscreen-volume-wheel
feat: add mouse wheel support for fullscreen volume control
This commit is contained in:
commit
9e280f6094
1 changed files with 24 additions and 0 deletions
24
js/ui.js
24
js/ui.js
|
|
@ -1344,6 +1344,30 @@ export class UIRenderer {
|
|||
updateFsVolumeUI();
|
||||
};
|
||||
|
||||
const handleFsVolumeWheel = (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const delta = e.deltaY > 0 ? -0.05 : 0.05;
|
||||
const currentVolume = this.player.userVolume;
|
||||
const newVolume = Math.max(0, Math.min(1, currentVolume + delta));
|
||||
|
||||
if (delta > 0 && audioPlayer.muted) {
|
||||
audioPlayer.muted = false;
|
||||
localStorage.setItem('muted', false);
|
||||
}
|
||||
|
||||
this.player.setVolume(newVolume);
|
||||
updateFsVolumeUI();
|
||||
};
|
||||
|
||||
[fsVolumeBar, fsVolumeBtn].forEach((el) => {
|
||||
if (el._fsVolumeWheelHandler) {
|
||||
el.removeEventListener('wheel', el._fsVolumeWheelHandler);
|
||||
}
|
||||
el._fsVolumeWheelHandler = handleFsVolumeWheel;
|
||||
el.addEventListener('wheel', handleFsVolumeWheel, { passive: false });
|
||||
});
|
||||
|
||||
const setFsVolume = (e) => {
|
||||
const rect = fsVolumeBar.getBoundingClientRect();
|
||||
const position = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
|
||||
|
|
|
|||
Loading…
Reference in a new issue