{"version":3,"file":"angular-google-tag-manager.mjs","sources":["../../../projects/angular-google-tag-manager/src/lib/angular-google-tag-manager-config.service.ts","../../../projects/angular-google-tag-manager/src/lib/angular-google-tag-manager.module.ts","../../../projects/angular-google-tag-manager/src/lib/angular-google-tag-manager.providers.ts","../../../projects/angular-google-tag-manager/src/lib/angular-google-tag-manager.service.ts","../../../projects/angular-google-tag-manager/src/public-api.ts","../../../projects/angular-google-tag-manager/src/angular-google-tag-manager.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { GoogleTagManagerConfig } from './google-tag-manager-config';\n\nexport const GoogleTagManagerConfigService =\n  new InjectionToken<GoogleTagManagerConfig>('google-tag-manager-config');\n\n// adapted from https://github.com/auth0/auth0-angular#dynamic-configuration\n@Injectable({ providedIn: 'root' })\nexport class GoogleTagManagerConfiguration {\n  private _googleTagManagerConfig: GoogleTagManagerConfig = {\n    id: null,\n    gtm_auth: '',\n    gtm_preview: '',\n  };\n\n  constructor(\n    @Optional()\n    @Inject(GoogleTagManagerConfigService)\n    googleTagManagerConfig?: GoogleTagManagerConfig\n  ) {\n    if (googleTagManagerConfig) {\n      this.set(googleTagManagerConfig);\n    }\n  }\n\n  public set(googleTagManagerConfig: GoogleTagManagerConfig): void {\n    this._googleTagManagerConfig = googleTagManagerConfig;\n  }\n\n  public get(): GoogleTagManagerConfig {\n    return this._googleTagManagerConfig;\n  }\n}\n\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { GoogleTagManagerConfigService } from './angular-google-tag-manager-config.service';\nimport { GoogleTagManagerConfig } from './google-tag-manager-config';\n\n@NgModule()\nexport class GoogleTagManagerModule {\n  public static forRoot(\n    config?: GoogleTagManagerConfig\n  ): ModuleWithProviders<GoogleTagManagerModule> {\n    return {\n      ngModule: GoogleTagManagerModule,\n      providers: [{ provide: GoogleTagManagerConfigService, useValue: config }],\n    };\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GoogleTagManagerConfig } from './google-tag-manager-config';\n\nexport function provideGoogleTagManager(\n  config: GoogleTagManagerConfig\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    { provide: 'googleTagManagerId', useValue: config.id },\n    { provide: 'googleTagManagerAuth', useValue: config.gtm_auth },\n    { provide: 'googleTagManagerPreview', useValue: config.gtm_preview },\n    {\n      provide: 'googleTagManagerResourcePath',\n      useValue: config.gtm_resource_path,\n    },\n    { provide: 'googleTagManagerCSPNonce', useValue: config.gtm_csp_none },\n    { provide: 'googleTagManagerMode', useValue: config.gtm_mode },\n  ]);\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { GoogleTagManagerConfiguration } from './angular-google-tag-manager-config.service';\nimport { GoogleTagManagerConfig } from './google-tag-manager-config';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class GoogleTagManagerService {\n  private isLoaded = false;\n  private config: GoogleTagManagerConfig | null;\n\n  private browserGlobals = {\n    windowRef(): any {\n      return window;\n    },\n    documentRef(): any {\n      return document;\n    },\n  };\n\n  constructor(\n    @Optional()\n    @Inject(GoogleTagManagerConfiguration)\n    public googleTagManagerConfiguration: GoogleTagManagerConfiguration,\n    @Optional() @Inject('googleTagManagerId') public googleTagManagerId: string,\n    @Optional() @Inject('googleTagManagerMode') public googleTagManagerMode: \"silent\"|\"noisy\" = \"noisy\",\n    @Optional()\n    @Inject('googleTagManagerAuth')\n    public googleTagManagerAuth: string,\n    @Optional()\n    @Inject('googleTagManagerPreview')\n    public googleTagManagerPreview: string,\n    @Optional()\n    @Inject('googleTagManagerResourcePath')\n    public googleTagManagerResourcePath: string,\n    @Optional()\n    @Inject('googleTagManagerCSPNonce')\n    public googleTagManagerCSPNonce: string\n  ) {\n    this.config = this.googleTagManagerConfiguration?.get();\n    if (this.config == null) {\n      this.config = { id: null };\n    }\n\n    this.config = {\n      ...this.config,\n      id: googleTagManagerId || this.config.id,\n      gtm_auth: googleTagManagerAuth || this.config.gtm_auth,\n      gtm_preview: googleTagManagerPreview || this.config.gtm_preview,\n      gtm_resource_path:\n        googleTagManagerResourcePath || this.config.gtm_resource_path,\n    };\n    if (this.config.id == null) {\n      return;\n    }\n  }\n\n  private checkForId(): boolean {\n    if( this.googleTagManagerMode !== \"silent\" && !this.config.id ) {\n      throw new Error('Google tag manager ID not provided.');\n    } else if( !this.config.id ) {\n      return false;\n    }\n    return true;\n  }\n\n  public getDataLayer(): any[] {\n    this.checkForId();\n    const window = this.browserGlobals.windowRef();\n    window.dataLayer = window.dataLayer || [];\n    return window.dataLayer;\n  }\n\n  private pushOnDataLayer(obj: object): void {\n    this.checkForId();\n    const dataLayer = this.getDataLayer();\n    dataLayer.push(obj);\n  }\n\n  public addGtmToDom(): Promise<boolean> {\n    return new Promise((resolve, reject) => {\n      if (this.isLoaded) {\n        return resolve(this.isLoaded);\n      } else if( !this.checkForId() ) {\n        return resolve(false);\n      }\n      const doc = this.browserGlobals.documentRef();\n      this.pushOnDataLayer({\n        'gtm.start': new Date().getTime(),\n        event: 'gtm.js',\n      });\n\n      const gtmScript = doc.createElement('script');\n      gtmScript.id = 'GTMscript';\n      gtmScript.async = true;\n      gtmScript.src = this.applyGtmQueryParams(\n        this.config.gtm_resource_path\n          ? this.config.gtm_resource_path\n          : 'https://www.googletagmanager.com/gtm.js'\n      );\n      gtmScript.addEventListener('load', () => {\n        return resolve((this.isLoaded = true));\n      });\n      gtmScript.addEventListener('error', () => {\n        return reject(false);\n      });\n      if (this.googleTagManagerCSPNonce) {\n        gtmScript.setAttribute('nonce', this.googleTagManagerCSPNonce);\n      }\n      doc.head.insertBefore(gtmScript, doc.head.firstChild);\n    });\n  }\n\n  public pushTag(item: object): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n      if( !this.checkForId() ) {\n        return resolve();\n      }\n\n      if (!this.isLoaded) {\n        this.addGtmToDom()\n          .then(() => {\n            this.pushOnDataLayer(item);\n            return resolve();\n          })\n          .catch(() => reject());\n      } else {\n        this.pushOnDataLayer(item);\n        return resolve();\n      }\n    });\n  }\n\n  private applyGtmQueryParams(url: string): string {\n    if (url.indexOf('?') === -1) {\n      url += '?';\n    }\n\n    return (\n      url +\n      Object.keys(this.config)\n        .filter((k) => this.config[k])\n        .map((k) => `${k}=${this.config[k]}`)\n        .join('&')\n    );\n  }\n}\n","/*\n * Public API Surface of angular-google-tag-manager\n */\n\nexport * from './lib/angular-google-tag-manager-config.service';\nexport * from './lib/angular-google-tag-manager.module';\nexport * from './lib/angular-google-tag-manager.providers';\nexport * from './lib/angular-google-tag-manager.service';\nexport * from './lib/google-tag-manager-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}