{"version":3,"file":"useTooltip.hook.cjs","sources":["../../../../../../src/components/overlay/tooltip/hooks/use-tooltip/useTooltip.hook.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react'\r\nimport type { UseTooltipOptions, UseTooltipReturn } from '@components/overlay/tooltip/hooks/use-tooltip/types'\r\n\r\n/**\r\n * Manages tooltip open state so that `BaseTooltip.Root` stays always controlled,\r\n * avoiding the controlled→uncontrolled transition bug in Base UI when `disabled` toggles.\r\n *\r\n * When `disabled` becomes true the internal state is reset, so the tooltip\r\n * never appears stale when `disabled` goes back to false.\r\n */\r\nexport const useTooltip = ({ disabled, open, defaultOpen, onOpenChange }: UseTooltipOptions): UseTooltipReturn => {\r\n    const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false)\r\n\r\n    useEffect(() => {\r\n        if (disabled) {setInternalOpen(false)}\r\n    }, [disabled])\r\n\r\n    const handleOpenChange = useCallback(\r\n        (isOpen: boolean) => {\r\n            setInternalOpen(isOpen)\r\n            onOpenChange?.(isOpen)\r\n        },\r\n        [onOpenChange],\r\n    )\r\n\r\n    const effectiveOpen = disabled ? false : (open !== undefined ? open : internalOpen)\r\n\r\n    return { effectiveOpen, handleOpenChange }\r\n}\r\n"],"names":["useTooltip","disabled","open","defaultOpen","onOpenChange","internalOpen","setInternalOpen","useState","useEffect","handleOpenChange","useCallback","isOpen"],"mappings":"yGAUaA,EAAa,CAAC,CAAE,SAAAC,EAAU,KAAAC,EAAM,YAAAC,EAAa,aAAAC,KAAwD,CAC9G,KAAM,CAACC,EAAcC,CAAe,EAAIC,EAAAA,SAASJ,GAAe,EAAK,EAErEK,EAAAA,UAAU,IAAM,CACRP,GAAWK,EAAgB,EAAK,CACxC,EAAG,CAACL,CAAQ,CAAC,EAEb,MAAMQ,EAAmBC,EAAAA,YACpBC,GAAoB,CACjBL,EAAgBK,CAAM,EACtBP,IAAeO,CAAM,CACzB,EACA,CAACP,CAAY,CAAA,EAKjB,MAAO,CAAE,cAFaH,EAAW,GAASC,IAAS,OAAYA,EAAOG,EAE9C,iBAAAI,CAAA,CAC5B"}