@bemit/consent-ui
Version:
54 lines • 1.34 kB
JavaScript
const fbState = {
loaded: false,
fbpxInv: undefined
};
export const loadFb = () => {
!function (f, b, e, v, n, t, s) {
if (f.fbq) return;
n = f.fbq = function () {
n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);
};
if (!f._fbq) f._fbq = n;
n.push = n;
n.loaded = !0;
n.version = '2.0';
n.queue = [];
t = b.createElement(e);
t.async = !0;
t.src = v;
s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t, s);
}(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');
};
export const pluginFacebook = (group, fbqId) => ({
shouldBe: options => {
return Boolean(options?.groups?.[group]);
},
create: wasAlreadyCreated => {
if (wasAlreadyCreated) return;
const cb = () => {
window.clearInterval(fbState.fbpxInv);
const onFbLoaded = () => {
if (window.fbq) {
window.clearInterval(fbState.fbpxInv);
window.fbq('init', fbqId);
window.fbq('track', 'PageView');
}
};
fbState.fbpxInv = window.setInterval(onFbLoaded, 30);
onFbLoaded();
};
if (!fbState.loaded) {
fbState.loaded = true;
loadFb();
cb();
} else {
cb();
}
},
destroy: () => {
return {
requiresRefresh: true
};
}
});