Files
brk/website_next/utils/press.js
T
2026-07-03 11:29:13 +02:00

35 lines
853 B
JavaScript

const PRESS_SELECTOR = [
"a[href]",
"button:not(:disabled)",
"input:not(:disabled)",
"label",
"select:not(:disabled)",
"summary",
"textarea:not(:disabled)",
].join(",");
/** @type {Element | null} */
let pressedElement = null;
function clearPress() {
pressedElement?.removeAttribute("data-press");
pressedElement = null;
}
document.addEventListener(
"pointerdown",
(event) => {
if (event.pointerType === "mouse") return;
if (!(event.target instanceof Element)) return;
clearPress();
pressedElement = event.target.closest(PRESS_SELECTOR);
pressedElement?.setAttribute("data-press", "");
},
{ passive: true },
);
document.addEventListener("pointerup", clearPress, { passive: true });
document.addEventListener("pointercancel", clearPress, { passive: true });
window.addEventListener("blur", clearPress);