@kattoshi/ngx-ga4
Version:
Easily call Google Analytics 4 properties from your angular project.
132 lines • 12.8 kB
JavaScript
import { Injectable, Optional } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Config
*/
export class NgxGa4Config {
}
/**
* Google Analytics4 Service
*/
export class NgxGa4Service {
/**
* constructor
* @param ng4Config
*/
constructor(ng4Config) {
if (ng4Config) {
this.measurementId = ng4Config.measurementId;
}
}
/**
* Google Analytics script load
* @param measurementId Measurement Id()
* @returns
*/
install$(measurementId) {
return new Promise((resolve, reject) => {
if (measurementId) {
this.measurementId = measurementId;
}
if (this.measurementId == null) {
reject(`Measurement ID not set`);
}
const scriptId = `ga-gtag`;
if (document.getElementById(scriptId)) {
reject(new Error(`script id ${scriptId} is already loaded`));
}
const { head } = document;
const script = document.createElement("script");
script.id = scriptId;
script.type = "text/javascript";
script.async = true;
script.onerror = () => {
reject(`GA4 script load error`);
};
script.onload = () => {
window.dataLayer = window.dataLayer || [];
resolve();
};
script.src = `https://www.googletagmanager.com/gtag/js?id=${this.measurementId}`;
head.insertBefore(script, head.firstChild);
});
}
/**
* gtag naitive call
* @param arg
*/
gtag(...arg) {
if (window.dataLayer) {
window.dataLayer.push(arguments);
}
else {
throw new Error(`NgxGa4Service not initalized.`);
}
}
/**
* gtag("js", date)
* @param date date
*/
js(date = new Date()) {
this.gtag("js", date);
}
/**
* gtag("config", ... )
* @param streamSetting
*/
config(streamSetting) {
if (streamSetting == null) {
this.gtag("config", this.measurementId);
}
else {
this.gtag("config", this.measurementId, streamSetting);
}
}
/**
* config (Group and route data)
* https://developers.google.com/tag-platform/gtagjs/routing
* @param mesureId menure id
* @param groupName group name
*/
configGroups(mesureId, groupName) {
if (mesureId == null) {
this.gtag("config", this.measurementId);
}
else if (groupName == null) {
this.gtag("config", mesureId);
}
else {
this.gtag("config", mesureId, { "groups": groupName });
}
}
/**
* gtag("event" , ... )
* @param eventName string event name
* @param eventParams? object event parameter
*/
event(eventName, eventParams) {
if (eventParams == null) {
this.gtag("event", eventName);
}
else {
this.gtag("event", eventName, eventParams);
}
}
/**
* gtag ("set" , ...)
* @param config NgxGa4GlobalSettingType
* @param value NgxGa4GlobalSettingValue
*/
set(config, value) {
this.gtag("set", config, value);
}
}
NgxGa4Service.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxGa4Service, deps: [{ token: NgxGa4Config, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
NgxGa4Service.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxGa4Service, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxGa4Service, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: NgxGa4Config, decorators: [{
type: Optional
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhNC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWdhNC9zcmMvbGliL25neC1nYTQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFTLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNNUQ7O0dBRUc7QUFDRixNQUFNLE9BQU8sWUFBWTtDQUt6QjtBQVFEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFLeEI7OztPQUdHO0lBQ0gsWUFDYyxTQUF5QjtRQUNyQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM5QztJQUNILENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFFLGFBQXVCO1FBQy9CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDOUIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDbEM7WUFFRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxRQUFRLG9CQUFvQixDQUFDLENBQUMsQ0FBQzthQUM5RDtZQUNELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQztZQUNyQixNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNsQyxDQUFDLENBQUE7WUFDRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUE7WUFDRCxNQUFNLENBQUMsR0FBRyxHQUFHLCtDQUErQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakYsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7T0FHRztJQUNILElBQUksQ0FBRSxHQUFHLEdBQVM7UUFDaEIsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2xDO2FBQ0k7WUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsRUFBRSxDQUFFLE9BQWMsSUFBSSxJQUFJLEVBQUU7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUcsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7T0FHRztJQUNILE1BQU0sQ0FBRSxhQUFvQztRQUMxQyxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pDO2FBQ0k7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFHLGFBQWEsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFFLFFBQWlCLEVBQUcsU0FBbUI7UUFDbkQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN6QzthQUNJLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUUsQ0FBQztTQUNoQzthQUNJO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFHLEVBQUUsUUFBUSxFQUFHLFNBQVMsRUFBQyxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILEtBQUssQ0FBRSxTQUFpQixFQUFHLFdBQW9CO1FBQzdDLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUMvQjthQUNJO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxHQUFHLENBQUcsTUFBZ0MsRUFBRSxLQUFnQztRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUcsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7MkdBckhVLGFBQWEsa0JBVUcsWUFBWTsrR0FWNUIsYUFBYSxjQURBLE1BQU07NEZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDOzBEQVdKLFlBQVk7MEJBQXBDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ICBOZ3hHYTRHbG9iYWxTZXR0aW5nVHlwZSAsXG4gICAgICAgICAgTmd4R2E0R2xvYmFsU2V0dGluZ1ZhbHVlLFxuICAgICAgICAgIE5neEdhNFN0cmVhbVNldHRpbmdcbiAgICAgICAgfSBmcm9tICcuL25neC1nYTQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb25maWcgXG4gKi9cbiBleHBvcnQgY2xhc3MgTmd4R2E0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEdBNCBNZWFzdXJlbWVudCBJZCAoSWYgb21pdHRlZCwgc2V0IGFzIE5neEdhNFNlcnZpY2UuaW5pdGFsaXplJCgpKVxuICAgKi9cbiAgbWVhc3VyZW1lbnRJZD86IHN0cmluZztcbn1cblxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGRhdGFMYXllciA6IGFueTtcbiAgfVxufVxuLyoqXG4gKiBHb29nbGUgQW5hbHl0aWNzNCBTZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ3hHYTRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1lYXN1cmVtZW50IElkXG4gICAqL1xuICBwcml2YXRlIG1lYXN1cmVtZW50SWQ/IDogc3RyaW5nO1xuICAvKipcbiAgICogY29uc3RydWN0b3JcbiAgICogQHBhcmFtIG5nNENvbmZpZyBcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIG5nNENvbmZpZz8gOiBOZ3hHYTRDb25maWcgKSB7XG4gICAgaWYgKG5nNENvbmZpZykge1xuICAgICAgdGhpcy5tZWFzdXJlbWVudElkID0gbmc0Q29uZmlnLm1lYXN1cmVtZW50SWQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBHb29nbGUgQW5hbHl0aWNzIHNjcmlwdCBsb2FkXG4gICAqIEBwYXJhbSBtZWFzdXJlbWVudElkIE1lYXN1cmVtZW50IElkKClcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBpbnN0YWxsJCAobWVhc3VyZW1lbnRJZD8gOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKG1lYXN1cmVtZW50SWQpIHtcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudElkID0gbWVhc3VyZW1lbnRJZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50SWQgPT0gbnVsbCkge1xuICAgICAgICByZWplY3QoYE1lYXN1cmVtZW50IElEIG5vdCBzZXRgKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3Qgc2NyaXB0SWQgPSBgZ2EtZ3RhZ2A7XG4gICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2NyaXB0SWQpKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHNjcmlwdCBpZCAke3NjcmlwdElkfSBpcyBhbHJlYWR5IGxvYWRlZGApKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgaGVhZCB9ID0gZG9jdW1lbnQ7XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgc2NyaXB0LmlkID0gc2NyaXB0SWQ7XG4gICAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJlamVjdChgR0E0IHNjcmlwdCBsb2FkIGVycm9yYCk7XG4gICAgICB9XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgc2NyaXB0LnNyYyA9IGBodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPSR7dGhpcy5tZWFzdXJlbWVudElkfWA7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzY3JpcHQsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGd0YWcgbmFpdGl2ZSBjYWxsXG4gICAqIEBwYXJhbSBhcmdcbiAgICovXG4gIGd0YWcgKC4uLmFyZyA6IGFueSkgOiB2b2lkIHtcbiAgICBpZiAod2luZG93LmRhdGFMYXllcikge1xuICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOZ3hHYTRTZXJ2aWNlIG5vdCBpbml0YWxpemVkLmApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogZ3RhZyhcImpzXCIsIGRhdGUpXG4gICAqIEBwYXJhbSBkYXRlIGRhdGVcbiAgICovXG4gIGpzIChkYXRlIDogRGF0ZSA9IG5ldyBEYXRlKCkpIDogdm9pZCB7XG4gICAgdGhpcy5ndGFnKFwianNcIiAsIGRhdGUpO1xuICB9XG4gIC8qKlxuICAgKiBndGFnKFwiY29uZmlnXCIsIC4uLiApXG4gICAqIEBwYXJhbSBzdHJlYW1TZXR0aW5nIFxuICAgKi9cbiAgY29uZmlnIChzdHJlYW1TZXR0aW5nPyA6IE5neEdhNFN0cmVhbVNldHRpbmcpIDogdm9pZCB7XG4gICAgaWYgKHN0cmVhbVNldHRpbmcgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIHRoaXMubWVhc3VyZW1lbnRJZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIHRoaXMubWVhc3VyZW1lbnRJZCAsIHN0cmVhbVNldHRpbmcpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogY29uZmlnIChHcm91cCBhbmQgcm91dGUgZGF0YSlcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vdGFnLXBsYXRmb3JtL2d0YWdqcy9yb3V0aW5nXG4gICAqIEBwYXJhbSBtZXN1cmVJZCBtZW51cmUgaWRcbiAgICogQHBhcmFtIGdyb3VwTmFtZSBncm91cCBuYW1lXG4gICAqL1xuICBjb25maWdHcm91cHMgKG1lc3VyZUlkIDogc3RyaW5nICwgZ3JvdXBOYW1lPyA6IHN0cmluZyApIDogdm9pZCB7XG4gICAgaWYgKG1lc3VyZUlkID09IG51bGwpIHtcbiAgICAgIHRoaXMuZ3RhZyhcImNvbmZpZ1wiLCB0aGlzLm1lYXN1cmVtZW50SWQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChncm91cE5hbWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIG1lc3VyZUlkICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIG1lc3VyZUlkICwgeyBcImdyb3Vwc1wiIDogZ3JvdXBOYW1lfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBndGFnKFwiZXZlbnRcIiAsIC4uLiApXG4gICAqIEBwYXJhbSBldmVudE5hbWUgICAgIHN0cmluZyBldmVudCBuYW1lIFxuICAgKiBAcGFyYW0gZXZlbnRQYXJhbXM/ICBvYmplY3QgZXZlbnQgcGFyYW1ldGVyXG4gICAqL1xuICBldmVudCAoZXZlbnROYW1lOiBzdHJpbmcgLCBldmVudFBhcmFtcz86IG9iamVjdCkgOiB2b2lkIHtcbiAgICBpZiAoZXZlbnRQYXJhbXMgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ndGFnKFwiZXZlbnRcIiwgZXZlbnROYW1lKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmd0YWcoXCJldmVudFwiLCBldmVudE5hbWUsIGV2ZW50UGFyYW1zKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGd0YWcgKFwic2V0XCIgLCAuLi4pXG4gICAqIEBwYXJhbSBjb25maWcgTmd4R2E0R2xvYmFsU2V0dGluZ1R5cGUgXG4gICAqIEBwYXJhbSB2YWx1ZSBOZ3hHYTRHbG9iYWxTZXR0aW5nVmFsdWUgXG4gICAqL1xuICBzZXQgKCBjb25maWcgOiBOZ3hHYTRHbG9iYWxTZXR0aW5nVHlwZSwgdmFsdWUgOiBOZ3hHYTRHbG9iYWxTZXR0aW5nVmFsdWUpIDogdm9pZCB7XG4gICAgdGhpcy5ndGFnKFwic2V0XCIsIGNvbmZpZyAsIHZhbHVlKTtcbiAgfVxufVxuIl19