UNPKG

ngx-google-analytics

Version:

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

1 lines 43.3 kB
{"version":3,"file":"ngx-google-analytics.mjs","sources":["../../../projects/ngx-google-analytics/src/lib/directives/ga-event-category.directive.ts","../../../projects/ngx-google-analytics/src/lib/tokens/ngx-google-analytics-settings-token.ts","../../../projects/ngx-google-analytics/src/lib/tokens/ngx-window-token.ts","../../../projects/ngx-google-analytics/src/lib/tokens/ngx-data-layer-token.ts","../../../projects/ngx-google-analytics/src/lib/tokens/ngx-gtag-token.ts","../../../projects/ngx-google-analytics/src/lib/services/google-analytics.service.ts","../../../projects/ngx-google-analytics/src/lib/directives/ga-event.directive.ts","../../../projects/ngx-google-analytics/src/lib/directives/ga-event-form-input.directive.ts","../../../projects/ngx-google-analytics/src/lib/enums/ga-action.enum.ts","../../../projects/ngx-google-analytics/src/lib/initializers/google-analytics.initializer.ts","../../../projects/ngx-google-analytics/src/lib/tokens/ngx-google-analytics-router-settings-token.ts","../../../projects/ngx-google-analytics/src/lib/initializers/google-analytics-router.initializer.ts","../../../projects/ngx-google-analytics/src/lib/ngx-google-analytics.module.ts","../../../projects/ngx-google-analytics/src/lib/ngx-google-analytics-router/ngx-google-analytics-router.module.ts","../../../projects/ngx-google-analytics/src/public_api.ts","../../../projects/ngx-google-analytics/src/ngx-google-analytics.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\n\n@Directive({\n selector: `[gaEvent][gaCategory],\n [gaCategory]`,\n exportAs: 'gaCategory'\n})\nexport class GaEventCategoryDirective {\n\n constructor() { }\n\n @Input() gaCategory!: string;\n\n}\n","import { InjectionToken } from '@angular/core';\nimport { IGoogleAnalyticsSettings } from '../interfaces/i-google-analytics-settings';\n\n/**\n * Provide a Injection Token to global settings.\n */\nexport const NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN = new InjectionToken<IGoogleAnalyticsSettings>('ngx-google-analytics-settings', {\n factory: () => ({ trackingCode: '', enableTracing: false })\n});\n","import { InjectionToken, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { GaWindow } from './ngx-google-analytics-window';\n\n/**\n * Provide DOM Window reference.\n */\nexport const NGX_WINDOW = new InjectionToken<GaWindow>('ngx-window', {\n providedIn: 'root',\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n },\n});\n","import { DataLayer } from '../types/data-layer.type';\nimport { InjectionToken, inject } from '@angular/core';\nimport { NGX_WINDOW } from './ngx-window-token';\nimport { GaWindow } from './ngx-google-analytics-window';\n\n/**\n * Check if there is some global function called gtag on Window object, or create an empty function to doesn't brake codes...\n */\nexport function getDataLayerFn(window: GaWindow): DataLayer {\n return (window)\n ? window['dataLayer'] = window['dataLayer'] || []\n : null;\n}\n\n/**\n * Provides an injection token to access Google Analytics DataLayer Collection\n */\nexport const NGX_DATA_LAYER = new InjectionToken<DataLayer>('ngx-data-layer', {\n providedIn: 'root',\n factory: () => getDataLayerFn(inject(NGX_WINDOW))\n});\n","import { InjectionToken, inject } from '@angular/core';\nimport { NGX_WINDOW } from './ngx-window-token';\nimport { GtagFn } from '../types/gtag.type';\nimport { DataLayer } from '../types/data-layer.type';\nimport { NGX_DATA_LAYER } from './ngx-data-layer-token';\nimport { GaWindow } from './ngx-google-analytics-window';\n\n/**\n * Check if there is some global function called gtag on Window object, or create an empty function to doesn't brake codes...\n */\nexport function getGtagFn(window: GaWindow, dataLayer: DataLayer): GtagFn {\n return (window)\n ? window['gtag'] = window['gtag'] || function () {\n dataLayer.push(arguments as any);\n }\n : null;\n}\n\n/**\n * Provides an injection token to access Google Analytics Gtag Function\n */\nexport const NGX_GTAG_FN = new InjectionToken<GtagFn>('ngx-gtag-fn', {\n providedIn: 'root',\n factory: () => getGtagFn(inject(NGX_WINDOW), inject(NGX_DATA_LAYER))\n});\n","import { Injectable, Inject, isDevMode } from '@angular/core';\nimport { NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN } from '../tokens/ngx-google-analytics-settings-token';\nimport { IGoogleAnalyticsSettings } from '../interfaces/i-google-analytics-settings';\nimport { GaActionEnum } from '../enums/ga-action.enum';\nimport { DOCUMENT } from '@angular/common';\nimport { NGX_GTAG_FN } from '../tokens/ngx-gtag-token';\nimport { GtagFn } from '../types/gtag.type';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GoogleAnalyticsService {\n\n private get document(): Document {\n return this._document;\n }\n\n constructor(\n @Inject(NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN) private readonly settings: IGoogleAnalyticsSettings,\n @Inject(DOCUMENT) private readonly _document: any,\n @Inject(NGX_GTAG_FN) private readonly _gtag: GtagFn\n ) { }\n\n private throw(err: Error) {\n if ((this.settings.enableTracing || isDevMode()) && console && console.error) {\n console.error(err);\n }\n }\n\n /** @todo Change this to `Object.fromEntity()` in the future... */\n private toKeyValue(map: Map<string, any>): { [param: string]: any } | void {\n return (map.size > 0)\n ? Array.from(map).reduce(\n (obj, [key, value]) => Object.defineProperty(obj, key, { value, enumerable: true }),\n {}\n )\n : undefined;\n }\n\n /**\n * Call native GA Tag\n */\n gtag(...args: any[]) {\n try {\n this._gtag(...args.filter(x => x !== undefined));\n } catch (err: any) {\n this.throw(err);\n }\n }\n\n /**\n * Send an event trigger to GA. It is the same as call:\n * ```js\n * gtag('event', 'video_auto_play_start', {\n * 'event_label': 'My promotional video',\n * 'event_category': 'video_auto_play'\n * });\n * ```\n *\n * @param action 'video_auto_play_start'\n * @param category 'video_auto_play'\n * @param label 'My promotional video'\n * @param value An value to measure something\n * @param interaction If user interaction is performed\n */\n event(action: GaActionEnum | string, category?: string, label?: string, value?: number, interaction?: boolean, options?: Object) {\n try {\n const opt = new Map<string, any>();\n if (category) {\n opt.set('event_category', category);\n }\n if (label) {\n opt.set('event_label', label);\n }\n if (value) {\n opt.set('value', value);\n }\n if (interaction !== undefined) {\n opt.set('interaction', interaction);\n }\n if (options) {\n Object\n .entries(options)\n .map(([key, value]) => opt.set(key, value));\n } \n const params = this.toKeyValue(opt);\n if (params) {\n this.gtag('event', action as string, params);\n } else {\n this.gtag('event', action as string);\n }\n } catch (error: any) {\n this.throw(error);\n }\n }\n\n /**\n * Send an page view event. This is the same as\n *\n * ```js\n * gtag('config', 'GA_TRACKING_ID', {\n * 'page_title' : 'Homepage',\n * 'page_path': '/home'\n * });\n * ```\n *\n * The tracking ID is injected automatically by Inject Token NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN\n *\n * @param path /home\n * @param title Homepage\n * @param location '{ page_location }'\n * @param options '{ ... custom dimentions }'\n */\n pageView( path: string, title?: string, location?: string, options?: Object) {\n try {\n const opt = new Map<string, any>([['page_path', path]]);\n if (title) {\n opt.set('page_title', title);\n }\n if (location || this.document) {\n opt.set('page_location', (location || this.document.location.href));\n }\n if (options) {\n Object\n .entries(options)\n .map(([key, value]) => opt.set(key, value));\n }\n this.gtag('config', this.settings.trackingCode, this.toKeyValue(opt));\n } catch (error: any) {\n this.throw(error);\n }\n }\n\n /**\n * Send an event to report a App Page View. It is the same as\n *\n * ```js\n * gtag('event', 'screen_view', {\n * 'app_name': 'myAppName',\n * 'screen_name' : 'Home'\n * });\n *\n * ```\n *\n * @param screen 'screen_name'\n * @param appName 'app_name'\n * @param appId 'app_id'\n * @param appVersion 'app_version'\n * @param installerId 'app_installer_id'\n */\n appView(screen: string, appName: string, appId?: string, appVersion?: string, installerId?: string) {\n try {\n const opt = new Map<string, any>([['screen_name', screen], ['app_name', appName]]);\n if (appId) {\n opt.set('app_id', appId);\n }\n if (appVersion) {\n opt.set('app_version', appVersion);\n }\n if (installerId) {\n opt.set('app_installer_id', installerId);\n }\n this.gtag('event', 'screen_view', this.toKeyValue(opt));\n } catch (error: any) {\n this.throw(error);\n }\n }\n\n /**\n * Defines persistent values on GoogleAnalytics\n *\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs/setting-values\n *\n * ```js\n * gtag('set', {\n * 'currency': 'USD',\n * 'country': 'US'\n * });\n * ```\n */\n set(...options: Array<any>) {\n try {\n this._gtag('set', ...options);\n } catch (err: any) {\n this.throw(err);\n }\n }\n\n /**\n * Send an event to GA to report an application error. It is the same as\n *\n * ```js\n * gtag('event', 'exception', {\n * 'description': 'error_description',\n * 'fatal': false // set to true if the error is fatal\n * });\n * ```\n *\n * @param description 'error_description'\n * @param fatal set to true if the error is fatal\n */\n exception(description?: string, fatal?: boolean) {\n try {\n const opt = new Map<string, any>();\n if (description) {\n opt.set('description', description);\n }\n if (fatal) {\n opt.set('fatal', fatal);\n }\n const params = this.toKeyValue(opt);\n if (params) {\n this.gtag('event', 'exception', this.toKeyValue(opt));\n } else {\n this.gtag('event', 'exception');\n }\n } catch (error: any) {\n this.throw(error);\n }\n }\n}\n","import {Directive, ElementRef, Inject, Input, isDevMode, OnDestroy, Optional} from '@angular/core';\nimport {GaEventCategoryDirective} from './ga-event-category.directive';\nimport {GoogleAnalyticsService} from '../services/google-analytics.service';\nimport {GaActionEnum} from '../enums/ga-action.enum';\nimport {NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN} from '../tokens/ngx-google-analytics-settings-token';\nimport {IGoogleAnalyticsSettings} from '../interfaces/i-google-analytics-settings';\nimport {fromEvent, Subscription} from 'rxjs';\n\n@Directive({\n selector: `[gaEvent]`,\n exportAs: 'gaEvent'\n})\nexport class GaEventDirective implements OnDestroy {\n\n constructor(\n @Optional() private gaCategoryDirective: GaEventCategoryDirective,\n private gaService: GoogleAnalyticsService,\n @Inject(NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN) private settings: IGoogleAnalyticsSettings,\n private readonly el: ElementRef\n ) {\n this.gaBind = 'click';\n }\n\n private bindSubscription?: Subscription;\n\n @Input() gaAction!: GaActionEnum | string;\n @Input() gaLabel!: string;\n @Input() label!: string;\n @Input() gaValue!: number;\n @Input() gaInteraction!: boolean;\n @Input() gaEvent!: GaActionEnum | string;\n\n private _gaBind!: string;\n\n @Input() set gaBind (gaBind: string) {\n if (this.bindSubscription) {\n this.bindSubscription.unsubscribe();\n }\n\n this._gaBind = gaBind;\n this.bindSubscription = fromEvent(this.el.nativeElement, gaBind).subscribe(() => this.trigger());\n }\n get gaBind(): string {\n return this._gaBind;\n }\n\n ngOnDestroy() {\n if (this.bindSubscription) {\n this.bindSubscription.unsubscribe();\n }\n }\n\n protected trigger() {\n try {\n // Observação: não é obrigatório especificar uma categoria, uma etiqueta ou um valor. Consulte Eventos padrão do Google Analytics abaixo.\n // if (!this.$gaCategoryDirective) {\n // throw new Error('You must provide a gaCategory attribute w/ gaEvent Directive.');\n // }\n\n if (!this.gaAction && !this.gaEvent) {\n throw new Error('You must provide a gaAction attribute to identify this event.');\n }\n\n this.gaService\n .event(\n this.gaAction || this.gaEvent,\n (this.gaCategoryDirective) ? this.gaCategoryDirective.gaCategory : undefined,\n this.gaLabel || this.label,\n this.gaValue,\n this.gaInteraction\n );\n } catch (err: any) {\n this.throw(err);\n }\n }\n\n protected throw(err: Error) {\n if ((isDevMode() || this.settings.enableTracing) && console && console.warn) {\n console.warn(err);\n }\n }\n\n}\n","import { Directive, Host, Optional, Input } from '@angular/core';\nimport { GaEventDirective } from './ga-event.directive';\n\n@Directive({\n selector: `input[gaEvent],\n select[gaEvent],\n textarea[gaEvent]`\n})\nexport class GaEventFormInputDirective {\n\n constructor(\n @Host() @Optional() protected gaEvent: GaEventDirective\n ) {\n this.gaBind = 'focus';\n }\n\n @Input() set gaBind(bind: string) {\n if (this.gaEvent) {\n this.gaEvent.gaBind = bind;\n }\n }\n\n}\n","export enum GaActionEnum {\n ADD_PAYMENT_INFO = 'add_payment_info',\n ADD_TO_CART = 'add_to_cart',\n ADD_TO_WISHLIST = 'add_to_wishlist',\n BEGIN_CHECKOUT = 'begin_checkout',\n CHECKOUT_PROGRESS = 'checkout_progress',\n GENERATE_LEAD = 'generate_lead',\n LOGIN = 'login',\n PURCHASE = 'purchase',\n REFUND = 'refund',\n REMOVE_FROM_CART = 'remove_from_cart',\n SEARCH = 'search',\n SELECT_CONTENT = 'select_content',\n SET_CHECKOUT_OPTION = 'set_checkout_option',\n SHARE = 'share',\n SIGN_UP = 'sign_up',\n VIEW_ITEM = 'view_item',\n VIEW_ITEM_LIST = 'view_item_list',\n VIEW_PROMOTION = 'view_promotion',\n VIEW_SEARCH_RESULT = 'view_search_results',\n VIEW_SEARCH_RESULTS = 'view_search_results',\n}\n","import { Provider, APP_INITIALIZER, isDevMode } from '@angular/core';\nimport { NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN } from '../tokens/ngx-google-analytics-settings-token';\nimport { IGoogleAnalyticsSettings } from '../interfaces/i-google-analytics-settings';\nimport { NGX_GTAG_FN } from '../tokens/ngx-gtag-token';\nimport { GtagFn } from '../types/gtag.type';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Provide a DI Configuration to attach GA Initialization at Angular Startup Cycle.\n */\nexport const NGX_GOOGLE_ANALYTICS_INITIALIZER_PROVIDER: Provider = {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: GoogleAnalyticsInitializer,\n deps: [\n NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN,\n NGX_GTAG_FN,\n DOCUMENT\n ]\n};\n\n/**\n * Create a script element on DOM and link it to Google Analytics tracking code URI.\n * After that, execute exactly same init process as tracking snippet code.\n */\nexport function GoogleAnalyticsInitializer(\n settings: IGoogleAnalyticsSettings,\n gtag: GtagFn,\n document: Document\n) {\n return async () => {\n if (!settings.trackingCode) {\n if (!isDevMode()) {\n console.error('Empty tracking code for Google Analytics. Make sure to provide one when initializing NgxGoogleAnalyticsModule.');\n }\n\n return;\n }\n\n if (!gtag) {\n if (!isDevMode()) {\n console.error('Was not possible create or read gtag() fn. Make sure this module is running on a Browser w/ access to Window interface.');\n }\n\n return;\n }\n\n if (!document) {\n if (!isDevMode()) {\n console.error('Was not possible to access Document interface. Make sure this module is running on a Browser w/ access do Document interface.');\n }\n }\n\n // Set default ga.js uri\n settings.uri = settings.uri || `https://www.googletagmanager.com/gtag/js?id=${settings.trackingCode}`;\n\n // these commands should run first!\n settings.initCommands = settings?.initCommands ?? [];\n\n // assert config command\n if (!settings.initCommands.find(x => x.command === 'config')) {\n settings.initCommands.unshift({ command: 'config', values: [ settings.trackingCode ] });\n }\n\n // assert js command\n if (!settings.initCommands.find(x => x.command === 'js')) {\n settings.initCommands.unshift({ command: 'js', values: [ new Date() ] });\n }\n\n for (const command of settings.initCommands) {\n gtag(command.command, ...command.values);\n }\n\n const s: HTMLScriptElement = document.createElement('script');\n s.async = true;\n s.src = settings.uri;\n\n if (settings.nonce) {\n s.setAttribute('nonce', settings.nonce);\n }\n\n const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\n head.appendChild(s);\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { IGoogleAnalyticsRoutingSettings } from '../interfaces/i-google-analytics-routing-settings';\n\n/**\n * Provide a Injection Token to global settings.\n */\nexport const NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN = new InjectionToken<IGoogleAnalyticsRoutingSettings>('ngx-google-analytics-routing-settings', {\n factory: () => ({})\n});\n","import { Provider, APP_BOOTSTRAP_LISTENER, ComponentRef } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { IGoogleAnalyticsRoutingSettings } from '../interfaces/i-google-analytics-routing-settings';\nimport { GoogleAnalyticsService } from '../services/google-analytics.service';\nimport { NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN } from '../tokens/ngx-google-analytics-router-settings-token';\nimport { filter, skip } from 'rxjs/operators';\n\n/**\n * Provide a DI Configuration to attach GA Trigger to Router Events at Angular Startup Cycle.\n */\nexport const NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER: Provider = {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: GoogleAnalyticsRouterInitializer,\n deps: [\n NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN,\n GoogleAnalyticsService\n ]\n};\n\n/**\n * Attach a listener to `NavigationEnd` Router event. So, every time Router finish the page resolution it should call `NavigationEnd` event.\n * We assume that NavigationEnd is the final page resolution and call GA `page_view` command.\n *\n * To avoid double binds, we also destroy the subscription when de Bootstrap Component is destroied. But, we don't know for sure\n * that this strategy does not cause double bind on multiple bootstrap components.\n *\n * We are using de component's injector reference to resolve Router, sou I hope there is no problem w/ double bing.\n *\n * If you have this problem, I encourage not Use NgxGoogleAnalyticsRouterModule and atach the listener on AppComponent initialization.\n */\nexport function GoogleAnalyticsRouterInitializer(\n settings: IGoogleAnalyticsRoutingSettings,\n gaService: GoogleAnalyticsService\n) {\n return async (c: ComponentRef<any>) => {\n const router = c.injector.get(Router);\n const { include = [], exclude = [] } = settings ?? {};\n const includeRules = normalizePathRules(include);\n const excludeRules = normalizePathRules(exclude);\n const subs = router\n .events\n .pipe(\n filter((event: any) => event instanceof NavigationEnd),\n skip(1), // Prevend double views on the first tigger (because GA Already send one ping on setup)\n filter(event => includeRules.length > 0\n ? includeRules.some(rule => rule.test(event.urlAfterRedirects))\n : true),\n filter(event => excludeRules.length > 0\n ? !excludeRules.some(rule => rule.test(event.urlAfterRedirects))\n : true)\n )\n .subscribe(event => gaService.pageView(event.urlAfterRedirects, undefined));\n // Cleanup\n c.onDestroy(() => subs.unsubscribe());\n };\n}\n\n/** Converts all path rules from string to Regex instances */\nfunction normalizePathRules(rules: Array<string | RegExp>): Array<RegExp> {\n return rules.map(rule => (rule instanceof RegExp)\n ? rule\n : new RegExp(`^${rule.replace('*', '.*')}$`, 'i'));\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { IGoogleAnalyticsCommand } from './interfaces/i-google-analytics-command';\nimport { NGX_GOOGLE_ANALYTICS_INITIALIZER_PROVIDER } from './initializers/google-analytics.initializer';\nimport { NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN } from './tokens/ngx-google-analytics-settings-token';\nimport { GaEventDirective } from './directives/ga-event.directive';\nimport { GaEventCategoryDirective } from './directives/ga-event-category.directive';\nimport { GaEventFormInputDirective } from './directives/ga-event-form-input.directive';\nimport { IGoogleAnalyticsSettings } from './interfaces/i-google-analytics-settings';\n\n/**\n * Install Google Analytics Tracking code on your environment and configure tracking ID.\n *\n * This module should be a dependency on the highest level module of the application, i.e. AppModule in most use cases.\n */\n@NgModule({\n imports: [\n ],\n declarations: [\n GaEventDirective,\n GaEventCategoryDirective,\n GaEventFormInputDirective\n ],\n exports: [\n GaEventDirective,\n GaEventCategoryDirective,\n GaEventFormInputDirective\n ]\n})\nexport class NgxGoogleAnalyticsModule {\n /**\n * You should provide a valid Google TrackingCode. This code will be provided to the entire application by\n * `NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN` token. You can inject this code in you components if you like by\n * use the following injection code `@Inject(NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN) gaConfig: IGoogleAnalyticsSettings`\n *\n * @param trackingCode The Google Tracking Code\n * @param initCommands When placed, it will run any GA Commands in sequence after setup GA environment.\n * @param uri When placed, it will change the default js URI to the provided one.\n * @param enableTracing When true, trace GA tracking errors on production mode.\n * @param nonce When placed, nonce will be added to script tag.\n */\n static forRoot(trackingCode: string, initCommands: IGoogleAnalyticsCommand[] = [], uri?: string, enableTracing?: boolean, nonce?: string): ModuleWithProviders<NgxGoogleAnalyticsModule> {\n return {\n ngModule: NgxGoogleAnalyticsModule,\n providers: [\n {\n provide: NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN,\n useValue: {\n trackingCode,\n initCommands,\n uri,\n enableTracing,\n nonce\n } as IGoogleAnalyticsSettings\n },\n NGX_GOOGLE_ANALYTICS_INITIALIZER_PROVIDER,\n ]\n };\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER } from '../initializers/google-analytics-router.initializer';\nimport { NgxGoogleAnalyticsModule } from '../ngx-google-analytics.module';\nimport { IGoogleAnalyticsRoutingSettings } from '../interfaces/i-google-analytics-routing-settings';\nimport { NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN } from '../tokens/ngx-google-analytics-router-settings-token';\n\n/**\n * Attach a listener to `NavigationEnd` Router event. So, every time Router finish the page resolution it should call `NavigationEnd` event.\n * We assume that NavigationEnd is the final page resolution and call GA `page_view` command.\n *\n * To avoid double binds, we also destroy the subscription when de Bootstrap Component is destroied. But, we don't know for sure\n * that this strategy does not cause double bind on multiple bootstrap components.\n *\n * We are using de component's injector reference to resolve Router, sou I hope there is no problem w/ double bing.\n *\n * If you have this problem, I encourage not Use NgxGoogleAnalyticsRouterModule and atach the listener on AppComponent initialization.\n *\n * This Module is just a sugar for:\n *\n```typescript\nconstructor(private router: Router) {}\n...\nngOnInit() {\n ...\n this.router\n .events\n .pipe(takeUntil(this.onDestroy$))\n .subscribe(event => {\n if (event instanceof NavigationEnd) {\n gaService.pageView(event.urlAfterRedirects, undefined);\n }\n });\n```\n */\n@NgModule({\n imports: [\n CommonModule,\n NgxGoogleAnalyticsModule\n ],\n providers: [\n NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER\n ],\n declarations: []\n})\nexport class NgxGoogleAnalyticsRouterModule {\n static forRoot(settings?: IGoogleAnalyticsRoutingSettings): ModuleWithProviders<NgxGoogleAnalyticsRouterModule> {\n return {\n ngModule: NgxGoogleAnalyticsRouterModule,\n providers: [\n {\n provide: NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN,\n useValue: settings ?? {}\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ngx-google-analytics\n */\n\nexport * from './lib/directives/ga-event-category.directive';\nexport * from './lib/directives/ga-event.directive';\nexport * from './lib/directives/ga-event-form-input.directive';\n\nexport * from './lib/enums/ga-action.enum';\n\nexport * from './lib/initializers/google-analytics.initializer';\nexport * from './lib/initializers/google-analytics-router.initializer';\n\nexport * from './lib/interfaces/i-google-analytics-command';\nexport * from './lib/interfaces/i-google-analytics-routing-settings';\nexport * from './lib/interfaces/i-google-analytics-settings';\n\nexport * from './lib/services/google-analytics.service';\n\nexport * from './lib/tokens/ngx-data-layer-token';\nexport * from './lib/tokens/ngx-google-analytics-router-settings-token';\nexport * from './lib/tokens/ngx-google-analytics-settings-token';\nexport * from './lib/tokens/ngx-gtag-token';\nexport * from './lib/tokens/ngx-window-token';\n\nexport * from './lib/types/data-layer.type';\nexport * from './lib/types/ga-action.type';\nexport * from './lib/types/gtag.type';\n\nexport * from './lib/ngx-google-analytics.module';\nexport * from './lib/ngx-google-analytics-router/ngx-google-analytics-router.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.GaEventDirective"],"mappings":"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"}