monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
3 lines (2 loc) • 1.32 kB
JavaScript
import{NavDirections as n}from"../useFullKeyboardListeners.js";function e(e){var t=e.direction,r=e.numberOfItemsInLine,i=e.itemsCount,u=function(){var e=Math.floor(r/2);if(t===n.UP)return(Math.ceil(i/r)-1)*r+e;if(t===n.DOWN)return e;if(t===n.LEFT){for(var u=r-1,o=Math.floor((i-1)/2);o>u;)u+=r;return u}if(t===n.RIGHT){for(var s=0,a=Math.floor((i-1)/2);a>s+r;)s+=r;return s}}();return Math.max(0,Math.min(u,i-1))}function t(e){var t=e.activeIndex,r=e.itemsCount,i=e.numberOfItemsInLine,u=function(n){return Math.ceil((n+1)/i)},o=function(n){var e=t+(n?1:-1);return 0>e||e>=r||u(t)!==u(e)?{isOutbound:!0}:{isOutbound:!1,nextIndex:e}},s=function(n){var e=t+i*(n?1:-1);return 0>e||e>=r?{isOutbound:!0}:{isOutbound:!1,nextIndex:e}};switch(e.direction){case n.RIGHT:return o(!0);case n.LEFT:return o(!1);case n.DOWN:return s(!0);case n.UP:return s(!1)}}function r(n){for(var e=n.itemsCount,r=n.numberOfItemsInLine,i=n.direction,u=n.disabledIndexes,o=void 0===u?[]:u,s=t({activeIndex:n.activeIndex,itemsCount:e,numberOfItemsInLine:r,direction:i});!s.isOutbound&&o.includes(s.nextIndex);)s=t({activeIndex:s.nextIndex,itemsCount:e,numberOfItemsInLine:r,direction:i});return s}export{r as calcActiveIndexAfterArrowNavigation,e as getActiveIndexFromInboundNavigation};
//# sourceMappingURL=gridKeyboardNavigationHelper.js.map