{"version":3,"file":"LegacyTooltip.mjs","sources":["../../../../src/components/LegacyTooltip/LegacyTooltip.tsx"],"sourcesContent":["'use client'\n\nimport {\n  type Ref,\n  forwardRef,\n  memo,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\n\nimport classNames from 'classnames'\n\nimport { useWindow } from '~/src/components/WindowProvider'\n\nimport { type LegacyTooltipProps } from './LegacyTooltip.types'\nimport { LegacyTooltipContent } from './LegacyTooltipContent'\n\nimport styles from './LegacyTooltip.module.scss'\n\nexport const TOOLTIP_TEST_ID = 'bezier-tooltip'\nexport const TOOLTIP_CONTENT_TEST_ID = 'bezier-tooltip-content'\n\n/**\n * @deprecated Use `Tooltip` instead. It may be removed in the next major version.\n */\nexport const LegacyTooltip = memo(\n  forwardRef(function LegacyTooltip(\n    {\n      as,\n      contentTestId = TOOLTIP_CONTENT_TEST_ID,\n      className,\n      contentStyle,\n      contentClassName,\n      contentWrapperStyle,\n      contentWrapperClassName,\n      content = null,\n      lazy = false, // optional prop 에서 추후 default behavior 를 lazy 하게 바꿀 예정\n      placement = 'bottom-center',\n      disabled = false,\n      offset = 4,\n      keepInContainer = false,\n      allowHover = false,\n      delayShow = 0,\n      delayHide = 0,\n      children,\n      ...otherProps\n    }: LegacyTooltipProps,\n    forwardedRef: Ref<any>\n  ) {\n    const { window } = useWindow()\n\n    const [show, setShow] = useState(false)\n    const [didMount, setDidMount] = useState(show)\n\n    const tooltipContainerRef = useRef<HTMLDivElement>(null)\n    const timerRef = useRef<ReturnType<Window['setTimeout']>>(undefined)\n\n    useEffect(\n      function hideTooltipContentWhenDisabled() {\n        if (disabled) {\n          setShow(false)\n        }\n      },\n      [disabled]\n    )\n\n    useEffect(\n      function updateDidMount() {\n        setDidMount((prev) => prev || show)\n      },\n      [show]\n    )\n\n    const handleMouseEnter = useCallback(() => {\n      if (disabled) {\n        return\n      }\n\n      if (timerRef.current) {\n        clearTimeout(timerRef.current)\n      }\n\n      timerRef.current = window.setTimeout(() => {\n        setShow(true)\n      }, delayShow)\n    }, [delayShow, disabled, window])\n\n    const handleMouseLeave = useCallback(() => {\n      if (disabled) {\n        return\n      }\n\n      if (timerRef.current) {\n        clearTimeout(timerRef.current)\n      }\n\n      timerRef.current = window.setTimeout(() => {\n        setShow(false)\n      }, delayHide)\n    }, [delayHide, disabled, window])\n\n    const TooltipComponent = useMemo(() => {\n      if (!lazy || didMount) {\n        return (\n          <LegacyTooltipContent\n            as={as}\n            content={content}\n            contentStyle={contentStyle}\n            contentClassName={contentClassName}\n            contentWrapperStyle={contentWrapperStyle}\n            contentWrapperClassName={contentWrapperClassName}\n            disabled={disabled}\n            placement={placement}\n            offset={offset}\n            allowHover={allowHover}\n            keepInContainer={keepInContainer}\n            tooltipContainer={tooltipContainerRef.current}\n            forwardedRef={forwardedRef}\n            data-testid={contentTestId}\n          />\n        )\n      }\n\n      return null\n    }, [\n      lazy,\n      didMount,\n      as,\n      content,\n      contentStyle,\n      contentClassName,\n      contentWrapperStyle,\n      contentWrapperClassName,\n      disabled,\n      placement,\n      offset,\n      allowHover,\n      keepInContainer,\n      forwardedRef,\n      contentTestId,\n    ])\n\n    if (!children) {\n      return null\n    }\n\n    return (\n      <div\n        ref={tooltipContainerRef}\n        className={classNames(styles.LegacyTooltip, className)}\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        data-testid={TOOLTIP_TEST_ID}\n        {...otherProps}\n      >\n        {children}\n        {show && TooltipComponent}\n      </div>\n    )\n  })\n)\n"],"names":["TOOLTIP_TEST_ID","TOOLTIP_CONTENT_TEST_ID","LegacyTooltip","memo","forwardRef","as","contentTestId","className","contentStyle","contentClassName","contentWrapperStyle","contentWrapperClassName","content","lazy","placement","disabled","offset","keepInContainer","allowHover","delayShow","delayHide","children","otherProps","forwardedRef","window","useWindow","show","setShow","useState","didMount","setDidMount","tooltipContainerRef","useRef","timerRef","undefined","useEffect","hideTooltipContentWhenDisabled","updateDidMount","prev","handleMouseEnter","useCallback","current","clearTimeout","setTimeout","handleMouseLeave","TooltipComponent","useMemo","_jsx","LegacyTooltipContent","tooltipContainer","_jsxs","ref","classNames","styles","onMouseEnter","onMouseLeave"],"mappings":"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"}