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, }; };