UNPKG

monday-ui-react-core

Version:

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

3 lines (2 loc) 1.56 kB
import{slicedToArray as e}from"../../../../../_virtual/_rollupPluginBabelHelpers.js";import n,{useContext as o,createContext as r,useRef as u,useState as t,useCallback as i,useMemo as l}from"react";var c=r(void 0),d=function(o){var r=o.value,d=o.children,v=r.tableRootRef,a=r.hoveredRowRef,s=r.isMenuOpen,f=r.resetHoveredRow,R=r.setHoveredRowRef,w=r.setIsMenuOpen,m=u(null),M=t(0),p=e(M,2),T=p[0],b=p[1],h=u(null),g=i((function(){clearTimeout(m.current),m.current=null}),[]),H=i((function(e){if(!1!==h.current&&!s&&(null==a?void 0:a.current)!==e.current){g(),R(e);var n=v.current.getBoundingClientRect().top,o=e.current.getBoundingClientRect().top;b(o-n),null===h.current&&setTimeout((function(){h.current=!!(null===document||void 0===document?void 0:document.querySelector("[data-row-menu-id]"))}))}}),[s,a,g,R,v]),B=i((function(){s||(m.current=setTimeout((function(){R(null)}),400))}),[s,R]),O=i((function(){s||g()}),[s,g]),P=i((function(){s||R(null)}),[s,R]),C=l((function(){var e;return{hoveredRowId:null===(e=null==a?void 0:a.current)||void 0===e?void 0:e.id,resetHoveredRow:f,menuButtonPosition:T,onMouseOverRow:H,onMouseLeaveRow:B,onMouseOverRowMenu:O,onMouseLeaveRowMenu:P,setTableMenuShown:function(){return w(!0)},setTableMenuHidden:function(){return w(!1)}}}),[a,f,T,B,P,H,O,w]);return n.createElement(c.Provider,{value:C},d)},v=function(){var e=o(c);if(!e)throw Error("useTableRowMenuContext must be used within a TableRowMenuProvider");return e};export{d as TableRowMenuProvider,v as useTableRowMenu}; //# sourceMappingURL=TableRowMenuContext.js.map