{"version":3,"file":"index-1fa76687.js","sources":["../../../node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js","../../../node_modules/ahoy.js/dist/ahoy.esm.js","../../../app/frontend/entrypoints/index.ts"],"sourcesContent":["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\n\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\n\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\n\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n if (selector.exclude) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n if (!element[EXPANDO]) {\n element[EXPANDO] = {};\n }\n return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n var isEditable = false;\n do {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n } while (element);\n return isEditable;\n};\n\nconst csrfToken = () => {\n const meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n};\n\nconst csrfParam = () => {\n const meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n const token = csrfToken();\n if (token) {\n return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n }\n};\n\nconst refreshCSRFTokens = () => {\n const token = csrfToken();\n const param = csrfParam();\n if (token && param) {\n return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n }\n};\n\nconst AcceptHeaders = {\n \"*\": \"*/*\",\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\",\n script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n options = prepareOptions(options);\n var xhr = createXHR(options, (function() {\n const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n }));\n if (options.beforeSend && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n};\n\nvar prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === \"GET\" && options.data) {\n if (options.url.indexOf(\"?\") < 0) {\n options.url += \"?\" + options.data;\n } else {\n options.url += \"&\" + options.data;\n }\n }\n if (!(options.dataType in AcceptHeaders)) {\n options.dataType = \"*\";\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== \"*\") {\n options.accept += \", */*; q=0.01\";\n }\n return options;\n};\n\nvar createXHR = function(options, done) {\n const xhr = new XMLHttpRequest;\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader(\"Accept\", options.accept);\n if (typeof options.data === \"string\") {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n};\n\nvar processResponse = function(response, type) {\n if (typeof response === \"string\" && typeof type === \"string\") {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"nonce\", cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n const parser = new DOMParser;\n type = type.replace(/;.+/, \"\");\n try {\n response = parser.parseFromString(response, type);\n } catch (error1) {}\n }\n }\n return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n const originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n const urlAnchor = document.createElement(\"a\");\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n } catch (e) {\n return true;\n }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n CustomEvent = function(event, params) {\n const evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n ({preventDefault: preventDefault} = CustomEvent.prototype);\n CustomEvent.prototype.preventDefault = function() {\n const result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", {\n get() {\n return true;\n }\n });\n }\n return result;\n };\n}\n\nconst fire = (obj, name, data) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n fire(e.target, \"ujs:everythingStopped\");\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n let {target: target} = e;\n while (!!(target instanceof Element) && !matches(target, selector)) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n let inputs = [ element ];\n if (matches(element, \"form\")) {\n inputs = toArray(element.elements);\n }\n const params = [];\n inputs.forEach((function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, \"fieldset[disabled] *\")) {\n return;\n }\n if (matches(input, \"select\")) {\n toArray(input.options).forEach((function(option) {\n if (option.selected) {\n params.push({\n name: input.name,\n value: option.value\n });\n }\n }));\n } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n params.push({\n name: input.name,\n value: input.value\n });\n }\n }));\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map((function(param) {\n if (param.name) {\n return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n } else {\n return param;\n }\n })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n if (matches(form, \"form\")) {\n return toArray(form.elements).filter((el => matches(el, selector)));\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n if (!allowAction(this, rails)) {\n stopEverything(e);\n }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n let callback;\n const message = element.getAttribute(\"data-confirm\");\n if (!message) {\n return true;\n }\n let answer = false;\n if (fire(element, \"confirm\")) {\n try {\n answer = rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, \"confirm:complete\", [ answer ]);\n }\n return answer && callback;\n};\n\nconst handleDisabledElement = function(e) {\n const element = this;\n if (element.disabled) {\n stopEverything(e);\n }\n};\n\nconst enableElement = e => {\n let element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return enableFormElements(element);\n }\n};\n\nconst disableElement = e => {\n const element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return disableFormElements(element);\n }\n};\n\nvar disableLinkElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, \"ujs:enable-with\", null);\n }\n element.removeEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n if (matches(element, \"button\")) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, \"ujs:enable-with\", element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n if (matches(element, \"button\")) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, \"ujs:enable-with\", null);\n }\n element.disabled = false;\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function(event) {\n const xhr = event.detail ? event.detail[0] : undefined;\n return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n const link = this;\n const method = link.getAttribute(\"data-method\");\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n const href = rails.href(link);\n const csrfToken$1 = csrfToken();\n const csrfParam$1 = csrfParam();\n const form = document.createElement(\"form\");\n let formContent = ``;\n if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n formContent += ``;\n }\n formContent += '';\n form.method = \"post\";\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = \"none\";\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n stopEverything(e);\n};\n\nconst isRemote = function(element) {\n const value = element.getAttribute(\"data-remote\");\n return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n let data, method, url;\n const element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, \"ajax:before\")) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n const withCredentials = element.getAttribute(\"data-with-credentials\");\n const dataType = element.getAttribute(\"data-type\") || \"script\";\n if (matches(element, formSubmitSelector)) {\n const button = getData(element, \"ujs:submit-button\");\n method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n if (method.toUpperCase() === \"GET\") {\n url = url.replace(/\\?.*$/, \"\");\n }\n if (element.enctype === \"multipart/form-data\") {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, \"ujs:submit-button\", null);\n setData(element, \"ujs:submit-button-formmethod\", null);\n setData(element, \"ujs:submit-button-formaction\", null);\n } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n method = element.getAttribute(\"data-method\");\n url = element.getAttribute(\"data-url\");\n data = serializeElement(element, element.getAttribute(\"data-params\"));\n } else {\n method = element.getAttribute(\"data-method\");\n url = rails.href(element);\n data = element.getAttribute(\"data-params\");\n }\n ajax({\n type: method || \"GET\",\n url: url,\n data: data,\n dataType: dataType,\n beforeSend(xhr, options) {\n if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n return fire(element, \"ajax:send\", [ xhr ]);\n } else {\n fire(element, \"ajax:stopped\");\n return false;\n }\n },\n success(...args) {\n return fire(element, \"ajax:success\", args);\n },\n error(...args) {\n return fire(element, \"ajax:error\", args);\n },\n complete(...args) {\n return fire(element, \"ajax:complete\", args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== \"false\"\n });\n stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n const button = this;\n const {form: form} = button;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, \"ujs:submit-button\", {\n name: button.name,\n value: button.value\n });\n }\n setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function(e) {\n const link = this;\n const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n const data = link.getAttribute(\"data-params\");\n const metaClick = e.metaKey || e.ctrlKey;\n const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n e.stopImmediatePropagation();\n }\n};\n\nconst Rails = {\n $: $,\n ajax: ajax,\n buttonClickSelector: buttonClickSelector,\n buttonDisableSelector: buttonDisableSelector,\n confirm: confirm,\n cspNonce: cspNonce,\n csrfToken: csrfToken,\n csrfParam: csrfParam,\n CSRFProtection: CSRFProtection,\n delegate: delegate,\n disableElement: disableElement,\n enableElement: enableElement,\n fileInputSelector: fileInputSelector,\n fire: fire,\n formElements: formElements,\n formEnableSelector: formEnableSelector,\n formDisableSelector: formDisableSelector,\n formInputClickSelector: formInputClickSelector,\n formSubmitButtonClick: formSubmitButtonClick,\n formSubmitSelector: formSubmitSelector,\n getData: getData,\n handleDisabledElement: handleDisabledElement,\n href: href,\n inputChangeSelector: inputChangeSelector,\n isCrossDomain: isCrossDomain,\n linkClickSelector: linkClickSelector,\n linkDisableSelector: linkDisableSelector,\n loadCSPNonce: loadCSPNonce,\n matches: matches,\n preventInsignificantClick: preventInsignificantClick,\n refreshCSRFTokens: refreshCSRFTokens,\n serializeElement: serializeElement,\n setData: setData,\n stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n if (window._rails_loaded) {\n throw new Error(\"rails-ujs has already been loaded!\");\n }\n window.addEventListener(\"pageshow\", (function() {\n $(formEnableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n $(linkDisableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n }));\n delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n delegate(document, linkClickSelector, \"click\", handleConfirm);\n delegate(document, linkClickSelector, \"click\", disableElement);\n delegate(document, linkClickSelector, \"click\", handleRemote);\n delegate(document, linkClickSelector, \"click\", handleMethod);\n delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n delegate(document, buttonClickSelector, \"click\", handleConfirm);\n delegate(document, buttonClickSelector, \"click\", disableElement);\n delegate(document, buttonClickSelector, \"click\", handleRemote);\n delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n delegate(document, inputChangeSelector, \"change\", handleConfirm);\n delegate(document, inputChangeSelector, \"change\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n delegate(document, formSubmitSelector, \"submit\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n delegate(document, formInputClickSelector, \"click\", handleConfirm);\n delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n if (jQuery.rails) {\n throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n }));\n}\n\nexport { Rails as default };\n","/*!\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","import Rails from \"@rails/ujs\";\nimport jquery from \"jquery\";\n\nimport \"selectize\";\nimport \"selectize/dist/css/selectize.css\";\n\nimport ahoy from \"ahoy.js\";\n\ndeclare global {\n interface Window {\n _rails_loaded: boolean;\n Rails: typeof Rails;\n $: typeof jquery;\n jQuery: typeof jquery;\n }\n}\n\nwindow.jQuery = jquery;\nwindow.$ = jquery;\n// @ts-ignore\nwindow.ahoy = ahoy;\nahoy.configure({ cookies: false });\n\nif (!window._rails_loaded) {\n Rails.start();\n}\n\n$(() => {\n // @ts-expect-error\n $(\"select.selectize-field\").selectize({ sortField: \"asc\" });\n});\n"],"names":["linkClickSelector","buttonClickSelector","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","metaTag","cspNonce","m","matches","element","selector","EXPANDO","getData","key","setData","value","$","isContentEditable","isEditable","csrfToken","meta","csrfParam","CSRFProtection","xhr","token","refreshCSRFTokens","param","input","AcceptHeaders","ajax","options","prepareOptions","createXHR","response","processResponse","done","type","script","parser","href","isCrossDomain","url","originAnchor","urlAnchor","preventDefault","CustomEvent","event","params","evt","result","fire","obj","name","data","stopEverything","e","delegate","eventType","handler","target","toArray","serializeElement","additionalParam","inputs","option","formElements","form","el","handleConfirmWithRails","rails","allowAction","confirm","message","callback","answer","handleDisabledElement","enableElement","isXhrRedirect","enableLinkElement","enableFormElement","enableFormElements","disableElement","disableLinkElement","disableFormElement","disableFormElements","replacement","originalText","handleMethodWithRails","link","method","csrfToken$1","csrfParam$1","formContent","isRemote","handleRemoteWithRails","withCredentials","dataType","button","args","formSubmitButtonClick","preventInsignificantClick","insignificantMetaClick","Rails","handleConfirm","handleMethod","handleRemote","start","originalOptions","Cookies","ttl","domain","expires","cookieDomain","date","i","c","nameEQ","ca","config","ahoy","visitId","visitorId","track","isReady","queue","canStringify","eventQueue","visitsUrl","eventsUrl","isEmpty","canTrackNow","serialize","object","setCookie","getCookie","destroyCookie","log","setReady","matchesSelector","onEvent","eventName","matchedElement","skip","getClosest","documentReady","generateId","r","v","saveEventQueue","sendRequest","success","header","eventData","trackEvent","trackEventNow","page","presence","str","cleanObject","eventProperties","attribute","createVisit","enabled","properties","additionalProperties","propName","jquery"],"mappings":"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","x_google_ignoreList":[0,1]}