{"version":3,"file":"tangential-analytics.mjs","sources":["../../../../projects/tangential/analytics/src/lib/google-analytics/google-analytics.ts","../../../../projects/tangential/analytics/src/lib/ng2-adsense-fork/ng2-adsense.ts","../../../../projects/tangential/analytics/src/public-api.ts","../../../../projects/tangential/analytics/src/tangential-analytics.ts"],"sourcesContent":["import {ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\nimport {Logger, MessageBus, NgUtil} from '@tangential/core';\nimport {Injectable} from '@angular/core';\nimport {AppEnvironment} from '@tangential/core';\nexport type HitType =\n  'pageview' |\n  'screenview' |\n  'event' |\n  'transaction' |\n  'item' |\n  'social' |\n  'exception' |\n  'timing'\n\nexport const HitTypes = {\n  pageView: <HitType>'pageview',\n  screenView: <HitType>'screenview',\n  event: <HitType>'event',\n  transaction: <HitType>'transaction',\n  item: <HitType>'item',\n  social: <HitType>'social',\n  exception: <HitType>'exception',\n  timing: <HitType>'timing',\n}\n\nexport interface GoogleAnalyticsFields {\n  hitType?: HitType,\n  title?: string,\n  page?: string,\n  location?: string,\n\n  eventCategory?: string,\n  eventAction?: string,\n  eventLabel?: string\n}\n\nexport type GaFunction = (action: string, fields?: GoogleAnalyticsFields | string, other?: string) => void\n//noinspection ES6ConvertVarToLetConst\ndeclare var ga: (action: string, fields?: GoogleAnalyticsFields | string, other?: string) => void;\ndeclare const window\n\n@Injectable()\nexport class GoogleAnalytics {\n\n\n  private analytics: GaFunction = (a: string, fields: GoogleAnalyticsFields, other?: string) => {\n    if (other) {\n      this.logger.trace(this, a, fields, other)\n    } else {\n      this.logger.trace(this, a, fields)\n    }\n  }\n\n  constructor(private bus: MessageBus,\n              protected logger: Logger,\n              private env: AppEnvironment) {\n    let cfg = env.googleAnalytics\n    if (cfg && cfg.enabled) {\n      this.awaitGoogle(5000).then(windowGa => {\n        this.analytics = windowGa\n        this.create()\n      })\n\n    }\n  }\n\n  awaitGoogle(waitMils: number): Promise<GaFunction> {\n    return new Promise<GaFunction>((resolve) => {\n      let started = Date.now()\n      let abortAt = started + waitMils\n      let fn = () => {\n        if (window.ga) {\n          resolve(window.ga)\n        } else if(Date.now() > abortAt){\n          resolve(this.analytics)\n        } else {\n          setTimeout(fn, 50)\n        }\n      }\n    })\n  }\n\n  create() {\n    this.analytics('create', this.env.googleAnalytics.trackingId, 'auto');\n    this.analytics('send', 'pageview');\n  }\n\n\n  navigatedToGeneric(state: RouterStateSnapshot, route: ActivatedRouteSnapshot) {\n    const hit: GoogleAnalyticsFields = {\n      hitType: HitTypes.pageView,\n      eventCategory: 'nav',\n      eventLabel: 'general'\n    }\n\n    this.analytics('set', 'page', hit.page || state.url)\n    this.analytics('send', 'generic')\n  }\n\n  navigatedTo(state: RouterStateSnapshot, route: ActivatedRouteSnapshot, hit: GoogleAnalyticsFields) {\n    hit.hitType = HitTypes.pageView\n    this.analytics('set', 'page', hit.page || NgUtil.keylessUrl(state))\n    this.analytics('send', hit)\n  }\n\n}\n","/* CommonModule required for ngStyle */\nimport {CommonModule} from '@angular/common'\n/**\n *\n * Source: https://github.com/scttcper/ng2-adsense/blob/master/src/lib/ng2-adsense.ts\n *\n */\nimport {\n  AfterViewInit,\n  Component, InjectionToken,\n  Input,\n  ModuleWithProviders,\n  NgModule,\n  OnInit,\n} from '@angular/core'\n\ndeclare const window\n\nexport class AdsenseConfig {\n\n  adClient?: string;\n  adSlot?: string | number;\n  adFormat?: string;\n  display?: string;\n  width?: number;\n  height?: number;\n\n  constructor(config: AdsenseConfig = {}) {\n    this.adClient = config.adClient || this.adClient;\n    this.adSlot = config.adSlot || this.adSlot;\n    this.adFormat = config.adFormat || this.adFormat;\n    this.display = config.display || 'block'\n    this.width = config.width\n    this.height = config.height\n  }\n}\n\n@Component({\n  selector: 'ng2-adsense',\n  template: `\n              <div class=\"ng2-adsense\">\n                <ins class=\"adsbygoogle\"\n                     style=\"display:inline-block;width:320px;height:50px\"\n                     [attr.data-ad-client]=\"adClient\"\n                     [attr.data-ad-slot]=\"adSlot\"\n                     [attr.data-ad-format]=\"adFormat\"\n                     [attr.data-ad-region]=\"adRegion\"></ins>\n              </div>\n            `,\n  styles:   [\n      `.ng2-adsense {\n      padding-bottom : 8px;\n    } `]\n})\nexport class AdsenseComponent implements OnInit, AfterViewInit {\n  @Input() adClient: string;\n  @Input() adSlot: string | number;\n  @Input() adFormat = 'auto';\n  @Input() adRegion = 'page-' + Math.floor(Math.random() * 10000) + 1;\n  @Input() display: string;\n  @Input() width: number;\n  @Input() height: number;\n\n\n  private pushed: boolean = false\n\n  constructor(private config: AdsenseConfig) {\n  }\n\n  ngOnInit() {\n    this.adClient = this.adClient || this.config.adClient;\n    this.adSlot = this.adSlot || this.config.adSlot;\n    this.adFormat = this.adFormat || this.config.adFormat;\n    this.display = this.display || this.config.display;\n    this.width = this.width || this.config.width;\n    this.height = this.height || this.config.height;\n  }\n\n  ngAfterViewInit() {\n    // attempts to push the ad twice. Usually if one doesn't work the other\n    // will depending on if the browser has the adsense code cached\n    this.push();\n    if (!this.pushed) {\n      setTimeout(() => this.push(), 200);\n    }\n  }\n\n  push() {\n    try {\n      const adsByGoogle = window['adsbygoogle'];\n      adsByGoogle .push({});\n      this.pushed = true\n    } catch (e) {\n      console.warn('Could not load ads')\n    }\n  }\n}\n\nexport const ADSENSE_CONFIG = new InjectionToken('AdsenseConfig');\n\nexport function provideAdsenseConfig(config: AdsenseConfig) {\n  return new AdsenseConfig(config);\n}\n\n@NgModule({\n  imports:      [CommonModule],\n  exports:      [AdsenseComponent],\n  declarations: [AdsenseComponent],\n})\nexport class AdsenseModule {\n  static forRoot(config?: AdsenseConfig): ModuleWithProviders<AdsenseModule> {\n    return {\n      ngModule:  AdsenseModule,\n      providers: [\n        {\n          provide:  ADSENSE_CONFIG,\n          useValue: config\n        }, {\n          provide:    AdsenseConfig,\n          useFactory: provideAdsenseConfig,\n          deps:       [ADSENSE_CONFIG]\n        }]\n    };\n  }\n}\n","/*\n * Public API Surface of analytics\n */\nexport * from './lib/index'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}