@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
42 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUserEventHandler = getUserEventHandler;
exports.getUserActionNameFromElement = getUserActionNameFromElement;
exports.unsubscribeAllMonitors = unsubscribeAllMonitors;
const const_1 = require("./const");
const userActionController_1 = require("./userActionController");
const util_1 = require("./util");
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 : const_1.userActionDataAttributeParsed);
// 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_1.UserActionController(internalUserAction).attach();
}
return { processUserEvent, processUserActionStarted };
}
function getUserActionNameFromElement(element, dataAttributeName) {
const parsedDataAttributeName = (0, util_1.convertDataAttributeName)(dataAttributeName);
const dataset = element.dataset;
for (const key in dataset) {
if (key === parsedDataAttributeName) {
return dataset[key];
}
}
return undefined;
}
function unsubscribeAllMonitors(allMonitorsSub) {
allMonitorsSub === null || allMonitorsSub === void 0 ? void 0 : allMonitorsSub.unsubscribe();
}
//# sourceMappingURL=processUserActionEventHandler.js.map