{"version":3,"file":"Popover.cjs","sources":["../../../../src/components/Tooltip/Popover.tsx"],"sourcesContent":["import { FloatingArrow, arrow, autoUpdate, offset, useFloating, useTransitionStyles } from '@floating-ui/react';\nimport { useLayoutEffect, useRef } from 'react';\nimport * as React from 'react';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { getPositioningMiddleware } from '../../utils/floating';\nimport { getPlacement } from '../../utils/tooltipUtils';\nimport { Portal } from '../Portal/Portal';\n\nimport { PopoverContent, TooltipPlacement } from './types';\n\ninterface Props extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content'> {\n  show: boolean;\n  placement?: TooltipPlacement;\n  content: PopoverContent;\n  referenceElement: HTMLElement;\n  wrapperClassName?: string;\n  renderArrow?: boolean;\n  hidePopper?: () => void;\n  style?: React.CSSProperties;\n}\n\nexport function Popover({\n  content,\n  show,\n  placement,\n  className,\n  wrapperClassName,\n  referenceElement,\n  renderArrow,\n  hidePopper,\n  style: styleOverrides,\n  ...rest\n}: Props) {\n  const theme = useTheme2();\n  const arrowRef = useRef(null);\n  const floatingUIPlacement = getPlacement(placement);\n\n  // the order of middleware is important!\n  // `arrow` should almost always be at the end\n  // see https://floating-ui.com/docs/arrow#order\n  const middleware = [offset(8), ...getPositioningMiddleware(floatingUIPlacement)];\n\n  if (renderArrow) {\n    middleware.push(\n      arrow({\n        element: arrowRef,\n      })\n    );\n  }\n\n  const { context, refs, floatingStyles } = useFloating({\n    open: show,\n    placement: floatingUIPlacement,\n    middleware,\n    whileElementsMounted: autoUpdate,\n    strategy: 'fixed',\n  });\n\n  useLayoutEffect(() => {\n    refs.setReference(referenceElement);\n  }, [referenceElement, refs]);\n\n  const { styles: placementStyles } = useTransitionStyles(context, {\n    initial: () => ({\n      opacity: 0,\n    }),\n    duration: theme.transitions.duration.enteringScreen,\n  });\n\n  return show ? (\n    <Portal>\n      <div\n        ref={refs.setFloating}\n        style={{\n          ...floatingStyles,\n          ...placementStyles,\n          ...styleOverrides,\n        }}\n        className={wrapperClassName}\n        {...rest}\n      >\n        <div className={className}>\n          {renderArrow && <FloatingArrow fill={theme.colors.border.weak} ref={arrowRef} context={context} />}\n          {typeof content === 'string' && content}\n          {React.isValidElement(content) && React.cloneElement(content)}\n          {typeof content === 'function' && content({ hidePopper })}\n        </div>\n      </div>\n    </Portal>\n  ) : undefined;\n}\n"],"names":["useTheme2","useRef","getPlacement","offset","getPositioningMiddleware","arrow","useFloating","autoUpdate","useLayoutEffect","useTransitionStyles","Portal","jsx","jsxs","FloatingArrow","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,OAAA,CAAQ;AAAA,EACtB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA,EAAO,cAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAU;AACR,EAAA,MAAM,QAAQA,sBAAA,EAAU;AACxB,EAAA,MAAM,QAAA,GAAWC,aAAO,IAAI,CAAA;AAC5B,EAAA,MAAM,mBAAA,GAAsBC,0BAAa,SAAS,CAAA;AAKlD,EAAA,MAAM,UAAA,GAAa,CAACC,YAAA,CAAO,CAAC,GAAG,GAAGC,iCAAA,CAAyB,mBAAmB,CAAC,CAAA;AAE/E,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,UAAA,CAAW,IAAA;AAAA,MACTC,WAAA,CAAM;AAAA,QACJ,OAAA,EAAS;AAAA,OACV;AAAA,KACH;AAAA,EACF;AAEA,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,cAAA,KAAmBC,iBAAA,CAAY;AAAA,IACpD,IAAA,EAAM,IAAA;AAAA,IACN,SAAA,EAAW,mBAAA;AAAA,IACX,UAAA;AAAA,IACA,oBAAA,EAAsBC,gBAAA;AAAA,IACtB,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAAC,qBAAA,CAAgB,MAAM;AACpB,IAAA,IAAA,CAAK,aAAa,gBAAgB,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,gBAAA,EAAkB,IAAI,CAAC,CAAA;AAE3B,EAAA,MAAM,EAAE,MAAA,EAAQ,eAAA,EAAgB,GAAIC,0BAAoB,OAAA,EAAS;AAAA,IAC/D,SAAS,OAAO;AAAA,MACd,OAAA,EAAS;AAAA,KACX,CAAA;AAAA,IACA,QAAA,EAAU,KAAA,CAAM,WAAA,CAAY,QAAA,CAAS;AAAA,GACtC,CAAA;AAED,EAAA,OAAO,IAAA,kCACJC,aAAA,EAAA,EACC,QAAA,kBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,IAAA,CAAK,WAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,GAAG,cAAA;AAAA,QACH,GAAG,eAAA;AAAA,QACH,GAAG;AAAA,OACL;AAAA,MACA,SAAA,EAAW,gBAAA;AAAA,MACV,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAC,eAAA,CAAC,SAAI,SAAA,EACF,QAAA,EAAA;AAAA,QAAA,WAAA,oBAAeD,cAAA,CAACE,uBAAc,IAAA,EAAM,KAAA,CAAM,OAAO,MAAA,CAAO,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAkB,CAAA;AAAA,QAC/F,OAAO,YAAY,QAAA,IAAY,OAAA;AAAA,QAC/BC,iBAAM,cAAA,CAAe,OAAO,CAAA,IAAKA,gBAAA,CAAM,aAAa,OAAO,CAAA;AAAA,QAC3D,OAAO,OAAA,KAAY,UAAA,IAAc,OAAA,CAAQ,EAAE,YAAY;AAAA,OAAA,EAC1D;AAAA;AAAA,KAEJ,CAAA,GACE,KAAA,CAAA;AACN;;;;"}