UNPKG

@grafana/faro-web-sdk

Version:

Faro instrumentations, metas, transports for web.

31 lines 1.19 kB
import { Observable } from '@grafana/faro-core'; export const MESSAGE_TYPE_INTERACTION = 'interaction'; let interactionObservable; const registeredEventNames = new Set(); const eventNameToHandler = new Map(); export function monitorInteractions(eventNames) { if (!interactionObservable) { interactionObservable = new Observable(); } eventNames.forEach((eventName) => { if (!registeredEventNames.has(eventName)) { const handler = () => { interactionObservable.notify({ type: MESSAGE_TYPE_INTERACTION, name: eventName }); }; window.addEventListener(eventName, handler); registeredEventNames.add(eventName); eventNameToHandler.set(eventName, handler); } }); return interactionObservable; } // Test-only utility to reset state between tests export function __resetInteractionMonitorForTests() { eventNameToHandler.forEach((handler, eventName) => { window.removeEventListener(eventName, handler); }); eventNameToHandler.clear(); registeredEventNames.clear(); interactionObservable = undefined; } //# sourceMappingURL=interactionMonitor.js.map