mine-h5-ui
Version:
一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍
95 lines (94 loc) • 3.25 kB
JavaScript
import { ref as b } from "vue";
import j from "./area.js";
/*!
* mine-h5-ui v2.16.0
* Copyright (c) 2025 biaov
* @license MIT
*/
const f = j, F = () => {
const u = b([Object.values(f[86]), [], []]), o = b([88, 88, 88]), d = b(0), r = [u.value[0][0]];
let v = 0, h = 0, m = 0;
const p = (n) => {
d.value = n, setTimeout(() => {
d.value = 0;
}, n);
}, T = () => {
let n = 0;
for (const t in f[86])
if (f[86][t] === r[0]) {
for (const c in f[t])
if (f[t][c] === r[1]) {
n = +c;
break;
}
break;
}
const [e] = u.value[2] = Object.values(f[n]);
r[2] = e;
}, Y = (n) => {
let e = o.value[n];
const t = u.value[n].length - 1;
e > 88 ? e = 88 : e < 88 - t * 44 && (e = 88 - t * 44), o.value[n] = e, p(400);
}, w = () => {
let n = 0;
for (const t in f[86])
if (f[86][t] === r[0]) {
n = +t;
break;
}
const [e] = u.value[1] = Object.values(f[n]);
r[1] = e, T();
}, g = (n, e) => {
const t = Math.abs(n / 44 - 2);
r[e] = u.value[e][t], e !== 2 && Y(e + 1), e !== 2 && (e === 0 ? w() : T(), Y(e + 1));
}, y = (n, e) => {
v = n.changedTouches[0].clientY, h = o.value[e], m = +/* @__PURE__ */ new Date();
}, x = (n, e) => {
const c = n.changedTouches[0].clientY - v, i = h + c;
o.value[e] = i;
}, M = (n, e) => {
let t = o.value[e];
const c = +/* @__PURE__ */ new Date(), i = +((n.changedTouches[0].clientY - v) / (c - m)).toFixed(2);
if (i > 0.12 || i < -0.12) {
const s = Math.ceil(i * 400);
t += s;
}
const a = t % 44;
if (a !== 0) {
let s = 0;
a > 0 ? s = a > 44 / 2 ? t + (44 - a) : t - a : s = a < -44 / 2 ? t - (44 + a) : t - a;
const l = u.value[e], D = typeof l == "number" ? l - 1 : l.length - 1;
s > 88 ? s = 88 : s < 88 - D * 44 && (s = 88 - D * 44), o.value[e] = s, p(400), g(s, e);
}
}, O = (n, e) => {
v = n.clientY, h = o.value[e], m = +/* @__PURE__ */ new Date(), document.onmousemove = (t) => {
const i = t.clientY - v, a = h + i;
o.value[e] = a;
}, document.onmouseup = (t) => {
let c = o.value[e];
const i = +/* @__PURE__ */ new Date(), a = +((t.clientY - v) / (i - m)).toFixed(2);
if (a > 0.12 || a < -0.12) {
const l = Math.ceil(a * 400);
c += l;
}
const s = c % 44;
if (s !== 0) {
let l = 0;
s > 0 ? l = s > 44 / 2 ? c + (44 - s) : c - s : l = s < -44 / 2 ? c - (44 + s) : c - s;
const D = u.value[e], k = typeof D == "number" ? D - 1 : D.length - 1;
l > 88 ? l = 88 : l < 88 - k * 44 && (l = 88 - k * 44), o.value[e] = l, p(400), g(l, e);
}
document.onmousemove = null, document.onmouseup = null;
};
};
return w(), { listData: u, distance: o, duration: d, currentValue: r, onTouchstart: y, onTouchmove: x, onTouchend: M, onMousedown: O };
}, S = ({ props: u, emit: o, currentValue: d, modelValue: r }) => ({ onCancel: () => {
o("cancel");
}, onSure: () => {
const m = d.reduce((p, T, Y) => p + (Y === 0 ? "" : u.separator) + T, "");
r.value = m, o("sure", d);
} });
export {
S as useBtns,
F as useHandMove
};