{"version":3,"file":"static/chunks/3577.5e7fe96123d272c2.js","mappings":"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","sources":["webpack://_N_E/./node_modules/ahoy.js/dist/ahoy.esm.js","webpack://_N_E/"],"sourcesContent":["/*!\n * Ahoy.js v0.4.3\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 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"],"names":["callback","visitId","visitorId","track","Cookies","set","name","value","ttl","domain","expires","cookieDomain","date","Date","setTime","getTime","toGMTString","document","cookie","escape","get","i","c","nameEQ","ca","split","length","charAt","substring","indexOf","unescape","config","urlPrefix","visitsUrl","eventsUrl","page","platform","useBeacon","startOnReady","trackVisits","cookies","headers","visitParams","withCredentials","visitDuration","visitorDuration","ahoy","window","Ahoy","configure","options","key","Object","prototype","hasOwnProperty","call","$","jQuery","Zepto","isReady","queue","canStringify","JSON","stringify","eventQueue","setCookie","getCookie","destroyCookie","log","message","console","setReady","shift","onEvent","eventName","selector","addEventListener","e","matchedElement","matchesSelector","element","matches","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","apply","parentElement","target","skip","getClosest","generateId","replace","r","Math","random","v","toString","saveEventQueue","csrfToken","meta","querySelector","content","CSRFProtection","xhr","token","setRequestHeader","sendRequest","url","data","success","ajax","type","contentType","dataType","beforeSend","xhrFields","XMLHttpRequest","header","open","onload","status","send","eventData","event","events","visit_token","visitor_token","trackEvent","ready","id","splice","location","pathname","presence","str","eventProperties","cleanObject","obj","tag","tagName","toLowerCase","className","section","attribute","parentNode","hasAttribute","getAttribute","createVisit","getVisitId","getVisitorId","landing_page","href","screen_width","screen","width","screen_height","height","js","referrer","push","getVisitToken","getVisitorToken","reset","debug","enabled","properties","time","trackNow","keys","navigator","sendBeacon","param","events_json","serialize","object","FormData","append","setTimeout","trackView","additionalProperties","title","propName","trackClicks","undefined","text","textContent","innerText","innerHTML","trim","trackSubmits","trackChanges","parse","start","readyState"],"sourceRoot":""}