@embrace-io/web-sdk
Version:
43 lines (42 loc) • 1.94 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const require_instrumentations_EmbraceInstrumentationBase_EmbraceInstrumentationBase = require("../../EmbraceInstrumentationBase/EmbraceInstrumentationBase.cjs");
const require_instrumentations_clicks_ClicksInstrumentation_utils = require("./utils.cjs");
//#region src/instrumentations/clicks/ClicksInstrumentation/ClicksInstrumentation.ts
var ClicksInstrumentation = class extends require_instrumentations_EmbraceInstrumentationBase_EmbraceInstrumentationBase.EmbraceInstrumentationBase {
_onClickHandler;
constructor({ diag, perf, shouldTrack, innerTextForElement } = {}) {
super({
instrumentationName: "ClicksInstrumentation",
instrumentationVersion: "1.0.0",
diag,
perf,
config: {}
});
this._onClickHandler = (event) => {
const element = event.target;
if (!(element instanceof HTMLElement)) return;
if (element.hasAttribute("disabled")) return;
if (shouldTrack && !shouldTrack(element)) return;
try {
const currentSessionPartSpan = this.userSessionManager.getSessionPartSpan();
if (currentSessionPartSpan) currentSessionPartSpan.addEvent("click", {
"emb.type": "ux.tap",
"view.name": require_instrumentations_clicks_ClicksInstrumentation_utils.getHTMLElementFriendlyName(element, innerTextForElement ? innerTextForElement(element) : element.innerText),
"tap.coords": `${event.x.toString()},${event.y.toString()}`
}, this.perf.epochMillisFromOrigin(event.timeStamp));
} catch (e) {
this._diag.error("failed to create new user interaction span event", e);
}
};
if (this._config.enabled) this.enable();
}
onDisable() {
document.removeEventListener("click", this._onClickHandler);
}
onEnable() {
document.addEventListener("click", this._onClickHandler);
}
};
//#endregion
exports.ClicksInstrumentation = ClicksInstrumentation;
//# sourceMappingURL=ClicksInstrumentation.cjs.map