import { PixelBlock } from '@typebot.io/schemas' declare const fbq: ( arg0: string, arg1: string, arg2: Record | undefined ) => void export const initPixel = (pixelId: string) => { const script = document.createElement('script') script.innerHTML = `!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'); fbq('init', '${pixelId}'); fbq('track', 'PageView');` document.head.appendChild(script) const noscript = document.createElement('noscript') noscript.innerHTML = `` document.head.appendChild(noscript) } export const trackPixelEvent = (options: PixelBlock['options']) => { if (!options.eventType) return const params = options.params?.length ? options.params.reduce>((obj, param) => { if (!param.key || !param.value) return obj return { ...obj, [param.key]: param.value } }, {}) : undefined if (options.eventType === 'Custom') { if (!options.name) return fbq('trackCustom', options.name, params) } fbq('track', options.eventType, params) }