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();
|
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 setFsVolume = (e) => {
|
||||||
const rect = fsVolumeBar.getBoundingClientRect();
|
const rect = fsVolumeBar.getBoundingClientRect();
|
||||||
const position = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
|
const position = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue