@westacks/vortex
Version:
Server-based routing for SPAs
56 lines (55 loc) • 1.85 kB
JavaScript
import { a as i } from "./form-6EHLr-hJ.js";
const d = (r, f = !0) => {
f === !0 && (f = {});
function u(e) {
e.method = e.method || "get", e.url = e.url || r.href || "", e.data = e.data || {}, r instanceof HTMLAnchorElement && (r.href = e.url);
let l, n;
return e.prefetch && (Array.isArray(e.prefetch) ? l = e.prefetch : e.prefetch === !0 ? l = ["hover"] : l = [e.prefetch], n = e.cacheFor || "30s"), delete e.cacheFor, delete e.prefetch, { options: e, prefetch: l, cacheFor: n };
}
function a(e) {
e.preventDefault(), i.request(f);
}
const c = () => i.request({ ...f, prefetch: s.cacheFor });
function t() {
let e = !1;
setTimeout(() => {
!e && r.matches(":hover") && (e = !0, c().finally(() => e = !1));
}, 75);
}
function h() {
r.removeEventListener("mouseover", t), r.removeEventListener("mousedown", c);
const e = s.prefetch || [];
e.includes("hover") && r.addEventListener("mouseover", t), e.includes("click") && r.addEventListener("mousedown", c), e.includes("mount") && c();
}
let s = u(f);
return h(), r.addEventListener("click", a), {
update(e) {
e === !0 && (e = {}), s = u(e), h();
},
destroy() {
r.removeEventListener("click", a);
}
};
}, m = (r, f = !0) => {
function u(t) {
return t === !0 || !t.vortex ? { buffer: 0, always: !0, vortex: t } : { buffer: 0, always: !0, ...t };
}
let a = u(f);
const c = new IntersectionObserver((t) => {
t[0].isIntersecting && (a.always || c.disconnect(), !r.dataset.fetching && (r.dataset.fetching = "", i.reload(a).then(() => r.dataset.loaded = "").finally(() => delete r.dataset.fetching)));
}, {
rootMargin: `${a.buffer}px`
});
return c.observe(r), {
update(t) {
a = u(t);
},
destroy() {
c.disconnect();
}
};
};
export {
d as l,
m as v
};