{"version":3,"file":"ngx-matomo-client-form-analytics.mjs","sources":["../../../projects/ngx-matomo-client/form-analytics/configuration.ts","../../../projects/ngx-matomo-client/form-analytics/directives/errors.ts","../../../projects/ngx-matomo-client/form-analytics/utils/coercion.ts","../../../projects/ngx-matomo-client/form-analytics/matomo-form-analytics.service.ts","../../../projects/ngx-matomo-client/form-analytics/directives/track-form.directive.ts","../../../projects/ngx-matomo-client/form-analytics/directives/track-form-field.directive.ts","../../../projects/ngx-matomo-client/form-analytics/directives/track-forms.directive.ts","../../../projects/ngx-matomo-client/form-analytics/matomo-form-analytics-initializer.service.ts","../../../projects/ngx-matomo-client/form-analytics/matomo-form-analytics.module.ts","../../../projects/ngx-matomo-client/form-analytics/providers.ts","../../../projects/ngx-matomo-client/form-analytics/public-api.ts","../../../projects/ngx-matomo-client/form-analytics/ngx-matomo-client-form-analytics.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport { ɵINTERNAL_MATOMO_CONFIGURATION as INTERNAL_MATOMO_CONFIGURATION } from 'ngx-matomo-client/core';\n\nexport interface MatomoFormAnalyticsConfiguration {\n  disabled?: boolean;\n  loadScript?: boolean | string;\n  autoScan?: boolean;\n  autoScanDelay?: number;\n}\n\nexport type InternalMatomoFormAnalyticsConfiguration = Required<MatomoFormAnalyticsConfiguration>;\n\nexport const MATOMO_FORM_ANALYTICS_CONFIGURATION =\n  new InjectionToken<MatomoFormAnalyticsConfiguration>('MATOMO_FORM_ANALYTICS_CONFIGURATION');\n\nexport const DEFAULT_FORM_ANALYTICS_CONFIGURATION: InternalMatomoFormAnalyticsConfiguration = {\n  disabled: false,\n  loadScript: false,\n  autoScan: true,\n  autoScanDelay: 0,\n};\n\nexport const INTERNAL_MATOMO_FORM_ANALYTICS_CONFIGURATION =\n  new InjectionToken<InternalMatomoFormAnalyticsConfiguration>(\n    'INTERNAL_MATOMO_FORM_ANALYTICS_CONFIGURATION',\n    {\n      factory() {\n        const matomoConfig = inject(INTERNAL_MATOMO_CONFIGURATION);\n        const userConfig = inject(MATOMO_FORM_ANALYTICS_CONFIGURATION, { optional: true }) || {};\n        const merged = {\n          ...DEFAULT_FORM_ANALYTICS_CONFIGURATION,\n          ...userConfig,\n        };\n\n        return {\n          ...merged,\n          disabled: merged.disabled || matomoConfig.disabled,\n        };\n      },\n    },\n  );\n","export function throwFormNotFoundError(selector: string): never {\n  throw new Error(`Directive ${selector} can only be used inside [matomoTrackForm]`);\n}\n","import { ElementRef } from '@angular/core';\n\nexport function coerceElement(elementOrRef: Element | ElementRef<Element>): Element;\nexport function coerceElement(\n  elementOrRef: Element | ElementRef<Element> | null | undefined,\n): Element | null | undefined;\nexport function coerceElement(\n  elementOrRef: Element | ElementRef<Element> | null | undefined,\n): Element | null | undefined {\n  return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n","import { ElementRef, inject, Service } from '@angular/core';\nimport { ɵInternalMatomoTracker as InternalMatomoTracker } from 'ngx-matomo-client/core';\nimport { coerceElement } from './utils/coercion';\n\nexport interface MatomoFormAnalyticsInstance {\n  isFormAnalyticsEnabled(): boolean;\n\n  disableFormAnalytics(): void;\n\n  setTrackingTimer(delayInMilliSeconds: number): void;\n}\n\n@Service({ autoProvided: false })\nexport class MatomoFormAnalytics {\n  private readonly delegate: InternalMatomoTracker<MatomoFormAnalyticsInstance, 'FormAnalytics::'> =\n    inject(InternalMatomoTracker<MatomoFormAnalyticsInstance>);\n\n  disableFormAnalytics(): void {\n    this.delegate.push(['FormAnalytics::disableFormAnalytics']);\n  }\n\n  enableFormAnalytics(): void {\n    this.delegate.push(['FormAnalytics::enableFormAnalytics']);\n  }\n\n  enableDebugMode(): void {\n    this.delegate.push(['FormAnalytics::enableDebugMode']);\n  }\n\n  setTrackingTimer(delayInMilliSeconds: number): void {\n    this.delegate.push(['FormAnalytics::setTrackingTimer', delayInMilliSeconds]);\n  }\n\n  scanForForms(root?: Element | ElementRef): void {\n    this.delegate.push(['FormAnalytics::scanForForms', coerceElement(root)]);\n  }\n\n  trackForm(formElement: Element | ElementRef): void {\n    this.delegate.push(['FormAnalytics::trackForm', coerceElement(formElement)]);\n  }\n\n  trackFormSubmit(formElement: Element | ElementRef) {\n    this.delegate.push(['FormAnalytics::trackFormSubmit', coerceElement(formElement)]);\n  }\n\n  trackFormConversion(formElementOrName: Element | ElementRef | string, formId?: string): void {\n    this.delegate.push([\n      'FormAnalytics::trackFormConversion',\n      typeof formElementOrName === 'string' ? formElementOrName : coerceElement(formElementOrName),\n      formId,\n    ]);\n  }\n\n  isFormAnalyticsEnabled(): Promise<boolean> {\n    return this.delegate.get('FormAnalytics::isFormAnalyticsEnabled');\n  }\n}\n","import {\n  afterRenderEffect,\n  booleanAttribute,\n  Directive,\n  ElementRef,\n  inject,\n  input,\n} from '@angular/core';\nimport { MatomoFormAnalytics } from '../matomo-form-analytics.service';\n\n@Directive({\n  selector: '[matomoTrackForm]',\n  exportAs: 'matomoTrackForm',\n  host: {\n    'data-matomo-form': '',\n    '[attr.data-matomo-ignore]': 'matomoIgnore() ? \"\" : null',\n    '[attr.data-matomo-name]': 'matomoTrackForm() || null',\n    '(submit)': 'trackFormConversionOnSubmit()',\n  },\n})\nexport class TrackFormDirective {\n  private readonly elementRef: ElementRef<Element> = inject(ElementRef);\n  private readonly tracker = inject(MatomoFormAnalytics);\n\n  /** If true, will track a conversion after form submit */\n  readonly trackConversionOnSubmit = input(false, { transform: booleanAttribute });\n  readonly matomoIgnore = input<boolean>(undefined, { transform: booleanAttribute });\n  readonly matomoTrackForm = input<string | null>();\n\n  constructor() {\n    afterRenderEffect(() => {\n      this.matomoTrackForm();\n      this.track();\n    });\n  }\n\n  track(): void {\n    this.tracker.trackForm(this.elementRef);\n  }\n\n  trackSubmit(): void {\n    this.tracker.trackFormSubmit(this.elementRef);\n  }\n\n  trackConversion(): void {\n    this.tracker.trackFormConversion(this.elementRef);\n  }\n\n  trackFormConversionOnSubmit(): void {\n    if (this.trackConversionOnSubmit()) {\n      this.trackConversion();\n    }\n  }\n}\n","import { afterRenderEffect, booleanAttribute, Directive, inject, input } from '@angular/core';\nimport { throwFormNotFoundError } from './errors';\nimport { TrackFormDirective } from './track-form.directive';\n\n@Directive({\n  selector: '[matomoTrackFormField]',\n  exportAs: 'matomoTrackFormField',\n  host: {\n    '[attr.data-matomo-ignore]': 'matomoIgnore() ? \"\" : null',\n    '[attr.data-matomo-name]': 'matomoTrackFormField() || null',\n  },\n})\nexport class TrackFormFieldDirective {\n  private readonly form =\n    inject(TrackFormDirective, { optional: true }) ??\n    throwFormNotFoundError('[matomoTrackFormField]');\n\n  readonly matomoIgnore = input<boolean>(undefined, { transform: booleanAttribute });\n  readonly matomoTrackFormField = input<string | null>();\n\n  constructor() {\n    afterRenderEffect(() => {\n      this.matomoTrackFormField();\n      this.track();\n    });\n  }\n\n  track(): void {\n    this.form.track();\n  }\n}\n","import { AfterViewInit, Directive, ElementRef, inject } from '@angular/core';\nimport { MatomoFormAnalytics } from '../matomo-form-analytics.service';\n\n@Directive({\n  selector: '[matomoTrackForms]',\n  exportAs: 'matomoTrackForms',\n})\nexport class TrackFormsDirective implements AfterViewInit {\n  private readonly elementRef: ElementRef<Element> = inject(ElementRef);\n  private readonly tracker = inject(MatomoFormAnalytics);\n\n  ngAfterViewInit(): void {\n    this.scan();\n  }\n\n  scan(): void {\n    this.tracker.scanForForms(this.elementRef);\n  }\n\n  trackSubmit(element: Element | ElementRef<Element>): void {\n    this.tracker.trackFormSubmit(element);\n  }\n\n  trackConversion(element: Element | ElementRef<Element>): void {\n    this.tracker.trackFormConversion(element);\n  }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Service, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport {\n  MatomoTracker,\n  ɵappendTrailingSlash as appendTrailingSlash,\n  ɵASYNC_INTERNAL_MATOMO_CONFIGURATION as ASYNC_INTERNAL_MATOMO_CONFIGURATION,\n  ɵgetTrackersConfiguration as getTrackersConfiguration,\n  ɵisAutoConfigurationMode as isAutoConfigurationMode,\n  ɵisExplicitTrackerConfiguration as isExplicitTrackerConfiguration,\n  ɵrunOnce as runOnce,\n  ɵScriptInjector as ScriptInjector,\n} from 'ngx-matomo-client/core';\nimport { debounceTime, identity, Subscription } from 'rxjs';\nimport { INTERNAL_MATOMO_FORM_ANALYTICS_CONFIGURATION } from './configuration';\nimport { MatomoFormAnalytics } from './matomo-form-analytics.service';\n\nconst DEFAULT_SCRIPT_SUFFIX = 'plugins/FormAnalytics/tracker.min.js';\n\n@Service({ autoProvided: false })\nexport class MatomoFormAnalyticsInitializer implements OnDestroy {\n  private readonly config = inject(INTERNAL_MATOMO_FORM_ANALYTICS_CONFIGURATION);\n  private readonly coreConfig = inject(ASYNC_INTERNAL_MATOMO_CONFIGURATION);\n  private readonly scriptInjector = inject(ScriptInjector);\n  private readonly tracker = inject(MatomoTracker);\n  private readonly formAnalytics = inject(MatomoFormAnalytics);\n  private readonly platformId = inject(PLATFORM_ID);\n\n  private pageTrackedSubscription: Subscription | undefined;\n\n  ngOnDestroy(): void {\n    this.pageTrackedSubscription?.unsubscribe();\n  }\n\n  readonly initialize = runOnce(async () => {\n    // Do not set-up router if running on server\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    if (this.config.disabled) {\n      this.formAnalytics.disableFormAnalytics();\n      return;\n    }\n\n    if (this.config.loadScript) {\n      const scriptUrl =\n        typeof this.config.loadScript === 'boolean'\n          ? await this.buildDefaultScriptUrl()\n          : this.config.loadScript;\n\n      this.scriptInjector.injectDOMScript(scriptUrl);\n    }\n\n    if (this.config.autoScan) {\n      const delayOp = this.config.autoScanDelay\n        ? debounceTime(this.config.autoScanDelay)\n        : identity;\n\n      this.pageTrackedSubscription = this.tracker.pageViewTracked\n        .pipe(delayOp)\n        .subscribe(() => this.formAnalytics.scanForForms());\n    }\n  });\n\n  private async buildDefaultScriptUrl(): Promise<string> {\n    const config = await this.coreConfig;\n\n    if (isAutoConfigurationMode(config) && isExplicitTrackerConfiguration(config)) {\n      const [mainTracker] = getTrackersConfiguration(config);\n\n      if (mainTracker) {\n        return appendTrailingSlash(mainTracker.trackerUrl) + DEFAULT_SCRIPT_SUFFIX;\n      }\n    }\n\n    throw new Error(\n      'Cannot resolve default matomo FormAnalytics plugin script url. ' +\n        'Please explicitly provide `loadScript` configuration property instead of `true`',\n    );\n  }\n}\n","import { ModuleWithProviders, NgModule, inject } from '@angular/core';\nimport {\n  MATOMO_FORM_ANALYTICS_CONFIGURATION,\n  MatomoFormAnalyticsConfiguration,\n} from './configuration';\nimport { TrackFormFieldDirective } from './directives/track-form-field.directive';\nimport { TrackFormDirective } from './directives/track-form.directive';\nimport { TrackFormsDirective } from './directives/track-forms.directive';\nimport { MatomoFormAnalyticsInitializer } from './matomo-form-analytics-initializer.service';\n\nexport const MATOMO_FORM_ANALYTICS_DIRECTIVES = [\n  TrackFormDirective,\n  TrackFormsDirective,\n  TrackFormFieldDirective,\n] as const;\n\n@NgModule({\n  imports: [...MATOMO_FORM_ANALYTICS_DIRECTIVES],\n  exports: [...MATOMO_FORM_ANALYTICS_DIRECTIVES],\n})\nexport class MatomoFormAnalyticsModule {\n  private readonly formAnalytics = inject(MatomoFormAnalyticsInitializer);\n\n  constructor() {\n    const parent = inject(MatomoFormAnalyticsModule, { optional: true, skipSelf: true });\n\n    if (!parent) {\n      // Do not initialize if it is already (by a parent module)\n      this.formAnalytics.initialize();\n    }\n  }\n\n  static forRoot(\n    config: MatomoFormAnalyticsConfiguration = {},\n  ): ModuleWithProviders<MatomoFormAnalyticsModule> {\n    return {\n      ngModule: MatomoFormAnalyticsModule,\n      providers: [{ provide: MATOMO_FORM_ANALYTICS_CONFIGURATION, useValue: config }],\n    };\n  }\n}\n","import { provideEnvironmentInitializer, ErrorHandler, inject } from '@angular/core';\nimport {\n  MatomoFeature as MatomoFeature,\n  ɵcreateMatomoFeature as createMatomoFeature,\n} from 'ngx-matomo-client/core';\nimport {\n  MATOMO_FORM_ANALYTICS_CONFIGURATION,\n  MatomoFormAnalyticsConfiguration,\n} from './configuration';\nimport { MatomoFormAnalyticsInitializer } from './matomo-form-analytics-initializer.service';\nimport { MatomoFormAnalytics } from './matomo-form-analytics.service';\n\n/**\n * Additional Matomo router features kind\n */\nexport const enum FormAnalyticsMatomoFeatureKind {\n  FormAnalytics = 'FormAnalytics',\n}\n\n/** Enable automatic page views tracking */\nexport function withFormAnalytics(config?: MatomoFormAnalyticsConfiguration): MatomoFeature {\n  const providers = [\n    MatomoFormAnalytics,\n    MatomoFormAnalyticsInitializer,\n    {\n      provide: MATOMO_FORM_ANALYTICS_CONFIGURATION,\n      useValue: config,\n    },\n    provideEnvironmentInitializer(() => {\n      const errorHandler = inject(ErrorHandler);\n\n      // Do NOT wait here for initialization, because app startup should NOT be blocked until deferred config is resolved\n      // However, correctly propagate errors to error handler\n      Promise.resolve(inject(MatomoFormAnalyticsInitializer).initialize()).catch(error =>\n        errorHandler.handleError(error),\n      );\n    }),\n  ];\n\n  return createMatomoFeature(FormAnalyticsMatomoFeatureKind.FormAnalytics, providers);\n}\n","/*\n * Public API Surface of plugin form-analytics\n */\n\nexport {\n  MatomoFormAnalyticsModule,\n  MATOMO_FORM_ANALYTICS_DIRECTIVES,\n} from './matomo-form-analytics.module';\nexport { withFormAnalytics } from './providers';\nexport {\n  MatomoFormAnalyticsConfiguration,\n  MATOMO_FORM_ANALYTICS_CONFIGURATION,\n} from './configuration';\nexport { MatomoFormAnalytics, MatomoFormAnalyticsInstance } from './matomo-form-analytics.service';\nexport { TrackFormDirective } from './directives/track-form.directive';\nexport { TrackFormsDirective } from './directives/track-forms.directive';\nexport { TrackFormFieldDirective } from './directives/track-form-field.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["INTERNAL_MATOMO_CONFIGURATION","InternalMatomoTracker","ASYNC_INTERNAL_MATOMO_CONFIGURATION","ScriptInjector","runOnce","isAutoConfigurationMode","isExplicitTrackerConfiguration","getTrackersConfiguration","appendTrailingSlash","createMatomoFeature"],"mappings":"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"}