UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

28 lines (27 loc) 925 B
import { computed as h, ref as d, nextTick as A, onMounted as W, onBeforeUnmount as F } from "vue"; import { Utils as M } from "@vuux/utils"; const y = (f, n, i) => { const m = h(() => f.speed), e = d(0); let t = null, l = 0, s = 0, o = !1; const r = d(!1), u = () => { o || (e.value -= m.value, e.value <= -l && (e.value = s)), t = requestAnimationFrame(u); }, c = () => { t !== null && (cancelAnimationFrame(t), t = null); }, p = () => o = !0, b = () => o = !1, v = M.debounce(async () => { c(), await A(), !(!n.value || !i.value) && (l = i.value.offsetWidth, s = n.value.offsetWidth, e.value = s, r.value = !0, t = requestAnimationFrame(u)); }, 50); let a; return W(() => { v(), a = new ResizeObserver(v), n.value && a.observe(n.value); }), F(() => { c(), a && a.disconnect(); }), { translateX: e, ready: r, pause: p, resume: b }; }; export { y as useMarquee };