{"version":3,"file":"Floating.cjs","sources":["../../../../src/components/Floating/Floating.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Placement } from \"@floating-ui/core\";\nimport { autoUpdate, useFocus } from \"@floating-ui/react\";\nimport type { ComponentProps, FC, ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { useBaseFLoating, useFloatingInteractions } from \"../../hooks/use-floating\";\nimport { getArrowPlacement } from \"./helpers\";\n\nexport interface FlowbiteFloatingTheme {\n  arrow: FlowbiteFloatingArrowTheme;\n  animation: string;\n  base: string;\n  content: string;\n  hidden: string;\n  style: {\n    auto: string;\n    dark: string;\n    light: string;\n  };\n  target: string;\n}\n\nexport interface FlowbiteFloatingArrowTheme {\n  base: string;\n  placement: string;\n  style: {\n    dark: string;\n    light: string;\n    auto: string;\n  };\n}\n\nexport type FloatingStyle = \"dark\" | \"light\" | \"auto\";\n\nexport interface FloatingProps extends Omit<ComponentProps<\"div\">, \"content\" | \"style\"> {\n  animation?: false | `duration-${number}`;\n  arrow?: boolean;\n  content: ReactNode;\n  placement?: \"auto\" | Placement;\n  style?: FloatingStyle;\n  theme: FlowbiteFloatingTheme;\n  trigger?: \"hover\" | \"click\";\n  minWidth?: number;\n}\n\n/**\n * @see https://floating-ui.com/docs/react-dom-interactions\n */\nexport const Floating: FC<FloatingProps> = ({\n  animation = \"duration-300\",\n  arrow = true,\n  children,\n  className,\n  content,\n  placement = \"top\",\n  style = \"dark\",\n  theme,\n  trigger = \"hover\",\n  minWidth,\n  ...props\n}) => {\n  const arrowRef = useRef<HTMLDivElement>(null);\n  const [open, setOpen] = useState(false);\n\n  const floatingProperties = useBaseFLoating({\n    open,\n    placement,\n    arrowRef,\n    setOpen,\n  });\n\n  const {\n    context,\n    middlewareData: { arrow: { x: arrowX, y: arrowY } = {} },\n    refs,\n    strategy,\n    update,\n    x,\n    y,\n  } = floatingProperties;\n\n  const focus = useFocus(context);\n  const { getFloatingProps, getReferenceProps } = useFloatingInteractions({\n    context,\n    role: \"tooltip\",\n    trigger,\n    interactions: [focus],\n  });\n\n  useEffect(() => {\n    if (refs.reference.current && refs.floating.current && open) {\n      return autoUpdate(refs.reference.current, refs.floating.current, update);\n    }\n  }, [open, refs.floating, refs.reference, update]);\n\n  return (\n    <>\n      <div\n        ref={refs.setReference}\n        className={theme.target}\n        data-testid=\"flowbite-tooltip-target\"\n        {...getReferenceProps()}\n      >\n        {children}\n      </div>\n      <div\n        ref={refs.setFloating}\n        data-testid=\"flowbite-tooltip\"\n        {...getFloatingProps({\n          className: twMerge(\n            theme.base,\n            animation && `${theme.animation} ${animation}`,\n            !open && theme.hidden,\n            theme.style[style],\n            className,\n          ),\n          style: {\n            position: strategy,\n            top: y ?? \" \",\n            left: x ?? \" \",\n            minWidth,\n          },\n          ...props,\n        })}\n      >\n        <div className={theme.content}>{content}</div>\n        {arrow && (\n          <div\n            className={twMerge(\n              theme.arrow.base,\n              style === \"dark\" && theme.arrow.style.dark,\n              style === \"light\" && theme.arrow.style.light,\n              style === \"auto\" && theme.arrow.style.auto,\n            )}\n            data-testid=\"flowbite-tooltip-arrow\"\n            ref={arrowRef}\n            style={{\n              top: arrowY ?? \" \",\n              left: arrowX ?? \" \",\n              right: \" \",\n              bottom: \" \",\n              [getArrowPlacement({ placement: floatingProperties.placement })]: theme.arrow.placement,\n            }}\n          >\n            &nbsp;\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n"],"names":["useRef","useState","useBaseFLoating","useFocus","useFloatingInteractions","useEffect","autoUpdate","jsxs","Fragment","jsx","twMerge","getArrowPlacement"],"mappings":"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"}