docs/public/pl.js

125 lines
4.1 KiB
JavaScript
Raw Normal View History

2025-08-15 04:53:12 +02:00
!(function () {
var l = window.location,
i = window.document,
t = i.currentScript,
r = t.getAttribute("data-api") || new URL(t.src).origin + "/api/event",
o = t.getAttribute("data-domain");
function s(t, e) {
t && console.warn("Ignoring Event: " + t),
e && e.callback && e.callback();
}
function e(t, e) {
if (
/^localhost$|^127(\.[0-9]+){0,2}\.[0-9]+$|^\[::1?\]$/.test(
l.hostname,
) ||
"file:" === l.protocol
)
return s("localhost", e);
if (
(window._phantom ||
window.__nightmare ||
window.navigator.webdriver ||
window.Cypress) &&
!window.__plausible
)
return s(null, e);
try {
if ("true" === window.localStorage.plausible_ignore)
return s("localStorage flag", e);
} catch (t) {}
var a = {},
n =
((a.n = t),
(a.u = l.href),
(a.d = o),
(a.r = i.referrer || null),
e && e.meta && (a.m = JSON.stringify(e.meta)),
e && e.props && (a.p = e.props),
new XMLHttpRequest());
n.open("POST", r, !0),
n.setRequestHeader("Content-Type", "text/plain"),
n.send(JSON.stringify(a)),
(n.onreadystatechange = () => {
4 === n.readyState &&
e &&
e.callback &&
e.callback({ status: n.status });
});
}
var a = (window.plausible && window.plausible.q) || [];
window.plausible = e;
for (var n, p = 0; p < a.length; p++) e.apply(this, a[p]);
function c() {
n !== l.pathname && ((n = l.pathname), e("pageview"));
}
function u() {
c();
}
var d,
t = window.history;
t.pushState &&
((d = t.pushState),
(t.pushState = function () {
d.apply(this, arguments), u();
}),
window.addEventListener("popstate", u)),
"prerender" === i.visibilityState
? i.addEventListener("visibilitychange", () => {
n || "visible" !== i.visibilityState || c();
})
: c();
var f = 1;
function w(t) {
var e, a, n, i, r;
function o() {
n || ((n = !0), (window.location = a.href));
}
("auxclick" === t.type && t.button !== f) ||
((e = ((t) => {
for (
;
t &&
(void 0 === t.tagName ||
!(e = t) ||
!e.tagName ||
"a" !== e.tagName.toLowerCase() ||
!t.href);
)
t = t.parentNode;
var e;
return t;
})(t.target)) &&
e.href &&
e.href.split("?")[0],
(r = e) &&
r.href &&
r.host &&
r.host !== l.host &&
((r = t),
(t = {
name: "Outbound Link: Click",
props: { url: (a = e).href },
}),
(n = !1),
!((t, e) => {
if (!t.defaultPrevented)
return (
(e =
!e.target ||
e.target.match(/^_(self|parent|top)$/i)),
(t =
!(t.ctrlKey || t.metaKey || t.shiftKey) &&
"click" === t.type),
e && t
);
})(r, a)
? ((i = { props: t.props }), plausible(t.name, i))
: ((i = { props: t.props, callback: o }),
plausible(t.name, i),
setTimeout(o, 5e3),
r.preventDefault())));
}
i.addEventListener("click", w), i.addEventListener("auxclick", w);
})();