{"version":3,"file":"TooltipFloating.cjs","sources":["../../../../src/components/Tooltip/TooltipFloating/TooltipFloating.tsx"],"sourcesContent":["import { cloneElement } from 'react';\nimport { useMergedRef } from '@raikou/hooks';\nimport {\n  Box,\n  createVarsResolver,\n  factory,\n  Factory,\n  getDefaultZIndex,\n  getRadius,\n  getRefProp,\n  getStyleObject,\n  getThemeColor,\n  isElement,\n  useProps,\n  useRaikouTheme,\n  useStyles,\n} from '../../../core';\nimport { OptionalPortal } from '../../Portal';\nimport { TooltipBaseProps, TooltipCssVariables, TooltipStylesNames } from '../Tooltip.types';\nimport { useFloatingTooltip } from './use-floating-tooltip';\nimport { TooltipArrowStyle, TooltipRootStyle } from '../Tooltip.css';\n\nexport interface TooltipFloatingProps extends TooltipBaseProps {\n  /** Offset from mouse in px, `10` by default */\n  offset?: number;\n  /** Uncontrolled tooltip initial opened state */\n  defaultOpened?: boolean;\n}\n\nexport type TooltipFloatingFactory = Factory<{\n  props: TooltipFloatingProps;\n  ref: HTMLDivElement;\n  stylesNames: TooltipStylesNames;\n  vars: TooltipCssVariables;\n}>;\n\nconst defaultProps: Partial<TooltipFloatingProps> = {\n  refProp: 'ref',\n  withinPortal: true,\n  offset: 10,\n  defaultOpened: false,\n  position: 'right',\n  zIndex: getDefaultZIndex('popover'),\n};\n\nconst varsResolver = createVarsResolver<TooltipFloatingFactory>((theme, { radius, color }) => ({\n  tooltip: {\n    '--tooltip-radius': radius === undefined ? undefined : getRadius(radius),\n    '--tooltip-bg': color ? getThemeColor(color, theme) : undefined,\n    '--tooltip-color': color ? 'var(--raikou-color-white)' : undefined,\n  },\n}));\n\nexport const TooltipFloating = factory<TooltipFloatingFactory>((_props, ref) => {\n  const props = useProps('TooltipFloating', defaultProps, _props);\n  const {\n    children,\n    refProp,\n    withinPortal,\n    style,\n    className,\n    classNames,\n    styles,\n    unstyled,\n    radius,\n    color,\n    label,\n    offset,\n    position,\n    multiline,\n    zIndex,\n    disabled,\n    defaultOpened,\n    variant,\n    vars,\n    portalProps,\n    ...others\n  } = props;\n\n  const theme = useRaikouTheme();\n  const getStyles = useStyles<TooltipFloatingFactory>({\n    name: 'TooltipFloating',\n    props,\n    classes: {\n      tooltip: TooltipRootStyle,\n      arrow: TooltipArrowStyle,\n    },\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    rootSelector: 'tooltip',\n    vars,\n    varsResolver,\n  });\n\n  const { handleMouseMove, x, y, opened, boundaryRef, floating, setOpened } = useFloatingTooltip({\n    offset: offset!,\n    position: position!,\n    defaultOpened: defaultOpened!,\n  });\n\n  if (!isElement(children)) {\n    throw new Error(\n      '[@raikou/core] Tooltip.Floating component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported'\n    );\n  }\n\n  const targetRef = useMergedRef(boundaryRef, getRefProp(children), ref);\n\n  const onMouseEnter = (event: React.MouseEvent<unknown, MouseEvent>) => {\n    children.props.onMouseEnter?.(event);\n    handleMouseMove(event);\n    setOpened(true);\n  };\n\n  const onMouseLeave = (event: React.MouseEvent<unknown, MouseEvent>) => {\n    children.props.onMouseLeave?.(event);\n    setOpened(false);\n  };\n\n  return (\n    <>\n      <OptionalPortal {...portalProps} withinPortal={withinPortal}>\n        <Box\n          {...others}\n          {...getStyles('tooltip', {\n            style: {\n              ...getStyleObject(style, theme),\n              zIndex: zIndex as React.CSSProperties['zIndex'],\n              display: !disabled && opened ? 'block' : 'none',\n              top: (y && Math.round(y)) ?? '',\n              left: (x && Math.round(x)) ?? '',\n            },\n          })}\n          variant={variant}\n          ref={floating}\n          mod={{ multiline }}\n        >\n          {label}\n        </Box>\n      </OptionalPortal>\n\n      {cloneElement(children, {\n        ...children.props,\n        [refProp!]: targetRef,\n        onMouseEnter,\n        onMouseLeave,\n      })}\n    </>\n  );\n});\n\nTooltipFloating.displayName = '@raikou/core/TooltipFloating';\n"],"names":["getDefaultZIndex","createVarsResolver","getRadius","getThemeColor","factory","useProps","useRaikouTheme","useStyles","TooltipRootStyle","TooltipArrowStyle","useFloatingTooltip","isElement","useMergedRef","getRefProp","jsxs","Fragment","jsx","OptionalPortal","Box","getStyleObject","cloneElement"],"mappings":"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"}