Files
papercrate/frontend/src/desktop/events.js
T
2025-11-12 17:02:27 +01:00

32 lines
895 B
JavaScript

export const preventAll = (event) => {
if (!event) {
return;
}
try {
event.preventDefault();
} catch (error) {
console.warn('[events] preventDefault failed', error);
}
try {
event.stopPropagation();
} catch (error) {
console.warn('[events] stopPropagation failed', error);
}
};
export const safeInvoke = (fn, ...args) => fn?.(...args);
export const getPointerPosition = (event, { fallbackToPage = true } = {}) => {
if (!event) {
return { x: 0, y: 0 };
}
const clientX = Number.isFinite(event.clientX) ? event.clientX : null;
const clientY = Number.isFinite(event.clientY) ? event.clientY : null;
const pageX = fallbackToPage && Number.isFinite(event.pageX) ? event.pageX : null;
const pageY = fallbackToPage && Number.isFinite(event.pageY) ? event.pageY : null;
return {
x: clientX ?? pageX ?? 0,
y: clientY ?? pageY ?? 0,
};
};