You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
8.4 KiB

2 years ago
import{createPortal as t}from"react-dom";import e,{forwardRef as r,useRef as o,useMemo as n,useCallback as i,useEffect as a,cloneElement as l,isValidElement as c}from"react";function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,o)}return r}function f(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){s(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function s(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function d(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==r)return;var o,n,i=[],a=!0,l=!1;try{for(r=r.call(t);!(a=(o=r.next()).done)&&(i.push(o.value),!e||i.length!==e);a=!0);}catch(t){l=!0,n=t}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return i}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return p(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(t,e)}(t,e)||function(){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 p(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function h(r,u){var s=r.element,d=r.popper,p=r.position,h=void 0===p?"bottom-center":p,m=r.containerStyle,b=r.containerClassName,g=void 0===b?"":b,y=r.arrow,w=r.arrowStyle,O=void 0===w?{}:w,x=r.arrowClassName,P=void 0===x?"":x,E=r.fixMainPosition,j=r.fixRelativePosition,M=r.offsetY,S=r.offsetX,N=r.animations,T=r.zIndex,C=void 0===T?0:T,L=r.popperShadow,A=r.onChange,z=r.active,I=void 0===z||z,X=r.portal,H=r.portalTarget,Y="undefined"!=typeof window,D=Y&&H instanceof HTMLElement,R=!0===y,W=d&&!0===I,k=o(),F=o(),J=o(),V=o(),B=n((function(){return{position:h,fixMainPosition:E,fixRelativePosition:j,offsetY:M,offsetX:S,defaultArrow:R,animations:N,zIndex:C,onChange:A}}),[h,E,j,M,S,R,N,A,C]),U=i((function(){J.current&&(J.current.style.transition=""),F.current&&(F.current.parentNode.style.transition="")}),[]),$={element:f({display:"inline-block",height:"max-content"},m),arrow:f({visibility:"hidden",left:"0",top:"0",position:"absolute"},O),popper:{position:"absolute",left:"0",top:"0",willChange:"transform",visibility:"hidden",zIndex:C}};Y&&!V.current&&(V.current=document.createElement("div"),V.current.data={portal:X,isValidPortalTarget:D}),a((function(){if(X&&!D){var t=V.current;return document.body.appendChild(t),function(){return document.body.removeChild(t)}}}),[X,D]),a((function(){if(!W)return U(),F.current.parentNode.style.visibility="hidden",void(J.current&&(J.current.style.visibility="hidden"));function t(t){t&&"resize"!==t.type&&!t.target.contains(k.current)||(t&&U(),v(k,F,J,B,t))}return t(),document.addEventListener("scroll",t,!0),window.addEventListener("resize",t),function(){document.removeEventListener("scroll",t,!0),window.removeEventListener("resize",t)}}),[W,B,U]),a((function(){var t={portal:X,isValidPortalTarget:D},e=V.current.data;JSON.stringify(t)!==JSON.stringify(e)&&(V.current.data=t,k.current.refreshPosition())}),[X,D]);var q=e.createElement(e.Fragment,null,function(){if(!y||!W)return null;var t=e.createElement("div",{ref:J,style:$.arrow}),r=c(y)?{children:y}:{className:"ep-arrow ".concat(L?"ep-shadow":""," ").concat(P)};return l(t,r)}(),e.createElement("div",{className:L?"ep-popper-shadow":"",style:$.popper},e.createElement("div",{ref:F},d)));return e.createElement("div",{ref:function(t){t&&(t.remov