primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ 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) • 10.2 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.tooltip=function(e,t,r,n,o,u){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var l=a(t),c=i(r);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s.apply(this,arguments)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function d(e,t){if("object"!==f(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==f(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function p(e){var t=d(e,"string");return"symbol"===f(t)?t:String(t)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function v(e){if(Array.isArray(e))return m(e)}function h(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function y(e,t){if(e){if("string"==typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}function g(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function b(e){if(Array.isArray(e))return e}function E(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,u,i,a=[],l=!0,c=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=u.call(r)).done)&&(a.push(n.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return a}}function w(){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 O(e,t){return b(e)||E(e,t)||y(e,t)||w()}var T={defaultProps:{__TYPE:"Tooltip",appendTo:null,at:null,autoHide:!0,autoZIndex:!0,baseZIndex:0,className:null,content:null,disabled:!1,event:null,hideDelay:0,hideEvent:"mouseleave",id:null,mouseTrack:!1,mouseTrackLeft:5,mouseTrackTop:5,my:null,onBeforeHide:null,onBeforeShow:null,onHide:null,onShow:null,position:"right",showDelay:0,showEvent:"mouseenter",showOnDisabled:!1,style:null,target:null,updateDelay:0,children:void 0},getProps:function(e){return u.ObjectUtils.getMergedProps(e,T.defaultProps)},getOtherProps:function(e){return u.ObjectUtils.getDiffProps(e,T.defaultProps)}},x=l.memo(l.forwardRef((function(e,t){var r=T.getProps(e),i=O(l.useState(!1),2),a=i[0],f=i[1],d=O(l.useState(r.position),2),m=d[0],b=d[1],E=O(l.useState(""),2),w=E[0],x=E[1],D=l.useRef(null),S=l.useRef(null),j=l.useRef(null),H=l.useRef(null),P=l.useRef(!0),I=l.useRef({}),k=l.useRef(null),A=O(n.useResizeListener({listener:function(e){!u.DomHandler.isTouchDevice()&&G(e)}}),2),C=A[0],L=A[1],U=O(n.useOverlayScrollListener({target:j.current,listener:function(e){G(e)},when:a}),2),N=U[0],R=U[1],Z=function(e){return B(e,"mousetrack")||r.mouseTrack},M=function(e){return"true"===B(e,"disabled")||F(e,"disabled")||r.disabled},W=function(e){return B(e,"showondisabled")||r.showOnDisabled},_=function(){return B(j.current,"autohide")||r.autoHide},B=function(e,t){return F(e,"data-pr-".concat(t))?e.getAttribute("data-pr-".concat(t)):null},F=function(e,t){return e&&e.hasAttribute(t)},z=function(e){var t=[B(e,"showevent")||r.showEvent],n=[B(e,"hideevent")||r.hideEvent];if(Z(e))t=["mousemove"],n=["mouseleave"];else{var o=B(e,"event")||r.event;"focus"===o&&(t=["focus"],n=["blur"]),"both"===o&&(t=["focus","mouseenter"],n=["blur","mouseleave"])}return{showEvents:t,hideEvents:n}},Y=function(e){return{top:B(e,"mousetracktop")||r.mouseTrackTop,left:B(e,"mousetrackleft")||r.mouseTrackLeft}},X=function(e,t){if(S.current){var n=B(e,"tooltip")||r.content;n?(S.current.innerHTML="",S.current.appendChild(document.createTextNode(n)),t()):r.children&&t()}},$=function(e){X(j.current,(function(){var t=k.current,n=t.pageX,o=t.pageY;r.autoZIndex&&!u.ZIndexUtils.get(D.current)&&u.ZIndexUtils.set("tooltip",D.current,c.default.autoZIndex,r.baseZIndex||c.default.zIndex.tooltip),D.current.style.left="",D.current.style.top="",_()&&(D.current.style.pointerEvents="none"),!Z(j.current)&&"mouse"!=e||H.current||(H.current={width:u.DomHandler.getOuterWidth(D.current),height:u.DomHandler.getOuterHeight(D.current)}),J(j.current,{x:n,y:o},e)}))},q=function(e){j.current=e.currentTarget;var t,n=M(j.current);(t=W(j.current)&&n?j.current.firstChild:j.current,!(r.content||B(t,"tooltip")||r.children))||n||(k.current=e,a?re("updateDelay",$):ne(r.onBeforeShow,{originalEvent:e,target:j.current})&&re("showDelay",(function(){f(!0),ne(r.onShow,{originalEvent:e,target:j.current})})))},G=function(e){(oe(),a)&&(ne(r.onBeforeHide,{originalEvent:e,target:j.current})&&re("hideDelay",(function(){(_()||!1!==P.current)&&(u.ZIndexUtils.clear(D.current),u.DomHandler.removeClass(D.current,"p-tooltip-active"),f(!1),ne(r.onHide,{originalEvent:e,target:j.current}))})))},J=function(e,t,n){var o=0,i=0,a=n||m;if((Z(e)||"mouse"==a)&&t){var l={width:u.DomHandler.getOuterWidth(D.current),height:u.DomHandler.getOuterHeight(D.current)};o=t.x,i=t.y;var c=Y(e),s=c.top,f=c.left;switch(a){case"left":o-=l.width+f,i-=l.height/2-s;break;case"right":case"mouse":o+=f,i-=l.height/2-s;break;case"top":o-=l.width/2-f,i-=l.height+s;break;case"bottom":o-=l.width/2-f,i+=s}o<=0||H.current.width>l.width?(D.current.style.left="0px",D.current.style.right=window.innerWidth-l.width-o+"px"):(D.current.style.right="",D.current.style.left=o+"px"),D.current.style.top=i+"px",u.DomHandler.addClass(D.current,"p-tooltip-active")}else{var d=u.DomHandler.findCollisionPosition(a),p=B(e,"my")||r.my||d.my,v=B(e,"at")||r.at||d.at;D.current.style.padding="0px",u.DomHandler.flipfitCollision(D.current,e,p,v,(function(e){var t=e.at,n=t.x,o=r.at?"center"!==n&&n!==e.my.x?n:t.y:e.at["".concat(d.axis)];D.current.style.padding="",b(o),K(o),u.DomHandler.addClass(D.current,"p-tooltip-active")}))}},K=function(e){if(D.current){var t=getComputedStyle(D.current);"left"===e?D.current.style.left=parseFloat(t.left)-2*parseFloat(t.paddingLeft)+"px":"top"===e&&(D.current.style.top=parseFloat(t.top)-2*parseFloat(t.paddingTop)+"px")}},Q=function(){_()||(P.current=!1)},V=function(e){_()||(P.current=!0,G(e))},ee=function(e){if(e){var t=z(e),r=t.showEvents,n=t.hideEvents,o=ue(e);r.forEach((function(e){return null==o?void 0:o.addEventListener(e,q)})),n.forEach((function(e){return null==o?void 0:o.addEventListener(e,G)}))}},te=function(e){if(e){var t=z(e),r=t.showEvents,n=t.hideEvents,o=ue(e);r.forEach((function(e){return null==o?void 0:o.removeEventListener(e,q)})),n.forEach((function(e){return null==o?void 0:o.removeEventListener(e,G)}))}},re=function(e,t){oe();var n=B(j.current,e.toLowerCase())||r[e];n?I.current["".concat(e)]=setTimeout((function(){return t()}),n):t()},ne=function(e){if(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=e.apply(void 0,r);return void 0===o&&(o=!0),o}return!0},oe=function(){Object.values(I.current).forEach((function(e){return clearTimeout(e)}))},ue=function(e){if(e){if(W(e)){if(e.hasWrapper)return e.parentElement;var t=document.createElement("span");return u.DomHandler.addClass(t,"p-tooltip-target-wrapper"),e.parentNode.insertBefore(t,e),t.appendChild(e),e.hasWrapper=!0,t}var r;return e.hasWrapper&&((r=e.parentElement).replaceWith.apply(r,v(n=e.parentElement.childNodes)||h(n)||y(n)||g()),delete e.hasWrapper),e}var n;return null},ie=function(e){le(e),ae(e)},ae=function(e){ce(e||r.target,ee)},le=function(e){ce(e||r.target,te)},ce=function(e,t){if(e=u.ObjectUtils.getRefElement(e))if(u.DomHandler.isElement(e))t(e);else{var r=function(e){u.DomHandler.find(document,e).forEach((function(e){t(e)}))};e instanceof Array?e.forEach((function(e){r(e)})):r(e)}};n.useMountEffect((function(){ae(),a&&j.current&&M(j.current)&&G()})),n.useUpdateEffect((function(){return ae(),function(){le()}}),[q,G,r.target]),n.useUpdateEffect((function(){if(a){var e=B(j.current,"position")||m,t=B(j.current,"classname");b(e),x(t),$(e),C(),N()}else b(r.position),x(""),j.current=null,H.current=null,P.current=!0;return function(){L(),R()}}),[a]),n.useUpdateEffect((function(){a&&re("updateDelay",(function(){X(j.current,(function(){J(j.current)}))}))}),[r.content]),n.useUnmountEffect((function(){oe(),le(),u.ZIndexUtils.clear(D.current)})),l.useImperativeHandle(t,(function(){return{props:r,updateTargetEvents:ie,loadTargetEvents:ae,unloadTargetEvents:le,show:q,hide:G,getElement:function(){return D.current},getTarget:function(){return j.current}}}));var se,fe,de,pe,me,ve,he;if(a){var ye=(me=T.getOtherProps(r),ve=u.classNames("p-tooltip p-component",(se={},fe="p-tooltip-".concat(m),de=!0,(fe=p(fe))in se?Object.defineProperty(se,fe,{value:de,enumerable:!0,configurable:!0,writable:!0}):se[fe]=de,se),r.className,w),pe=j.current,he=!(r.content||B(pe,"tooltip")),l.createElement("div",s({id:r.id,ref:D,className:ve,style:r.style,role:"tooltip","aria-hidden":a},me,{onMouseEnter:Q,onMouseLeave:V}),l.createElement("div",{className:"p-tooltip-arrow"}),l.createElement("div",{ref:S,className:"p-tooltip-text"},he&&r.children)));return l.createElement(o.Portal,{element:ye,appendTo:r.appendTo,visible:!0})}return null})));return x.displayName="Tooltip",e.Tooltip=x,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.hooks,primereact.portal,primereact.utils);