UNPKG

monday-ui-react-core

Version:

Official monday.com UI resources for application development in React.js

3 lines (2 loc) 1.14 kB
import n,{useMemo as o,useContext as r,useCallback as i}from"react";import e from"../../hooks/useEventListener/index.js";import{useLastNavigationDirection as t}from"../Menu/Menu/hooks/useLastNavigationDirection.js";import{getDirectionMaps as u,getOppositeDirection as a,getOutmostElementInDirection as l,getNextElementToFocusInDirection as d}from"./helper.js";var s=n.createContext(null),v=function(n,v){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{disabled:!1},f=o((function(){return u(n)}),[n]),b=r(s),m=t().lastNavigationDirectionRef,p=i((function(){var n,o=m.current;if(o&&!c.disabled){var r=a(o),i=l(f,r);null===(n=null==i?void 0:i.current)||void 0===n||n.focus()}}),[f,c.disabled,m]);return e({eventName:"focus",callback:p,ref:v}),{onOutboundNavigation:i((function(n,o){var r,i;if(!c.disabled){var e=d(f[o],n);if(e)return null===(r=n.current)||void 0===r||r.blur(),void(null===(i=e.current)||void 0===i||i.focus());null==b||b.onOutboundNavigation(v,o)}}),[f,b,v,c.disabled])}};export{s as GridKeyboardNavigationContext,v as useGridKeyboardNavigationContext}; //# sourceMappingURL=GridKeyboardNavigationContext.js.map