{"version":3,"file":"notiz-ngx-plausible.mjs","sources":["../../../projects/ngx-plausible/src/lib/plausible-types.ts","../../../projects/ngx-plausible/src/lib/plausible.service.ts","../../../projects/ngx-plausible/src/lib/inject-plausible-event.ts","../../../projects/ngx-plausible/src/lib/plausible-event.directive.ts","../../../projects/ngx-plausible/src/public-api.ts","../../../projects/ngx-plausible/src/notiz-ngx-plausible.ts"],"sourcesContent":["export type ValueFunction<TValue, TArg> = (arg: TArg) => TValue;\nexport type ValueOrFunction<TValue, TArg> =\n  | TValue\n  | ValueFunction<TValue, TArg>;\n\nconst isFunction = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>\n): valOrFunction is ValueFunction<TValue, TArg> =>\n  typeof valOrFunction === 'function';\n\nexport const resolveValueOrFunction = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>,\n  arg: TArg\n): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction);\n\nexport type PlausibleEvent = string;\n\nexport interface PlausibleOptions {\n  callback?: Function;\n  props?: Object;\n}\n\nexport interface PlausibleEvents {\n  event: PlausibleEvent;\n  options?: PlausibleOptions;\n}\n\nexport interface ObservablePlausibleEvents<T> {\n  loading?: PlausibleEvents;\n  success?: ValueOrFunction<PlausibleEvents, T>;\n  error?: ValueOrFunction<PlausibleEvents, any>;\n}\n","import { tap } from 'rxjs/operators';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { defer, Observable } from 'rxjs';\nimport {\n  ObservablePlausibleEvents,\n  PlausibleEvent,\n  PlausibleOptions,\n  resolveValueOrFunction,\n} from './plausible-types';\n\ndeclare global {\n  interface Window {\n    plausible: Function;\n  }\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PlausibleService {\n  constructor(@Inject(PLATFORM_ID) private platformId: string) {\n    if (isPlatformBrowser(this.platformId) && !window.plausible) {\n      console.warn(\n        'Plausible script is missing in the <head> of your index.html. See https://plausible.io/docs/custom-event-goals.'\n      );\n    }\n  }\n\n  event(event: PlausibleEvent | null, options?: PlausibleOptions) {\n    if (isPlatformBrowser(this.platformId) && window.plausible && event) {\n      window.plausible(event, options);\n    }\n  }\n\n  observe<T>({\n    loading,\n    success: successEvent,\n    error: errorEvent,\n  }: ObservablePlausibleEvents<T>): (source: Observable<T>) => Observable<T> {\n    return (source) => {\n      return defer(() => {\n        if (loading) {\n          this.event(loading.event, loading.options);\n        }\n\n        return source.pipe(\n          tap({\n            ...(successEvent && {\n              next: (response) => {\n                const event = resolveValueOrFunction(successEvent, response);\n                this.event(event.event, event.options);\n              },\n            }),\n            ...(errorEvent && {\n              error: (error) => {\n                const event = resolveValueOrFunction(errorEvent, error);\n                this.event(event.event, event.options);\n              },\n            }),\n          })\n        );\n      });\n    };\n  }\n}\n","import { inject } from '@angular/core';\nimport { PlausibleService } from './plausible.service';\nimport { PlausibleEvent, PlausibleOptions } from './plausible-types';\n\nexport function injectPlausibleEvent() {\n  const plausible = inject(PlausibleService);\n\n  return (event: PlausibleEvent, options?: PlausibleOptions) => {\n    plausible.event(event, options);\n  };\n}\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { PlausibleService } from './plausible.service';\nimport { PlausibleEvent } from './plausible-types';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, map, takeUntil, tap } from 'rxjs/operators';\nimport { ElementRef } from '@angular/core';\n\n@Directive({\n  standalone: true,\n  selector: '[plausibleEvent]',\n})\nexport class PlausibleEventDirective implements OnInit, OnDestroy {\n  @Input() plausibleEvent: PlausibleEvent | null = null;\n  @Input() plausibleCallback?: Function;\n  @Input() plausibleProps?: Object;\n  @Input() plausibleEventDebounce = 500;\n\n  /**\n   * Default to `click` events.\n   *\n   */\n  @Input() plausibleActions = ['click'];\n\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private plausibleService: PlausibleService,\n    private el: ElementRef<HTMLElement>\n  ) {}\n\n  ngOnInit() {\n    merge(\n      ...this.plausibleActions.map((e) =>\n        fromEvent(this.el.nativeElement, e).pipe(map((ev) => e))\n      )\n    )\n      .pipe(\n        debounceTime(this.plausibleEventDebounce),\n        tap(() => {\n          this.plausibleService.event(this.plausibleEvent, {\n            callback: this.plausibleCallback,\n            props: this.plausibleProps,\n          });\n        }),\n        takeUntil(this.destroy$)\n      )\n      .subscribe();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","/*\n * Public API Surface of ngx-plausible\n */\n\nexport * from './lib/inject-plausible-event';\nexport * from './lib/plausible-event.directive';\nexport * from './lib/plausible.service';\nexport * from './lib/plausible-types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PlausibleService"],"mappings":"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"}