vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
27 lines (26 loc) • 702 B
JavaScript
function p(x) {
const { el: l, xFrom: a = 0, xTo: t = 0, yFrom: u = 0, yTo: n = 0, duration: i = 500, callback: f = null } = x;
if (!l) return;
const s = () => {
typeof f == "function" && f();
};
if (i <= 0) {
l.scrollTo(t, n), s();
return;
}
const o = t - a, e = n - u;
if (!o && !e) {
s();
return;
}
const y = Math.ceil(o / i * 16), T = Math.ceil(e / i * 16);
let c = a, r = u;
const m = () => {
c += y, r += T, o && (t - c) / o <= 0 && (c = t), e && (n - r) / e <= 0 && (r = n), l.scrollTo(c, r), (!o || c === t) && (!e || r === n) ? s() : requestAnimationFrame(m);
};
m();
}
export {
p as animateScrollTo
};
//# sourceMappingURL=helper.mjs.map