UNPKG

ngx-google-analytics

Version:

A simple ng-9 wrapper to load Google Analytics dependency by angular way

68 lines 7.36 kB
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==