use pseudo decorators

This commit is contained in:
Araxeus
2023-03-12 21:41:15 +02:00
parent 7abc67b456
commit f1073e37b5
6 changed files with 82 additions and 105 deletions

View File

@ -1,5 +1,6 @@
const { getSongMenu } = require("../../providers/dom-elements");
const { ElementFromFile, templatePath } = require("../utils");
const { singleton } = require("../../providers/decorators")
function $(selector) { return document.querySelector(selector); }
@ -22,7 +23,16 @@ const updatePlayBackSpeed = () => {
};
let menu;
let observingSlider = false;
const setupSliderListener = singleton(() => {
$('#playback-speed-slider').addEventListener('immediate-value-changed', e => {
playbackSpeed = e.detail.value || MIN_PLAYBACK_SPEED;
if (isNaN(playbackSpeed)) {
playbackSpeed = 1;
}
updatePlayBackSpeed();
})
});
const observePopupContainer = () => {
const observer = new MutationObserver(() => {
@ -32,10 +42,7 @@ const observePopupContainer = () => {
if (menu && menu.parentElement.eventSink_?.matches('ytmusic-menu-renderer.ytmusic-player-bar') && !menu.contains(slider)) {
menu.prepend(slider);
if (!observingSlider) {
setupSliderListener();
observingSlider = true;
}
setupSliderListener();
}
});
@ -68,16 +75,6 @@ const setupWheelListener = () => {
})
}
function setupSliderListener() {
$('#playback-speed-slider').addEventListener('immediate-value-changed', e => {
playbackSpeed = e.detail.value || MIN_PLAYBACK_SPEED;
if (isNaN(playbackSpeed)) {
playbackSpeed = 1;
}
updatePlayBackSpeed();
})
}
function forcePlaybackRate(e) {
if (e.target.playbackRate !== playbackSpeed) {
e.target.playbackRate = playbackSpeed