@artmate/chat
Version:
借鉴字节开源react库AntX,通过vue实现的版本
34 lines (33 loc) • 874 B
JavaScript
import { ref as r, watch as m, watchEffect as c, computed as s } from "vue";
function a(e) {
return typeof e == "string";
}
const y = (e, t, f, n) => {
const v = r(""), u = r(1), l = r(t && a(e.value));
m(
() => e.value,
() => {
!l.value && a(e.value) ? u.value = e.value.length : a(e.value) && a(v.value) && e.value.indexOf(v.value) !== 0 && (u.value = 1), v.value = e.value;
}
), c(() => {
if (u.value, e.value, l.value && u.value < e.value.length) {
const i = setTimeout(() => {
const d = (o) => o + f;
u.value = d(u.value);
}, n);
return () => {
clearTimeout(i);
};
}
});
const g = s(() => {
const i = l.value ? e.value.slice(0, u.value) : e.value;
return () => i;
}), p = s(
() => l.value && u.value < e.value.length
);
return [g, p];
};
export {
y as default
};