UNPKG

ant-design-x-vue-next

Version:

Ant Design X for Vue — community continuation aligned with @ant-design/x

71 lines (70 loc) 1.6 kB
import g from "../../_util/hooks/use-state.mjs"; import { computed as f, watch as h, unref as t, onWatcherCleanup as y } from "vue"; function i(e) { return typeof e == "string"; } function T(e, r) { let u = 0; const m = Math.min(e.length, r.length); for (; u < m && e[u] === r[u]; ) u++; return u; } function x(e) { if (Array.isArray(e)) { const r = Math.min(e[0], e[1]), u = Math.max(e[0], e[1]); return r + Math.floor(Math.random() * (u - r + 1)); } return e; } const P = (e, r, u, m, s = f(() => !0)) => { const [d, p] = g(""), [n, l] = g(1), v = f(() => r.value && i(e.value)); return h( e, () => { const a = t(d); if (p(e.value), !v.value && i(e.value)) { l(e.value.length); return; } if (!(!i(e.value) || !i(a))) { if (!s.value) { e.value !== a && l(1); return; } if (e.value.indexOf(a) !== 0) { if (!e.value || !a) { l(1); return; } const o = T(e.value, a); l(o === 0 ? 1 : o + 1); } } }, { immediate: !0 } ), h( [n, r, e], () => { if (v.value && i(e.value) && t(n) < e.value.length) { const a = setTimeout(() => { l(t(n) + x(u.value)); }, m.value); y(() => { clearTimeout(a); }); } }, { immediate: !0 } ), [ f( () => v.value && i(e.value) ? e.value.slice(0, t(n)) : e.value ), f( () => v.value && i(e.value) && t(n) < e.value.length ) ]; }; export { P as default };