/** * @copyright 2026 NHCarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { Injectable, inject } from '@angular/core'; import { Router, NavigationEnd } from '@angular/router'; import { filter } from 'rxjs/operators'; declare global { interface Window { plausible?: (event: string, options?: { props?: Record }) => void; } } @Injectable({ providedIn: 'root' }) export class AnalyticsService { private router = inject(Router); initialise(): void { this.router.events.pipe( filter((event): event is NavigationEnd => event instanceof NavigationEnd) ).subscribe((event) => { this.trackPageView(event.urlAfterRedirects); }); } private trackPageView(path: string): void { if (window.plausible) { window.plausible('pageview', { props: { domain: 'library.nhcarrigan.com', page: 'Naomi\'s Library', path: path || '/' } }); } } }