UNPKG

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
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/api"),n=require("primereact/csstransition"),r=require("primereact/hooks"),o=require("primereact/portal"),u=require("primereact/utils"),l=require("primereact/ripple");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(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 c=i(e),s=a(t);function m(){return m=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},m.apply(this,arguments)}function f(e){if(Array.isArray(e))return e}function p(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,u=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(r=n.next()).done)&&(u.push(r.value),!t||u.length!==t);l=!0);}catch(e){a=!0,o=e}finally{try{l||null==n.return||n.return()}finally{if(a)throw o}}return u}}function d(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 b(e,t){if(e){if("string"==typeof e)return d(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)?d(e,t):void 0}}function y(){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 v(e,t){return f(e)||p(e,t)||b(e,t)||y()}var E=c.memo((function(e){var t=v(c.useState(null),2),o=t[0],a=t[1],i=c.useRef(null),s=e.root||!e.resetMenu;!0===e.resetMenu&&null!==o&&a(null);var m=function(e,t){t.disabled?e.preventDefault():a(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"};r.useUpdateEffect((function(){s&&p()}));var d=function(e){return c.createElement("li",{key:"separator_"+e,className:"p-menu-separator",role:"separator"})},b=function(t){return t.items?c.createElement(E,{menuProps:e.menuProps,model:t.items,resetMenu:t!==o,onLeafClick:e.onLeafClick}):null},y=function(t,n){if(!1===t.visible)return null;var r=o===t,a=t.label+"_"+n,i=u.classNames("p-menuitem",{"p-menuitem-active":r},t.className),s=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}),v=t.label&&c.createElement("span",{className:"p-menuitem-text"},t.label),E=t.items&&c.createElement("span",{className:d}),g=b(t),h=c.createElement("a",{href:t.url||"#",className:s,target:t.target,onClick:function(e){return f(e,t)},role:"menuitem","aria-haspopup":null!=t.items,"aria-disabled":t.disabled},y,v,E,c.createElement(l.Ripple,null));t.template&&(h=u.ObjectUtils.getJSXElement(t.template,t,{onClick:function(e){return f(e,t)},className:s,labelClassName:"p-menuitem-text",iconClassName:p,submenuIconClassName:d,element:h,props:e,active:r}));return c.createElement("li",{key:a,role:"none",id:t.id,className:i,style:t.style,onMouseEnter:function(e){return m(e,t)}},h,g)},g=function(e,t){return e.separator?d(t):y(e,t)},h=u.classNames({"p-submenu-list":!e.root}),x=e.model?e.model.map(g):null;return c.createElement(n.CSSTransition,{nodeRef:i,classNames:"p-contextmenusub",in:s,timeout:{enter:0,exit:0},unmountOnExit:!0,onEnter:function(){p()}},c.createElement("ul",{ref:i,className:h},x))}));E.displayName="ContextMenuSub";var g=c.memo(c.forwardRef((function(e,t){var l=v(c.useState(!1),2),a=l[0],i=l[1],f=v(c.useState(!1),2),p=f[0],d=f[1],b=v(c.useState(!1),2),y=b[0],h=b[1],x=c.useRef(null),N=c.useRef(null),O=v(r.useEventListener({type:"click",listener:function(e){q(e)&&2!==e.button&&(k(e),h(!0))}}),2),S=O[0],H=O[1],I=v(r.useEventListener({type:"contextmenu",listener:function(e){M(e)}}),1)[0],C=v(r.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,s.default.autoZIndex,e.baseZIndex||s.default.zIndex.menu),R(N.current)},U=function(){A()},L=function(){W(),u.ZIndexUtils.clear(x.current)},Z=function(){u.ZIndexUtils.clear(x.current)},R=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()},q=function(e){return x&&x.current&&!(x.current.isSameNode(e.target)||x.current.contains(e.target))},A=function(){P(),S()},W=function(){D(),H()};r.useMountEffect((function(){e.global&&I()})),r.useUpdateEffect((function(){a?(i(!1),d(!1),h(!0)):p||a||!y||M(N.current)}),[p]),r.useUnmountEffect((function(){u.ZIndexUtils.clear(x.current)})),c.useImperativeHandle(t,(function(){return{props:e,show:M,hide:k,getElement:function(){return x.current}}}));var z,X,J=(z=u.ObjectUtils.findDiffKeys(e,g.defaultProps),X=u.classNames("p-contextmenu p-component",e.className),c.createElement(n.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:Z},c.createElement("div",m({ref:x,id:e.id,className:X,style:e.style},z,{onClick:j,onMouseEnter:w}),c.createElement(E,{menuProps:e,model:e.model,root:!0,resetMenu:y,onLeafClick:_}))));return c.createElement(o.Portal,{element:J,appendTo:e.appendTo})})));g.displayName="ContextMenu",g.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},exports.ContextMenu=g;