{"version":3,"file":"3501.8ea175ad599f7458003c.js","mappings":"0JAiBO,MAAMA,CAAgF,CAI3F,YAAmBC,EAAgC,CAAhC,aAAAA,EAHnB,qBAAkB,CAAC,KAAc,QAAQ,EACzC,yCAAsC,GAwBtC,cAAYC,GAAyB,CAC9B,OAAO,MAIR,KAAK,qCACP,OAAO,KAAK,QAAS,YAAa,CAAE,UAAWA,EAAE,QAAQ,IAAK,CAAC,CAEnE,EAGA,WAAQ,IAAM,CAAC,EAhCb,MAAMC,EAAM,+CAA+CF,EAAQ,iBAAiB,MACpF,MAAWE,EAAK,EAAI,EAEpB,OAAO,UAAY,OAAO,WAAa,CAAC,EACxC,OAAO,KAAO,UAAgB,CAC5B,OAAO,UAAU,KAAK,SAAS,CACjC,EACA,OAAO,KAAK,KAAM,IAAI,IAAM,EAE5B,MAAMC,EAAmC,CACvC,UAAW,OAAO,SAAS,QAC7B,EAEIH,EAAQ,OACVG,EAAc,QAAUH,EAAQ,KAAK,UAAU,YAGjD,KAAK,oCAAsCA,EAAQ,oCACnD,OAAO,KAAK,SAAUA,EAAQ,kBAAmBG,CAAa,CAChE,CAcF,C","sources":["webpack://grafana/./public/app/core/services/echo/backends/analytics/GA4Backend.ts"],"sourcesContent":["import { CurrentUserDTO } from '@grafana/data';\nimport { EchoBackend, EchoEventType, PageviewEchoEvent } from '@grafana/runtime';\n\nimport { loadScript } from '../../utils';\n\ndeclare global {\n interface Window {\n dataLayer: unknown[];\n }\n}\n\nexport interface GA4EchoBackendOptions {\n googleAnalyticsId: string;\n googleAnalytics4SendManualPageViews: boolean;\n user?: CurrentUserDTO;\n}\n\nexport class GA4EchoBackend implements EchoBackend {\n supportedEvents = [EchoEventType.Pageview];\n googleAnalytics4SendManualPageViews = false;\n\n constructor(public options: GA4EchoBackendOptions) {\n const url = `https://www.googletagmanager.com/gtag/js?id=${options.googleAnalyticsId}`;\n loadScript(url, true);\n\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n window.gtag('js', new Date());\n\n const configOptions: Gtag.CustomParams = {\n page_path: window.location.pathname,\n };\n\n if (options.user) {\n configOptions.user_id = options.user.analytics.identifier;\n }\n\n this.googleAnalytics4SendManualPageViews = options.googleAnalytics4SendManualPageViews;\n window.gtag('config', options.googleAnalyticsId, configOptions);\n }\n\n addEvent = (e: PageviewEchoEvent) => {\n if (!window.gtag) {\n return;\n }\n // this should prevent duplicate events in case enhanced tracking is enabled\n if (this.googleAnalytics4SendManualPageViews) {\n window.gtag('event', 'page_view', { page_path: e.payload.page });\n }\n };\n\n // Not using Echo buffering, addEvent above sends events to GA as soon as they appear\n flush = () => {};\n}\n"],"names":["GA4EchoBackend","options","e","url","configOptions"],"sourceRoot":""}