UNPKG

@grafana/faro-web-sdk

Version:

Faro instrumentations, metas, transports for web.

36 lines 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MESSAGE_TYPE_INTERACTION = void 0; exports.monitorInteractions = monitorInteractions; exports.__resetInteractionMonitorForTests = __resetInteractionMonitorForTests; const faro_core_1 = require("@grafana/faro-core"); exports.MESSAGE_TYPE_INTERACTION = 'interaction'; let interactionObservable; const registeredEventNames = new Set(); const eventNameToHandler = new Map(); function monitorInteractions(eventNames) { if (!interactionObservable) { interactionObservable = new faro_core_1.Observable(); } eventNames.forEach((eventName) => { if (!registeredEventNames.has(eventName)) { const handler = () => { interactionObservable.notify({ type: exports.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 function __resetInteractionMonitorForTests() { eventNameToHandler.forEach((handler, eventName) => { window.removeEventListener(eventName, handler); }); eventNameToHandler.clear(); registeredEventNames.clear(); interactionObservable = undefined; } //# sourceMappingURL=interactionMonitor.js.map