{"version":3,"file":"Tooltip.mjs","sources":["../../../packages/tooltip/Tooltip.tsx"],"sourcesContent":["import {\n  ForwardedRef,\n  forwardRef,\n  Children,\n  useRef,\n  cloneElement,\n  useState,\n  MouseEvent,\n} from 'react'\nimport { isElement } from 'react-is'\nimport { TooltipPopoverStyle } from './TooltipStyles.js'\nimport { useMergeRefs } from '../hooks/index.js'\nimport { TooltipProps } from './types.js'\n\nconst BODY_PERSISTENT_TIMEOUT = 150\n\nexport const Tooltip = forwardRef(\n  (\n    { title, children, ...rest }: TooltipProps,\n    ref?: ForwardedRef<HTMLDivElement>,\n  ) => {\n    const [state, setState] = useState(false)\n    const keepTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n    const child = Children.only(children)\n    if (!isElement(child)) throw new Error('Child must be a React element')\n\n    const anchorRef = useRef<HTMLElement>(null)\n    const mergedRef = useMergeRefs([child.ref, anchorRef])\n\n    const handleMouseEnter = () => {\n      if (keepTimeoutRef.current) {\n        clearTimeout(keepTimeoutRef.current)\n        keepTimeoutRef.current = null\n      }\n      setState(true)\n    }\n\n    const handleMouseLeave = () => {\n      keepTimeoutRef.current = setTimeout(() => {\n        setState(false)\n        keepTimeoutRef.current = null\n      }, BODY_PERSISTENT_TIMEOUT)\n    }\n\n    return (\n      <>\n        {cloneElement(child, {\n          ref: mergedRef,\n          onMouseEnter(event: MouseEvent<HTMLElement>) {\n            handleMouseEnter()\n            child.props.onMouseEnter?.(event)\n          },\n          onMouseLeave(event: MouseEvent<HTMLElement>) {\n            handleMouseLeave()\n            child.props.onMouseLeave?.(event)\n          },\n        })}\n        <TooltipPopoverStyle\n          {...rest}\n          open={state}\n          backdrop={false}\n          anchorRef={anchorRef}\n          onMouseEnter={handleMouseEnter}\n          onMouseLeave={handleMouseLeave}\n          ref={ref}\n        >\n          {title}\n        </TooltipPopoverStyle>\n      </>\n    )\n  },\n)\nTooltip.displayName = 'Tooltip'\n"],"names":["BODY_PERSISTENT_TIMEOUT","Tooltip","forwardRef","_ref","ref","title","children","rest","state","setState","useState","keepTimeoutRef","useRef","child","Children","only","isElement","Error","anchorRef","mergedRef","useMergeRefs","handleMouseEnter","current","clearTimeout","handleMouseLeave","setTimeout","_jsxs","_Fragment","cloneElement","onMouseEnter","event","props","onMouseLeave","_jsx","TooltipPopoverStyle","open","backdrop","displayName"],"mappings":";;;;;;;;;;;;;;;AAcA,MAAMA,uBAAuB,GAAG,GAAG,CAAA;AAE5B,MAAMC,OAAO,gBAAGC,UAAU,CAC/B,CAAAC,IAAA,EAEEC,GAAkC,KAC/B;EAAA,IAFH;IAAEC,KAAK;IAAEC,QAAQ;IAAE,GAAGC,IAAAA;AAAmB,GAAC,GAAAJ,IAAA,CAAA;EAG1C,MAAM,CAACK,KAAK,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACzC,EAAA,MAAMC,cAAc,GAAGC,MAAM,CAAwB,IAAI,CAAC,CAAA;AAE1D,EAAA,MAAMC,KAAK,GAAGC,QAAQ,CAACC,IAAI,CAACT,QAAQ,CAAC,CAAA;EACrC,IAAI,CAACU,SAAS,CAACH,KAAK,CAAC,EAAE,MAAM,IAAII,KAAK,CAAC,+BAA+B,CAAC,CAAA;AAEvE,EAAA,MAAMC,SAAS,GAAGN,MAAM,CAAc,IAAI,CAAC,CAAA;EAC3C,MAAMO,SAAS,GAAGC,YAAY,CAAC,CAACP,KAAK,CAACT,GAAG,EAAEc,SAAS,CAAC,CAAC,CAAA;EAEtD,MAAMG,gBAAgB,GAAGA,MAAM;IAC7B,IAAIV,cAAc,CAACW,OAAO,EAAE;AAC1BC,MAAAA,YAAY,CAACZ,cAAc,CAACW,OAAO,CAAC,CAAA;MACpCX,cAAc,CAACW,OAAO,GAAG,IAAI,CAAA;AAC/B,KAAA;IACAb,QAAQ,CAAC,IAAI,CAAC,CAAA;GACf,CAAA;EAED,MAAMe,gBAAgB,GAAGA,MAAM;AAC7Bb,IAAAA,cAAc,CAACW,OAAO,GAAGG,UAAU,CAAC,MAAM;MACxChB,QAAQ,CAAC,KAAK,CAAC,CAAA;MACfE,cAAc,CAACW,OAAO,GAAG,IAAI,CAAA;KAC9B,EAAEtB,uBAAuB,CAAC,CAAA;GAC5B,CAAA;EAED,oBACE0B,IAAA,CAAAC,QAAA,EAAA;AAAArB,IAAAA,QAAA,EACGsB,cAAAA,YAAY,CAACf,KAAK,EAAE;AACnBT,MAAAA,GAAG,EAAEe,SAAS;MACdU,YAAYA,CAACC,KAA8B,EAAE;AAC3CT,QAAAA,gBAAgB,EAAE,CAAA;AAClBR,QAAAA,KAAK,CAACkB,KAAK,CAACF,YAAY,GAAGC,KAAK,CAAC,CAAA;OAClC;MACDE,YAAYA,CAACF,KAA8B,EAAE;AAC3CN,QAAAA,gBAAgB,EAAE,CAAA;AAClBX,QAAAA,KAAK,CAACkB,KAAK,CAACC,YAAY,GAAGF,KAAK,CAAC,CAAA;AACnC,OAAA;AACF,KAAC,CAAC,eACFG,GAAA,CAACC,mBAAmB,EAAA;AAAA,MAAA,GACd3B,IAAI;AACR4B,MAAAA,IAAI,EAAE3B,KAAM;AACZ4B,MAAAA,QAAQ,EAAE,KAAM;AAChBlB,MAAAA,SAAS,EAAEA,SAAU;AACrBW,MAAAA,YAAY,EAAER,gBAAiB;AAC/BW,MAAAA,YAAY,EAAER,gBAAiB;AAC/BpB,MAAAA,GAAG,EAAEA,GAAI;AAAAE,MAAAA,QAAA,EAERD,KAAAA;AAAK,KACa,CAAC,CAAA;AAAA,GACtB,CAAC,CAAA;AAEP,CACF,EAAC;AACDJ,OAAO,CAACoC,WAAW,GAAG,SAAS;;;;"}