UNPKG

@chief-editor/ui

Version:

UI Component for chief editor

1 lines 3.83 kB
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var o,r=1,t=arguments.length;r<t;r++)for(var n in o=arguments[r])Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n]);return e}).apply(this,arguments)},__rest=this&&this.__rest||function(e,o){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(r[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(t=Object.getOwnPropertySymbols(e);n<t.length;n++)o.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]])}return r};import{classnames}from"@co-hooks/util";import{useCSSEnterLeave}from"@rc-hooks/animation";import{getZIndex}from"@rc-hooks/dom";import{RcPortal}from"@rc-hooks/portal";import{touchReverse,usePopover}from"@rc-hooks/popper";import React,{useCallback,useMemo,useRef,useState}from"react";import{usePrefixCls}from"../../hooks/usePrefixCls";export function PopoverWrapper(e){var o,r=e.afterClose,t=e.className,n=e.getArrow,s=e.getPopper,a=e.hideToDestroy,i=e.lazyInit,l=e.zIndex,p=e.show,u=void 0!==p&&p,c=e.placement,f=void 0===c?"bottom-start":c,v=e.scaleAnimation,d=void 0===v?"xy":v,m=e.popoverId,h=e.singleGroupId,w=e.offset,g=e.preventOverflow,y=e.overflowBoundaries,P=e.arrow,I=e.arrowOffset,b=e.onShow,S=e.onHide,C=e.captureOptions,O=void 0===C?{}:C,R=e.refType,_=e.refId,x=e.triggerIds,k=e.unionPopoverIds,E=e.onVisibleChange,T=e.wrapperClassName,j=e.disableAnimation,A=__rest(e,["afterClose","className","getArrow","getPopper","hideToDestroy","lazyInit","zIndex","show","placement","scaleAnimation","popoverId","singleGroupId","offset","preventOverflow","overflowBoundaries","arrow","arrowOffset","onShow","onHide","captureOptions","refType","refId","triggerIds","unionPopoverIds","onVisibleChange","wrapperClassName","disableAnimation"]),M=useRef(null!=l?l:1),N=useRef(u||!i),z=useState(!1),B=z[0],L=z[1],D=useRef(null),G=useRef(null),H=useRef(null),V=useRef(null),F=usePopover({popoverId:m,singleGroupId:h,offset:w,preventOverflow:g,overflowBoundaries:y,arrow:P,arrowOffset:I,onShow:b,onHide:S,captureOptions:O,refType:R,refId:_,triggerIds:x,unionPopoverIds:k,onVisibleChange:E,arrowRef:D,show:u,popoverRef:H,placement:f}),Z=F.popover,W=F.touch,X=useCallback((function(){Z.onPopperMouseEnter()}),[]),Y=useCallback((function(){Z.onPopperMouseLeave()}),[]),q=useCallback((function(){Z.onPopperFocus()}),[]),J=useCallback((function(){Z.onPopperBlur()}),[]),K=Z.getPopoverStyle();!Z.isShow()&&"0px"===K.left&&"0px"===K.top&&V.current||(V.current=K);var Q=useMemo((function(){var e=f.split("-"),o=["top","bottom"].includes(e[0])?W.touchY:W.touchX;return e[0]=o?touchReverse[e[0]]:e[0],e.join("-")}),[f,W]),U=usePrefixCls("popover-inner"),$=usePrefixCls("popover-wrapper"),ee=usePrefixCls("popover",((o={scale:d})[Q]=!0,o.show=Z.isShow()&&B,o["disable-animation"]=!0===j,o));if(useCSSEnterLeave(H,{type:"transition",show:Z.isShow(),validTarget:G,validProperty:"transform",enter:{onStart:function(){Z.isShow()&&!B&&L(!0)}},leave:{onEnd:function(){!Z.isShow()&&B&&(N.current=!a&&N.current,L(!1),null==r||r())}}}),useMemo((function(){Z.isShow()&&(N.current=!0,M.current=null!=l?l:getZIndex())}),[Z.isShow(),l]),!N.current)return null;var oe=B&&!j||Z.isShow()?void 0:"none";return React.createElement(RcPortal,null,React.createElement("div",{ref:H,className:classnames($,T),onBlurCapture:J,onMouseLeave:Y,onMouseEnter:X,onFocusCapture:q,"data-rc-id":"popover___"+Z.getId(),style:__assign({display:oe,position:"absolute",zIndex:M.current},Z.getPopoverStyle())},React.createElement("div",__assign({},A,{className:classnames(ee,t),ref:G}),Z.arrow&&n&&React.createElement("span",{style:Z.getArrowStyle(),ref:D},n(Z.arrowInfo,W)),React.createElement("div",{className:U},"function"==typeof s?s(Z.getLastTrigger()?Z.getTriggerData():null):s))))}