UNPKG

ant-design-x-vue-next

Version:

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

2 lines (1 loc) 1.34 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),_=require("../_util/hooks/use-event-callback.js"),m=require("../_util/hooks/use-state.js");function A(o,i,h,b,w){const[t,c]=m.default([]),v=(e,n=t.value)=>{let u=a.toValue(o);for(let r=0;r<e-1;r+=1){const l=n[r],s=u.find(f=>f.value===l);if(!s)break;u=s.children||[]}return u},I=e=>e.map((n,u)=>{const l=v(u+1,e).find(s=>s.value===n);return l==null?void 0:l.value}),g=e=>{const n=t.value.length||1,u=v(n),r=u.findIndex(f=>f.value===t.value[n-1]),l=u.length,s=u[(r+e+l)%l];c([...t.value.slice(0,n-1),s.value])},d=()=>{t.value.length>1&&c(t.value.slice(0,t.value.length-1))},k=()=>{const e=v(t.value.length+1);e.length&&c([...t.value,e[0].value])},V=_.useEventCallback(e=>{if(a.toValue(i))switch(e.key){case"ArrowDown":g(1),e.preventDefault();break;case"ArrowUp":g(-1),e.preventDefault();break;case"ArrowRight":a.toValue(h)?d():k(),e.preventDefault();break;case"ArrowLeft":a.toValue(h)?k():d(),e.preventDefault();break;case"Enter":v(t.value.length+1).length||b(I(t.value)),e.preventDefault();break;case"Escape":w(),e.preventDefault();break}});return a.watch(()=>a.toValue(i),()=>{a.toValue(i)&&Array.isArray(a.toValue(o))&&a.toValue(o).length>0&&c([a.toValue(o)[0].value])},{immediate:!0}),[t,V]}exports.default=A;