{"version":3,"file":"hakimio-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/types/ga-action.type.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.provider.ts","../../../projects/ngx-google-analytics/src/lib/ngx-google-analytics.provider.ts","../../../projects/ngx-google-analytics/src/public_api.ts","../../../projects/ngx-google-analytics/src/hakimio-ngx-google-analytics.ts"],"sourcesContent":["import {Directive, Input} from '@angular/core';\n\n@Directive({\n    selector: `\n        [gaEvent][gaCategory],\n        [gaCategory]\n    `,\n    exportAs: 'gaCategory',\n    standalone: true\n})\nexport class GaEventCategoryDirective {\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 an Injection Token for global settings.\n */\nexport const NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN = new InjectionToken<IGoogleAnalyticsSettings>('ngx-google-analytics-settings', {\n    factory: () => ({ga4TagId: '', enableTracing: false})\n});\n","import {inject, InjectionToken} 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 {inject, InjectionToken} from '@angular/core';\nimport {DataLayer} from '../types/data-layer.type';\nimport {GaWindow} from './ngx-google-analytics-window';\nimport {NGX_WINDOW} from './ngx-window-token';\n\n/**\n * Check if there is some global function called gtag on Window object, or create an empty function that doesn't break code...\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 {inject, InjectionToken} from '@angular/core';\nimport {DataLayer} from '../types/data-layer.type';\nimport {GtagFn, GtagFnArgs} from '../types/gtag.type';\nimport {NGX_DATA_LAYER} from './ngx-data-layer-token';\nimport {GaWindow} from './ngx-google-analytics-window';\nimport {NGX_WINDOW} from './ngx-window-token';\n\n/**\n * Check if there is some global function called gtag on Window object, or create an empty function that doesn't break code...\n */\nexport function getGtagFn(window: GaWindow, dataLayer: DataLayer): GtagFn | null {\n    return (window)\n        ? window['gtag'] = window['gtag'] || function () {\n            // IMPORTANT: rest param syntax (...args) cannot be used here since \"gtag\" push implementation requires\n            // \"callee\" information which is not available in normal array\n            // eslint-disable-next-line prefer-rest-params\n            dataLayer.push(arguments as unknown as GtagFnArgs);\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 {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, isDevMode} from '@angular/core';\nimport {GaActionEnum} from '../enums/ga-action.enum';\nimport {\n    IGoogleAnalyticsServiceAppView,\n    IGoogleAnalyticsServiceEvent,\n    IGoogleAnalyticsServicePageView\n} from '../interfaces/i-google-analytics-sevice';\nimport {NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN} from '../tokens/ngx-google-analytics-settings-token';\nimport {NGX_GTAG_FN} from '../tokens/ngx-gtag-token';\nimport {Primitive} from '../types/primitive.type';\nimport {GtagFn} from '../types/gtag.type';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class GoogleAnalyticsService {\n\n    private readonly settings = inject(NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN);\n    private readonly _document = inject(DOCUMENT);\n    private readonly _gtag = inject(NGX_GTAG_FN);\n\n    private get document(): Document {\n        return this._document;\n    }\n\n    /**\n     * Call native GA Tag\n     */\n    gtag: GtagFn = (...args) => {\n        try {\n            this._gtag(...args.filter(x => x !== undefined));\n        } catch (err) {\n            this.throw(err);\n        }\n    };\n\n    /**\n     * Send an event trigger to GA. This is the same as:\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 options event options (category, label, value, interaction, [custom dimensions] options)\n     */\n    event(action: GaActionEnum | string, options?: IGoogleAnalyticsServiceEvent) {\n        try {\n            const opt = new Map<string, Primitive>();\n            if (options?.category !== undefined) {\n                opt.set('event_category', options.category);\n            }\n            if (options?.label !== undefined) {\n                opt.set('event_label', options.label);\n            }\n            if (options?.value !== undefined) {\n                opt.set('value', options.value);\n            }\n            if (options?.interaction !== undefined) {\n                opt.set('interaction', options.interaction);\n            }\n            if (options?.options !== undefined) {\n                Object\n                    .entries(options.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) {\n            this.throw(error);\n        }\n    }\n\n    /**\n     * Send a 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 options pageView options (title, location, [custom dimensions] options)\n     */\n    pageView(path: string, options?: IGoogleAnalyticsServicePageView) {\n        try {\n            const opt = new Map<string, Primitive>([['page_path', path]]);\n            if (options?.title !== undefined) {\n                opt.set('page_title', options.title);\n            }\n            if (options?.location !== undefined || this.document) {\n                opt.set('page_location', (options?.location ?? this.document.location.href));\n            }\n            if (options?.options !== undefined) {\n                Object\n                    .entries(options.options)\n                    .map(([key, value]) => opt.set(key, value));\n            }\n            this.gtag('event', 'page_view', this.toKeyValue(opt));\n        } catch (error) {\n            this.throw(error);\n        }\n    }\n\n    /**\n     * Send an event to report a App Page View. This 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 options appView options (appId, appVersion, installerId)\n     */\n    appView(screen: string, appName: string, options?: IGoogleAnalyticsServiceAppView) {\n        try {\n            const opt = new Map<string, Primitive>([['screen_name', screen], ['app_name', appName]]);\n            if (options?.appId !== undefined) {\n                opt.set('app_id', options.appId);\n            }\n            if (options?.appVersion !== undefined) {\n                opt.set('app_version', options.appVersion);\n            }\n            if (options?.installerId !== undefined) {\n                opt.set('app_installer_id', options.installerId);\n            }\n            this.gtag('event', 'screen_view', this.toKeyValue(opt));\n        } catch (error) {\n            this.throw(error);\n        }\n    }\n\n    // noinspection SpellCheckingInspection\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: Record<string, Primitive>) {\n        try {\n            this._gtag('set', options);\n        } catch (err) {\n            this.throw(err);\n        }\n    }\n\n    /**\n     * Send an event to GA to report an application error. This 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, Primitive>();\n            if (description !== undefined) {\n                opt.set('description', description);\n            }\n            if (fatal !== undefined) {\n                opt.set('fatal', fatal);\n            }\n            const params = this.toKeyValue(opt);\n            if (params) {\n                this.gtag('event', 'app_exception', params);\n            } else {\n                this.gtag('event', 'app_exception');\n            }\n        } catch (error) {\n            this.throw(error);\n        }\n    }\n\n    private throw(err: Error) {\n        if ((this.settings.enableTracing || isDevMode()) && console && console.error) {\n            console.error(err);\n        }\n    }\n\n    private toKeyValue(map: Map<string, Primitive>): { [param: string]: Primitive } | undefined {\n        if (map.size) // > 0\n            return Object.fromEntries(map);\n    }\n}\n","import {Directive, ElementRef, inject, Input, isDevMode, OnDestroy} from '@angular/core';\r\nimport {fromEvent, Subscription} from 'rxjs';\r\nimport {GaActionEnum} from '../enums/ga-action.enum';\r\nimport {GoogleAnalyticsService} from '../services/google-analytics.service';\r\nimport {NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN} from '../tokens/ngx-google-analytics-settings-token';\r\nimport {GaEventCategoryDirective} from './ga-event-category.directive';\r\n\r\n@Directive({\r\n    selector: `[gaEvent]`,\r\n    exportAs: 'gaEvent',\r\n    standalone: true\r\n})\r\nexport class GaEventDirective implements OnDestroy {\r\n\r\n    @Input() gaAction!: GaActionEnum | string;\r\n    @Input() gaLabel!: string;\r\n    @Input() label!: string;\r\n    @Input() gaValue!: number;\r\n    @Input() gaInteraction!: boolean;\r\n    @Input() gaEvent!: GaActionEnum | string;\r\n    private bindSubscription?: Subscription;\r\n\r\n    private readonly gaCategoryDirective = inject(GaEventCategoryDirective, {optional: true});\r\n    private readonly gaService = inject(GoogleAnalyticsService);\r\n    private readonly settings = inject(NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN);\r\n    private readonly el = inject(ElementRef);\r\n\r\n    constructor() {\r\n        this.gaBind = 'click';\r\n    }\r\n\r\n    private _gaBind!: string;\r\n\r\n    @Input()\r\n    set gaBind(gaBind: string) {\r\n        if (this.bindSubscription) {\r\n            this.bindSubscription.unsubscribe();\r\n        }\r\n\r\n        this._gaBind = gaBind;\r\n        this.bindSubscription = fromEvent(this.el.nativeElement, gaBind).subscribe(() => this.trigger());\r\n    }\r\n    get gaBind(): string {\r\n        return this._gaBind;\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        if (this.bindSubscription) {\r\n            this.bindSubscription.unsubscribe();\r\n        }\r\n    }\r\n\r\n    protected trigger() {\r\n        try {\r\n            if (!this.gaAction && !this.gaEvent) {\r\n                throw new Error('You must provide a gaAction attribute to identify this event.');\r\n            }\r\n\r\n            this.gaService\r\n                .event(\r\n                    this.gaAction || this.gaEvent,\r\n                    {\r\n                        category: this.gaCategoryDirective?.gaCategory,\r\n                        label: this.gaLabel || this.label,\r\n                        value: this.gaValue,\r\n                        interaction: this.gaInteraction\r\n                    }\r\n                );\r\n        } catch (err) {\r\n            this.throw(err);\r\n        }\r\n    }\r\n\r\n    protected throw(err: Error) {\r\n        if ((isDevMode() || this.settings.enableTracing) && console && console.warn) {\r\n            console.warn(err);\r\n        }\r\n    }\r\n\r\n}\r\n","import {Directive, inject, Input} from '@angular/core';\nimport {GaEventDirective} from './ga-event.directive';\n\n@Directive({\n    selector: `\n        input[gaEvent],\n        select[gaEvent],\n        textarea[gaEvent]\n    `,\n    standalone: true\n})\nexport class GaEventFormInputDirective {\n\n    private readonly gaEvent = inject(GaEventDirective, {\n        optional: true,\n        host: true\n    });\n\n    constructor() {\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","// noinspection JSUnusedGlobalSymbols\n\nexport 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}\n","import {DOCUMENT} from '@angular/common';\r\nimport {APP_INITIALIZER, isDevMode, Provider} from '@angular/core';\r\nimport {IGoogleAnalyticsSettings} from '../interfaces/i-google-analytics-settings';\r\nimport {NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN} from '../tokens/ngx-google-analytics-settings-token';\r\nimport {NGX_GTAG_FN} from '../tokens/ngx-gtag-token';\r\nimport {GtagFn} from '../types/gtag.type';\r\n\r\n/**\r\n * Provide a DI Configuration to attach GA Initialization at Angular Startup Cycle.\r\n */\r\nexport const NGX_GOOGLE_ANALYTICS_INITIALIZER_PROVIDER: Provider = {\r\n    provide: APP_INITIALIZER,\r\n    multi: true,\r\n    useFactory: GoogleAnalyticsInitializer,\r\n    deps: [\r\n        NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN,\r\n        NGX_GTAG_FN,\r\n        DOCUMENT\r\n    ]\r\n};\r\n\r\n/**\r\n * Create a script element on DOM and link it to Google Analytics tracking code URI.\r\n * After that, execute exactly same init process as tracking snippet code.\r\n */\r\nexport function GoogleAnalyticsInitializer(\r\n    settings: IGoogleAnalyticsSettings,\r\n    gtag: GtagFn,\r\n    document: Document\r\n) {\r\n    return async () => {\r\n        if (!settings.ga4TagId) {\r\n            if (!isDevMode()) {\r\n                console.error('Empty tracking code for Google Analytics. Make sure to provide one when initializing NgxGoogleAnalyticsModule.');\r\n            }\r\n\r\n            return;\r\n        }\r\n\r\n        if (!gtag) {\r\n            if (!isDevMode()) {\r\n                console.error('Couldn\\'t create or read gtag() fn. Make sure this module is running on a Browser w/ access to Window interface.');\r\n            }\r\n\r\n            return;\r\n        }\r\n\r\n        if (!document) {\r\n            if (!isDevMode()) {\r\n                console.error('Couldn\\'t to access Document interface. Make sure this module is running on a Browser w/ access to Document interface.');\r\n            }\r\n        }\r\n\r\n        // Set default ga.js uri\r\n        settings.uri = settings.uri || `https://www.googletagmanager.com/gtag/js?id=${settings.ga4TagId}`;\r\n\r\n        // these commands should run first!\r\n        settings.initCommands = settings?.initCommands ?? [];\r\n\r\n        // assert config command\r\n        if (!settings.initCommands.find(x => x.command === 'config')) {\r\n            settings.initCommands.unshift({command: 'config', values: [settings.ga4TagId]});\r\n        }\r\n\r\n        // assert js command\r\n        if (!settings.initCommands.find(x => x.command === 'js')) {\r\n            settings.initCommands.unshift({command: 'js', values: [new Date()]});\r\n        }\r\n\r\n        for (const command of settings.initCommands) {\r\n            gtag(command.command, ...command.values);\r\n        }\r\n\r\n        const s: HTMLScriptElement = document.createElement('script');\r\n        s.async = true;\r\n        s.src = settings.uri;\r\n\r\n        if (settings.nonce) {\r\n            s.setAttribute('nonce', settings.nonce);\r\n        }\r\n\r\n        const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\r\n        head.appendChild(s);\r\n    };\r\n}\r\n","import {InjectionToken} from '@angular/core';\nimport {IGoogleAnalyticsRoutingSettings} from '../interfaces/i-google-analytics-routing-settings';\n\n/**\n * Provide an Injection Token for global settings.\n */\nexport const NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN = new InjectionToken<IGoogleAnalyticsRoutingSettings>('ngx-google-analytics-routing-settings', {\n    factory: () => ({})\n});\n","import {APP_BOOTSTRAP_LISTENER, ComponentRef, Provider} from '@angular/core';\r\nimport {Event, NavigationEnd, Router} from '@angular/router';\r\nimport {filter, skip} from 'rxjs';\r\nimport {IGoogleAnalyticsRoutingSettings} from '../interfaces/i-google-analytics-routing-settings';\r\nimport {GoogleAnalyticsService} from '../services/google-analytics.service';\r\nimport {NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN} from '../tokens/ngx-google-analytics-router-settings-token';\r\n\r\n/**\r\n * Provide a DI Configuration to attach GA Trigger to Router Events at Angular Startup Cycle.\r\n */\r\nexport const NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER: Provider = {\r\n    provide: APP_BOOTSTRAP_LISTENER,\r\n    multi: true,\r\n    useFactory: GoogleAnalyticsRouterInitializer,\r\n    deps: [\r\n        NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN,\r\n        GoogleAnalyticsService\r\n    ]\r\n};\r\n\r\n/**\r\n * Attach a listener to `NavigationEnd` Router event. So, every time Router finish the page resolution it should call `NavigationEnd` event.\r\n * We assume that NavigationEnd is the final page resolution and call GA `page_view` command.\r\n *\r\n * To avoid double binds, we also destroy the subscription when de Bootstrap Component is destroyed. But, we don't know for sure\r\n * that this strategy does not cause double bind on multiple bootstrap components.\r\n *\r\n * We are using the component's injector reference to resolve Router, so I hope there is no problem with double binding.\r\n *\r\n * If you have this problem, I encourage not Use NgxGoogleAnalyticsRouterModule and attach the listener on AppComponent initialization.\r\n */\r\nexport function GoogleAnalyticsRouterInitializer(\r\n    settings: IGoogleAnalyticsRoutingSettings,\r\n    gaService: GoogleAnalyticsService\r\n) {\r\n    return (c: ComponentRef<unknown>) => {\r\n        const router = c.injector.get(Router);\r\n        const {include = [], exclude = []} = settings ?? {};\r\n        const includeRules = normalizePathRules(include);\r\n        const excludeRules = normalizePathRules(exclude);\r\n        const subs = router\r\n            .events\r\n            .pipe(\r\n                filter((event: Event): event is NavigationEnd => event instanceof NavigationEnd),\r\n                skip(1), // Prevent double views on the first trigger (because GA Already send one ping on setup)\r\n                filter(event => includeRules.length > 0\r\n                    ? includeRules.some(rule => rule.test(event.urlAfterRedirects))\r\n                    : true),\r\n                filter(event => excludeRules.length > 0\r\n                    ? !excludeRules.some(rule => rule.test(event.urlAfterRedirects))\r\n                    : true)\r\n            )\r\n            .subscribe(event => gaService.pageView(event.urlAfterRedirects, undefined));\r\n        // Cleanup\r\n        c.onDestroy(() => subs.unsubscribe());\r\n    };\r\n}\r\n\r\n/** Converts all path rules from string to Regex instances */\r\nfunction normalizePathRules(rules: Array<string | RegExp>): Array<RegExp> {\r\n    return rules.map(rule => (rule instanceof RegExp)\r\n        ? rule\r\n        : new RegExp(`^${rule.replace('*', '.*')}$`, 'i'));\r\n}\r\n","// noinspection JSUnusedGlobalSymbols\n\n/**\n * A string that represents default GA action used by Google to generate e-commerce intelligence.\n *\n * You can provide a custom string as well.\n * @deprecated use lib/enums/ga-action.enum.ts instead\n */\nexport type GaAction = 'view_search_results'\n    | 'add_payment_info'\n    | 'add_to_cart'\n    | 'add_to_wishlist'\n    | 'begin_checkout'\n    | 'checkout_progress'\n    | 'generate_lead'\n    | 'login'\n    | 'purchase'\n    | 'refund'\n    | 'remove_from_cart'\n    | 'search'\n    | 'select_content'\n    | 'set_checkout_option'\n    | 'share'\n    | 'sign_up'\n    | 'view_item'\n    | 'view_item_list'\n    | 'view_promotion';\n\n","import {NgModule} from '@angular/core';\r\nimport {GaEventCategoryDirective} from './directives/ga-event-category.directive';\r\nimport {GaEventFormInputDirective} from './directives/ga-event-form-input.directive';\r\nimport {GaEventDirective} from './directives/ga-event.directive';\r\n\r\nconst COMPONENTS = [GaEventDirective, GaEventCategoryDirective, GaEventFormInputDirective];\r\n\r\n@NgModule({\r\n    imports: COMPONENTS,\r\n    exports: COMPONENTS\r\n})\r\nexport class NgxGoogleAnalyticsModule {}\r\n","import {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\r\nimport {NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN} from '../tokens/ngx-google-analytics-router-settings-token';\r\nimport {IGoogleAnalyticsRoutingSettings} from '../interfaces/i-google-analytics-routing-settings';\r\nimport {NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER} from '../initializers/google-analytics-router.initializer';\r\n\r\n// noinspection JSUnusedGlobalSymbols\r\nexport function provideGoogleAnalyticsRouter(settings?: IGoogleAnalyticsRoutingSettings): EnvironmentProviders {\r\n    return makeEnvironmentProviders([\r\n        NGX_GOOGLE_ANALYTICS_ROUTER_INITIALIZER_PROVIDER,\r\n        {\r\n            provide: NGX_GOOGLE_ANALYTICS_ROUTING_SETTINGS_TOKEN,\r\n            useValue: settings ?? {}\r\n        }\r\n    ]);\r\n}\r\n","import {IGoogleAnalyticsOptions, IGoogleAnalyticsSettings} from './interfaces/i-google-analytics-settings';\r\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\r\nimport {NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN} from './tokens/ngx-google-analytics-settings-token';\r\nimport {NGX_GOOGLE_ANALYTICS_INITIALIZER_PROVIDER} from './initializers/google-analytics.initializer';\r\n\r\nexport function provideGoogleAnalytics(\r\n    ga4TagId: string,\r\n    options?: IGoogleAnalyticsOptions\r\n): EnvironmentProviders {\r\n    return makeEnvironmentProviders([\r\n        {\r\n            provide: NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN,\r\n            useValue: {\r\n                ga4TagId,\r\n                ...options\r\n            } as IGoogleAnalyticsSettings\r\n        },\r\n        NGX_GOOGLE_ANALYTICS_INITIALIZER_PROVIDER\r\n    ]);\r\n}\r\n","/*\r\n * Public API Surface of ngx-google-analytics\r\n */\r\n\r\nexport * from './lib/directives/ga-event-category.directive';\r\nexport * from './lib/directives/ga-event.directive';\r\nexport * from './lib/directives/ga-event-form-input.directive';\r\n\r\nexport * from './lib/enums/ga-action.enum';\r\n\r\nexport * from './lib/initializers/google-analytics.initializer';\r\nexport * from './lib/initializers/google-analytics-router.initializer';\r\n\r\nexport * from './lib/interfaces/i-google-analytics-command';\r\nexport * from './lib/interfaces/i-google-analytics-routing-settings';\r\nexport * from './lib/interfaces/i-google-analytics-settings';\r\n\r\nexport * from './lib/services/google-analytics.service';\r\n\r\nexport * from './lib/tokens/ngx-data-layer-token';\r\nexport * from './lib/tokens/ngx-google-analytics-router-settings-token';\r\nexport * from './lib/tokens/ngx-google-analytics-settings-token';\r\nexport * from './lib/tokens/ngx-gtag-token';\r\nexport * from './lib/tokens/ngx-window-token';\r\n\r\nexport * from './lib/types/data-layer.type';\r\nexport * from './lib/types/ga-action.type';\r\nexport * from './lib/types/gtag.type';\r\nexport * from './lib/types/primitive.type';\r\n\r\nexport * from './lib/ngx-google-analytics.module';\r\nexport * from './lib/ngx-google-analytics-router/ngx-google-analytics-router.provider';\r\nexport * from './lib/ngx-google-analytics.provider';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}