Skip to content

Instantly share code, notes, and snippets.

@FlameWolf
Last active May 31, 2023 12:25
Show Gist options
  • Save FlameWolf/706f16d5e63526e4e4539bbb7da09c42 to your computer and use it in GitHub Desktop.
Save FlameWolf/706f16d5e63526e4e4539bbb7da09c42 to your computer and use it in GitHub Desktop.
Global mouse hold event
(function () {
let isPressed = false;
let pressTimer = false;
const pressedEvent = new CustomEvent("press", {
bubbles: true,
cancelable: true,
composed: true
});
const releasedEvent = new CustomEvent("release", {
bubbles: true,
cancelable: true,
composed: true
});
const pressed = event => {
if (event.buttons === 1) {
isPressed = true;
pressTimer = setInterval(() => {
event.target.dispatchEvent(pressedEvent);
}, 100);
}
};
const released = event => {
isPressed = false;
clearInterval(pressTimer);
event.target.dispatchEvent(releasedEvent);
};
globalThis.addEventListener("mousedown", pressed);
globalThis.addEventListener("mouseup", released);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment