@hakimio/ngx-google-analytics
Version:
A simple Google Analytics wrapper for Angular apps
24 lines • 3.75 kB
JavaScript
import { inject, InjectionToken } from '@angular/core';
import { NGX_DATA_LAYER } from './ngx-data-layer-token';
import { NGX_WINDOW } from './ngx-window-token';
/**
* Check if there is some global function called gtag on Window object, or create an empty function that doesn't break code...
*/
export function getGtagFn(window, dataLayer) {
return (window)
? window['gtag'] = window['gtag'] || function () {
// IMPORTANT: rest param syntax (...args) cannot be used here since "gtag" push implementation requires
// "callee" information which is not available in normal array
// eslint-disable-next-line prefer-rest-params
dataLayer.push(arguments);
}
: null;
}
/**
* Provides an injection token to access Google Analytics Gtag Function
*/
export const NGX_GTAG_FN = new InjectionToken('ngx-gtag-fn', {
providedIn: 'root',
factory: () => getGtagFn(inject(NGX_WINDOW), inject(NGX_DATA_LAYER))
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWd0YWctdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ29vZ2xlLWFuYWx5dGljcy9zcmMvbGliL3Rva2Vucy9uZ3gtZ3RhZy10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRTlDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFnQixFQUFFLFNBQW9CO0lBQzVELE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDWCxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUNqQyx1R0FBdUc7WUFDdkcsOERBQThEO1lBQzlELDhDQUE4QztZQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQWtDLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNmLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBUyxhQUFhLEVBQUU7SUFDakUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0NBQ3ZFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RhdGFMYXllcn0gZnJvbSAnLi4vdHlwZXMvZGF0YS1sYXllci50eXBlJztcbmltcG9ydCB7R3RhZ0ZuLCBHdGFnRm5BcmdzfSBmcm9tICcuLi90eXBlcy9ndGFnLnR5cGUnO1xuaW1wb3J0IHtOR1hfREFUQV9MQVlFUn0gZnJvbSAnLi9uZ3gtZGF0YS1sYXllci10b2tlbic7XG5pbXBvcnQge0dhV2luZG93fSBmcm9tICcuL25neC1nb29nbGUtYW5hbHl0aWNzLXdpbmRvdyc7XG5pbXBvcnQge05HWF9XSU5ET1d9IGZyb20gJy4vbmd4LXdpbmRvdy10b2tlbic7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlcmUgaXMgc29tZSBnbG9iYWwgZnVuY3Rpb24gY2FsbGVkIGd0YWcgb24gV2luZG93IG9iamVjdCwgb3IgY3JlYXRlIGFuIGVtcHR5IGZ1bmN0aW9uIHRoYXQgZG9lc24ndCBicmVhayBjb2RlLi4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHdGFnRm4od2luZG93OiBHYVdpbmRvdywgZGF0YUxheWVyOiBEYXRhTGF5ZXIpOiBHdGFnRm4gfCBudWxsIHtcbiAgICByZXR1cm4gKHdpbmRvdylcbiAgICAgICAgPyB3aW5kb3dbJ2d0YWcnXSA9IHdpbmRvd1snZ3RhZyddIHx8IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIElNUE9SVEFOVDogcmVzdCBwYXJhbSBzeW50YXggKC4uLmFyZ3MpIGNhbm5vdCBiZSB1c2VkIGhlcmUgc2luY2UgXCJndGFnXCIgcHVzaCBpbXBsZW1lbnRhdGlvbiByZXF1aXJlc1xuICAgICAgICAgICAgLy8gXCJjYWxsZWVcIiBpbmZvcm1hdGlvbiB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIG5vcm1hbCBhcnJheVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICAgICAgZGF0YUxheWVyLnB1c2goYXJndW1lbnRzIGFzIHVua25vd24gYXMgR3RhZ0ZuQXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgOiBudWxsO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGluamVjdGlvbiB0b2tlbiB0byBhY2Nlc3MgR29vZ2xlIEFuYWx5dGljcyBHdGFnIEZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBOR1hfR1RBR19GTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxHdGFnRm4+KCduZ3gtZ3RhZy1mbicsIHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgZmFjdG9yeTogKCkgPT4gZ2V0R3RhZ0ZuKGluamVjdChOR1hfV0lORE9XKSwgaW5qZWN0KE5HWF9EQVRBX0xBWUVSKSlcbn0pO1xuIl19