{"version":3,"file":"Tooltip.cjs","sources":["../../../../src/components/overlay/tooltip/Tooltip.tsx"],"sourcesContent":["import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\r\nimport { memo, useContext, type FC } from 'react'\r\n\r\nimport type { TooltipProps } from '@components/overlay/tooltip/types/Tooltip.props.ts'\r\nimport { TOOLTIP_STYLES } from '@components/overlay/tooltip/styles/Tooltip.css.ts'\r\nimport { TooltipProviderContext } from '@components/overlay/tooltip/context/TooltipProvider.context.ts'\r\nimport { cn } from '@utils/cn.ts'\r\nimport { parsePosition } from '@components/overlay/_shared/utils/parsePosition.utils.ts'\r\nimport { useTooltip } from '@components/overlay/tooltip/hooks/use-tooltip/useTooltip.hook.ts'\r\n\r\n/**\r\n * Floating tooltip backed by Base UI Tooltip. Wraps a trigger child and\r\n * shows `content` in a portal positioner. Shares timing via a\r\n * `TooltipProvider` when available; otherwise falls back to a local\r\n * provider. Supports `position` shorthand or explicit `side`/`align`.\r\n * Set `disabled` to suppress the popup without removing the trigger.\r\n */\r\nconst Tooltip: FC<TooltipProps> = memo(({\r\n    children,\r\n    content,\r\n    position,\r\n    side: sideProp = 'top',\r\n    align: alignProp = 'center',\r\n    delayDuration = 0,\r\n    disabled = false,\r\n    openOnFocus = true,\r\n    arrow = false,\r\n    closeOnClick = true,\r\n    className,\r\n    open,\r\n    defaultOpen,\r\n    onOpenChange,\r\n}) => {\r\n    const hasProvider = useContext(TooltipProviderContext)\r\n\r\n    const { side, align } = position\r\n        ? parsePosition(position)\r\n        : { side: sideProp, align: alignProp }\r\n\r\n    const { effectiveOpen, handleOpenChange } = useTooltip({ disabled, open, defaultOpen, onOpenChange })\r\n    const handleTooltipOpenChange = (\r\n        isOpen: boolean,\r\n        details: BaseTooltip.Root.ChangeEventDetails,\r\n    ) => {\r\n        if (!openOnFocus && details.reason === 'trigger-focus') {\r\n            return\r\n        }\r\n\r\n        handleOpenChange(isOpen)\r\n    }\r\n\r\n    const root = (\r\n        <BaseTooltip.Root\r\n            open={effectiveOpen}\r\n            onOpenChange={handleTooltipOpenChange}\r\n        >\r\n            <BaseTooltip.Trigger\r\n                delay={delayDuration}\r\n                closeOnClick={closeOnClick}\r\n                render={children}\r\n            />\r\n\r\n            {!disabled && (\r\n                <BaseTooltip.Portal>\r\n                    <BaseTooltip.Positioner\r\n                        side={side}\r\n                        align={align}\r\n                        sideOffset={arrow ? 11 : 6}\r\n                        className={'isolate'}\r\n                    >\r\n                        <BaseTooltip.Popup\r\n                            role={'tooltip'}\r\n                            className={cn(TOOLTIP_STYLES.content, className)}\r\n                        >\r\n                            {arrow && <BaseTooltip.Arrow className={TOOLTIP_STYLES.arrow} />}\r\n                            {content}\r\n                        </BaseTooltip.Popup>\r\n                    </BaseTooltip.Positioner>\r\n                </BaseTooltip.Portal>\r\n            )}\r\n        </BaseTooltip.Root>\r\n    )\r\n\r\n    // Prefer the shared provider (mounted by `ThemeProvider` or a consumer's\r\n    // `TooltipProvider`) so timing — notably the skip-delay timeout between\r\n    // adjacent triggers — is shared. Fall back to a local provider so a\r\n    // standalone `Tooltip` still works without any setup.\r\n    return hasProvider ? root : <BaseTooltip.Provider delay={delayDuration}>{root}</BaseTooltip.Provider>\r\n})\r\n\r\nTooltip.displayName = 'Tooltip'\r\n\r\nexport default Tooltip\r\n"],"names":["Tooltip","memo","children","content","position","sideProp","alignProp","delayDuration","disabled","openOnFocus","arrow","closeOnClick","className","open","defaultOpen","onOpenChange","hasProvider","useContext","TooltipProviderContext","side","align","parsePosition","effectiveOpen","handleOpenChange","useTooltip","handleTooltipOpenChange","isOpen","details","root","jsxs","BaseTooltip","jsx","cn","TOOLTIP_STYLES"],"mappings":"gVAiBMA,EAA4BC,EAAAA,KAAK,CAAC,CACpC,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,KAAMC,EAAW,MACjB,MAAOC,EAAY,SACnB,cAAAC,EAAgB,EAChB,SAAAC,EAAW,GACX,YAAAC,EAAc,GACd,MAAAC,EAAQ,GACR,aAAAC,EAAe,GACf,UAAAC,EACA,KAAAC,EACA,YAAAC,EACA,aAAAC,CACJ,IAAM,CACF,MAAMC,EAAcC,EAAAA,WAAWC,wBAAsB,EAE/C,CAAE,KAAAC,EAAM,MAAAC,CAAA,EAAUhB,EAClBiB,EAAAA,cAAcjB,CAAQ,EACtB,CAAE,KAAMC,EAAU,MAAOC,CAAA,EAEzB,CAAE,cAAAgB,EAAe,iBAAAC,CAAA,EAAqBC,EAAAA,WAAW,CAAE,SAAAhB,EAAU,KAAAK,EAAM,YAAAC,EAAa,aAAAC,EAAc,EAC9FU,EAA0B,CAC5BC,EACAC,IACC,CACG,CAAClB,GAAekB,EAAQ,SAAW,iBAIvCJ,EAAiBG,CAAM,CAC3B,EAEME,EACFC,EAAAA,KAACC,EAAAA,QAAY,KAAZ,CACG,KAAMR,EACN,aAAcG,EAEd,SAAA,CAAAM,EAAAA,IAACD,EAAAA,QAAY,QAAZ,CACG,MAAOvB,EACP,aAAAI,EACA,OAAQT,CAAA,CAAA,EAGX,CAACM,GACEuB,EAAAA,IAACD,EAAAA,QAAY,OAAZ,CACG,SAAAC,EAAAA,IAACD,EAAAA,QAAY,WAAZ,CACG,KAAAX,EACA,MAAAC,EACA,WAAYV,EAAQ,GAAK,EACzB,UAAW,UAEX,SAAAmB,EAAAA,KAACC,EAAAA,QAAY,MAAZ,CACG,KAAM,UACN,UAAWE,EAAAA,GAAGC,iBAAe,QAASrB,CAAS,EAE9C,SAAA,CAAAF,SAAUoB,UAAY,MAAZ,CAAkB,UAAWG,EAAAA,eAAe,MAAO,EAC7D9B,CAAA,CAAA,CAAA,CACL,CAAA,CACJ,CACJ,CAAA,CAAA,CAAA,EASZ,OAAOa,EAAcY,EAAOG,EAAAA,IAACD,UAAY,SAAZ,CAAqB,MAAOvB,EAAgB,SAAAqB,EAAK,CAClF,CAAC,EAED5B,EAAQ,YAAc"}