{"version":3,"file":"use-floating-tooltip.mjs","sources":["../../../../src/components/Tooltip/TooltipFloating/use-floating-tooltip.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { getOverflowAncestors, shift, useFloating } from '@floating-ui/react';\nimport { FloatingPosition } from '../../Floating';\n\ninterface UseFloatingTooltip {\n  offset: number;\n  position: FloatingPosition;\n  defaultOpened?: boolean;\n}\n\nexport function useFloatingTooltip<T extends HTMLElement = any>({\n  offset,\n  position,\n  defaultOpened,\n}: UseFloatingTooltip) {\n  const [opened, setOpened] = useState(defaultOpened);\n  const boundaryRef = useRef<T>();\n  const { x, y, elements, refs, update, placement } = useFloating({\n    placement: position,\n    middleware: [\n      shift({\n        crossAxis: true,\n        padding: 5,\n        rootBoundary: 'document',\n      }),\n    ],\n  });\n\n  const horizontalOffset = placement.includes('right')\n    ? offset\n    : position.includes('left')\n      ? offset * -1\n      : 0;\n\n  const verticalOffset = placement.includes('bottom')\n    ? offset\n    : position.includes('top')\n      ? offset * -1\n      : 0;\n\n  const handleMouseMove = useCallback(\n    ({ clientX, clientY }: MouseEvent | React.MouseEvent<T, MouseEvent>) => {\n      refs.setPositionReference({\n        getBoundingClientRect() {\n          return {\n            width: 0,\n            height: 0,\n            x: clientX,\n            y: clientY,\n            left: clientX + horizontalOffset,\n            top: clientY + verticalOffset,\n            right: clientX,\n            bottom: clientY,\n          };\n        },\n      });\n    },\n    [elements.reference]\n  );\n\n  useEffect(() => {\n    if (refs.floating.current) {\n      const boundary = boundaryRef.current!;\n      boundary.addEventListener('mousemove', handleMouseMove);\n\n      const parents = getOverflowAncestors(refs.floating.current);\n      parents.forEach((parent) => {\n        parent.addEventListener('scroll', update);\n      });\n\n      return () => {\n        boundary.removeEventListener('mousemove', handleMouseMove);\n        parents.forEach((parent) => {\n          parent.removeEventListener('scroll', update);\n        });\n      };\n    }\n\n    return undefined;\n  }, [elements.reference, refs.floating.current, update, handleMouseMove, opened]);\n\n  return { handleMouseMove, x, y, opened, setOpened, boundaryRef, floating: refs.setFloating };\n}\n"],"names":[],"mappings":";;;AAUO,SAAS,kBAAgD,CAAA;AAAA,EAC9D,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAuB,EAAA;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,aAAa,CAAA;AAClD,EAAA,MAAM,cAAc,MAAU,EAAA;AAC9B,EAAM,MAAA,EAAE,GAAG,CAAG,EAAA,QAAA,EAAU,MAAM,MAAQ,EAAA,SAAA,KAAc,WAAY,CAAA;AAAA,IAC9D,SAAW,EAAA,QAAA;AAAA,IACX,UAAY,EAAA;AAAA,MACV,KAAM,CAAA;AAAA,QACJ,SAAW,EAAA,IAAA;AAAA,QACX,OAAS,EAAA,CAAA;AAAA,QACT,YAAc,EAAA;AAAA,OACf;AAAA;AACH,GACD,CAAA;AAED,EAAM,MAAA,gBAAA,GAAmB,SAAU,CAAA,QAAA,CAAS,OAAO,CAAA,GAC/C,MACA,GAAA,QAAA,CAAS,QAAS,CAAA,MAAM,CACtB,GAAA,MAAA,GAAS,CACT,CAAA,GAAA,CAAA;AAEN,EAAM,MAAA,cAAA,GAAiB,SAAU,CAAA,QAAA,CAAS,QAAQ,CAAA,GAC9C,MACA,GAAA,QAAA,CAAS,QAAS,CAAA,KAAK,CACrB,GAAA,MAAA,GAAS,CACT,CAAA,GAAA,CAAA;AAEN,EAAA,MAAM,eAAkB,GAAA,WAAA;AAAA,IACtB,CAAC,EAAE,OAAS,EAAA,OAAA,EAA4D,KAAA;AACtE,MAAA,IAAA,CAAK,oBAAqB,CAAA;AAAA,QACxB,qBAAwB,GAAA;AACtB,UAAO,OAAA;AAAA,YACL,KAAO,EAAA,CAAA;AAAA,YACP,MAAQ,EAAA,CAAA;AAAA,YACR,CAAG,EAAA,OAAA;AAAA,YACH,CAAG,EAAA,OAAA;AAAA,YACH,MAAM,OAAU,GAAA,gBAAA;AAAA,YAChB,KAAK,OAAU,GAAA,cAAA;AAAA,YACf,KAAO,EAAA,OAAA;AAAA,YACP,MAAQ,EAAA;AAAA,WACV;AAAA;AACF,OACD,CAAA;AAAA,KACH;AAAA,IACA,CAAC,SAAS,SAAS;AAAA,GACrB;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,IAAA,CAAK,SAAS,OAAS,EAAA;AACzB,MAAA,MAAM,WAAW,WAAY,CAAA,OAAA;AAC7B,MAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,eAAe,CAAA;AAEtD,MAAA,MAAM,OAAU,GAAA,oBAAA,CAAqB,IAAK,CAAA,QAAA,CAAS,OAAO,CAAA;AAC1D,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,QAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,MAAM,CAAA;AAAA,OACzC,CAAA;AAED,MAAA,OAAO,MAAM;AACX,QAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACzD,QAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MAAW,KAAA;AAC1B,UAAO,MAAA,CAAA,mBAAA,CAAoB,UAAU,MAAM,CAAA;AAAA,SAC5C,CAAA;AAAA,OACH;AAAA;AAGF,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,EAAG,CAAC,QAAA,CAAS,SAAW,EAAA,IAAA,CAAK,SAAS,OAAS,EAAA,MAAA,EAAQ,eAAiB,EAAA,MAAM,CAAC,CAAA;AAE/E,EAAO,OAAA,EAAE,iBAAiB,CAAG,EAAA,CAAA,EAAG,QAAQ,SAAW,EAAA,WAAA,EAAa,QAAU,EAAA,IAAA,CAAK,WAAY,EAAA;AAC7F;;;;"}