{"version":3,"file":"Tooltip-Badf_RXl.js","sources":["../../../app/javascript/components/common/tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport type { Placement } from '@floating-ui/react'\nimport * as FloatingUi from '@floating-ui/react'\n\nexport interface TooltipOptions {\n anchor?: React.ReactNode\n content?: React.ReactNode\n placement?: Placement\n customOffset?: { mainAxis?: number, crossAxis?: number } | number\n clickable?: boolean\n className?: string\n}\n\n// * https://floating-ui.com/docs/tooltip\nconst Tooltip: React.FC = ({\n anchor,\n content,\n placement = 'top',\n customOffset = 10,\n clickable = false,\n className = ''\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n const arrowRef = React.useRef(null)\n\n const { x, y, refs, strategy, context } = FloatingUi.useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement,\n // Make sure the tooltip stays on the screen\n whileElementsMounted: FloatingUi.autoUpdate,\n middleware: [\n FloatingUi.offset(customOffset),\n FloatingUi.flip({\n fallbackAxisSideDirection: 'start'\n }),\n FloatingUi.shift(),\n FloatingUi.arrow({ element: arrowRef })\n ]\n })\n\n // Event listeners to change the open state\n const hover = FloatingUi.useHover(context, { move: false, enabled: !clickable })\n const focus = FloatingUi.useFocus(context, { enabled: !clickable })\n const dismiss = FloatingUi.useDismiss(context)\n // Role props for screen readers\n const role = FloatingUi.useRole(context, { role: 'tooltip' })\n\n // Merge all the interactions into prop getters\n const { getReferenceProps, getFloatingProps } = FloatingUi.useInteractions([\n hover,\n focus,\n dismiss,\n role\n ])\n\n return (\n <>\n
setIsOpen((v) => !v) : undefined} ref={refs.setReference} {...getReferenceProps()}>\n {anchor}\n
\n \n {isOpen && (\n \n {content}\n \n \n )}\n \n \n )\n}\n\nexport default Tooltip\n"],"names":["Tooltip","anchor","content","placement","customOffset","clickable","className","isOpen","setIsOpen","useState","arrowRef","React","x","y","refs","strategy","context","FloatingUi.useFloating","FloatingUi.autoUpdate","FloatingUi.offset","FloatingUi.flip","FloatingUi.shift","FloatingUi.arrow","hover","FloatingUi.useHover","focus","FloatingUi.useFocus","dismiss","FloatingUi.useDismiss","role","FloatingUi.useRole","getReferenceProps","getFloatingProps","FloatingUi.useInteractions","jsxs","Fragment","jsx","v","FloatingUi.FloatingPortal","FloatingUi.FloatingArrow"],"mappings":"8LAcA,MAAMA,EAAoC,CAAC,CACzC,OAAAC,EACA,QAAAC,EACA,UAAAC,EAAY,MACZ,aAAAC,EAAe,GACf,UAAAC,EAAY,GACZ,UAAAC,EAAY,EACd,IAAM,CACJ,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EACpCC,EAAWC,EAAM,OAAO,IAAI,EAE5B,CAAE,EAAAC,EAAG,EAAAC,EAAG,KAAAC,EAAM,SAAAC,EAAU,QAAAC,CAAQ,EAAIC,EAAuB,CAC/D,KAAMV,EACN,aAAcC,EACd,UAAAL,EAEA,qBAAsBe,EACtB,WAAY,CACVC,EAAkBf,CAAY,EAC9BgB,EAAgB,CACd,0BAA2B,OAAA,CAC5B,EACDC,EAAiB,EACjBC,EAAiB,CAAE,QAASZ,CAAU,CAAA,CAAA,CACxC,CACD,EAGKa,EAAQC,EAAoBR,EAAS,CAAE,KAAM,GAAO,QAAS,CAACX,EAAW,EACzEoB,EAAQC,EAAoBV,EAAS,CAAE,QAAS,CAACX,EAAW,EAC5DsB,EAAUC,EAAsBZ,CAAO,EAEvCa,EAAOC,EAAmBd,EAAS,CAAE,KAAM,UAAW,EAGtD,CAAE,kBAAAe,EAAmB,iBAAAC,CAAiB,EAAIC,EAA2B,CACzEV,EACAE,EACAE,EACAE,CAAA,CACD,EAED,OAEIK,EAAA,KAAAC,WAAA,CAAA,SAAA,CAAAC,EAAA,IAAC,OAAI,QAAS/B,EAAY,IAAMG,EAAW6B,GAAM,CAACA,CAAC,EAAI,OAAW,IAAKvB,EAAK,aAAe,GAAGiB,IAC3F,SACH9B,EAAA,EACCmC,EAAAA,IAAAE,EAAA,CACE,SACC/B,GAAA2B,EAAA,KAAC,MAAA,CACC,UAAW,0CAA0C5B,CAAS,GAC9D,IAAKQ,EAAK,YACV,MAAO,CAEL,SAAUC,EACV,IAAKF,GAAK,EACV,KAAMD,GAAK,CACb,EACC,GAAGoB,EAAiB,EAEpB,SAAA,CAAA9B,EACDkC,EAAA,IAACG,EAAA,CAAyB,IAAK7B,EAAU,QAAAM,EAAkB,UAAU,+BAAgC,CAAA,CAAA,CAAA,CAAA,CAG3G,CAAA,CAAA,EACF,CAEJ"}