UNPKG

@kattoshi/ngx-ga4

Version:

Easily call Google Analytics 4 properties from your angular project.

132 lines 12.8 kB
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdhNC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWdhNC9zcmMvbGliL25neC1nYTQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFTLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNNUQ7O0dBRUc7QUFDRixNQUFNLE9BQU8sWUFBWTtDQUt6QjtBQVFEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFLeEI7OztPQUdHO0lBQ0gsWUFDYyxTQUF5QjtRQUNyQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM5QztJQUNILENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFFLGFBQXVCO1FBQy9CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDOUIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDbEM7WUFFRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxRQUFRLG9CQUFvQixDQUFDLENBQUMsQ0FBQzthQUM5RDtZQUNELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQztZQUNyQixN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ICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7ICBOZ3hHYTRHbG9iYWxTZXR0aW5nVHlwZSAsXG4gICAgICAgICAgTmd4R2E0R2xvYmFsU2V0dGluZ1ZhbHVlLFxuICAgICAgICAgIE5neEdhNFN0cmVhbVNldHRpbmdcbiAgICAgICAgfSBmcm9tICcuL25neC1nYTQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb25maWcgXG4gKi9cbiBleHBvcnQgY2xhc3MgTmd4R2E0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEdBNCBNZWFzdXJlbWVudCBJZCAoSWYgb21pdHRlZCwgc2V0IGFzIE5neEdhNFNlcnZpY2UuaW5pdGFsaXplJCgpKVxuICAgKi9cbiAgbWVhc3VyZW1lbnRJZD86IHN0cmluZztcbn1cblxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIGRhdGFMYXllciA6IGFueTtcbiAgfVxufVxuLyoqXG4gKiBHb29nbGUgQW5hbHl0aWNzNCBTZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBOZ3hHYTRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1lYXN1cmVtZW50IElkXG4gICAqL1xuICBwcml2YXRlIG1lYXN1cmVtZW50SWQ/IDogc3RyaW5nO1xuICAvKipcbiAgICogY29uc3RydWN0b3JcbiAgICogQHBhcmFtIG5nNENvbmZpZyBcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIG5nNENvbmZpZz8gOiBOZ3hHYTRDb25maWcgKSB7XG4gICAgaWYgKG5nNENvbmZpZykge1xuICAgICAgdGhpcy5tZWFzdXJlbWVudElkID0gbmc0Q29uZmlnLm1lYXN1cmVtZW50SWQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBHb29nbGUgQW5hbHl0aWNzIHNjcmlwdCBsb2FkXG4gICAqIEBwYXJhbSBtZWFzdXJlbWVudElkIE1lYXN1cmVtZW50IElkKClcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBpbnN0YWxsJCAobWVhc3VyZW1lbnRJZD8gOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKG1lYXN1cmVtZW50SWQpIHtcbiAgICAgICAgdGhpcy5tZWFzdXJlbWVudElkID0gbWVhc3VyZW1lbnRJZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1lYXN1cmVtZW50SWQgPT0gbnVsbCkge1xuICAgICAgICByZWplY3QoYE1lYXN1cmVtZW50IElEIG5vdCBzZXRgKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3Qgc2NyaXB0SWQgPSBgZ2EtZ3RhZ2A7XG4gICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2NyaXB0SWQpKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYHNjcmlwdCBpZCAke3NjcmlwdElkfSBpcyBhbHJlYWR5IGxvYWRlZGApKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgaGVhZCB9ID0gZG9jdW1lbnQ7XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgc2NyaXB0LmlkID0gc2NyaXB0SWQ7XG4gICAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJlamVjdChgR0E0IHNjcmlwdCBsb2FkIGVycm9yYCk7XG4gICAgICB9XG4gICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgc2NyaXB0LnNyYyA9IGBodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPSR7dGhpcy5tZWFzdXJlbWVudElkfWA7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzY3JpcHQsIGhlYWQuZmlyc3RDaGlsZCk7XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGd0YWcgbmFpdGl2ZSBjYWxsXG4gICAqIEBwYXJhbSBhcmdcbiAgICovXG4gIGd0YWcgKC4uLmFyZyA6IGFueSkgOiB2b2lkIHtcbiAgICBpZiAod2luZG93LmRhdGFMYXllcikge1xuICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOZ3hHYTRTZXJ2aWNlIG5vdCBpbml0YWxpemVkLmApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogZ3RhZyhcImpzXCIsIGRhdGUpXG4gICAqIEBwYXJhbSBkYXRlIGRhdGVcbiAgICovXG4gIGpzIChkYXRlIDogRGF0ZSA9IG5ldyBEYXRlKCkpIDogdm9pZCB7XG4gICAgdGhpcy5ndGFnKFwianNcIiAsIGRhdGUpO1xuICB9XG4gIC8qKlxuICAgKiBndGFnKFwiY29uZmlnXCIsIC4uLiApXG4gICAqIEBwYXJhbSBzdHJlYW1TZXR0aW5nIFxuICAgKi9cbiAgY29uZmlnIChzdHJlYW1TZXR0aW5nPyA6IE5neEdhNFN0cmVhbVNldHRpbmcpIDogdm9pZCB7XG4gICAgaWYgKHN0cmVhbVNldHRpbmcgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIHRoaXMubWVhc3VyZW1lbnRJZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIHRoaXMubWVhc3VyZW1lbnRJZCAsIHN0cmVhbVNldHRpbmcpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogY29uZmlnIChHcm91cCBhbmQgcm91dGUgZGF0YSlcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vdGFnLXBsYXRmb3JtL2d0YWdqcy9yb3V0aW5nXG4gICAqIEBwYXJhbSBtZXN1cmVJZCBtZW51cmUgaWRcbiAgICogQHBhcmFtIGdyb3VwTmFtZSBncm91cCBuYW1lXG4gICAqL1xuICBjb25maWdHcm91cHMgKG1lc3VyZUlkIDogc3RyaW5nICwgZ3JvdXBOYW1lPyA6IHN0cmluZyApIDogdm9pZCB7XG4gICAgaWYgKG1lc3VyZUlkID09IG51bGwpIHtcbiAgICAgIHRoaXMuZ3RhZyhcImNvbmZpZ1wiLCB0aGlzLm1lYXN1cmVtZW50SWQpO1xuICAgIH1cbiAgICBlbHNlIGlmIChncm91cE5hbWUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIG1lc3VyZUlkICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5ndGFnKFwiY29uZmlnXCIsIG1lc3VyZUlkICwgeyBcImdyb3Vwc1wiIDogZ3JvdXBOYW1lfSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBndGFnKFwiZXZlbnRcIiAsIC4uLiApXG4gICAqIEBwYXJhbSBldmVudE5hbWUgICAgIHN0cmluZyBldmVudCBuYW1lIFxuICAgKiBAcGFyYW0gZXZlbnRQYXJhbXM/ICBvYmplY3QgZXZlbnQgcGFyYW1ldGVyXG4gICAqL1xuICBldmVudCAoZXZlbnROYW1lOiBzdHJpbmcgLCBldmVudFBhcmFtcz86IG9iamVjdCkgOiB2b2lkIHtcbiAgICBpZiAoZXZlbnRQYXJhbXMgPT0gbnVsbCkge1xuICAgICAgdGhpcy5ndGFnKFwiZXZlbnRcIiwgZXZlbnROYW1lKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmd0YWcoXCJldmVudFwiLCBldmVudE5hbWUsIGV2ZW50UGFyYW1zKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGd0YWcgKFwic2V0XCIgLCAuLi4pXG4gICAqIEBwYXJhbSBjb25maWcgTmd4R2E0R2xvYmFsU2V0dGluZ1R5cGUgXG4gICAqIEBwYXJhbSB2YWx1ZSBOZ3hHYTRHbG9iYWxTZXR0aW5nVmFsdWUgXG4gICAqL1xuICBzZXQgKCBjb25maWcgOiBOZ3hHYTRHbG9iYWxTZXR0aW5nVHlwZSwgdmFsdWUgOiBOZ3hHYTRHbG9iYWxTZXR0aW5nVmFsdWUpIDogdm9pZCB7XG4gICAgdGhpcy5ndGFnKFwic2V0XCIsIGNvbmZpZyAsIHZhbHVlKTtcbiAgfVxufVxuIl19