mine-h5-ui
Version:
一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍
40 lines (39 loc) • 1.75 kB
JavaScript
import { ref as r, watch as p } from "vue";
/*!
* mine-h5-ui v2.15.0
* Copyright (c) 2025 biaov
* @license MIT
*/
const g = ({ emit: i, modelValue: n }) => {
const a = r(0), t = r(0), l = r(0), e = r(50), c = r(0);
let o = 0, s = 0;
const f = (u) => {
n.value || (o = u.changedTouches[0].clientY, s = 0, c.value = 0);
}, h = (u) => {
if (n.value) return;
const v = u.changedTouches[0].clientY - o;
v > e.value ? (a.value = 1, s += 0.09, t.value = e.value + (v - e.value) / s, l.value = 1) : (t.value = v, l.value = v / e.value, a.value = 0);
}, Y = (u) => {
if (n.value) return;
const v = u.changedTouches[0].clientY - o;
c.value = 400, v > e.value ? (a.value = 2, t.value = e.value, l.value = 1, n.value = !0, i("refresh")) : (a.value = 0, t.value = 0, l.value = 0);
}, d = (u) => {
if (n.value) return;
const v = u.clientY - o;
v > e.value ? (a.value = 1, s += 0.09, t.value = e.value + (v - e.value) / s, l.value = 1) : (t.value = v, l.value = v / e.value, a.value = 0);
}, T = (u) => {
if (n.value) return;
const v = u.clientY - o;
c.value = 400, v > e.value ? (a.value = 2, t.value = e.value, l.value = 1, n.value = !0, i("refresh")) : (a.value = 0, t.value = 0, l.value = 0), document.onmousemove = null, document.onmouseup = null;
}, m = (u) => {
n.value || (o = u.clientY, s = 0, c.value = 0, document.onmousemove = d, document.onmouseup = T);
};
return p(n, (u) => {
u || (a.value = 3, setTimeout(() => {
t.value = 0, l.value = 0;
}, 600));
}), { activeState: a, transY: t, scale: l, showValue: e, duration: c, onTouchstart: f, onTouchmove: h, onTouchend: Y, onMousedown: m };
};
export {
g as useHandMove
};