{"version":3,"file":"95109edfbb7d8d04df728965.js?3.6.14.7428b935c.1727745705662","mappings":";gKAMA,MAAMA,GAASC,WAAAA,GAAkB,yBAOpBC,EAAuBA,CACnCC,GACCC,UAASC,UAAuC,CAAC,KAElDL,EAAOM,KAAK,gBAEZH,EAAQA,EAAMI,OACd,MAAMC,EAASC,SAASC,cAAc,UACtCF,EAAOG,IAAO,+CAA8CR,IAC5DK,EAAOI,OAAQ,EAEfJ,EAAOK,OAAS,KACfb,EAAOM,KAAK,eACZD,SAAAA,EAASS,EAAK,EAEfN,EAAOO,QAAWC,IACjBhB,EAAOiB,KAAK,wBACZb,SAAAA,EAAUY,EAAM,EAGjBP,SAASS,KAAKC,YAAYX,GAEzBY,OAAeC,UAAaD,OAAeC,WAAa,GACzD,MAAMP,EAAO,WAEZO,UAAUC,KAAKC,UAChB,EAkBA,OAhBAT,EAAK,KAAM,IAAIU,MACfV,EAAK,SAAUX,GAEfsB,WAAWC,GACV,UACCC,IAAkB,IAAAC,EAClBD,EAAQ,KAA+B,QAA5BC,EAAGD,EAAME,MAAM,qBAAa,IAAAD,OAAA,EAAzBA,EAA4B,IAK1Cd,EAAK,QAAS,YAAa,CAACgB,KAAMH,EAAOI,QAAS5B,GAAO,GAE1D,oBAGMW,CAAI,EAGZ","sources":["webpack://mono-repo/./packages/core/src/analytics/google.ts"],"sourcesContent":["import {getPrefixedLogger} from '@netx/core-next/instance/logger';\n\ndeclare global {\n\tconst dataLayer: any[];\n}\n\nconst logger = getPrefixedLogger('core/analytics/google');\n\nexport type SetupGoogleAnalyticsOptions = {\n\tonError?: (error: string | Event) => void;\n\tonLoad?: (gtag: (...args: any[]) => void) => void;\n};\n\nexport const setupGoogleAnalytics = (\n\ttagId: string,\n\t{onError, onLoad}: SetupGoogleAnalyticsOptions = {},\n) => {\n\tlogger.info('initializing');\n\n\ttagId = tagId.trim();\n\tconst script = document.createElement('script');\n\tscript.src = `https://www.googletagmanager.com/gtag/js?id=${tagId}`;\n\tscript.async = true;\n\n\tscript.onload = () => {\n\t\tlogger.info('initialized');\n\t\tonLoad?.(gtag);\n\t};\n\tscript.onerror = (error) => {\n\t\tlogger.warn('failed to initialize');\n\t\tonError?.(error);\n\t};\n\n\tdocument.head.appendChild(script);\n\n\t(window as any).dataLayer = (window as any).dataLayer || [];\n\tconst gtag = function gtag() {\n\t\t// eslint-disable-next-line prefer-rest-params\n\t\tdataLayer.push(arguments);\n\t} as (...args: any[]) => void;\n\n\tgtag('js', new Date());\n\tgtag('config', tagId);\n\n\tdispatcher.on(\n\t\t'routed',\n\t\t(route: string) => {\n\t\t\troute = '/' + route.match('^[/#]*(.*)')?.[1];\n\t\t\t// Track every route change as a pageview\n\t\t\t// TODO: the user could just turn on `gtm.historyChange-v2` and use that event\n\t\t\t// looks like this\n\t\t\t// {event: \"gtm.historyChange-v2\", gtm.historyChangeSource: \"hashchange\", gtm.oldUrlFragment: \"dashboard\", gtm.newUrlFragment: \"category/3\", gtm.oldHistoryState: null, gtm.newHistoryState: null, gtm.oldUrl: \"http://0.0.0.0:9000/\", gtm.newUrl: \"http://0.0.0.0:9000/\", gtm.triggers: \"4\"}\n\t\t\tgtag('event', 'page_view', {page: route, send_to: tagId});\n\t\t},\n\t\t'google-analytics',\n\t);\n\n\treturn gtag;\n};\n\nexport default setupGoogleAnalytics;\n"],"names":["logger","getPrefixedLogger","setupGoogleAnalytics","tagId","onError","onLoad","info","trim","script","document","createElement","src","async","onload","gtag","onerror","error","warn","head","appendChild","window","dataLayer","push","arguments","Date","dispatcher","on","route","_route$match","match","page","send_to"],"sourceRoot":""}