primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 7.04 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.contextmenu=function(e,t,n,r,o,l,u,a){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var s=c(t),m=i(n);function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e){if(Array.isArray(e))return e}function d(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l=[],u=!0,a=!1;try{for(n=n.call(e);!(u=(r=n.next()).done)&&(l.push(r.value),!t||l.length!==t);u=!0);}catch(e){a=!0,o=e}finally{try{u||null==n.return||n.return()}finally{if(a)throw o}}return l}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function y(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?b(e,t):void 0}}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function E(e,t){return p(e)||d(e,t)||y(e,t)||h()}var g=s.memo((function(e){var t=E(s.useState(null),2),n=t[0],l=t[1],i=s.useRef(null),c=e.root||!e.resetMenu;!0===e.resetMenu&&null!==n&&l(null);var m=function(e,t){t.disabled?e.preventDefault():l(t)},f=function(t,n){n.disabled?t.preventDefault():(n.url||t.preventDefault(),n.command&&n.command({originalEvent:t,item:n}),n.items||e.onLeafClick(t))},p=function(){var e=i.current.parentElement,t=u.DomHandler.getOffset(i.current.parentElement),n=u.DomHandler.getViewport(),r=i.current.offsetParent?i.current.offsetWidth:u.DomHandler.getHiddenElementOuterWidth(i.current),o=u.DomHandler.getOuterWidth(e.children[0]);i.current.style.top="0px",i.current.style.left=parseInt(t.left,10)+o+r>n.width-u.DomHandler.calculateScrollbarWidth()?-1*r+"px":o+"px"};o.useUpdateEffect((function(){c&&p()}));var d=function(e){return s.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},b=function(t){return t.items?s.createElement(g,{menuProps:e.menuProps,model:t.items,resetMenu:t!==n,onLeafClick:e.onLeafClick}):null},y=function(t,r){if(!1===t.visible)return null;var o=n===t,l=t.label+"_"+r,i=u.classNames("p-menuitem",{"p-menuitem-active":o},t.className),c=u.classNames("p-menuitem-link",{"p-disabled":t.disabled}),p=u.classNames("p-menuitem-icon",t.icon),d="p-submenu-icon pi pi-angle-right",y=u.IconUtils.getJSXIcon(t.icon,{className:"p-menuitem-icon"},{props:e.menuProps}),h=t.label&&s.createElement("span",{className:"p-menuitem-text"},t.label),E=t.items&&s.createElement("span",{className:d}),g=b(t),v=s.createElement("a",{href:t.url||"#",className:c,target:t.target,onClick:function(e){return f(e,t)},role:"menuitem","aria-haspopup":null!=t.items,"aria-disabled":t.disabled},y,h,E,s.createElement(a.Ripple,null));t.template&&(v=u.ObjectUtils.getJSXElement(t.template,t,{onClick:function(e){return f(e,t)},className:c,labelClassName:"p-menuitem-text",iconClassName:p,submenuIconClassName:d,element:v,props:e,active:o}));return s.createElement("li",{key:l,role:"none",id:t.id,className:i,style:t.style,onMouseEnter:function(e){return m(e,t)}},v,g)},h=function(e,t){return e.separator?d(t):y(e,t)},v=u.classNames({"p-submenu-list":!e.root}),x=e.model?e.model.map(h):null;return s.createElement(r.CSSTransition,{nodeRef:i,classNames:"p-contextmenusub",in:c,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){p()}},s.createElement("ul",{ref:i,className:v},x))}));g.displayName="ContextMenuSub";var v=s.memo(s.forwardRef((function(e,t){var n=E(s.useState(!1),2),a=n[0],i=n[1],c=E(s.useState(!1),2),p=c[0],d=c[1],b=E(s.useState(!1),2),y=b[0],h=b[1],x=s.useRef(null),N=s.useRef(null),O=E(o.useEventListener({type:"click",listener:function(e){A(e)&&2!==e.button&&(k(e),h(!0))}}),2),S=O[0],H=O[1],I=E(o.useEventListener({type:"contextmenu",listener:function(e){M(e)}}),1)[0],C=E(o.useResizeListener({listener:function(e){a&&!u.DomHandler.isTouchDevice()&&k(e)}}),2),P=C[0],D=C[1],j=function(){h(!1)},w=function(){h(!1)},M=function(t){t.stopPropagation(),t.preventDefault(),N.current=t,a?d(!0):(i(!0),e.onShow&&e.onShow(N.current))},k=function(t){N.current=t,i(!1),d(!1),e.onHide&&e.onHide(N.current)},T=function(){e.autoZIndex&&u.ZIndexUtils.set("menu",x.current,m.default.autoZIndex,e.baseZIndex||m.default.zIndex.menu),Z(N.current)},U=function(){W()},L=function(){z(),u.ZIndexUtils.clear(x.current)},R=function(){u.ZIndexUtils.clear(x.current)},Z=function(e){if(e){var t=e.pageX+1,n=e.pageY+1,r=x.current.offsetParent?x.current.offsetWidth:u.DomHandler.getHiddenElementOuterWidth(x.current),o=x.current.offsetParent?x.current.offsetHeight:u.DomHandler.getHiddenElementOuterHeight(x.current),l=u.DomHandler.getViewport();t+r-document.body.scrollLeft>l.width&&(t-=r),n+o-document.body.scrollTop>l.height&&(n-=o),t<document.body.scrollLeft&&(t=document.body.scrollLeft),n<document.body.scrollTop&&(n=document.body.scrollTop),x.current.style.left=t+"px",x.current.style.top=n+"px"}},_=function(e){h(!0),k(e),e.stopPropagation()},A=function(e){return x&&x.current&&!(x.current.isSameNode(e.target)||x.current.contains(e.target))},W=function(){P(),S()},z=function(){D(),H()};o.useMountEffect((function(){e.global&&I()})),o.useUpdateEffect((function(){a?(i(!1),d(!1),h(!0)):p||a||!y||M(N.current)}),[p]),o.useUnmountEffect((function(){u.ZIndexUtils.clear(x.current)})),s.useImperativeHandle(t,(function(){return{props:e,show:M,hide:k,getElement:function(){return x.current}}}));var X,J,V=(X=u.ObjectUtils.findDiffKeys(e,v.defaultProps),J=u.classNames("p-contextmenu p-component",e.className),s.createElement(r.CSSTransition,{nodeRef:x,classNames:"p-contextmenu",in:a,timeout:{enter:250,exit:0},options:e.transitionOptions,unmountOnExit:!0,onEnter:T,onEntered:U,onExit:L,onExited:R},s.createElement("div",f({ref:x,id:e.id,className:J,style:e.style},X,{onClick:j,onMouseEnter:w}),s.createElement(g,{menuProps:e,model:e.model,root:!0,resetMenu:y,onLeafClick:_}))));return s.createElement(l.Portal,{element:V,appendTo:e.appendTo})})));return v.displayName="ContextMenu",v.defaultProps={__TYPE:"ContextMenu",id:null,model:null,style:null,className:null,global:!1,autoZIndex:!0,baseZIndex:0,appendTo:null,transitionOptions:null,onShow:null,onHide:null},e.ContextMenu=v,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.csstransition,primereact.hooks,primereact.portal,primereact.utils,primereact.ripple);