{"version":3,"file":"uppsala.matomowrapper.min.js","names":["define","matomoTagManagerContainerId","matomoSiteId","isTracking","init","settingsObj","cookiesettings","window","uppsala","cookieSettingsInstance","undefined","isStatisticsAllowed","this","setStatisticsConsentMatomoFlag","addMatomoTagManagerScript","that","onConsentChanged","push","console","warn","_mtm","Date","getTime","event","d","document","g","createElement","s","getElementsByTagName","async","src","setTimeout","parentNode","insertBefore","bind","_paq"],"sources":["uppsala.matomowrapper.js"],"mappings":"AAEAA,OAAO,IAAI,WACT,IAAIC,EAA8B,GAC9BC,EAAe,GAkEnB,MAjEoB,CAClBC,YAAY,EAOZC,KAAM,SAAUC,GAEd,MAAMC,EAAiBC,QAAQC,SAASC,uBAExC,QAAuBC,IAAnBJ,EAAJ,CAKAL,EAA8BI,EAAYJ,6BAA+B,GACzEC,EAAeG,EAAYH,cAAgB,IAEE,IAAzCI,EAAeK,wBACjBC,KAAKC,iCACLD,KAAKE,6BAIP,IAAIC,EAAOH,KACXN,EAAeU,iBAAiBC,MAAK,YACU,IAAzCX,EAAeK,wBAAsD,IAApBI,EAAKZ,aACxDY,EAAKF,iCACLE,EAAKD,4BAET,GAjBA,MAFEI,QAAQC,KAAK,0DAoBjB,EACAL,0BAA2B,YAEdP,OAAOa,KAAOb,OAAOa,MAAQ,IACnCH,KAAK,CAAE,iBAAkB,IAAII,MAAOC,UAAYC,MAAS,cAC9D,IAAIC,EAAIC,SAAUC,EAAIF,EAAEG,cAAc,UAAWC,EAAIJ,EAAEK,qBAAqB,UAAU,GACtFH,EAAEI,OAAQ,EAAMJ,EAAEK,IAAM,0CAA4C9B,EAA8B,MAGlG+B,WAAW,WACTJ,EAAEK,WAAWC,aAAaR,EAAGE,GAC7BhB,KAAKT,YAAa,CACpB,EAAEgC,KAAKvB,MAAO,IAChB,EAKAC,+BAAgC,WAE9B,IAAIuB,EAAO7B,OAAO6B,KAAO7B,OAAO6B,MAAQ,GAGxCA,EAAKnB,KAAK,CAAC,gBAAiB,yCAC5BmB,EAAKnB,KAAK,CAAC,YAAaf,IAGxBkC,EAAKnB,KAAK,CAAC,mBACb,EAKJ","ignoreList":[],"sourcesContent":["// designed to wrap the matomo tag manager script so we better can control when to add the script to the page.\n\ndefine([], function () {\n var matomoTagManagerContainerId = \"\";\n var matomoSiteId = \"\";\n var matomoWrapper = {\n isTracking: false,\n\n /// Assumes and requires that cookiesettings has been initialized elsewhere.\n /// var settingsObj = {\n ///\t matomoTagManagerContainerId: \"XXXXX\",\n /// matomoSiteId: \"\"\n /// }\n init: function (settingsObj) {\n\n const cookiesettings = window?.uppsala?.cookieSettingsInstance;\n\n if (cookiesettings === undefined) {\n console.warn(\"Cookie settings not found. MatomoWrapper will not work.\")\n return;\n }\n\n matomoTagManagerContainerId = settingsObj.matomoTagManagerContainerId ?? \"\";\n matomoSiteId = settingsObj.matomoSiteId ?? \"\";\n\n if (cookiesettings.isStatisticsAllowed() === true) {\n this.setStatisticsConsentMatomoFlag();\n this.addMatomoTagManagerScript();\n }\n\n // reevaluate if consent cookies change\n var that = this;\n cookiesettings.onConsentChanged.push(function () {\n if (cookiesettings.isStatisticsAllowed() === true && that.isTracking === false) {\n that.setStatisticsConsentMatomoFlag();\n that.addMatomoTagManagerScript();\n }\n });\n },\n addMatomoTagManagerScript: function () {\n // Inserts matomo tag manager. It holds matomo analytics tag and we decided not to care if other scripts are inserted through tagmanager.\n var _mtm = window._mtm = window._mtm || [];\n _mtm.push({ 'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start' });\n var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];\n g.async = true; g.src = 'https://matomo.uppsala.se/js/container_' + matomoTagManagerContainerId + '.js';\n\n // Wait before inserting the script to make sure require.js has loaded correctly.\n setTimeout(function () {\n s.parentNode.insertBefore(g, s);\n this.isTracking = true;\n }.bind(this), 1000);\n },\n\n // Sets a specific matomo cookie to let matomo know that user has given consent.\n // We have chosen to keep track of user consent instead of matomo so we need to call this function on every pageview as long as the user has given consent.\n // documentation: https://developer.matomo.org/guides/tracking-consent\n setStatisticsConsentMatomoFlag: function () {\n // even if matomo analytics is not loaded yet, it will handle thease commands once it is loaded.\n var _paq = window._paq = window._paq || [];\n\n // sets tracker url as it seems matomo gets confused some times if you only rely on tag manager container id.\n _paq.push([\"setTrackerUrl\", 'https://matomo.uppsala.se/matomo.php']);\n _paq.push([\"setSiteId\", matomoSiteId]);\n\n // set consent given\n _paq.push(['setConsentGiven']);\n }\n\n };\n\n return matomoWrapper;\n});"]}