Loading
function(e,t,n){"use strict";n.d(t,{A:()=>s});var l=n(64700),i=n(650583);class s extends l.Component{state={focusedColumn:null,focusedRow:null};componentDidMount(){document.addEventListener("keydown",this.handleKeyDown,!0)}componentWillUnmount(){document.removeEventListener("keydown",this.handleKeyDown,!0)}handleKeyDown=e=>{let{onSelect:t}=this.props;switch(e.key){case i.dh.ARROW_DOWN:case i.dh.ARROW_UP:case i.dh.ARROW_LEFT:case i.dh.ARROW_RIGHT:this.focusNext(function(e){switch(e){case i.dh.ARROW_DOWN:return"ARROW_DOWN";case i.dh.ARROW_UP:return"ARROW_UP";case i.dh.ARROW_LEFT:return"ARROW_LEFT";case i.dh.ARROW_RIGHT:return"ARROW_RIGHT";default:return null}}(e.key));break;case i.dh.ENTER:let n=this.calculateFocusedItem();null!=n&&null!=t&&(e.preventDefault(),e.stopPropagation(),t(n))}};focusNext(e){let{getItemGrid:t,onFocus:n}=this.props,{focusedColumn:l,focusedRow:i}=this.state;if(null==e)return;let s=t();if(null==s||0===s.length)return;let r=this.getNext(s,l,i,e);this.setState({focusedColumn:r.column,focusedRow:r.row},()=>{let e=this.calculateFocusedItem();null!=e&&null!=n&&n(e)})}wrapPosition=(e,t,n,l)=>{let i=e.length,s=Math.max(n*i+t+l,0)%i,r=this.calculateClosest(e[t][n],e[s])??n,a=0;return l<0&&s>t&&(a=-1),l>0&&s<t&&(a=1),{column:s,row:r+a}};getNext(e,t,n,l){let i,s,r,a;if(null==t||null==n)s=0,r=0,i={column:0,row:0};else switch(s=t,r=n,l){case"ARROW_UP":i={column:s,row:Math.max(r-1,0)};break;case"ARROW_DOWN":i={column:s,row:Math.min(r+1,e[s].length-1)};break;case"ARROW_LEFT":i=this.wrapPosition(e,s,r,-1);break;case"ARROW_RIGHT":i=this.wrapPosition(e,s,r,1)}return null!=i&&(a=e[i.column]?.[i.row]),(null==a||null==i)&&(i={column:s,row:r},a=e[i.column]?.[i.row]),{column:i.column,row:i.row,id:a}}calculateClosest(e,t){let n,l=this.props.getCoordsMap()[e];if(null==l)return;let i=Number.MAX_SAFE_INTEGER;for(let e=0;e<t.length;e++){let s=this.props.getCoordsMap()[t[e]];if(null==s)continue;let r=Math.abs(s.top-l.top);if(r<i)i=r,n=e;else break}return n}calculateFocusedItem(){let{getItemGrid:e}=this.props,{focusedRow:t,focusedColumn:n}=this.state,l=e();return null==l||null==n||null==t||null==l[n]||null==l[n][t]?null:l[n][t]}render(){return this.props.children}}}