{"version":3,"file":"ips-ag-abtesting.mjs","sources":["../../src/lib/analytics/services/base.service.ts","../../src/lib/injection-tokens/index.ts","../../src/lib/analytics/services/clarity.service.ts","../../src/lib/analytics/services/google-analytics.service.ts","../../src/lib/analytics/services/feature-rate.service.ts","../../src/lib/analytics/feature-rate/feature-rate.component.ts","../../src/lib/analytics/feature-rate/feature-rate.component.html","../../src/lib/analytics/analytics.module.ts","../../src/lib/analytics/feature-rate/index.ts","../../src/lib/analytics/index.ts","../../src/lib/index.ts","../../src/public-api.ts","../../src/ips-ag-abtesting.ts"],"sourcesContent":["export class BaseService {\n  addScriptToHead(src?: string, content?: string): void {\n    const script = document.createElement('script');\n    if (content) {\n      script.innerHTML = content;\n    } else if (src) {\n      script.src = src;\n    }\n    document.head.appendChild(script);\n  }\n  async calculateSHA256(inputString: string): Promise<string> {\n    // Step 1: Convert the string to an ArrayBuffer\n    const encoder = new TextEncoder();\n    const data = encoder.encode(inputString);\n\n    // Step 2: Calculate the SHA-256 hash\n    const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\n    // Step 3: Convert the ArrayBuffer to a hexadecimal string\n    const hashArray = Array.from(new Uint8Array(hashBuffer));\n    const hashHex = hashArray\n      .map((b) => b.toString(16).padStart(2, '0'))\n      .join('');\n\n    return hashHex;\n  }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ABTESTING_GTAG_ID = new InjectionToken<string>(\"GTAG_ID\");\nexport const ABTESTING_CLARITY_ID = new InjectionToken<string>(\"CLARITY_ID\");\n","import { Injectable } from \"@angular/core\";\nimport { BaseService } from \"./base.service\";\nimport { Inject } from \"@angular/core\";\nimport { ABTESTING_CLARITY_ID } from \"../../injection-tokens\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class ClarityService extends BaseService {\n  private clarityId = \"\";\n  private get scriptContent() {\n    return `\n      (function (c, l, a, r, i, t, y) {\n        c[a] =\n          c[a] ||\n          function () {\n            (c[a].q = c[a].q || []).push(arguments);\n          };\n        t = l.createElement(r);\n        t.async = 1;\n        t.src = 'https://www.clarity.ms/tag/' + i;\n        y = l.getElementsByTagName(r)[0];\n        y.parentNode.insertBefore(t, y);\n      })(\n        window,\n        document,\n        'clarity',\n        'script',\n        '${this.clarityId}'\n      );\n  `;\n  }\n  constructor(@Inject(ABTESTING_CLARITY_ID) clarityId: string) {\n    super();\n    this.clarityId = clarityId;\n  }\n  init() {\n    this.addScriptToHead(undefined, this.scriptContent);\n  }\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { BaseService } from \"./base.service\";\nimport { ABTESTING_GTAG_ID } from \"../../injection-tokens\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class GoogleAnalyticsService extends BaseService {\n  private gtagId: string = \"\";\n  private get gtagContent() {\n    return `\n    window.dataLayer = window.dataLayer || [];\n    function gtag(){dataLayer.push(arguments);}\n    gtag('js', new Date());\n\n    gtag('config', '${this.gtagId}');`;\n  }\n  private gtagSrc = \"https://www.googletagmanager.com/gtag/js?id=\" + this.gtagId;\n  private gtag = (window as typeof window & { gtag: any }).gtag;\n  private engagementTimeout = 30000; // 30 seconds\n  constructor(@Inject(ABTESTING_GTAG_ID) gtagId: string) {\n    super();\n    this.gtagId = gtagId;\n    this.trackBounceRate = this.trackBounceRate.bind(this);\n    this.trackLogin = this.trackLogin.bind(this);\n    this.triggerEvent = this.triggerEvent.bind(this);\n  }\n  init() {\n    this.addScriptToHead(this.gtagSrc);\n    this.addScriptToHead(undefined, this.gtagContent);\n  }\n  ensureGAExists() {\n    if (!this.gtag) {\n      if (!(window as typeof window & { gtag: any }).gtag) {\n        this.init();\n      }\n      this.gtag = (window as typeof window & { gtag: any }).gtag;\n    }\n  }\n  triggerEvent(eventName: string, params: Record<string, any>) {\n    this.gtag(\"event\", eventName, params);\n  }\n  trackBounceRate(featureName: string) {\n    // Wait for 30 seconds before marking the visitor as engaged.\n    setTimeout(() => {\n      // Check if gtag is available.\n      this.ensureGAExists();\n      // Send an event to Google Analytics to indicate the user is engaged with a specific feature.\n      // This can help in adjusting the bounce rate as it indicates the user has interacted with the page.\n      this.gtag(\"event\", \"engagement\", {\n        event_category: \"User Engagement\",\n        event_label: `Engaged User - ${featureName}`,\n        non_interaction: true, // Set to true to not affect bounce rate.\n      });\n    }, this.engagementTimeout); // Use the engagementTimeout property\n  }\n  async trackLogin(userId: string) {\n    // Check if gtag is available\n\n    this.ensureGAExists();\n\n    // Generate a hashed version of the real user ID\n    const hashedUserId = await this.calculateSHA256(userId);\n\n    // Send a login event to Google Analytics with the hashed user ID\n    this.gtag(\"event\", \"login\", {\n      event_category: \"User Authentication\",\n      event_label: \"Login\",\n      non_interaction: true, // Set to true to not affect bounce rate\n      user_id: hashedUserId, // Use the hashed version of the user ID\n    });\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { BaseService } from \"./base.service\";\nimport { GoogleAnalyticsService } from \"./google-analytics.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class FeatureRateService extends BaseService {\n  constructor(private gaService: GoogleAnalyticsService) {\n    super();\n  }\n  rateFeature(rating: number, feature: string, version: string) {\n    this.gaService.triggerEvent(\"rate_feature\", {\n      feature: feature,\n      rating: rating,\n      version: version,\n    });\n    localStorage.setItem(`rate_${feature}_${version}`, `${rating}`);\n  }\n  isRated(feature: string, version: string) {\n    return localStorage.getItem(`rate_${feature}_${version}`) !== null;\n  }\n}\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { FeatureRateService } from \"../services/feature-rate.service\";\nimport { ReplaySubject, Subject, takeUntil } from \"rxjs\";\nimport { ClickEvent } from \"angular-star-rating\";\n\n@Component({\n  selector: \"ab-feature-rate\",\n  templateUrl: \"./feature-rate.component.html\",\n  styleUrls: [\"./feature-rate.component.scss\"],\n})\nexport class FeatureRateComponent implements OnInit, OnDestroy {\n  @Input() rating: number = 0;\n  @Input() feature: string = \"feature\";\n  @Input() version?: string;\n  isRated = false;\n  isHidden = false;\n  private ratingChange$ = new ReplaySubject<number>();\n  private destroy$ = new Subject<void>();\n\n  constructor(private featureRateService: FeatureRateService) {\n    this.ratingChange$.pipe(takeUntil(this.destroy$)).subscribe((rating) => {\n      if (this.version) {\n        this.featureRateService.rateFeature(rating, this.feature, this.version);\n        this.isRated = true;\n      }\n    });\n  }\n  ngOnInit() {\n    if (this.version) {\n      this.isHidden = this.featureRateService.isRated(this.feature, this.version);\n    }\n  }\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onRatingChange(e: ClickEvent) {\n    this.rating = e.rating;\n    this.ratingChange$.next(e.rating);\n  }\n  revise(e: Event) {\n    e.preventDefault();\n    this.isRated = false;\n  }\n}\n","<ng-container *ngIf=\"!isHidden\">\n  <star-rating\n    *ngIf=\"!isRated\"\n    [starType]=\"'svg'\"\n    [rating]=\"rating\"\n    (starClickChange)=\"onRatingChange($event)\"\n    [hoverEnabled]=\"true\"\n    labelText=\"Like what you see?\"\n    labelPosition=\"top\"\n  ></star-rating>\n  <div class=\"feature-rate__thank-you\" *ngIf=\"isRated\">\n    <h3>Thank you for rating!</h3>\n    <p>Your feedback is important to us.</p>\n    <p>\n      <a (click)=\"revise($event)\" href=\"#\">Revise your review</a>\n    </p>\n  </div>\n</ng-container>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ClarityService } from \"./services/clarity.service\";\nimport { GoogleAnalyticsService } from \"./services/google-analytics.service\";\nimport { StarRatingModule } from \"angular-star-rating\";\nimport { FeatureRateComponent } from \"./feature-rate/feature-rate.component\";\nimport { FeatureRateService } from \"./services/feature-rate.service\";\n\n@NgModule({\n  declarations: [FeatureRateComponent],\n  imports: [CommonModule, StarRatingModule.forChild()],\n  providers: [ClarityService, GoogleAnalyticsService, FeatureRateService],\n  exports: [FeatureRateComponent],\n})\nexport class AnalyticsModule {\n  static forRoot() {\n    return {\n      ngModule: AnalyticsModule,\n      providers: [ClarityService, GoogleAnalyticsService, FeatureRateService],\n    };\n  }\n}\n","// @index('./*.component.ts', f => `export * from '${f.path}'`)\nexport * from \"./feature-rate.component\";\n","// @index('./*', f => `export * from '${f.path}'`)\nexport * from \"./analytics.module\";\nexport * from \"./feature-rate\";\nexport * from \"./services\";\n","// @index('./*', f => `export * from '${f.path}'`)\nexport * from \"./analytics\";\n","/*\n * Public API Surface of abtesting\n */\n//@index('./*', f => `export * from '${f.path}'`)\nexport * from \"./lib\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.GoogleAnalyticsService","i1.FeatureRateService"],"mappings":"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"}