UNPKG

@hakimio/ngx-google-analytics

Version:

A simple Google Analytics wrapper for Angular apps

24 lines 3.75 kB
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