UNPKG

@grafana/faro-react

Version:

Faro package that enables easier integration in projects built with React.

43 lines 1.88 kB
"use strict"; 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