{"version":3,"file":"analytics-T13Q7PJs.js","sources":["../../../node_modules/ahoy.js/dist/ahoy.esm.js","../../../app/frontend/entrypoints/analytics.js"],"sourcesContent":["/*!\n * Ahoy.js v0.4.4\n * Simple, powerful JavaScript analytics\n * https://github.com/ankane/ahoy.js\n * MIT License\n */\n\n// https://www.quirksmode.org/js/cookies.html\n\nvar Cookies = {\n set: function (name, value, ttl, domain) {\n var expires = \"\";\n var cookieDomain = \"\";\n if (ttl) {\n var date = new Date();\n date.setTime(date.getTime() + (ttl * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n }\n if (domain) {\n cookieDomain = \"; domain=\" + domain;\n }\n document.cookie = name + \"=\" + escape(value) + expires + cookieDomain + \"; path=/; samesite=lax\";\n },\n get: function (name) {\n var i, c;\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for (i = 0; i < ca.length; i++) {\n c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return unescape(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n }\n};\n\nvar config = {\n urlPrefix: \"\",\n visitsUrl: \"/ahoy/visits\",\n eventsUrl: \"/ahoy/events\",\n page: null,\n platform: \"Web\",\n useBeacon: true,\n startOnReady: true,\n trackVisits: true,\n cookies: true,\n cookieDomain: null,\n headers: {},\n visitParams: {},\n withCredentials: false,\n visitDuration: 4 * 60, // default 4 hours\n visitorDuration: 2 * 365 * 24 * 60 // default 2 years\n};\n\nvar ahoy = window.ahoy || window.Ahoy || {};\n\nahoy.configure = function (options) {\n for (var key in options) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n config[key] = options[key];\n }\n }\n};\n\n// legacy\nahoy.configure(ahoy);\n\nvar $ = window.jQuery || window.Zepto || window.$;\nvar visitId, visitorId, track;\nvar isReady = false;\nvar queue = [];\nvar canStringify = typeof(JSON) !== \"undefined\" && typeof(JSON.stringify) !== \"undefined\";\nvar eventQueue = [];\n\nfunction visitsUrl() {\n return config.urlPrefix + config.visitsUrl;\n}\n\nfunction eventsUrl() {\n return config.urlPrefix + config.eventsUrl;\n}\n\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction canTrackNow() {\n return (config.useBeacon || config.trackNow) && isEmpty(config.headers) && canStringify && typeof(window.navigator.sendBeacon) !== \"undefined\" && !config.withCredentials;\n}\n\nfunction serialize(object) {\n var data = new FormData();\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n data.append(key, object[key]);\n }\n }\n return data;\n}\n\n// cookies\n\nfunction setCookie(name, value, ttl) {\n Cookies.set(name, value, ttl, config.cookieDomain || config.domain);\n}\n\nfunction getCookie(name) {\n return Cookies.get(name);\n}\n\nfunction destroyCookie(name) {\n Cookies.set(name, \"\", -1);\n}\n\nfunction log(message) {\n if (getCookie(\"ahoy_debug\")) {\n window.console.log(message);\n }\n}\n\nfunction setReady() {\n var callback;\n while ((callback = queue.shift())) {\n callback();\n }\n isReady = true;\n}\n\nahoy.ready = function (callback) {\n if (isReady) {\n callback();\n } else {\n queue.push(callback);\n }\n};\n\nfunction matchesSelector(element, selector) {\n var matches = element.matches ||\n element.matchesSelector ||\n element.mozMatchesSelector ||\n element.msMatchesSelector ||\n element.oMatchesSelector ||\n element.webkitMatchesSelector;\n\n if (matches) {\n if (matches.apply(element, [selector])) {\n return element;\n } else if (element.parentElement) {\n return matchesSelector(element.parentElement, selector);\n }\n return null;\n } else {\n log(\"Unable to match\");\n return null;\n }\n}\n\nfunction onEvent(eventName, selector, callback) {\n document.addEventListener(eventName, function (e) {\n var matchedElement = matchesSelector(e.target, selector);\n if (matchedElement) {\n var skip = getClosest(matchedElement, \"data-ahoy-skip\");\n if (skip !== null && skip !== \"false\") { return; }\n\n callback.call(matchedElement, e);\n }\n });\n}\n\n// http://beeker.io/jquery-document-ready-equivalent-vanilla-javascript\nfunction documentReady(callback) {\n if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n setTimeout(callback, 0);\n } else {\n document.addEventListener(\"DOMContentLoaded\", callback);\n }\n}\n\n// https://stackoverflow.com/a/2117523/1177228\nfunction generateId() {\n if (window.crypto && window.crypto.randomUUID) {\n return window.crypto.randomUUID();\n }\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\nfunction saveEventQueue() {\n if (config.cookies && canStringify) {\n setCookie(\"ahoy_events\", JSON.stringify(eventQueue), 1);\n }\n}\n\n// from rails-ujs\n\nfunction csrfToken() {\n var meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n}\n\nfunction csrfParam() {\n var meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n}\n\nfunction CSRFProtection(xhr) {\n var token = csrfToken();\n if (token) { xhr.setRequestHeader(\"X-CSRF-Token\", token); }\n}\n\nfunction sendRequest(url, data, success) {\n if (canStringify) {\n if ($ && $.ajax) {\n $.ajax({\n type: \"POST\",\n url: url,\n data: JSON.stringify(data),\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n beforeSend: CSRFProtection,\n success: success,\n headers: config.headers,\n xhrFields: {\n withCredentials: config.withCredentials\n }\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.withCredentials = config.withCredentials;\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n for (var header in config.headers) {\n if (Object.prototype.hasOwnProperty.call(config.headers, header)) {\n xhr.setRequestHeader(header, config.headers[header]);\n }\n }\n xhr.onload = function () {\n if (xhr.status === 200) {\n success();\n }\n };\n CSRFProtection(xhr);\n xhr.send(JSON.stringify(data));\n }\n }\n}\n\nfunction eventData(event) {\n var data = {\n events: [event]\n };\n if (config.cookies) {\n data.visit_token = event.visit_token;\n data.visitor_token = event.visitor_token;\n }\n delete event.visit_token;\n delete event.visitor_token;\n return data;\n}\n\nfunction trackEvent(event) {\n ahoy.ready(function () {\n sendRequest(eventsUrl(), eventData(event), function () {\n // remove from queue\n for (var i = 0; i < eventQueue.length; i++) {\n if (eventQueue[i].id === event.id) {\n eventQueue.splice(i, 1);\n break;\n }\n }\n saveEventQueue();\n });\n });\n}\n\nfunction trackEventNow(event) {\n ahoy.ready(function () {\n var data = eventData(event);\n var param = csrfParam();\n var token = csrfToken();\n if (param && token) { data[param] = token; }\n // stringify so we keep the type\n data.events_json = JSON.stringify(data.events);\n delete data.events;\n window.navigator.sendBeacon(eventsUrl(), serialize(data));\n });\n}\n\nfunction page() {\n return config.page || window.location.pathname;\n}\n\nfunction presence(str) {\n return (str && str.length > 0) ? str : null;\n}\n\nfunction cleanObject(obj) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n if (obj[key] === null) {\n delete obj[key];\n }\n }\n }\n return obj;\n}\n\nfunction eventProperties() {\n return cleanObject({\n tag: this.tagName.toLowerCase(),\n id: presence(this.id),\n \"class\": presence(this.className),\n page: page(),\n section: getClosest(this, \"data-section\")\n });\n}\n\nfunction getClosest(element, attribute) {\n for (; element && element !== document; element = element.parentNode) {\n if (element.hasAttribute(attribute)) {\n return element.getAttribute(attribute);\n }\n }\n\n return null;\n}\n\nfunction createVisit() {\n isReady = false;\n\n visitId = ahoy.getVisitId();\n visitorId = ahoy.getVisitorId();\n track = getCookie(\"ahoy_track\");\n\n if (config.cookies === false || config.trackVisits === false) {\n log(\"Visit tracking disabled\");\n setReady();\n } else if (visitId && visitorId && !track) {\n // TODO keep visit alive?\n log(\"Active visit\");\n setReady();\n } else {\n if (!visitId) {\n visitId = generateId();\n setCookie(\"ahoy_visit\", visitId, config.visitDuration);\n }\n\n // make sure cookies are enabled\n if (getCookie(\"ahoy_visit\")) {\n log(\"Visit started\");\n\n if (!visitorId) {\n visitorId = generateId();\n setCookie(\"ahoy_visitor\", visitorId, config.visitorDuration);\n }\n\n var data = {\n visit_token: visitId,\n visitor_token: visitorId,\n platform: config.platform,\n landing_page: window.location.href,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n js: true\n };\n\n // referrer\n if (document.referrer.length > 0) {\n data.referrer = document.referrer;\n }\n\n for (var key in config.visitParams) {\n if (Object.prototype.hasOwnProperty.call(config.visitParams, key)) {\n data[key] = config.visitParams[key];\n }\n }\n\n log(data);\n\n sendRequest(visitsUrl(), data, function () {\n // wait until successful to destroy\n destroyCookie(\"ahoy_track\");\n setReady();\n });\n } else {\n log(\"Cookies disabled\");\n setReady();\n }\n }\n}\n\nahoy.getVisitId = ahoy.getVisitToken = function () {\n return getCookie(\"ahoy_visit\");\n};\n\nahoy.getVisitorId = ahoy.getVisitorToken = function () {\n return getCookie(\"ahoy_visitor\");\n};\n\nahoy.reset = function () {\n destroyCookie(\"ahoy_visit\");\n destroyCookie(\"ahoy_visitor\");\n destroyCookie(\"ahoy_events\");\n destroyCookie(\"ahoy_track\");\n return true;\n};\n\nahoy.debug = function (enabled) {\n if (enabled === false) {\n destroyCookie(\"ahoy_debug\");\n } else {\n setCookie(\"ahoy_debug\", \"t\", 365 * 24 * 60); // 1 year\n }\n return true;\n};\n\nahoy.track = function (name, properties) {\n // generate unique id\n var event = {\n name: name,\n properties: properties || {},\n time: (new Date()).getTime() / 1000.0,\n id: generateId(),\n js: true\n };\n\n ahoy.ready(function () {\n if (config.cookies && !ahoy.getVisitId()) {\n createVisit();\n }\n\n ahoy.ready(function () {\n log(event);\n\n event.visit_token = ahoy.getVisitId();\n event.visitor_token = ahoy.getVisitorId();\n\n if (canTrackNow()) {\n trackEventNow(event);\n } else {\n eventQueue.push(event);\n saveEventQueue();\n\n // wait in case navigating to reduce duplicate events\n setTimeout(function () {\n trackEvent(event);\n }, 1000);\n }\n });\n });\n\n return true;\n};\n\nahoy.trackView = function (additionalProperties) {\n var properties = {\n url: window.location.href,\n title: document.title,\n page: page()\n };\n\n if (additionalProperties) {\n for (var propName in additionalProperties) {\n if (Object.prototype.hasOwnProperty.call(additionalProperties, propName)) {\n properties[propName] = additionalProperties[propName];\n }\n }\n }\n ahoy.track(\"$view\", properties);\n};\n\nahoy.trackClicks = function (selector) {\n if (selector === undefined) {\n throw new Error(\"Missing selector\");\n }\n onEvent(\"click\", selector, function (e) {\n var properties = eventProperties.call(this, e);\n properties.text = properties.tag === \"input\" ? this.value : (this.textContent || this.innerText || this.innerHTML).replace(/[\\s\\r\\n]+/g, \" \").trim();\n properties.href = this.href;\n ahoy.track(\"$click\", properties);\n });\n};\n\nahoy.trackSubmits = function (selector) {\n if (selector === undefined) {\n throw new Error(\"Missing selector\");\n }\n onEvent(\"submit\", selector, function (e) {\n var properties = eventProperties.call(this, e);\n ahoy.track(\"$submit\", properties);\n });\n};\n\nahoy.trackChanges = function (selector) {\n log(\"trackChanges is deprecated and will be removed in 0.5.0\");\n if (selector === undefined) {\n throw new Error(\"Missing selector\");\n }\n onEvent(\"change\", selector, function (e) {\n var properties = eventProperties.call(this, e);\n ahoy.track(\"$change\", properties);\n });\n};\n\n// push events from queue\ntry {\n eventQueue = JSON.parse(getCookie(\"ahoy_events\") || \"[]\");\n} catch (e) {\n // do nothing\n}\n\nfor (var i = 0; i < eventQueue.length; i++) {\n trackEvent(eventQueue[i]);\n}\n\nahoy.start = function () {\n createVisit();\n\n ahoy.start = function () {};\n};\n\ndocumentReady(function () {\n if (config.startOnReady) {\n ahoy.start();\n }\n});\n\nexport { ahoy as default };\n","import ahoy from 'ahoy.js'\nimport UIkit from 'uikit'\n\nahoy.trackClicks('a, button, input[type=submit]')\nahoy.trackSubmits('form')\n\ndocument.addEventListener('turbo:load', () => {\n ahoy.trackView()\n\n // Use UIkit's scrollspy to track impressions\n UIkit.scrollspy('*[data-analytics-type]:not([uk-scrollspy])', { hidden: false })\n})\n\nUIkit.util.on(document, 'inview', '*[data-analytics-type]', e => {\n const { analyticsType, analyticsId = e.target.href } = e.target.dataset\n\n ahoy.track('impression', {\n url: window.location.href,\n type: analyticsType,\n id: analyticsId\n })\n})\n\nfunction onPrint () {\n ahoy.track('print', { url: window.location.href })\n}\n\n// IE\nif (window.matchMedia) {\n const mediaQueryList = window.matchMedia('print')\n mediaQueryList.addListener(function (mql) {\n if (!mql.matches) onPrint()\n })\n}\n\n// Everyone else\nwindow.addEventListener('afterprint', onPrint)\n"],"names":["Cookies","name","value","ttl","domain","expires","cookieDomain","date","i","c","nameEQ","ca","config","ahoy","options","key","$","visitId","visitorId","track","isReady","queue","canStringify","eventQueue","visitsUrl","eventsUrl","isEmpty","obj","canTrackNow","serialize","object","data","setCookie","getCookie","destroyCookie","log","message","setReady","callback","matchesSelector","element","selector","matches","onEvent","eventName","e","matchedElement","skip","getClosest","documentReady","generateId","r","v","saveEventQueue","csrfToken","meta","csrfParam","CSRFProtection","xhr","token","sendRequest","url","success","header","eventData","event","trackEvent","trackEventNow","param","page","presence","str","cleanObject","eventProperties","attribute","createVisit","enabled","properties","additionalProperties","propName","UIkit","analyticsType","analyticsId","onPrint","mql"],"mappings":"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","x_google_ignoreList":[0]}