Files
michaelschiemer/resources/js/modules/noise/index.js

43 lines
1.1 KiB
JavaScript

// js/noise-toggle.js
import { Logger } from "../../core/logger.js";
export function init(config = {}) {
Logger.log('Noise Toggle Init', config);
const {
selector = ".noise-overlay",
toggleKey = "g",
className = "grainy",
enableTransition = true,
} = config;
const body = document.body;
const noiseElement = document.querySelector(selector);
if (!noiseElement) return;
const isInput = noiseElement => ["input", "textarea"].includes(noiseElement.tagName.toLowerCase());
function update() {
if (enableTransition) {
noiseElement.classList.toggle("hidden", !body.classList.contains(className));
} else {
noiseElement.style.display = body.classList.contains(className) ? "block" : "none";
}
}
update();
document.addEventListener("keydown", (e) => {
if (
e.key.toLowerCase() === toggleKey &&
!e.ctrlKey && !e.metaKey && !e.altKey &&
!isInput(e.target)
) {
body.classList.toggle(className);
update();
}
})
}