@grafana/faro-react
Version:
Faro package that enables easier integration in projects built with React.
43 lines • 1.88 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withFaroRouterInstrumentation = void 0;
var faro_web_sdk_1 = require("@grafana/faro-web-sdk");
var dependencies_1 = require("../../dependencies");
var types_1 = require("../types");
var routerDependencies_1 = require("./routerDependencies");
var utils_1 = require("./utils");
/**
* To use with React Router 6.4 data APIs.
*/
function withFaroRouterInstrumentation(router) {
var lastRoute = {};
router.subscribe(function (state) {
var _a, _b;
var navigationType = state.historyAction;
var location = state.location;
var routes = router.routes;
if (routerDependencies_1.isInitialized && (navigationType === types_1.NavigationType.Push || navigationType === types_1.NavigationType.Pop)) {
var route = (0, utils_1.getRouteFromLocation)(routes, location);
var url = (_a = faro_web_sdk_1.globalObject.location) === null || _a === void 0 ? void 0 : _a.href;
dependencies_1.api.pushEvent(faro_web_sdk_1.EVENT_ROUTE_CHANGE, __assign({ toRoute: route, toUrl: (_b = faro_web_sdk_1.globalObject.location) === null || _b === void 0 ? void 0 : _b.href }, lastRoute));
lastRoute = {
fromRoute: route,
fromUrl: url,
};
}
});
return router;
}
exports.withFaroRouterInstrumentation = withFaroRouterInstrumentation;
//# sourceMappingURL=withFaroRouterInstrumentation.js.map
;