{"version":3,"file":"ng-yandex-metrika.mjs","sources":["../../../projects/ng-yandex-metrika/src/lib/ng-yandex-metrika.config.ts","../../../projects/ng-yandex-metrika/src/lib/ng-yandex-metrika.service.ts","../../../projects/ng-yandex-metrika/src/lib/ng-yandex-metrika-goal.directive.ts","../../../projects/ng-yandex-metrika/src/lib/ng-yandex-metrika-config-factories.ts","../../../projects/ng-yandex-metrika/src/lib/ng-yandex-metrika.module.ts","../../../projects/ng-yandex-metrika/src/ng-yandex-metrika.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { InitParameters } from './yandex-mterika-tag';\n\nexport interface CounterConfig extends InitParameters {\n  id: number;\n}\n\nexport const DEFAULT_COUNTER_ID = new InjectionToken<number>('DEFAULT_COUNTER_ID');\nexport const YANDEX_COUNTERS_CONFIGS = new InjectionToken<CounterConfig[]>('YANDEX_COUNTERS_CONFIGS');\nexport const ALTERNATIVE_URL = new InjectionToken<string>('ALTERNATIVE_URL');\n","import { Injectable, Injector } from '@angular/core';\n\nimport { DEFAULT_COUNTER_ID, YANDEX_COUNTERS_CONFIGS, CounterConfig } from './ng-yandex-metrika.config';\nimport {\n  CallbackOptions,\n  ExtLinkOptions,\n  FileOptions,\n  HitOptions,\n  NotBounceOptions,\n  UserParameters,\n  VisitParameters\n} from './yandex-mterika-tag';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class Metrika {\n  private defaultCounterId: number;\n  private counterConfigs: CounterConfig[];\n\n  constructor(injector: Injector) {\n    this.defaultCounterId = injector.get<number>(DEFAULT_COUNTER_ID);\n    this.counterConfigs = injector.get<CounterConfig[]>(YANDEX_COUNTERS_CONFIGS);\n  }\n\n  addFileExtension(extensions: string | string[], counterId?: number) {\n    window.ym(counterId ?? this.defaultCounterId, 'addFileExtension', extensions);\n  }\n\n  extLink<CTX>(url: string, options: ExtLinkOptions<CTX> = {}, counterId?: number) {\n    const promise = this.getCallbackPromise(options);\n\n    window.ym(counterId ?? this.defaultCounterId, 'extLink', url, options);\n\n    return promise;\n  }\n\n  file<CTX>(url: string, options: FileOptions<CTX> = {}, counterId?: number) {\n    const promise = this.getCallbackPromise(options);\n\n    window.ym(counterId ?? this.defaultCounterId, 'file', url, options);\n\n    return promise;\n  }\n\n  getClientID(counterId?: number) {\n    return new Promise((resolve) => {\n      window.ym(counterId ?? this.defaultCounterId, 'getClientID', resolve);\n    });\n  }\n\n  setUserID(userId: string, counterId?: number) {\n    window.ym(counterId ?? this.defaultCounterId, 'setUserID', userId);\n  }\n\n  userParams(parameters: UserParameters, counterId?: number) {\n    window.ym(counterId ?? this.defaultCounterId, 'userParams', parameters);\n  }\n\n  params(parameters: VisitParameters | VisitParameters[], counterId?: number) {\n    window.ym(counterId ?? this.defaultCounterId, 'params', parameters);\n  }\n\n  replacePhones(counterId?: number) {\n    window.ym(counterId ?? this.defaultCounterId, 'replacePhones');\n  }\n\n  async notBounce<CTX>(options: NotBounceOptions<CTX>, counterId?: number) {\n    const promise = this.getCallbackPromise(options);\n\n    window.ym(counterId ?? this.defaultCounterId, 'notBounce', options);\n\n    return promise;\n  }\n\n  fireEvent = this.reachGoal;\n  reachGoal<CTX>(\n    target: string,\n    params: VisitParameters | undefined = undefined,\n    callback: (this: CTX) => void = () => {},\n    ctx: CTX | undefined = undefined,\n    counterId?: number\n  ) {\n    const options = { callback, ctx };\n    const promise = this.getCallbackPromise(options);\n\n    window.ym(\n      counterId ?? this.defaultCounterId,\n      'reachGoal',\n      target,\n      params,\n      options.callback,\n      options.ctx\n    );\n\n    return promise;\n  }\n\n  hit<CTX>(url: string, options: HitOptions<CTX> = {}, counterId?: number) {\n    const promise = this.getCallbackPromise(options);\n\n    window.ym(counterId ?? this.defaultCounterId, 'hit', url, options);\n\n    return promise;\n  }\n\n  private getCallbackPromise<CTX>(options: CallbackOptions<CTX>) {\n    return new Promise((resolve) => {\n      const optionsCallback = options.callback;\n      options.callback = function() {\n        if (optionsCallback) {\n          optionsCallback.call(this);\n        }\n        resolve(this);\n      };\n    });\n  }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core';\n\nimport { Metrika } from './ng-yandex-metrika.service';\n\n@Directive({\n  selector: '[metrikaGoal]',\n  standalone: true,\n})\nexport class MetrikaGoalDirective implements AfterViewInit, OnDestroy {\n  @Input() goalName!: string;\n  @Input() eventName = 'click';\n  @Input() params!: Record<string, any>;\n  @Input() counterId?: number;\n  @Input() callback!: () => void;\n\n  private removeEventListener!: () => void;\n\n  constructor(\n    private metrika: Metrika,\n    private renderer: Renderer2,\n    private el: ElementRef\n  ) {}\n\n  ngAfterViewInit() {\n    try {\n      this.removeEventListener = this.renderer.listen(this.el.nativeElement, this.eventName, () => {\n        const options = { callback: this.callback, ...this.params };\n\n        this.metrika.reachGoal(this.goalName, options, undefined, undefined, this.counterId);\n      });\n    } catch (err) {\n      console.error(err);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.removeEventListener) {\n      this.removeEventListener();\n    }\n  }\n}\n","import { isPlatformBrowser } from '@angular/common';\n\nimport { CounterConfig } from './ng-yandex-metrika.config';\n\nexport function defineDefaultId(counterConfigs: CounterConfig | CounterConfig[], defaultCounter?: number) {\n  let configs: CounterConfig[];\n  if (counterConfigs instanceof Array) {\n    configs = counterConfigs;\n  } else {\n    configs = [counterConfigs as CounterConfig];\n  }\n  let defaultId: number;\n\n  if (!defaultCounter) {\n    defaultId = configs[0].id;\n  } else if (defaultCounter < configs.length) {\n    defaultId = configs[defaultCounter].id;\n  } else {\n    defaultId = defaultCounter;\n  }\n\n  if (!defaultId) {\n    console.warn('You provided wrong counter id as a default:', defaultCounter);\n    return;\n  }\n\n  let defaultCounterExists = false;\n  let config;\n  for (let i = 0; i < configs.length; i++) {\n    config = configs[i];\n    if (!config.id) {\n      console.warn('You should provide counter id to use Yandex metrika counter', config);\n      continue;\n    }\n    if (config.id === defaultId) {\n      defaultCounterExists = true;\n    }\n  }\n\n  if (!defaultCounterExists) {\n    console.warn('You provided wrong counter id as a default:', defaultCounter);\n  }\n  return defaultId;\n}\n\nexport function appInitializerFactory(counterConfigs: CounterConfig[], platformId: Object, alternativeUrl?: string) {\n  if (isPlatformBrowser(platformId)) {\n    return insertMetrika.bind(null, counterConfigs, alternativeUrl);\n  }\n\n  return () => 'none';\n}\n\nfunction insertMetrika(counterConfigs: CounterConfig[], alternativeUrl?: string) {\n  window.ym = window.ym || function() {\n    (window.ym.a = window.ym.a || []).push(arguments)\n  };\n  window.ym.l = new Date().getTime();\n\n  const lastScript = document.getElementsByTagName('script')[0];\n  const metrikaScript = document.createElement('script');\n  metrikaScript.type = 'text/javascript';\n  metrikaScript.src = alternativeUrl ?? 'https://mc.yandex.ru/metrika/tag.js';\n  metrikaScript.async = true;\n  lastScript.parentNode!.insertBefore(metrikaScript, lastScript);\n\n  for (const { id, ...counterConfig } of counterConfigs) {\n    window.ym(id, 'init', counterConfig);\n  }\n}\n","import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';\nimport { PLATFORM_ID } from '@angular/core';\n\nimport { Metrika } from './ng-yandex-metrika.service';\nimport {\n  ALTERNATIVE_URL,\n  CounterConfig,\n  DEFAULT_COUNTER_ID,\n  YANDEX_COUNTERS_CONFIGS,\n} from './ng-yandex-metrika.config';\nimport { appInitializerFactory, defineDefaultId } from './ng-yandex-metrika-config-factories';\n\ntype Options = {\n  defaultCounter?: number;\n  alternativeUrl?: string;\n};\n\n@NgModule()\nexport class MetrikaModule {\n  static forRoot(configs: CounterConfig | CounterConfig[], options: Options = {}): ModuleWithProviders<MetrikaModule> {\n    const { defaultCounter, alternativeUrl } = options;\n\n    return {\n      ngModule: MetrikaModule,\n      providers: [\n        {\n          provide: DEFAULT_COUNTER_ID,\n          useValue: defineDefaultId(configs, defaultCounter),\n        },\n        {\n          provide: YANDEX_COUNTERS_CONFIGS,\n          useValue: Array.isArray(configs) ? configs : [configs],\n        },\n        {\n          provide: ALTERNATIVE_URL,\n          useValue: alternativeUrl,\n        },\n        {\n          provide: APP_INITIALIZER,\n          useFactory: appInitializerFactory,\n          deps: [YANDEX_COUNTERS_CONFIGS, PLATFORM_ID, ALTERNATIVE_URL],\n          multi: true,\n        },\n        {\n          provide: Metrika,\n          useClass: Metrika,\n          deps: [Injector, PLATFORM_ID],\n        },\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Metrika"],"mappings":"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"}