@mntm/stats
Version:
A package for integrating analytics tools
39 lines (38 loc) • 1.11 kB
JavaScript
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;
};