UNPKG

ngx-hotjar

Version:

A simple ng wrapper to load hotjar dependency by angular way

41 lines 5.24 kB
import { __awaiter } from "tslib"; import { APP_BOOTSTRAP_LISTENER } from '@angular/core'; import { Router, NavigationEnd } from '@angular/router'; import { NgxHotjarService } from '../services/ngx-hotjar.service'; /** * Provide a DI Configuration to attach Hotjar Trigger to Router Events at Angular Startup Cycle. */ export const NGX_HOTJAR_ROUTER_INITIALIZER_PROVIDER = { provide: APP_BOOTSTRAP_LISTENER, multi: true, useFactory: HotjarRouterInitializer, deps: [ NgxHotjarService ] }; /** * Attach a listener to `NavigationEnd` Router event. So, every time Router finish the page resolution it should call `NavigationEnd` event. * We assume that NavigationEnd is the final page resolution and call Hotjar `stateChange` command. * * To avoid double binds, we also destroy the subscription when de Bootstrap Component is destroied. But, we don't know for sure * that this strategy does not cause double bind on multiple bootstrap components. * * We are using de component's injector reference to resolve Router, sou I hope there is no problem w/ double bing. * * If you have this problem, I encourage not Use NgxHotjarRouterModule and atach the listener on AppComponent initialization. */ export function HotjarRouterInitializer(hjService) { return (c) => __awaiter(this, void 0, void 0, function* () { const router = c.injector.get(Router); const subs = router .events .subscribe(event => { if (event instanceof NavigationEnd) { hjService.stateChange(event.urlAfterRedirects); } }); // Cleanup c.onDestroy(() => subs.unsubscribe()); }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90amFyLXJvdXRlci5pbml0aWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ob3RqYXIvc3JjL2xpYi9pbml0aWFsaXplcnMvaG90amFyLXJvdXRlci5pbml0aWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFZLHNCQUFzQixFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQWE7SUFDOUQsT0FBTyxFQUFFLHNCQUFzQjtJQUMvQixLQUFLLEVBQUUsSUFBSTtJQUNYLFVBQVUsRUFBRSx1QkFBdUI7SUFDbkMsSUFBSSxFQUFFO1FBQ0osZ0JBQWdCO0tBQ2pCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFNBQTJCO0lBRTNCLE9BQU8sQ0FBTyxDQUFvQixFQUFFLEVBQUU7UUFDcEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTTthQUNoQixNQUFNO2FBQ04sU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDbEMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUNoRDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsVUFBVTtRQUNWLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFBLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIsIEFQUF9CT09UU1RSQVBfTElTVEVORVIsIENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5neEhvdGphclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9uZ3gtaG90amFyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFByb3ZpZGUgYSBESSBDb25maWd1cmF0aW9uIHRvIGF0dGFjaCBIb3RqYXIgVHJpZ2dlciB0byBSb3V0ZXIgRXZlbnRzIGF0IEFuZ3VsYXIgU3RhcnR1cCBDeWNsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IE5HWF9IT1RKQVJfUk9VVEVSX0lOSVRJQUxJWkVSX1BST1ZJREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogQVBQX0JPT1RTVFJBUF9MSVNURU5FUixcbiAgbXVsdGk6IHRydWUsXG4gIHVzZUZhY3Rvcnk6IEhvdGphclJvdXRlckluaXRpYWxpemVyLFxuICBkZXBzOiBbXG4gICAgTmd4SG90amFyU2VydmljZVxuICBdXG59O1xuXG4vKipcbiAqIEF0dGFjaCBhIGxpc3RlbmVyIHRvIGBOYXZpZ2F0aW9uRW5kYCBSb3V0ZXIgZXZlbnQuIFNvLCBldmVyeSB0aW1lIFJvdXRlciBmaW5pc2ggdGhlIHBhZ2UgcmVzb2x1dGlvbiBpdCBzaG91bGQgY2FsbCBgTmF2aWdhdGlvbkVuZGAgZXZlbnQuXG4gKiBXZSBhc3N1bWUgdGhhdCBOYXZpZ2F0aW9uRW5kIGlzIHRoZSBmaW5hbCBwYWdlIHJlc29sdXRpb24gYW5kIGNhbGwgSG90amFyIGBzdGF0ZUNoYW5nZWAgY29tbWFuZC5cbiAqXG4gKiBUbyBhdm9pZCBkb3VibGUgYmluZHMsIHdlIGFsc28gZGVzdHJveSB0aGUgc3Vic2NyaXB0aW9uIHdoZW4gZGUgQm9vdHN0cmFwIENvbXBvbmVudCBpcyBkZXN0cm9pZWQuIEJ1dCwgd2UgZG9uJ3Qga25vdyBmb3Igc3VyZVxuICogdGhhdCB0aGlzIHN0cmF0ZWd5IGRvZXMgbm90IGNhdXNlIGRvdWJsZSBiaW5kIG9uIG11bHRpcGxlIGJvb3RzdHJhcCBjb21wb25lbnRzLlxuICpcbiAqIFdlIGFyZSB1c2luZyBkZSBjb21wb25lbnQncyBpbmplY3RvciByZWZlcmVuY2UgdG8gcmVzb2x2ZSBSb3V0ZXIsIHNvdSBJIGhvcGUgdGhlcmUgaXMgbm8gcHJvYmxlbSB3LyBkb3VibGUgYmluZy5cbiAqXG4gKiBJZiB5b3UgaGF2ZSB0aGlzIHByb2JsZW0sIEkgZW5jb3VyYWdlIG5vdCBVc2UgTmd4SG90amFyUm91dGVyTW9kdWxlIGFuZCBhdGFjaCB0aGUgbGlzdGVuZXIgb24gQXBwQ29tcG9uZW50IGluaXRpYWxpemF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSG90amFyUm91dGVySW5pdGlhbGl6ZXIoXG4gIGhqU2VydmljZTogTmd4SG90amFyU2VydmljZVxuKSB7XG4gIHJldHVybiBhc3luYyAoYzogQ29tcG9uZW50UmVmPGFueT4pID0+IHtcbiAgICBjb25zdCByb3V0ZXIgPSBjLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIGNvbnN0IHN1YnMgPSByb3V0ZXJcbiAgICAgIC5ldmVudHNcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgaGpTZXJ2aWNlLnN0YXRlQ2hhbmdlKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgLy8gQ2xlYW51cFxuICAgIGMub25EZXN0cm95KCgpID0+IHN1YnMudW5zdWJzY3JpYmUoKSk7XG4gIH07XG59XG4iXX0=