UNPKG

mine-h5-ui

Version:

一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍

45 lines (44 loc) 1.22 kB
import { ref as c, watch as m, onMounted as h } from "vue"; const p = (e) => { const s = c(), l = c(0), a = c(Array.isArray(e.list) ? e.list : [e.list]), t = c(0); let r, d = !0; const u = () => { if (e.scroll === "horizontal") { const { offsetWidth: n, parentNode: o } = s.value; let i; const f = (v) => { i === void 0 && (i = v); const k = v - i; l.value < -n ? (l.value = o.offsetWidth, i = void 0) : l.value = ~(k / 18), d && window.requestAnimationFrame(f); }; window.requestAnimationFrame(f); } else { const n = a.value.length; if (n <= 1) return; r = setInterval(() => { const o = t.value; t.value = o >= n - 1 ? 0 : o + 1; }, e.delay); } }, A = () => { e.scroll === "horizontal" ? d = !1 : clearInterval(r); }; return m( () => e.loop, (n) => { n ? u() : A(); } ), h(() => { e.loop && u(); }), { noticeList: s, left: l, listData: a, listIndex: t }; }, x = (e) => ({ onClick: (t) => { e("click", t); }, onClickPreappend: (t) => { e("click:preappend", t); }, onClickAppend: (t) => { e("click:append", t); } }); export { p as useAnimate, x as useBtns };