ngx-hotjar
Version:
A simple ng wrapper to load hotjar dependency by angular way
47 lines • 4.53 kB
JavaScript
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