- Updated comments for clarity on enabling/disabling features across various seasonal scripts. - Changed default value checks to ensure undefined values are handled consistently. - Enhanced readability by providing descriptive comments for configuration variables. [skip ci]
80 lines
2.4 KiB
JavaScript
80 lines
2.4 KiB
JavaScript
const config = window.SeasonalsPluginConfig?.FilmNoir || {};
|
|
const filmnoir = config.EnableFilmNoir !== undefined ? config.EnableFilmNoir : true; // enable/disable filmnoir
|
|
|
|
let msgPrinted = false;
|
|
|
|
function toggleFilmNoir() {
|
|
const tint = document.querySelector('.filmnoir-tint');
|
|
const effects = document.querySelector('.filmnoir-effects');
|
|
if (!tint || !effects) return;
|
|
|
|
const videoPlayer = document.querySelector('.videoPlayerContainer');
|
|
const trailerPlayer = document.querySelector('.youtubePlayerContainer');
|
|
const isDashboard = document.body.classList.contains('dashboardDocument');
|
|
const hasUserMenu = document.querySelector('#app-user-menu');
|
|
|
|
if (videoPlayer || trailerPlayer || isDashboard || hasUserMenu) {
|
|
tint.style.display = 'none';
|
|
effects.style.display = 'none';
|
|
if (!msgPrinted) {
|
|
console.log('FilmNoir hidden');
|
|
msgPrinted = true;
|
|
}
|
|
} else {
|
|
tint.style.display = 'block';
|
|
effects.style.display = 'block';
|
|
if (msgPrinted) {
|
|
console.log('FilmNoir visible');
|
|
msgPrinted = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
const observer = new MutationObserver(toggleFilmNoir);
|
|
observer.observe(document.body, {
|
|
childList: true,
|
|
subtree: true,
|
|
attributes: true
|
|
});
|
|
|
|
|
|
function createFilmNoir() {
|
|
if (!document.querySelector('.filmnoir-tint')) {
|
|
const tint = document.createElement('div');
|
|
tint.className = 'filmnoir-tint';
|
|
tint.setAttribute('aria-hidden', 'true');
|
|
document.body.appendChild(tint);
|
|
}
|
|
|
|
let effects = document.querySelector('.filmnoir-effects');
|
|
if (!effects) {
|
|
effects = document.createElement('div');
|
|
effects.className = 'filmnoir-effects';
|
|
effects.setAttribute('aria-hidden', 'true');
|
|
document.body.appendChild(effects);
|
|
|
|
const vignette = document.createElement('div');
|
|
vignette.className = 'filmnoir-vignette';
|
|
|
|
const grain = document.createElement('div');
|
|
grain.className = 'filmnoir-grain';
|
|
|
|
const scratches = document.createElement('div');
|
|
scratches.className = 'filmnoir-scratches';
|
|
|
|
effects.appendChild(grain);
|
|
effects.appendChild(scratches);
|
|
effects.appendChild(vignette);
|
|
}
|
|
}
|
|
|
|
|
|
function initializeFilmNoir() {
|
|
if (!filmnoir) return;
|
|
|
|
createFilmNoir();
|
|
toggleFilmNoir();
|
|
}
|
|
|
|
initializeFilmNoir();
|