ngx-google-analytics
Version:
A simple ng-9 wrapper to load Google Analytics dependency by angular way
68 lines • 7.36 kB
JavaScript
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER } from '../initializers/google-analytics-router.initializer';
import { NgxGoogleAnalyticsModule } from '../ngx-google-analytics.module';
import { NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN } from '../tokens/ngx-google-analytics-router-settings-token';
import * as i0 from "@angular/core";
/**
* 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 GA `page_view` 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 NgxGoogleAnalyticsRouterModule 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) {
gaService.pageView(event.urlAfterRedirects, undefined);
}
});
```
*/
export class NgxGoogleAnalyticsRouterModule {
static forRoot(settings) {
return {
ngModule: NgxGoogleAnalyticsRouterModule,
providers: [
{
provide: NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN,
useValue: settings ?? {}
}
]
};
}
}
NgxGoogleAnalyticsRouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: NgxGoogleAnalyticsRouterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
NgxGoogleAnalyticsRouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: NgxGoogleAnalyticsRouterModule, imports: [CommonModule,
NgxGoogleAnalyticsModule] });
NgxGoogleAnalyticsRouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: NgxGoogleAnalyticsRouterModule, providers: [
NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER
], imports: [CommonModule,
NgxGoogleAnalyticsModule] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: NgxGoogleAnalyticsRouterModule, decorators: [{
type: NgModule,
args: [{
imports: [
CommonModule,
NgxGoogleAnalyticsModule
],
providers: [
NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER
],
declarations: []
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdvb2dsZS1hbmFseXRpY3Mtcm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nb29nbGUtYW5hbHl0aWNzL3NyYy9saWIvbmd4LWdvb2dsZS1hbmFseXRpY3Mtcm91dGVyL25neC1nb29nbGUtYW5hbHl0aWNzLXJvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnREFBZ0QsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOztBQUVuSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBV0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQTBDO1FBQ3ZELE9BQU87WUFDTCxRQUFRLEVBQUUsOEJBQThCO1lBQ3hDLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsMkNBQTJDO29CQUNwRCxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7MkhBWFUsOEJBQThCOzRIQUE5Qiw4QkFBOEIsWUFSdkMsWUFBWTtRQUNaLHdCQUF3Qjs0SEFPZiw4QkFBOEIsYUFMOUI7UUFDVCxnREFBZ0Q7S0FDakQsWUFMQyxZQUFZO1FBQ1osd0JBQXdCOzJGQU9mLDhCQUE4QjtrQkFWMUMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWix3QkFBd0I7cUJBQ3pCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxnREFBZ0Q7cUJBQ2pEO29CQUNELFlBQVksRUFBRSxFQUFFO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTkdYX0dPT0dMRV9BTkFMWVRJQ1NfUk9VVEVSX0lOSVRJQUxJWkVSX1BST1ZJREVSIH0gZnJvbSAnLi4vaW5pdGlhbGl6ZXJzL2dvb2dsZS1hbmFseXRpY3Mtcm91dGVyLmluaXRpYWxpemVyJztcbmltcG9ydCB7IE5neEdvb2dsZUFuYWx5dGljc01vZHVsZSB9IGZyb20gJy4uL25neC1nb29nbGUtYW5hbHl0aWNzLm1vZHVsZSc7XG5pbXBvcnQgeyBJR29vZ2xlQW5hbHl0aWNzUm91dGluZ1NldHRpbmdzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pLWdvb2dsZS1hbmFseXRpY3Mtcm91dGluZy1zZXR0aW5ncyc7XG5pbXBvcnQgeyBOR1hfR09PR0xFX0FOQUxZVElDU19ST1VUSU5HX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vdG9rZW5zL25neC1nb29nbGUtYW5hbHl0aWNzLXJvdXRlci1zZXR0aW5ncy10b2tlbic7XG5cbi8qKlxuICogQXR0YWNoIGEgbGlzdGVuZXIgdG8gYE5hdmlnYXRpb25FbmRgIFJvdXRlciBldmVudC4gU28sIGV2ZXJ5IHRpbWUgUm91dGVyIGZpbmlzaCB0aGUgcGFnZSByZXNvbHV0aW9uIGl0IHNob3VsZCBjYWxsIGBOYXZpZ2F0aW9uRW5kYCBldmVudC5cbiAqIFdlIGFzc3VtZSB0aGF0IE5hdmlnYXRpb25FbmQgaXMgdGhlIGZpbmFsIHBhZ2UgcmVzb2x1dGlvbiBhbmQgY2FsbCBHQSBgcGFnZV92aWV3YCBjb21tYW5kLlxuICpcbiAqIFRvIGF2b2lkIGRvdWJsZSBiaW5kcywgd2UgYWxzbyBkZXN0cm95IHRoZSBzdWJzY3JpcHRpb24gd2hlbiBkZSBCb290c3RyYXAgQ29tcG9uZW50IGlzIGRlc3Ryb2llZC4gQnV0LCB3ZSBkb24ndCBrbm93IGZvciBzdXJlXG4gKiB0aGF0IHRoaXMgc3RyYXRlZ3kgZG9lcyBub3QgY2F1c2UgZG91YmxlIGJpbmQgb24gbXVsdGlwbGUgYm9vdHN0cmFwIGNvbXBvbmVudHMuXG4gKlxuICogV2UgYXJlIHVzaW5nIGRlIGNvbXBvbmVudCdzIGluamVjdG9yIHJlZmVyZW5jZSB0byByZXNvbHZlIFJvdXRlciwgc291IEkgaG9wZSB0aGVyZSBpcyBubyBwcm9ibGVtIHcvIGRvdWJsZSBiaW5nLlxuICpcbiAqIElmIHlvdSBoYXZlIHRoaXMgcHJvYmxlbSwgSSBlbmNvdXJhZ2Ugbm90IFVzZSBOZ3hHb29nbGVBbmFseXRpY3NSb3V0ZXJNb2R1bGUgYW5kIGF0YWNoIHRoZSBsaXN0ZW5lciBvbiBBcHBDb21wb25lbnQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogVGhpcyBNb2R1bGUgaXMganVzdCBhIHN1Z2FyIGZvcjpcbiAqXG5gYGB0eXBlc2NyaXB0XG5jb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuLi4uXG5uZ09uSW5pdCgpIHtcbiAgLi4uXG4gIHRoaXMucm91dGVyXG4gICAgLmV2ZW50c1xuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICBnYVNlcnZpY2UucGFnZVZpZXcoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMsIHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSk7XG5gYGBcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBOZ3hHb29nbGVBbmFseXRpY3NNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTkdYX0dPT0dMRV9BTkFMWVRJQ1NfUk9VVEVSX0lOSVRJQUxJWkVSX1BST1ZJREVSXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW11cbn0pXG5leHBvcnQgY2xhc3MgTmd4R29vZ2xlQW5hbHl0aWNzUm91dGVyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3Qoc2V0dGluZ3M/OiBJR29vZ2xlQW5hbHl0aWNzUm91dGluZ1NldHRpbmdzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hHb29nbGVBbmFseXRpY3NSb3V0ZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5neEdvb2dsZUFuYWx5dGljc1JvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTkdYX0dPT0dMRV9BTkFMWVRJQ1NfUk9VVElOR19TRVRUSU5HU19UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogc2V0dGluZ3MgPz8ge31cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==