@ebay/ui-core-react
Version:
Skin components build off React
2 lines (1 loc) • 765 B
JavaScript
const o=require("react"),v=()=>{const[w,i]=o.useState(!1),[c,e]=o.useState(!1),s=({key:t})=>{const r={ArrowUp:i,ArrowDown:e}[t];r&&r(!1)},d=({key:t})=>{const r={ArrowUp:i,ArrowDown:e}[t];r&&r(!0)};return o.useEffect(()=>(window.addEventListener("keydown",d),window.addEventListener("keyup",s),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",s)}),[]),[w,c]},y=(w,i,c)=>{const[e,s]=o.useState(c),[d,t]=v(),r=o.Children.toArray(w).reduce((n,p,x)=>p.type===i?[...n,x]:n,[]),u=r.indexOf(e),a=()=>{if(u===-1)return e;const n=r[u-1];return n===void 0?e:n},f=()=>{if(u===-1)return e;const n=r[u+1];return n===void 0?e:n};return o.useEffect(()=>{d&&s(a()),t&&s(f())},[d,t]),[e,s]};exports.useKeyPress=v;exports.useRovingIndex=y;
;