UNPKG

@mntm/stats

Version:

A package for integrating analytics tools

39 lines (38 loc) 1.11 kB
import { loadScript, thenable } from '../utils.js'; import { launchParams } from '../launch.js'; import { safeWindow } from '../dom.js'; /** * Implements Google Tag Manager * * @param code GTM-XXXXXXX */ export const createProviderGTM = (code) => { const context = safeWindow; context.gtm = context.gtm || []; context.gtm.push({ 'gtm.start': Date.now(), 'event': 'gtm.js' }); context.gtm.push({ userId: launchParams.vk_user_id }); const load = loadScript(`https://www.googletagmanager.com/gtm.js?id=${code}&l=gtm`); const ready = load.then(() => { if (context.gtm.push === Array.prototype.push) { throw new Error('net::ERR_BLOCKED_BY_CLIENT'); } }); const provider = { send(event, params) { return thenable(ready, () => { context.gtm.push({ event: 'event_gtm', ec: params.category || 'main', ea: event, el: params.label || '' }); }); } }; return provider; };