{"version":3,"file":"PopoverController.cjs","sources":["../../../../src/components/Tooltip/PopoverController.tsx"],"sourcesContent":["import { Placement } from '@popperjs/core';\nimport { useState, useRef, useCallback, type JSX } from 'react';\n\nimport { PopoverContent } from './types';\n\ntype PopperControllerRenderProp = (\n  showPopper: () => void,\n  hidePopper: () => void,\n  popperProps: {\n    show: boolean;\n    placement: Placement;\n    content: PopoverContent;\n  }\n) => JSX.Element;\n\ninterface Props {\n  placement?: Placement;\n  content: PopoverContent;\n  className?: string;\n  children: PopperControllerRenderProp;\n  hideAfter?: number;\n}\n\nconst PopoverController = ({ placement = 'auto', content, children, hideAfter }: Props) => {\n  const [show, setShow] = useState(false);\n  const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n  const showPopper = useCallback(() => {\n    if (hideTimeoutRef.current) {\n      clearTimeout(hideTimeoutRef.current);\n    }\n    setShow(true);\n  }, []);\n\n  const hidePopper = useCallback(() => {\n    hideTimeoutRef.current = setTimeout(() => {\n      setShow(false);\n    }, hideAfter);\n  }, [hideAfter]);\n\n  return children(showPopper, hidePopper, {\n    show,\n    placement,\n    content,\n  });\n};\n\nexport { PopoverController };\n"],"names":["useState","useRef","useCallback"],"mappings":";;;;;;;AAuBA,MAAM,iBAAA,GAAoB,CAAC,EAAE,SAAA,GAAY,QAAQ,OAAA,EAAS,QAAA,EAAU,WAAU,KAAa;AACzF,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,cAAA,GAAiBC,aAA6C,IAAI,CAAA;AAExE,EAAA,MAAM,UAAA,GAAaC,kBAAY,MAAM;AACnC,IAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,MAAA,YAAA,CAAa,eAAe,OAAO,CAAA;AAAA,IACrC;AACA,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAaA,kBAAY,MAAM;AACnC,IAAA,cAAA,CAAe,OAAA,GAAU,WAAW,MAAM;AACxC,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,GAAG,SAAS,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,OAAO,QAAA,CAAS,YAAY,UAAA,EAAY;AAAA,IACtC,IAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}