{"version":3,"file":"kattoshi-ngx-ga4.mjs","sources":["../../../projects/ngx-ga4/src/lib/ngx-ga4.service.ts","../../../projects/ngx-ga4/src/lib/ngx-ga4tag.directive.ts","../../../projects/ngx-ga4/src/lib/ngx-ga4.module.ts","../../../projects/ngx-ga4/src/public-api.ts","../../../projects/ngx-ga4/src/kattoshi-ngx-ga4.ts"],"sourcesContent":["import { Injectable,Inject, Optional } from '@angular/core';\nimport {  NgxGa4GlobalSettingType ,\n          NgxGa4GlobalSettingValue,\n          NgxGa4StreamSetting\n        } from './ngx-ga4.interface';\n\n/**\n * Config \n */\n export class NgxGa4Config {\n  /**\n   * GA4 Measurement Id (If omitted, set as NgxGa4Service.initalize$())\n   */\n  measurementId?: string;\n}\n\n\ndeclare global {\n  interface Window {\n    dataLayer : any;\n  }\n}\n/**\n * Google Analytics4 Service\n */\n@Injectable({ providedIn: 'root'})\nexport class NgxGa4Service {\n  /**\n   * Measurement Id\n   */\n  private measurementId? : string;\n  /**\n   * constructor\n   * @param ng4Config \n   */\n  constructor(\n    @Optional() ng4Config? : NgxGa4Config ) {\n    if (ng4Config) {\n      this.measurementId = ng4Config.measurementId;\n    }\n  }\n  /**\n   * Google Analytics script load\n   * @param measurementId Measurement Id()\n   * @returns \n   */\n  install$ (measurementId? : string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (measurementId) {\n        this.measurementId = measurementId;\n      }\n      if (this.measurementId == null) {\n        reject(`Measurement ID not set`);\n      }\n      \n      const scriptId = `ga-gtag`;\n      if (document.getElementById(scriptId)) {\n        reject(new Error(`script id ${scriptId} is already loaded`));\n      }\n      const { head } = document;\n      const script = document.createElement(\"script\");\n      script.id = scriptId;\n      script.type = \"text/javascript\";\n      script.async = true;\n      script.onerror = () => {\n        reject(`GA4 script load error`);\n      }\n      script.onload = () => {\n        window.dataLayer = window.dataLayer || [];\n        resolve();\n      }\n      script.src = `https://www.googletagmanager.com/gtag/js?id=${this.measurementId}`;\n      head.insertBefore(script, head.firstChild);\n    });\n  }\n  /**\n   * gtag naitive call\n   * @param arg\n   */\n  gtag (...arg : any) : void {\n    if (window.dataLayer) {\n      window.dataLayer.push(arguments);\n    }\n    else {\n      throw new Error(`NgxGa4Service not initalized.`);\n    }\n  }\n  /**\n   * gtag(\"js\", date)\n   * @param date date\n   */\n  js (date : Date = new Date()) : void {\n    this.gtag(\"js\" , date);\n  }\n  /**\n   * gtag(\"config\", ... )\n   * @param streamSetting \n   */\n  config (streamSetting? : NgxGa4StreamSetting) : void {\n    if (streamSetting == null) {\n      this.gtag(\"config\", this.measurementId);\n    }\n    else {\n      this.gtag(\"config\", this.measurementId , streamSetting);\n    }\n  }\n  /**\n   * config (Group and route data)\n   * https://developers.google.com/tag-platform/gtagjs/routing\n   * @param mesureId menure id\n   * @param groupName group name\n   */\n  configGroups (mesureId : string , groupName? : string ) : void {\n    if (mesureId == null) {\n      this.gtag(\"config\", this.measurementId);\n    }\n    else if (groupName == null) {\n      this.gtag(\"config\", mesureId );\n    }\n    else {\n      this.gtag(\"config\", mesureId , { \"groups\" : groupName});\n    }\n  }\n  /**\n   * gtag(\"event\" , ... )\n   * @param eventName     string event name \n   * @param eventParams?  object event parameter\n   */\n  event (eventName: string , eventParams?: object) : void {\n    if (eventParams == null) {\n      this.gtag(\"event\", eventName);\n    }\n    else {\n      this.gtag(\"event\", eventName, eventParams);\n    }\n  }\n  /**\n   * gtag (\"set\" , ...)\n   * @param config NgxGa4GlobalSettingType \n   * @param value NgxGa4GlobalSettingValue \n   */\n  set ( config : NgxGa4GlobalSettingType, value : NgxGa4GlobalSettingValue) : void {\n    this.gtag(\"set\", config , value);\n  }\n}\n","import { Directive, Input,AfterViewInit,ElementRef , Renderer2} from '@angular/core';\nimport { NgxGa4Service } from './ngx-ga4.service';\n\n@Directive({\n  selector: '[gtagEvent]'\n})\n/**\n * Directive\n */\nexport class NgxGa4tagDirective implements AfterViewInit {\n  /** HTML DOM Event */\n  @Input() trackOn?: string;\n  /** event name for ga4 event */\n  @Input() action?: string;\n  /** param for ga4 event */\n  @Input() params?: object;\n\n  constructor(\n    private ga4service: NgxGa4Service,\n    private renderer: Renderer2,\n    private el: ElementRef\n  ) {}\n  /**\n  *  AfterViewInit\n  */\n  ngAfterViewInit() {\n    try {\n      if (!!this.trackOn && !!this.action) {\n        this.renderer.listen(this.el.nativeElement, this.trackOn, () => {\n          this.ga4service.event(this.action! || this.trackOn!, {\n            ...this.params\n          });\n        });\n      }\n    } catch (err) {\n      throw err;\n    }\n  }\n}\n","import { NgModule , ModuleWithProviders, Optional, SkipSelf } from '@angular/core';\nimport { NgxGa4Config } from './ngx-ga4.service';\nimport { CommonModule } from '@angular/common';\nimport { NgxGa4tagDirective } from './ngx-ga4tag.directive';\n\n@NgModule({\n  declarations: [\n    NgxGa4tagDirective\n  ],\n  imports: [CommonModule],\n  exports: [NgxGa4tagDirective],\n  providers:[]\n})\n/**\n * NgxGa4Module\n */\nexport class NgxGa4Module {\n  constructor(@Optional() @SkipSelf() parentModule?: NgxGa4Module) {\n    if (parentModule) {\n      throw new Error(\n        'NgxGa4Module is already loaded. Import it in the AppModule only');\n    }\n  }\n  /**\n   * Constant parameter inject to NGxGa4Service\n   * @param config \n   * @returns \n   */\n  public static forRoot(config: NgxGa4Config): ModuleWithProviders<NgxGa4Module> {\n    return {\n      ngModule: NgxGa4Module,\n      providers: [\n        { provide: NgxGa4Config, useValue: config }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-ga4\n */\n\nexport * from './lib/ngx-ga4.service';\nexport * from './lib/ngx-ga4.module';\nexport * from './lib/ngx-ga4.interface';\nexport * from './lib/ngx-ga4tag.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxGa4Service"],"mappings":"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"}