vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
37 lines (36 loc) • 1.05 kB
JavaScript
import { ref as d, watch as g } from "vue";
const M = (e, r, i) => {
const l = d(e.modelValue), a = d(e.modelValue), c = (t) => t, m = (t) => {
if (e.readonly || !r.value)
return;
const n = t.changedTouches[0], v = Array.from(r.value.children);
for (let u = 0; u < v.length; u++) {
const o = v[u].getBoundingClientRect();
if (n.clientX >= o.left && n.clientX <= o.right && n.clientY >= o.top && n.clientY <= o.bottom) {
l.value = c(u + 1);
break;
}
}
}, f = (t) => {
e.readonly || (l.value = c(t));
}, h = () => {
e.readonly || (l.value = a.value);
}, V = (t) => {
e.readonly || (l.value = c(t), a.value = l.value, i("update:modelValue", l.value), i("select", l.value));
}, s = (t) => l.value >= t ? "full" : "empty";
return g(
() => e.modelValue,
() => {
l.value = e.modelValue, a.value = e.modelValue;
}
), {
onTouchMove: m,
onMousemove: f,
onMouseleave: h,
handleAction: V,
getIconType: s
};
};
export {
M as useRate
};