{"version":3,"file":"third-party-tracking.mjs","names":["thirdPartyTrackingPlugin","additionalCallback","trackers","arguments","length","undefined","window","Error","gb","setTrackingCallback","e","r","promises","eventParams","experiment_id","key","variation_id","push","Promise","resolve","includes","gtag","gtagResolve","gtagPromise","_objectSpread","event_callback","dataLayer","datalayerResolve","datalayerPromise","event","eventCallback","analytics","track","segmentPromise","setTimeout","all"],"sources":["../../../src/plugins/third-party-tracking.ts"],"sourcesContent":["import type { TrackingCallback } from \"../types/growthbook\";\nimport type { GrowthBook } from \"../GrowthBook\";\nimport type {\n  GrowthBookClient,\n  UserScopedGrowthBook,\n} from \"../GrowthBookClient\";\n\nexport type Trackers = \"gtag\" | \"gtm\" | \"segment\";\n\nexport function thirdPartyTrackingPlugin({\n  additionalCallback,\n  trackers = [\"gtag\", \"gtm\", \"segment\"],\n}: {\n  additionalCallback?: TrackingCallback;\n  trackers?: Trackers[];\n} = {}) {\n  // Browser only\n  if (typeof window === \"undefined\") {\n    throw new Error(\"thirdPartyTrackingPlugin only works in the browser\");\n  }\n\n  return (gb: GrowthBook | UserScopedGrowthBook | GrowthBookClient) => {\n    gb.setTrackingCallback(async (e, r) => {\n      const promises: Promise<unknown>[] = [];\n      const eventParams = { experiment_id: e.key, variation_id: r.key };\n\n      if (additionalCallback) {\n        promises.push(Promise.resolve(additionalCallback(e, r)));\n      }\n\n      // GA4 - gtag\n      if (trackers.includes(\"gtag\") && window.gtag) {\n        let gtagResolve;\n        const gtagPromise = new Promise((resolve) => {\n          gtagResolve = resolve;\n        });\n        promises.push(gtagPromise);\n        window.gtag(\"event\", \"experiment_viewed\", {\n          ...eventParams,\n          event_callback: gtagResolve,\n        });\n      }\n\n      // GTM - dataLayer\n      if (trackers.includes(\"gtm\") && window.dataLayer) {\n        let datalayerResolve;\n        const datalayerPromise = new Promise((resolve) => {\n          datalayerResolve = resolve;\n        });\n        promises.push(datalayerPromise);\n        window.dataLayer.push({\n          event: \"experiment_viewed\",\n          ...eventParams,\n          eventCallback: datalayerResolve,\n        });\n      }\n\n      // Segment - analytics.js\n      if (\n        trackers.includes(\"segment\") &&\n        window.analytics &&\n        window.analytics.track\n      ) {\n        window.analytics.track(\"Experiment Viewed\", eventParams);\n        const segmentPromise = new Promise((resolve) =>\n          window.setTimeout(resolve, 300),\n        );\n        promises.push(segmentPromise);\n      }\n\n      await Promise.all(promises);\n    });\n  };\n}\n"],"mappings":";;;;;AASA,OAAO,SAASA,wBAAwBA,CAAA,EAMhC;EAAA,IANiC;IACvCC,kBAAkB;IAClBC,QAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS;EAItC,CAAC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACJ;EACA,IAAI,OAAOG,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,IAAIC,KAAK,CAAC,oDAAoD,CAAC;EACvE;EAEA,OAAQC,EAAwD,IAAK;IACnEA,EAAE,CAACC,mBAAmB,CAAC,OAAOC,CAAC,EAAEC,CAAC,KAAK;MACrC,MAAMC,QAA4B,GAAG,EAAE;MACvC,MAAMC,WAAW,GAAG;QAAEC,aAAa,EAAEJ,CAAC,CAACK,GAAG;QAAEC,YAAY,EAAEL,CAAC,CAACI;MAAI,CAAC;MAEjE,IAAId,kBAAkB,EAAE;QACtBW,QAAQ,CAACK,IAAI,CAACC,OAAO,CAACC,OAAO,CAAClB,kBAAkB,CAACS,CAAC,EAAEC,CAAC,CAAC,CAAC,CAAC;MAC1D;;MAEA;MACA,IAAIT,QAAQ,CAACkB,QAAQ,CAAC,MAAM,CAAC,IAAId,MAAM,CAACe,IAAI,EAAE;QAC5C,IAAIC,WAAW;QACf,MAAMC,WAAW,GAAG,IAAIL,OAAO,CAAEC,OAAO,IAAK;UAC3CG,WAAW,GAAGH,OAAO;QACvB,CAAC,CAAC;QACFP,QAAQ,CAACK,IAAI,CAACM,WAAW,CAAC;QAC1BjB,MAAM,CAACe,IAAI,CAAC,OAAO,EAAE,mBAAmB,EAAAG,aAAA,CAAAA,aAAA,KACnCX,WAAW;UACdY,cAAc,EAAEH;QAAW,EAC5B,CAAC;MACJ;;MAEA;MACA,IAAIpB,QAAQ,CAACkB,QAAQ,CAAC,KAAK,CAAC,IAAId,MAAM,CAACoB,SAAS,EAAE;QAChD,IAAIC,gBAAgB;QACpB,MAAMC,gBAAgB,GAAG,IAAIV,OAAO,CAAEC,OAAO,IAAK;UAChDQ,gBAAgB,GAAGR,OAAO;QAC5B,CAAC,CAAC;QACFP,QAAQ,CAACK,IAAI,CAACW,gBAAgB,CAAC;QAC/BtB,MAAM,CAACoB,SAAS,CAACT,IAAI,CAAAO,aAAA,CAAAA,aAAA;UACnBK,KAAK,EAAE;QAAmB,GACvBhB,WAAW;UACdiB,aAAa,EAAEH;QAAgB,EAChC,CAAC;MACJ;;MAEA;MACA,IACEzB,QAAQ,CAACkB,QAAQ,CAAC,SAAS,CAAC,IAC5Bd,MAAM,CAACyB,SAAS,IAChBzB,MAAM,CAACyB,SAAS,CAACC,KAAK,EACtB;QACA1B,MAAM,CAACyB,SAAS,CAACC,KAAK,CAAC,mBAAmB,EAAEnB,WAAW,CAAC;QACxD,MAAMoB,cAAc,GAAG,IAAIf,OAAO,CAAEC,OAAO,IACzCb,MAAM,CAAC4B,UAAU,CAACf,OAAO,EAAE,GAAG,CAChC,CAAC;QACDP,QAAQ,CAACK,IAAI,CAACgB,cAAc,CAAC;MAC/B;MAEA,MAAMf,OAAO,CAACiB,GAAG,CAACvB,QAAQ,CAAC;IAC7B,CAAC,CAAC;EACJ,CAAC;AACH","ignoreList":[]}