@tangential/analytics
Version:
Analytics and advertising - monitization, generally.
1 lines • 13.1 kB
Source Map (JSON)
{"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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"}