@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
37 lines • 1.66 kB
JavaScript
import { userActionDataAttributeParsed as userActionDataAttribute } from './const';
import { UserActionController } from './userActionController';
import { convertDataAttributeName } from './util';
export function getUserEventHandler(faro) {
const { api, config } = faro;
function processUserEvent(event) {
var _a, _b;
const userActionName = getUserActionNameFromElement(event.target, (_b = (_a = config.userActionsInstrumentation) === null || _a === void 0 ? void 0 : _a.dataAttributeName) !== null && _b !== void 0 ? _b : userActionDataAttribute);
// We don't have a data attribute
if (!userActionName) {
return;
}
const userAction = api.startUserAction(userActionName, {}, { triggerName: event.type });
if (userAction) {
processUserActionStarted(userAction);
}
}
function processUserActionStarted(userAction) {
const internalUserAction = userAction;
new UserActionController(internalUserAction).attach();
}
return { processUserEvent, processUserActionStarted };
}
export function getUserActionNameFromElement(element, dataAttributeName) {
const parsedDataAttributeName = convertDataAttributeName(dataAttributeName);
const dataset = element.dataset;
for (const key in dataset) {
if (key === parsedDataAttributeName) {
return dataset[key];
}
}
return undefined;
}
export function unsubscribeAllMonitors(allMonitorsSub) {
allMonitorsSub === null || allMonitorsSub === void 0 ? void 0 : allMonitorsSub.unsubscribe();
}
//# sourceMappingURL=processUserActionEventHandler.js.map