{"version":3,"file":"PopoverRoot.mjs","sources":["../../../packages/popover/PopoverRoot.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from 'react'\nimport ReactDOM from 'react-dom'\nimport { modalRoot } from '../utils/index.js'\nimport { useMergeRefs, useOutsideClick, useEscape } from '../hooks/index.js'\nimport { withTransition } from '../transition/index.js'\nimport { usePopoverPosition } from './usePopoverPosition.js'\nimport { PopoverWrapperStyle, PopoverRootStyle } from './PopoverRootStyles.js'\nimport { PopoverRootInnerProps } from './types.js'\nimport { DEFAULT_PLACEMENT } from './constants.js'\n\nexport const PopoverRoot = withTransition(\n  // eslint-disable-next-line react/display-name\n  forwardRef(\n    (\n      {\n        anchorRef,\n        wrapperRef: externalWrapperRef,\n        placement = DEFAULT_PLACEMENT,\n        backdrop = true,\n        transitionStatus,\n        duration,\n        style: propsStyle,\n        onClose,\n        ...rest\n      }: PopoverRootInnerProps,\n      externalRef?: ForwardedRef<HTMLDivElement>,\n    ) => {\n      useEscape(onClose)\n      const { ref: outsidePopoverRef } = useOutsideClick(onClose)\n\n      const {\n        popoverRef: positionPopoverRef,\n        wrapperRef: positionWrapperRef,\n        style,\n      } = usePopoverPosition({ placement, anchorRef, style: propsStyle })\n\n      const popoverRef = useMergeRefs([\n        positionPopoverRef,\n        outsidePopoverRef,\n        externalRef,\n      ])\n\n      const wrapperRef = useMergeRefs([positionWrapperRef, externalWrapperRef])\n\n      if (!modalRoot) return null\n\n      return ReactDOM.createPortal(\n        <PopoverWrapperStyle $backdrop={backdrop} ref={wrapperRef}>\n          <PopoverRootStyle\n            {...rest}\n            $transition={transitionStatus}\n            $duration={duration}\n            data-placement={placement}\n            style={style}\n            ref={popoverRef}\n          />\n        </PopoverWrapperStyle>,\n        modalRoot,\n      )\n    },\n  ),\n)\nPopoverRoot.displayName = 'PopoverRoot'\n"],"names":["PopoverRoot","withTransition","forwardRef","_ref","externalRef","anchorRef","wrapperRef","externalWrapperRef","placement","DEFAULT_PLACEMENT","backdrop","transitionStatus","duration","style","propsStyle","onClose","rest","useEscape","ref","outsidePopoverRef","useOutsideClick","popoverRef","positionPopoverRef","positionWrapperRef","usePopoverPosition","useMergeRefs","modalRoot","ReactDOM","createPortal","_jsx","PopoverWrapperStyle","$backdrop","children","PopoverRootStyle","$transition","$duration","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUO,MAAMA,WAAW,GAAGC,cAAc;AAAA;AACvC;AACAC,UAAU,CACR,CAAAC,IAAA,EAYEC,WAA0C,KACvC;EAAA,IAZH;IACEC,SAAS;AACTC,IAAAA,UAAU,EAAEC,kBAAkB;AAC9BC,IAAAA,SAAS,GAAGC,iBAAiB;AAC7BC,IAAAA,QAAQ,GAAG,IAAI;IACfC,gBAAgB;IAChBC,QAAQ;AACRC,IAAAA,KAAK,EAAEC,UAAU;IACjBC,OAAO;IACP,GAAGC,IAAAA;AACkB,GAAC,GAAAb,IAAA,CAAA;EAGxBc,SAAS,CAACF,OAAO,CAAC,CAAA;EAClB,MAAM;AAAEG,IAAAA,GAAG,EAAEC,iBAAAA;AAAkB,GAAC,GAAGC,eAAe,CAACL,OAAO,CAAC,CAAA;EAE3D,MAAM;AACJM,IAAAA,UAAU,EAAEC,kBAAkB;AAC9BhB,IAAAA,UAAU,EAAEiB,kBAAkB;AAC9BV,IAAAA,KAAAA;GACD,GAAGW,kBAAkB,CAAC;IAAEhB,SAAS;IAAEH,SAAS;AAAEQ,IAAAA,KAAK,EAAEC,UAAAA;AAAW,GAAC,CAAC,CAAA;EAEnE,MAAMO,UAAU,GAAGI,YAAY,CAAC,CAC9BH,kBAAkB,EAClBH,iBAAiB,EACjBf,WAAW,CACZ,CAAC,CAAA;EAEF,MAAME,UAAU,GAAGmB,YAAY,CAAC,CAACF,kBAAkB,EAAEhB,kBAAkB,CAAC,CAAC,CAAA;AAEzE,EAAA,IAAI,CAACmB,SAAS,EAAE,OAAO,IAAI,CAAA;AAE3B,EAAA,oBAAOC,QAAQ,CAACC,YAAY,cAC1BC,GAAA,CAACC,mBAAmB,EAAA;AAACC,IAAAA,SAAS,EAAErB,QAAS;AAACQ,IAAAA,GAAG,EAAEZ,UAAW;IAAA0B,QAAA,eACxDH,GAAA,CAACI,gBAAgB,EAAA;AAAA,MAAA,GACXjB,IAAI;AACRkB,MAAAA,WAAW,EAAEvB,gBAAiB;AAC9BwB,MAAAA,SAAS,EAAEvB,QAAS;AACpB,MAAA,gBAAA,EAAgBJ,SAAU;AAC1BK,MAAAA,KAAK,EAAEA,KAAM;AACbK,MAAAA,GAAG,EAAEG,UAAAA;KACN,CAAA;GACkB,CAAC,EACtBK,SACF,CAAC,CAAA;AACH,CACF,CACF,EAAC;AACD1B,WAAW,CAACoC,WAAW,GAAG,aAAa;;;;"}