UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

57 lines (56 loc) 1.72 kB
import { toValue as l, watch as b } from "vue"; import { useEventCallback as D } from "../_util/hooks/use-event-callback.mjs"; import x from "../_util/hooks/use-state.mjs"; function C(i, v, m, p, w) { const [t, c] = x([]), o = (e, r = t.value) => { let n = l(i); for (let s = 0; s < e - 1; s += 1) { const a = r[s], u = n.find((f) => f.value === a); if (!u) break; n = u.children || []; } return n; }, I = (e) => e.map((r, n) => { const a = o(n + 1, e).find((u) => u.value === r); return a == null ? void 0 : a.value; }), h = (e) => { const r = t.value.length || 1, n = o(r), s = n.findIndex( (f) => f.value === t.value[r - 1] ), a = n.length, u = n[(s + e + a) % a]; c([...t.value.slice(0, r - 1), u.value]); }, g = () => { t.value.length > 1 && c(t.value.slice(0, t.value.length - 1)); }, k = () => { const e = o(t.value.length + 1); e.length && c([...t.value, e[0].value]); }, d = D((e) => { if (l(v)) switch (console.log("e.key", e), e.key) { case "ArrowDown": h(1), e.preventDefault(); break; case "ArrowUp": h(-1), e.preventDefault(); break; case "ArrowRight": l(m) ? g() : k(), e.preventDefault(); break; case "ArrowLeft": l(m) ? k() : g(), e.preventDefault(); break; case "Enter": o(t.value.length + 1).length || p(I(t.value)), e.preventDefault(); break; case "Escape": w(), e.preventDefault(); break; } }); return b(() => l(v), () => { l(v) && c([l(i)[0].value]); }, { immediate: !0 }), [t, d]; } export { C as default };