ngx-matomo
Version:
Matomo (aka. Piwik) web analytics for Angular applications.
74 lines • 9.01 kB
JavaScript
import { NgModule, Inject, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { MATOMO_CONFIGURATION } from './matomo-configuration';
import { MatomoInjector } from './matomo-injector.service';
import { MatomoTracker } from './matomo-tracker.service';
import { MatomoRouteTracker } from './matomo-route-tracker.service';
import { MatomoTrackClickDirective } from './matomo-track-click.directive';
import * as i0 from "@angular/core";
import * as i1 from "./matomo-injector.service";
/**
* Angular module encapsulating Matomo features.
*/
export class MatomoModule {
/**
* Creates an instance of Matomo module.
*
* @param platformId Angular platform provided by DI.
* @param injector Instance of Angular Injector provided by DI.
* @param configuration Matomo configuration provided by DI.
* @param matomoInjector Instance of MatomoInjector provided by DI.
*/
constructor(platformId, injector, configuration, matomoInjector) {
this.platformId = platformId;
this.injector = injector;
this.configuration = configuration;
this.matomoInjector = matomoInjector;
// Warn if module is not being loaded by a browser.
if (!isPlatformBrowser(this.platformId)) {
console.warn('ngx-Matomo does not support server platform');
}
// Inject the Matomo script and create trackers.
this.matomoInjector.init();
// Enable route tracking if requested.
if (this.configuration?.routeTracking?.enable === true) {
// Using Injector instead of DI in order to allow use in routerless apps.
this.injector.get(MatomoRouteTracker).startTracking();
}
}
/**
* Use this method in your root module to provide the MatomoTracker service.
*/
static forRoot(configuration) {
return {
ngModule: MatomoModule,
providers: [
{
provide: MATOMO_CONFIGURATION,
useValue: configuration,
},
MatomoTracker,
MatomoRouteTracker,
],
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: MatomoModule, deps: [{ token: PLATFORM_ID }, { token: i0.Injector }, { token: MATOMO_CONFIGURATION }, { token: i1.MatomoInjector }], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.3", ngImport: i0, type: MatomoModule, declarations: [MatomoTrackClickDirective], exports: [MatomoTrackClickDirective] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: MatomoModule, providers: [MatomoInjector, MatomoTracker, MatomoRouteTracker] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: MatomoModule, decorators: [{
type: NgModule,
args: [{
declarations: [MatomoTrackClickDirective],
imports: [],
exports: [MatomoTrackClickDirective],
providers: [MatomoInjector, MatomoTracker, MatomoRouteTracker],
}]
}], ctorParameters: function () { return [{ type: Object, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }, { type: i0.Injector }, { type: undefined, decorators: [{
type: Inject,
args: [MATOMO_CONFIGURATION]
}] }, { type: i1.MatomoInjector }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0b21vLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRvbW8vc3JjL2xpYi9tYXRvbW8ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sRUFBRSxXQUFXLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxFQUF1QixvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQUUzRTs7R0FFRztBQU9ILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOzs7Ozs7O09BT0c7SUFDSCxZQUN3QyxVQUFrQixFQUN2QyxRQUFrQixFQUNZLGFBQWtDLEVBQ2hFLGNBQThCO1FBSFQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUN2QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ1ksa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2hFLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUUvQyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7U0FDN0Q7UUFDRCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ3RELHlFQUF5RTtZQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUE0QztRQUN6RCxPQUFPO1lBQ0wsUUFBUSxFQUFFLFlBQVk7WUFDdEIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxvQkFBb0I7b0JBQzdCLFFBQVEsRUFBRSxhQUFhO2lCQUN4QjtnQkFDRCxhQUFhO2dCQUNiLGtCQUFrQjthQUNuQjtTQUNGLENBQUM7SUFDSixDQUFDOzhHQTNDVSxZQUFZLGtCQVViLFdBQVcscUNBRVgsb0JBQW9COytHQVpuQixZQUFZLGlCQUxSLHlCQUF5QixhQUU5Qix5QkFBeUI7K0dBR3hCLFlBQVksYUFGWixDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUM7OzJGQUVuRCxZQUFZO2tCQU54QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN6QyxPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDcEMsU0FBUyxFQUFFLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztpQkFDL0Q7OzBCQVdJLE1BQU07MkJBQUMsV0FBVzs7MEJBRWxCLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMsIEluamVjdCwgUExBVEZPUk1fSUQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1hdG9tb0NvbmZpZ3VyYXRpb24sIE1BVE9NT19DT05GSUdVUkFUSU9OIH0gZnJvbSAnLi9tYXRvbW8tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBNYXRvbW9JbmplY3RvciB9IGZyb20gJy4vbWF0b21vLWluamVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0b21vVHJhY2tlciB9IGZyb20gJy4vbWF0b21vLXRyYWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBNYXRvbW9Sb3V0ZVRyYWNrZXIgfSBmcm9tICcuL21hdG9tby1yb3V0ZS10cmFja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0b21vVHJhY2tDbGlja0RpcmVjdGl2ZSB9IGZyb20gJy4vbWF0b21vLXRyYWNrLWNsaWNrLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQW5ndWxhciBtb2R1bGUgZW5jYXBzdWxhdGluZyBNYXRvbW8gZmVhdHVyZXMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW01hdG9tb1RyYWNrQ2xpY2tEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW01hdG9tb1RyYWNrQ2xpY2tEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtNYXRvbW9JbmplY3RvciwgTWF0b21vVHJhY2tlciwgTWF0b21vUm91dGVUcmFja2VyXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0b21vTW9kdWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTWF0b21vIG1vZHVsZS5cbiAgICpcbiAgICogQHBhcmFtIHBsYXRmb3JtSWQgQW5ndWxhciBwbGF0Zm9ybSBwcm92aWRlZCBieSBESS5cbiAgICogQHBhcmFtIGluamVjdG9yIEluc3RhbmNlIG9mIEFuZ3VsYXIgSW5qZWN0b3IgcHJvdmlkZWQgYnkgREkuXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9uIE1hdG9tbyBjb25maWd1cmF0aW9uIHByb3ZpZGVkIGJ5IERJLlxuICAgKiBAcGFyYW0gbWF0b21vSW5qZWN0b3IgSW5zdGFuY2Ugb2YgTWF0b21vSW5qZWN0b3IgcHJvdmlkZWQgYnkgREkuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KE1BVE9NT19DT05GSUdVUkFUSU9OKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IE1hdG9tb0NvbmZpZ3VyYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXRvbW9JbmplY3RvcjogTWF0b21vSW5qZWN0b3JcbiAgKSB7XG4gICAgLy8gV2FybiBpZiBtb2R1bGUgaXMgbm90IGJlaW5nIGxvYWRlZCBieSBhIGJyb3dzZXIuXG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ25neC1NYXRvbW8gZG9lcyBub3Qgc3VwcG9ydCBzZXJ2ZXIgcGxhdGZvcm0nKTtcbiAgICB9XG4gICAgLy8gSW5qZWN0IHRoZSBNYXRvbW8gc2NyaXB0IGFuZCBjcmVhdGUgdHJhY2tlcnMuXG4gICAgdGhpcy5tYXRvbW9JbmplY3Rvci5pbml0KCk7XG4gICAgLy8gRW5hYmxlIHJvdXRlIHRyYWNraW5nIGlmIHJlcXVlc3RlZC5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uPy5yb3V0ZVRyYWNraW5nPy5lbmFibGUgPT09IHRydWUpIHtcbiAgICAgIC8vIFVzaW5nIEluamVjdG9yIGluc3RlYWQgb2YgREkgaW4gb3JkZXIgdG8gYWxsb3cgdXNlIGluIHJvdXRlcmxlc3MgYXBwcy5cbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KE1hdG9tb1JvdXRlVHJhY2tlcikuc3RhcnRUcmFja2luZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyBtZXRob2QgaW4geW91ciByb290IG1vZHVsZSB0byBwcm92aWRlIHRoZSBNYXRvbW9UcmFja2VyIHNlcnZpY2UuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWd1cmF0aW9uPzogUGFydGlhbDxNYXRvbW9Db25maWd1cmF0aW9uPik6IE1vZHVsZVdpdGhQcm92aWRlcnM8TWF0b21vTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBNYXRvbW9Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IE1BVE9NT19DT05GSUdVUkFUSU9OLFxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWd1cmF0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBNYXRvbW9UcmFja2VyLFxuICAgICAgICBNYXRvbW9Sb3V0ZVRyYWNrZXIsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==