@chief-editor/ui
Version:
UI Component for chief editor
1 lines • 980 B
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var dom_1=require("@rc-hooks/dom"),react_1=require("react"),dom_2=require("../../common/dom");exports.useContextMenu=function(e){var t=e.triggerArea,r=e.show,n=e.onContextMenu,o=react_1.useState(),u=o[0],c=o[1],i=dom_2.useLockScreen(),a=i.lockScreen,l=i.unlockScreen;react_1.useEffect((function(){return r?a():l(),l}),[r]),react_1.useEffect((function(){var e,r=function(e){var t=e.clientX,r=e.clientY;e.preventDefault(),c({top:r+"px",left:t+"px",position:"absolute"}),null==n||n(e)};return null===(e=t.current)||void 0===e||e.addEventListener("contextmenu",r),function(){var e;return null===(e=t.current)||void 0===e?void 0:e.removeEventListener("contextmenu",r)}}),[]);var s=react_1.useState({x:0,y:0}),f=s[0],v=s[1];return dom_1.useElementPosition(t,(function(){return!0}),(function(e){var t=e.top,r=e.left,n=e.height;return v({x:4-r,y:0-t-n})}),{disabledCaptureContainerScroll:!0}),{popoverStyle:u,offset:f}};