{"version":3,"file":"LegacyTooltipContent.mjs","sources":["../../../../src/components/LegacyTooltip/LegacyTooltipContent.tsx"],"sourcesContent":["'use client'\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport * as React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport classNames from 'classnames'\n\nimport useEventHandler from '~/src/hooks/useEventHandler'\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\nimport { isArray, isEmpty, isString } from '~/src/utils/type'\n\nimport { Text } from '~/src/components/Text'\nimport { InvertedThemeProvider } from '~/src/components/ThemeProvider'\nimport { useRootElement } from '~/src/components/WindowProvider'\n\nimport { type LegacyTooltipContentProps } from './LegacyTooltip.types'\nimport { getReplacement, getTooltipStyle } from './utils'\n\nimport styles from './LegacyTooltip.module.scss'\n\nfunction getNewLineComponent(strContent: string) {\n  return strContent.split('\\n').map((str, index) => {\n    if (index === 0) {\n      return (\n        <Text\n          key={str}\n          typo=\"14\"\n        >\n          {str}\n        </Text>\n      )\n    }\n\n    return (\n      <React.Fragment key={str}>\n        <br />\n        <Text typo=\"14\">{str}</Text>\n      </React.Fragment>\n    )\n  })\n}\n\nfunction getContentComponent(content?: React.ReactNode) {\n  if (isArray(content)) {\n    return content.map((item) => {\n      if (isString(item)) {\n        return getNewLineComponent(item)\n      }\n\n      return item\n    })\n  }\n\n  if (isString(content)) {\n    return getNewLineComponent(content)\n  }\n\n  return content\n}\n\nexport const LegacyTooltipContent: React.FC<LegacyTooltipContentProps> = ({\n  as,\n  content,\n  contentStyle,\n  contentClassName,\n  contentWrapperClassName,\n  contentWrapperStyle: givenContentWrapperStyle,\n  disabled = false,\n  keepInContainer = false,\n  placement = 'bottom-center',\n  tooltipContainer,\n  offset = 4,\n  allowHover = false,\n  forwardedRef,\n  ...rest\n}) => {\n  const rootElement = useRootElement()\n\n  const tooltipRef = useRef<HTMLDivElement>(null)\n  const tooltipWrapperRef = useRef<HTMLDivElement>(null)\n  const mergedRef = useMergeRefs<HTMLDivElement>(tooltipRef, forwardedRef)\n  const [replacement, setReplacement] = useState(placement)\n\n  const handleClickTooltip = useCallback(\n    (event: HTMLElementEventMap['click']) => {\n      event.stopPropagation()\n    },\n    []\n  )\n\n  useEventHandler(tooltipRef.current, 'click', handleClickTooltip)\n\n  useEffect(() => {\n    if (!tooltipRef.current) {\n      return\n    }\n    const newPlacement = getReplacement({\n      tooltip: tooltipRef.current,\n      keepInContainer,\n      placement,\n      rootElement,\n    })\n    setReplacement(newPlacement)\n  }, [rootElement, keepInContainer, placement])\n\n  const ContentComponent = useMemo(\n    () => getContentComponent(content),\n    [content]\n  )\n\n  const contentWrapperStyle = useMemo(() => {\n    if (tooltipContainer) {\n      return {\n        ...givenContentWrapperStyle,\n        ...getTooltipStyle({\n          tooltipContainer,\n          placement: replacement,\n          offset,\n          allowHover,\n        }),\n      }\n    }\n\n    return {}\n  }, [\n    tooltipContainer,\n    givenContentWrapperStyle,\n    replacement,\n    offset,\n    allowHover,\n  ])\n\n  const Comp = as ?? 'div'\n\n  return ReactDOM.createPortal(\n    <InvertedThemeProvider>\n      <div\n        style={contentWrapperStyle}\n        className={classNames(\n          styles.LegacyTooltipContentWrapper,\n          (disabled || isEmpty(content)) && styles.disabled,\n          contentWrapperClassName\n        )}\n        ref={tooltipWrapperRef}\n      >\n        <Comp\n          style={contentStyle}\n          className={classNames(styles.LegacyTooltipContent, contentClassName)}\n          ref={mergedRef}\n          {...rest}\n        >\n          <Text\n            color=\"text-neutral\"\n            truncated={20}\n            typo=\"13\"\n          >\n            {ContentComponent}\n          </Text>\n        </Comp>\n      </div>\n    </InvertedThemeProvider>,\n    rootElement\n  )\n}\n"],"names":["getNewLineComponent","strContent","split","map","str","index","_jsx","Text","typo","children","_jsxs","React","Fragment","getContentComponent","content","isArray","item","isString","LegacyTooltipContent","as","contentStyle","contentClassName","contentWrapperClassName","contentWrapperStyle","givenContentWrapperStyle","disabled","keepInContainer","placement","tooltipContainer","offset","allowHover","forwardedRef","rest","rootElement","useRootElement","tooltipRef","useRef","tooltipWrapperRef","mergedRef","useMergeRefs","replacement","setReplacement","useState","handleClickTooltip","useCallback","event","stopPropagation","useEventHandler","current","useEffect","newPlacement","getReplacement","tooltip","ContentComponent","useMemo","getTooltipStyle","Comp","ReactDOM","createPortal","InvertedThemeProvider","style","className","classNames","styles","LegacyTooltipContentWrapper","isEmpty","ref","color","truncated"],"mappings":"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"}