{"version":3,"file":"plausible-Brj_ayPK.js","sources":["../../../node_modules/@barbapapazes/plausible-tracker/dist/index.mjs","../../../node_modules/@barbapapazes/plausible-tracker/dist/extensions/utils.mjs","../../../node_modules/@barbapapazes/plausible-tracker/dist/extensions/auto-outbound-tracking.mjs","../../../node_modules/@barbapapazes/plausible-tracker/dist/extensions/auto-pageviews.mjs","../../../app/javascript/src/plausible.js"],"sourcesContent":["function isFile(protocol) {\n return protocol === \"file:\";\n}\nfunction isIgnored(hostname, ignoredHostnames, ignoreSubDomains) {\n if (ignoreSubDomains)\n return ignoredHostnames.some((ignoredHostname) => hostname === ignoredHostname || hostname.endsWith(`.${ignoredHostname}`));\n return ignoredHostnames.includes(hostname);\n}\nfunction isUserSelfExcluded() {\n try {\n return localStorage.getItem(\"plausible_ignore\") === \"true\";\n } catch (_) {\n return false;\n }\n}\nfunction createEventData(data = {}) {\n const { url, referrer, deviceWidth } = data;\n return {\n url: url ?? window.location.href,\n referrer: referrer ?? document.referrer,\n deviceWidth: deviceWidth ?? window.innerWidth\n };\n}\nfunction sendEvent(apiHost, payload, callback) {\n return fetch(`${apiHost}/api/event`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"text/plain\"\n },\n body: JSON.stringify(payload)\n }).then((response) => {\n callback?.({ status: response.status });\n }).catch(() => {\n });\n}\n\nfunction createPayload(eventName, plausibleOptions, data, options) {\n const payload = {\n n: eventName,\n u: data.url,\n d: plausibleOptions.domain,\n r: data.referrer,\n w: data.deviceWidth,\n h: plausibleOptions.hashMode ? 1 : 0,\n p: options && options.props ? JSON.stringify(options.props) : void 0\n };\n return payload;\n}\n\nfunction createPlausibleTracker(initOptions) {\n const protocol = window.location.protocol;\n const defaultOptions = {\n enabled: true,\n hashMode: false,\n domain: window.location.hostname,\n apiHost: \"https://plausible.io\",\n ignoredHostnames: [\"localhost\"],\n ignoreSubDomains: false,\n logIgnored: false\n };\n const plausibleOptions = { ...defaultOptions, ...initOptions };\n const sendEvent$1 = (payload, callback) => sendEvent(plausibleOptions.apiHost, payload, callback);\n function trackEvent(eventName, options) {\n if (!plausibleOptions.enabled)\n return;\n const data = createEventData(options?.data);\n const payload = createPayload(eventName, plausibleOptions, data, options);\n if (isFile(protocol) || isIgnored(plausibleOptions.domain, plausibleOptions.ignoredHostnames, plausibleOptions.ignoreSubDomains) || isUserSelfExcluded()) {\n if (plausibleOptions.logIgnored)\n console.info(`[Plausible] ${eventName}`, payload);\n options?.callback?.({ status: null });\n } else {\n return sendEvent$1(payload, options?.callback);\n }\n }\n function trackPageview(options) {\n return trackEvent(\"pageview\", options);\n }\n window.plausible = trackEvent;\n return {\n trackEvent,\n trackPageview,\n options: plausibleOptions\n };\n}\n\nexport { createPlausibleTracker };\n","export function isOutboundLink(link, currentHostname) {\n return link.href && link.host && link.host !== currentHostname;\n}\nexport function shouldFollowLink(event, link) {\n if (event.defaultPrevented)\n return false;\n const downloadable = link.hasAttribute(\"download\");\n const targetsCurrentWindow = !link.target || Boolean(link.target.match(/^_(self|parent|top)$/i));\n const isRegularClick = !(event.ctrlKey || event.metaKey || event.shiftKey) && event.type === \"click\";\n return targetsCurrentWindow && isRegularClick && !downloadable;\n}\nexport function openLink(link) {\n const href = link.getAttribute(\"href\") || \"\";\n const target = link.getAttribute(\"target\") || \"_self\";\n const rel = link.getAttribute(\"rel\") || \"\";\n const windowFeatures = rel.split(\" \").join(\",\");\n window.open(href, target, windowFeatures);\n}\n","import { isOutboundLink, openLink, shouldFollowLink } from \"./utils.mjs\";\nexport function useAutoOutboundTracking(plausible, initOptions) {\n const options = { ...initOptions };\n const tracked = /* @__PURE__ */ new Set();\n function setEventOptions(newOptions) {\n Object.assign(options, newOptions);\n }\n function handleLinkClickEvent(event) {\n const location2 = window.location;\n if (event.type === \"auxclick\" && event.button !== 1 || !isOutboundLink(this, location2))\n return;\n const href = this.getAttribute(\"href\");\n let followedLink = false;\n const followLink = () => {\n if (!followedLink) {\n followedLink = true;\n openLink(this);\n }\n };\n const props = { url: href };\n if (shouldFollowLink(event, this)) {\n plausible.trackEvent(\"Outbound Link: Click\", { props, callback: followLink });\n setTimeout(followLink, 1e3);\n event.preventDefault();\n } else {\n plausible.trackEvent(\"Outbound Link: Click\", { props });\n }\n }\n function addNode(node) {\n if (node instanceof HTMLAnchorElement) {\n if (node.host !== location.host) {\n node.addEventListener(\"click\", handleLinkClickEvent);\n node.addEventListener(\"auxclick\", handleLinkClickEvent);\n tracked.add(node);\n }\n } else if (\"querySelectorAll\" in node) {\n node.querySelectorAll(\"a\").forEach(addNode);\n }\n }\n function removeNode(node) {\n if (node instanceof HTMLAnchorElement) {\n node.removeEventListener(\"click\", handleLinkClickEvent);\n node.removeEventListener(\"auxclick\", handleLinkClickEvent);\n tracked.delete(node);\n } else if (\"querySelectorAll\" in node) {\n node.querySelectorAll(\"a\").forEach(removeNode);\n }\n }\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === \"attributes\") {\n removeNode(mutation.target);\n addNode(mutation.target);\n } else if (mutation.type === \"childList\") {\n mutation.addedNodes.forEach(addNode);\n mutation.removedNodes.forEach(removeNode);\n }\n });\n });\n function install() {\n const targetNode = document;\n const observerInit = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"href\"]\n };\n targetNode.querySelectorAll(\"a\").forEach(addNode);\n observer.observe(targetNode, observerInit);\n }\n function cleanup() {\n tracked.forEach((a) => {\n a.removeEventListener(\"click\", handleLinkClickEvent);\n a.removeEventListener(\"auxclick\", handleLinkClickEvent);\n });\n tracked.clear();\n observer.disconnect();\n }\n ;\n return {\n install,\n cleanup,\n setEventOptions\n };\n}\n","export function useAutoPageviews(plausible, initOptions) {\n const options = { ...initOptions };\n function setEventOptions(newOptions) {\n Object.assign(options, newOptions);\n }\n function page() {\n plausible.trackPageview(options);\n }\n const originalPushState = history.pushState;\n function install() {\n if (originalPushState) {\n history.pushState = function(...args) {\n originalPushState.apply(this, args);\n page();\n };\n window.addEventListener(\"popstate\", page);\n }\n if (plausible.options.hashMode)\n window.addEventListener(\"hashchange\", page);\n page();\n }\n function cleanup() {\n if (originalPushState) {\n history.pushState = originalPushState;\n window.removeEventListener(\"popstate\", page);\n }\n if (plausible.options.hashMode)\n window.removeEventListener(\"hashchange\", page);\n }\n return {\n install,\n cleanup,\n setEventOptions\n };\n}\n","import { createPlausibleTracker } from \"@barbapapazes/plausible-tracker\"\nimport { useAutoPageviews, useAutoOutboundTracking } from '@barbapapazes/plausible-tracker/extensions'\n\nconst plausible = createPlausibleTracker({ domain: 'olympia.chat' })\n\nexport const autoOutboundTracking = useAutoOutboundTracking(plausible)\nexport const initPlausible = () => {\n useAutoPageviews(plausible).install()\n autoOutboundTracking.install()\n}\n"],"names":["isFile","protocol","isIgnored","hostname","ignoredHostnames","ignoreSubDomains","ignoredHostname","isUserSelfExcluded","createEventData","data","url","referrer","deviceWidth","sendEvent","apiHost","payload","callback","response","createPayload","eventName","plausibleOptions","options","createPlausibleTracker","initOptions","sendEvent$1","trackEvent","_a","trackPageview","isOutboundLink","link","currentHostname","shouldFollowLink","event","downloadable","targetsCurrentWindow","isRegularClick","openLink","href","target","windowFeatures","useAutoOutboundTracking","plausible","tracked","setEventOptions","newOptions","handleLinkClickEvent","location2","followedLink","followLink","props","addNode","node","removeNode","observer","mutations","mutation","install","targetNode","observerInit","cleanup","a","useAutoPageviews","page","originalPushState","args","autoOutboundTracking","initPlausible"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}