ngx-google-analytics
Version:
A simple ng-9 wrapper to load Google Analytics dependency by angular way
80 lines • 10.2 kB
JavaScript
import { Directive, Inject, Input, isDevMode, Optional } from '@angular/core';
import { NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN } from '../tokens/ngx-google-analytics-settings-token';
import { fromEvent } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "./ga-event-category.directive";
import * as i2 from "../services/google-analytics.service";
export class GaEventDirective {
constructor(gaCategoryDirective, gaService, settings, el) {
this.gaCategoryDirective = gaCategoryDirective;
this.gaService = gaService;
this.settings = settings;
this.el = el;
this.gaBind = 'click';
}
set gaBind(gaBind) {
if (this.bindSubscription) {
this.bindSubscription.unsubscribe();
}
this._gaBind = gaBind;
this.bindSubscription = fromEvent(this.el.nativeElement, gaBind).subscribe(() => this.trigger());
}
get gaBind() {
return this._gaBind;
}
ngOnDestroy() {
if (this.bindSubscription) {
this.bindSubscription.unsubscribe();
}
}
trigger() {
try {
// Observação: não é obrigatório especificar uma categoria, uma etiqueta ou um valor. Consulte Eventos padrão do Google Analytics abaixo.
// if (!this.$gaCategoryDirective) {
// throw new Error('You must provide a gaCategory attribute w/ gaEvent Directive.');
// }
if (!this.gaAction && !this.gaEvent) {
throw new Error('You must provide a gaAction attribute to identify this event.');
}
this.gaService
.event(this.gaAction || this.gaEvent, (this.gaCategoryDirective) ? this.gaCategoryDirective.gaCategory : undefined, this.gaLabel || this.label, this.gaValue, this.gaInteraction);
}
catch (err) {
this.throw(err);
}
}
throw(err) {
if ((isDevMode() || this.settings.enableTracing) && console && console.warn) {
console.warn(err);
}
}
}
GaEventDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GaEventDirective, deps: [{ token: i1.GaEventCategoryDirective, optional: true }, { token: i2.GoogleAnalyticsService }, { token: NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
GaEventDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: GaEventDirective, selector: "[gaEvent]", inputs: { gaAction: "gaAction", gaLabel: "gaLabel", label: "label", gaValue: "gaValue", gaInteraction: "gaInteraction", gaEvent: "gaEvent", gaBind: "gaBind" }, exportAs: ["gaEvent"], ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GaEventDirective, decorators: [{
type: Directive,
args: [{
selector: `[gaEvent]`,
exportAs: 'gaEvent'
}]
}], ctorParameters: function () { return [{ type: i1.GaEventCategoryDirective, decorators: [{
type: Optional
}] }, { type: i2.GoogleAnalyticsService }, { type: undefined, decorators: [{
type: Inject,
args: [NGX_GOOGLE_ANALYTICS_SETTINGS_TOKEN]
}] }, { type: i0.ElementRef }]; }, propDecorators: { gaAction: [{
type: Input
}], gaLabel: [{
type: Input
}], label: [{
type: Input
}], gaValue: [{
type: Input
}], gaInteraction: [{
type: Input
}], gaEvent: [{
type: Input
}], gaBind: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2EtZXZlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWdvb2dsZS1hbmFseXRpY3Mvc3JjL2xpYi9kaXJlY3RpdmVzL2dhLWV2ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUluRyxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUVsRyxPQUFPLEVBQUMsU0FBUyxFQUFlLE1BQU0sTUFBTSxDQUFDOzs7O0FBTTdDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFDc0IsbUJBQTZDLEVBQ3pELFNBQWlDLEVBQ1ksUUFBa0MsRUFDdEUsRUFBYztRQUhYLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEI7UUFDekQsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDWSxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUN0RSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRS9CLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFhRCxJQUFhLE1BQU0sQ0FBRSxNQUFjO1FBQ2pDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRVMsT0FBTztRQUNmLElBQUk7WUFDRix5SUFBeUk7WUFDekksb0NBQW9DO1lBQ3BDLHNGQUFzRjtZQUN0RixJQUFJO1lBRUosSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7YUFDbEY7WUFFRCxJQUFJLENBQUMsU0FBUztpQkFDVCxLQUFLLENBQ0osSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUM3QixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQzVFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssRUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1NBQ1A7UUFBQyxPQUFPLEdBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVTLEtBQUssQ0FBQyxHQUFVO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQzNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDOzs2R0FwRVUsZ0JBQWdCLGdIQUtqQixtQ0FBbUM7aUdBTGxDLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsU0FBUztpQkFDcEI7OzBCQUlJLFFBQVE7OzBCQUVSLE1BQU07MkJBQUMsbUNBQW1DO3FFQVFwQyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgaXNEZXZNb2RlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R2FFdmVudENhdGVnb3J5RGlyZWN0aXZlfSBmcm9tICcuL2dhLWV2ZW50LWNhdGVnb3J5LmRpcmVjdGl2ZSc7XG5pbXBvcnQge0dvb2dsZUFuYWx5dGljc1NlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQge0dhQWN0aW9uRW51bX0gZnJvbSAnLi4vZW51bXMvZ2EtYWN0aW9uLmVudW0nO1xuaW1wb3J0IHtOR1hfR09PR0xFX0FOQUxZVElDU19TRVRUSU5HU19UT0tFTn0gZnJvbSAnLi4vdG9rZW5zL25neC1nb29nbGUtYW5hbHl0aWNzLXNldHRpbmdzLXRva2VuJztcbmltcG9ydCB7SUdvb2dsZUFuYWx5dGljc1NldHRpbmdzfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ktZ29vZ2xlLWFuYWx5dGljcy1zZXR0aW5ncyc7XG5pbXBvcnQge2Zyb21FdmVudCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgW2dhRXZlbnRdYCxcbiAgZXhwb3J0QXM6ICdnYUV2ZW50J1xufSlcbmV4cG9ydCBjbGFzcyBHYUV2ZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGdhQ2F0ZWdvcnlEaXJlY3RpdmU6IEdhRXZlbnRDYXRlZ29yeURpcmVjdGl2ZSxcbiAgICBwcml2YXRlIGdhU2VydmljZTogR29vZ2xlQW5hbHl0aWNzU2VydmljZSxcbiAgICBASW5qZWN0KE5HWF9HT09HTEVfQU5BTFlUSUNTX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIHNldHRpbmdzOiBJR29vZ2xlQW5hbHl0aWNzU2V0dGluZ3MsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZlxuICApIHtcbiAgICB0aGlzLmdhQmluZCA9ICdjbGljayc7XG4gIH1cblxuICBwcml2YXRlIGJpbmRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgQElucHV0KCkgZ2FBY3Rpb24hOiBHYUFjdGlvbkVudW0gfCBzdHJpbmc7XG4gIEBJbnB1dCgpIGdhTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBnYVZhbHVlITogbnVtYmVyO1xuICBASW5wdXQoKSBnYUludGVyYWN0aW9uITogYm9vbGVhbjtcbiAgQElucHV0KCkgZ2FFdmVudCE6IEdhQWN0aW9uRW51bSB8IHN0cmluZztcblxuICBwcml2YXRlIF9nYUJpbmQhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2V0IGdhQmluZCAoZ2FCaW5kOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5iaW5kU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmJpbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9nYUJpbmQgPSBnYUJpbmQ7XG4gICAgdGhpcy5iaW5kU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgZ2FCaW5kKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50cmlnZ2VyKCkpO1xuICB9XG4gIGdldCBnYUJpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FCaW5kO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYmluZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5iaW5kU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHRyaWdnZXIoKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIE9ic2VydmHDp8OjbzogbsOjbyDDqSBvYnJpZ2F0w7NyaW8gZXNwZWNpZmljYXIgdW1hIGNhdGVnb3JpYSwgdW1hIGV0aXF1ZXRhIG91IHVtIHZhbG9yLiBDb25zdWx0ZSBFdmVudG9zIHBhZHLDo28gZG8gR29vZ2xlIEFuYWx5dGljcyBhYmFpeG8uXG4gICAgICAvLyBpZiAoIXRoaXMuJGdhQ2F0ZWdvcnlEaXJlY3RpdmUpIHtcbiAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBwcm92aWRlIGEgZ2FDYXRlZ29yeSBhdHRyaWJ1dGUgdy8gZ2FFdmVudCBEaXJlY3RpdmUuJyk7XG4gICAgICAvLyB9XG5cbiAgICAgIGlmICghdGhpcy5nYUFjdGlvbiAmJiAhdGhpcy5nYUV2ZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGdhQWN0aW9uIGF0dHJpYnV0ZSB0byBpZGVudGlmeSB0aGlzIGV2ZW50LicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdhU2VydmljZVxuICAgICAgICAgIC5ldmVudChcbiAgICAgICAgICAgIHRoaXMuZ2FBY3Rpb24gfHwgdGhpcy5nYUV2ZW50LFxuICAgICAgICAgICAgKHRoaXMuZ2FDYXRlZ29yeURpcmVjdGl2ZSkgPyB0aGlzLmdhQ2F0ZWdvcnlEaXJlY3RpdmUuZ2FDYXRlZ29yeSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMuZ2FMYWJlbCB8fCB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgdGhpcy5nYVZhbHVlLFxuICAgICAgICAgICAgdGhpcy5nYUludGVyYWN0aW9uXG4gICAgICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgdGhpcy50aHJvdyhlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0aHJvdyhlcnI6IEVycm9yKSB7XG4gICAgaWYgKChpc0Rldk1vZGUoKSB8fCB0aGlzLnNldHRpbmdzLmVuYWJsZVRyYWNpbmcpICYmIGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oZXJyKTtcbiAgICB9XG4gIH1cblxufVxuIl19