@naturalcycles/js-lib
Version:
Standard library for universal (browser + Node.js) javascript
55 lines (54 loc) • 1.83 kB
JavaScript
import { isServerSide } from '@naturalcycles/js-lib';
import { loadScript } from './script.util';
/* eslint-disable unicorn/prefer-global-this */
/**
* Pass enabled = false to only init window.gtag, but not load actual gtag script (e.g in dev mode).
*/
export async function loadGTag(gtagId, enabled = true) {
if (isServerSide())
return;
window.dataLayer || (window.dataLayer = []);
window.gtag || (window.gtag = function gtag() {
// biome-ignore lint/complexity/useArrowFunction: ok
// biome-ignore lint/style/noArguments: ok
window.dataLayer.push(arguments);
});
window.gtag('js', new Date());
window.gtag('config', gtagId);
if (!enabled)
return;
await loadScript(`https://www.googletagmanager.com/gtag/js?id=${gtagId}`);
}
export async function loadGTM(gtmId, enabled = true) {
if (isServerSide())
return;
window.dataLayer || (window.dataLayer = []);
window.dataLayer.push({
'gtm.start': Date.now(),
event: 'gtm.js',
});
if (!enabled)
return;
await loadScript(`https://www.googletagmanager.com/gtm.js?id=${gtmId}`);
}
export function loadHotjar(hjid) {
if (isServerSide())
return;
;
((h, o, t, j, a, r) => {
h.hj =
h.hj ||
function hj() {
// biome-ignore lint/style/noArguments: ok
;
(h.hj.q = h.hj.q || []).push(arguments);
};
h._hjSettings = { hjid, hjsv: 6 };
a = o.querySelectorAll('head')[0];
r = o.createElement('script');
r.async = 1;
r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;
a.append(r);
})(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv=');
/* eslint-enable */
}