UNPKG

@chief-editor/ui

Version:

UI Component for chief editor

1 lines 905 B
import{useElementPosition}from"@rc-hooks/dom";import{useEffect,useState}from"react";import{useLockScreen}from"../../common/dom";export var useContextMenu=function(e){var t=e.triggerArea,n=e.show,o=e.onContextMenu,r=useState(),u=r[0],c=r[1],i=useLockScreen(),f=i.lockScreen,s=i.unlockScreen;useEffect((function(){return n?f():s(),s}),[n]),useEffect((function(){var e,n=function(e){var t=e.clientX,n=e.clientY;e.preventDefault(),c({top:n+"px",left:t+"px",position:"absolute"}),null==o||o(e)};return null===(e=t.current)||void 0===e||e.addEventListener("contextmenu",n),function(){var e;return null===(e=t.current)||void 0===e?void 0:e.removeEventListener("contextmenu",n)}}),[]);var l=useState({x:0,y:0}),a=l[0],m=l[1];return useElementPosition(t,(function(){return!0}),(function(e){var t=e.top,n=e.left,o=e.height;return m({x:4-n,y:0-t-o})}),{disabledCaptureContainerScroll:!0}),{popoverStyle:u,offset:a}};