UNPKG

ngx-hotjar

Version:

A simple ng wrapper to load hotjar dependency by angular way

47 lines 4.53 kB
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NgxHotjarModule } from '../ngx-hotjar.module'; import { NGX_HOTJAR_ROUTER_INITIALIZER_PROVIDER } from '../initializers/hotjar-router.initializer'; /** * 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. * * This Module is just a sugar for: * ```typescript constructor(private router: Router) {} ... ngOnInit() { ... this.router .events .pipe(takeUntil(this.onDestroy$)) .subscribe(event => { if (event instanceof NavigationEnd) { hjService.pageView(event.urlAfterRedirects, undefined); } }); ``` */ export class NgxHotjarRouterModule { } NgxHotjarRouterModule.decorators = [ { type: NgModule, args: [{ imports: [ CommonModule, NgxHotjarModule ], providers: [ NGX_HOTJAR_ROUTER_INITIALIZER_PROVIDER ], declarations: [] },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWhvdGphci1yb3V0ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhvdGphci9zcmMvbGliL25neC1ob3RqYXItcm91dGVyL25neC1ob3RqYXItcm91dGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFbkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQVdILE1BQU0sT0FBTyxxQkFBcUI7OztZQVZqQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osZUFBZTtpQkFDaEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULHNDQUFzQztpQkFDdkM7Z0JBQ0QsWUFBWSxFQUFFLEVBQUU7YUFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5neEhvdGphck1vZHVsZSB9IGZyb20gJy4uL25neC1ob3RqYXIubW9kdWxlJztcbmltcG9ydCB7IE5HWF9IT1RKQVJfUk9VVEVSX0lOSVRJQUxJWkVSX1BST1ZJREVSIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXJzL2hvdGphci1yb3V0ZXIuaW5pdGlhbGl6ZXInO1xuXG4vKipcbiAqIEF0dGFjaCBhIGxpc3RlbmVyIHRvIGBOYXZpZ2F0aW9uRW5kYCBSb3V0ZXIgZXZlbnQuIFNvLCBldmVyeSB0aW1lIFJvdXRlciBmaW5pc2ggdGhlIHBhZ2UgcmVzb2x1dGlvbiBpdCBzaG91bGQgY2FsbCBgTmF2aWdhdGlvbkVuZGAgZXZlbnQuXG4gKiBXZSBhc3N1bWUgdGhhdCBOYXZpZ2F0aW9uRW5kIGlzIHRoZSBmaW5hbCBwYWdlIHJlc29sdXRpb24gYW5kIGNhbGwgSG90amFyIGBzdGF0ZUNoYW5nZWAgY29tbWFuZC5cbiAqXG4gKiBUbyBhdm9pZCBkb3VibGUgYmluZHMsIHdlIGFsc28gZGVzdHJveSB0aGUgc3Vic2NyaXB0aW9uIHdoZW4gZGUgQm9vdHN0cmFwIENvbXBvbmVudCBpcyBkZXN0cm9pZWQuIEJ1dCwgd2UgZG9uJ3Qga25vdyBmb3Igc3VyZVxuICogdGhhdCB0aGlzIHN0cmF0ZWd5IGRvZXMgbm90IGNhdXNlIGRvdWJsZSBiaW5kIG9uIG11bHRpcGxlIGJvb3RzdHJhcCBjb21wb25lbnRzLlxuICpcbiAqIFdlIGFyZSB1c2luZyBkZSBjb21wb25lbnQncyBpbmplY3RvciByZWZlcmVuY2UgdG8gcmVzb2x2ZSBSb3V0ZXIsIHNvdSBJIGhvcGUgdGhlcmUgaXMgbm8gcHJvYmxlbSB3LyBkb3VibGUgYmluZy5cbiAqXG4gKiBJZiB5b3UgaGF2ZSB0aGlzIHByb2JsZW0sIEkgZW5jb3VyYWdlIG5vdCBVc2UgTmd4SG90amFyUm91dGVyTW9kdWxlIGFuZCBhdGFjaCB0aGUgbGlzdGVuZXIgb24gQXBwQ29tcG9uZW50IGluaXRpYWxpemF0aW9uLlxuICpcbiAqIFRoaXMgTW9kdWxlIGlzIGp1c3QgYSBzdWdhciBmb3I6XG4gKlxuYGBgdHlwZXNjcmlwdFxuY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cbi4uLlxubmdPbkluaXQoKSB7XG4gIC4uLlxuICB0aGlzLnJvdXRlclxuICAgIC5ldmVudHNcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgaGpTZXJ2aWNlLnBhZ2VWaWV3KGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLCB1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0pO1xuYGBgXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmd4SG90amFyTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIE5HWF9IT1RKQVJfUk9VVEVSX0lOSVRJQUxJWkVSX1BST1ZJREVSXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW11cbn0pXG5leHBvcnQgY2xhc3MgTmd4SG90amFyUm91dGVyTW9kdWxlIHsgfVxuIl19