react-tooltip 5.16.0 → 5.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"react-tooltip.mjs","sources":["../src/utils/handle-style.ts","../src/utils/debounce.ts","../src/components/TooltipProvider/TooltipProvider.tsx","../src/components/TooltipProvider/TooltipWrapper.tsx","../src/utils/use-isomorphic-layout-effect.ts","../src/utils/get-scroll-parent.ts","../src/utils/compute-positions.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/TooltipContent/TooltipContent.tsx","../src/components/TooltipController/TooltipController.tsx","../src/index.tsx"],"sourcesContent":["// This is the ID for the core styles of ReactTooltip\nconst REACT_TOOLTIP_CORE_STYLES_ID = 'react-tooltip-core-styles'\n// This is the ID for the visual styles of ReactTooltip\nconst REACT_TOOLTIP_BASE_STYLES_ID = 'react-tooltip-base-styles'\n\nfunction injectStyle({\n css,\n id = REACT_TOOLTIP_BASE_STYLES_ID,\n type = 'base',\n ref,\n}: {\n css: string\n id?: string\n type?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref?: any\n}) {\n if (type === 'core' && process.env.REACT_TOOLTIP_DISABLE_CORE_STYLES) {\n return\n }\n\n if (type !== 'core' && process.env.REACT_TOOLTIP_DISABLE_BASE_STYLES) {\n return\n }\n\n if (type === 'core') {\n // eslint-disable-next-line no-param-reassign\n id = REACT_TOOLTIP_CORE_STYLES_ID\n }\n\n if (!ref) {\n // eslint-disable-next-line no-param-reassign\n ref = {}\n }\n const { insertAt } = ref\n\n if (!css || typeof document === 'undefined' || document.getElementById(id)) {\n return\n }\n\n const head = document.head || document.getElementsByTagName('head')[0]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const style: any = document.createElement('style')\n style.id = id\n style.type = 'text/css'\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\n\nfunction removeStyle({\n type = 'base',\n id = REACT_TOOLTIP_BASE_STYLES_ID,\n}: {\n type?: string\n id?: string\n} = {}) {\n if (type === 'core') {\n // eslint-disable-next-line no-param-reassign\n id = REACT_TOOLTIP_CORE_STYLES_ID\n }\n\n const style = document.getElementById(id)\n style?.remove()\n}\n\nexport { injectStyle, removeStyle }\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This function debounce the received function\n * @param { function } \tfunc\t\t\t\tFunction to be debounced\n * @param { number } \t\twait\t\t\t\tTime to wait before execut the function\n * @param { boolean } \timmediate\t\tParam to define if the function will be executed immediately\n */\nconst debounce = (func: (...args: any[]) => void, wait?: number, immediate?: true) => {\n let timeout: NodeJS.Timeout | null = null\n\n return function debounced(this: typeof func, ...args: any[]) {\n const later = () => {\n timeout = null\n if (!immediate) {\n func.apply(this, args)\n }\n }\n\n if (immediate && !timeout) {\n /**\n * there's not need to clear the timeout\n * since we expect it to resolve and set `timeout = null`\n */\n func.apply(this, args)\n timeout = setTimeout(later, wait)\n }\n\n if (!immediate) {\n if (timeout) {\n clearTimeout(timeout)\n }\n timeout = setTimeout(later, wait)\n }\n }\n}\n\nexport default debounce\n","import React, {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\n\nimport type {\n AnchorRef,\n TooltipContextData,\n TooltipContextDataWrapper,\n} from './TooltipProviderTypes'\n\nconst DEFAULT_TOOLTIP_ID = 'DEFAULT_TOOLTIP_ID'\nconst DEFAULT_CONTEXT_DATA: TooltipContextData = {\n anchorRefs: new Set(),\n activeAnchor: { current: null },\n attach: () => {\n /* attach anchor element */\n },\n detach: () => {\n /* detach anchor element */\n },\n setActiveAnchor: () => {\n /* set active anchor */\n },\n}\n\nconst DEFAULT_CONTEXT_DATA_WRAPPER: TooltipContextDataWrapper = {\n getTooltipData: () => DEFAULT_CONTEXT_DATA,\n}\n\nconst TooltipContext = createContext<TooltipContextDataWrapper>(DEFAULT_CONTEXT_DATA_WRAPPER)\n\n/**\n * @deprecated Use the `data-tooltip-id` attribute, or the `anchorSelect` prop instead.\n * See https://react-tooltip.com/docs/getting-started\n */\nconst TooltipProvider: React.FC<PropsWithChildren<void>> = ({ children }) => {\n const [anchorRefMap, setAnchorRefMap] = useState<Record<string, Set<AnchorRef>>>({\n [DEFAULT_TOOLTIP_ID]: new Set(),\n })\n const [activeAnchorMap, setActiveAnchorMap] = useState<Record<string, AnchorRef>>({\n [DEFAULT_TOOLTIP_ID]: { current: null },\n })\n\n const attach = (tooltipId: string, ...refs: AnchorRef[]) => {\n setAnchorRefMap((oldMap) => {\n const tooltipRefs = oldMap[tooltipId] ?? new Set()\n refs.forEach((ref) => tooltipRefs.add(ref))\n // create new object to trigger re-render\n return { ...oldMap, [tooltipId]: new Set(tooltipRefs) }\n })\n }\n\n const detach = (tooltipId: string, ...refs: AnchorRef[]) => {\n setAnchorRefMap((oldMap) => {\n const tooltipRefs = oldMap[tooltipId]\n if (!tooltipRefs) {\n // tooltip not found\n // maybe thow error?\n return oldMap\n }\n refs.forEach((ref) => tooltipRefs.delete(ref))\n // create new object to trigger re-render\n return { ...oldMap }\n })\n }\n\n const setActiveAnchor = (tooltipId: string, ref: React.RefObject<HTMLElement>) => {\n setActiveAnchorMap((oldMap) => {\n if (oldMap[tooltipId]?.current === ref.current) {\n return oldMap\n }\n // create new object to trigger re-render\n return { ...oldMap, [tooltipId]: ref }\n })\n }\n\n const getTooltipData = useCallback(\n (tooltipId = DEFAULT_TOOLTIP_ID) => ({\n anchorRefs: anchorRefMap[tooltipId] ?? new Set(),\n activeAnchor: activeAnchorMap[tooltipId] ?? { current: null },\n attach: (...refs: AnchorRef[]) => attach(tooltipId, ...refs),\n detach: (...refs: AnchorRef[]) => detach(tooltipId, ...refs),\n setActiveAnchor: (ref: AnchorRef) => setActiveAnchor(tooltipId, ref),\n }),\n [anchorRefMap, activeAnchorMap, attach, detach],\n )\n\n const context = useMemo(() => {\n return {\n getTooltipData,\n }\n }, [getTooltipData])\n\n return <TooltipContext.Provider value={context}>{children}</TooltipContext.Provider>\n}\n\nexport function useTooltip(tooltipId = DEFAULT_TOOLTIP_ID) {\n return useContext(TooltipContext).getTooltipData(tooltipId)\n}\n\nexport default TooltipProvider\n","import React, { useEffect, useRef } from 'react'\nimport classNames from 'classnames'\nimport { useTooltip } from './TooltipProvider'\nimport type { ITooltipWrapper } from './TooltipProviderTypes'\n\n/**\n * @deprecated Use the `data-tooltip-id` attribute, or the `anchorSelect` prop instead.\n * See https://react-tooltip.com/docs/getting-started\n */\nconst TooltipWrapper = ({\n tooltipId,\n children,\n className,\n place,\n content,\n html,\n variant,\n offset,\n wrapper,\n events,\n positionStrategy,\n delayShow,\n delayHide,\n}: ITooltipWrapper) => {\n const { attach, detach } = useTooltip(tooltipId)\n const anchorRef = useRef<HTMLElement | null>(null)\n\n useEffect(() => {\n attach(anchorRef)\n return () => {\n detach(anchorRef)\n }\n }, [])\n\n return (\n <span\n ref={anchorRef}\n className={classNames('react-tooltip-wrapper', className)}\n data-tooltip-place={place}\n data-tooltip-content={content}\n data-tooltip-html={html}\n data-tooltip-variant={variant}\n data-tooltip-offset={offset}\n data-tooltip-wrapper={wrapper}\n data-tooltip-events={events}\n data-tooltip-position-strategy={positionStrategy}\n data-tooltip-delay-show={delayShow}\n data-tooltip-delay-hide={delayHide}\n >\n {children}\n </span>\n )\n}\n\nexport default TooltipWrapper\n","import { useLayoutEffect, useEffect } from 'react'\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport default useIsomorphicLayoutEffect\n","const isScrollable = (node: Element) => {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return false\n }\n const style = getComputedStyle(node)\n return ['overflow', 'overflow-x', 'overflow-y'].some((propertyName) => {\n const value = style.getPropertyValue(propertyName)\n return value === 'auto' || value === 'scroll'\n })\n}\n\nexport const getScrollParent = (node: Element | null) => {\n if (!node) {\n return null\n }\n let currentParent = node.parentElement\n while (currentParent) {\n if (isScrollable(currentParent)) {\n return currentParent\n }\n currentParent = currentParent.parentElement\n }\n return document.scrollingElement || document.documentElement\n}\n","import { computePosition, offset, shift, arrow, flip } from '@floating-ui/dom'\nimport type { IComputePositions } from './compute-positions-types'\n\nexport const computeTooltipPosition = async ({\n elementReference = null,\n tooltipReference = null,\n tooltipArrowReference = null,\n place = 'top',\n offset: offsetValue = 10,\n strategy = 'absolute',\n middlewares = [offset(Number(offsetValue)), flip(), shift({ padding: 5 })],\n}: IComputePositions) => {\n if (!elementReference) {\n // elementReference can be null or undefined and we will not compute the position\n // eslint-disable-next-line no-console\n // console.error('The reference element for tooltip was not defined: ', elementReference)\n return { tooltipStyles: {}, tooltipArrowStyles: {}, place }\n }\n\n if (tooltipReference === null) {\n return { tooltipStyles: {}, tooltipArrowStyles: {}, place }\n }\n\n const middleware = middlewares\n\n if (tooltipArrowReference) {\n middleware.push(arrow({ element: tooltipArrowReference as HTMLElement, padding: 5 }))\n\n return computePosition(elementReference as HTMLElement, tooltipReference as HTMLElement, {\n placement: place,\n strategy,\n middleware,\n }).then(({ x, y, placement, middlewareData }) => {\n const styles = { left: `${x}px`, top: `${y}px` }\n\n const { x: arrowX, y: arrowY } = middlewareData.arrow ?? { x: 0, y: 0 }\n\n const staticSide =\n {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]] ?? 'bottom'\n\n const arrowStyle = {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: '-4px',\n }\n\n return { tooltipStyles: styles, tooltipArrowStyles: arrowStyle, place: placement }\n })\n }\n\n return computePosition(elementReference as HTMLElement, tooltipReference as HTMLElement, {\n placement: 'bottom',\n strategy,\n middleware,\n }).then(({ x, y, placement }) => {\n const styles = { left: `${x}px`, top: `${y}px` }\n\n return { tooltipStyles: styles, tooltipArrowStyles: {}, place: placement }\n })\n}\n","import React, { useEffect, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport debounce from 'utils/debounce'\nimport { useTooltip } from 'components/TooltipProvider'\nimport useIsomorphicLayoutEffect from 'utils/use-isomorphic-layout-effect'\nimport { getScrollParent } from 'utils/get-scroll-parent'\nimport { computeTooltipPosition } from 'utils/compute-positions'\nimport coreStyles from './core-styles.module.css'\nimport styles from './styles.module.css'\nimport type { IPosition, ITooltip, PlacesType } from './TooltipTypes'\n\nconst Tooltip = ({\n // props\n id,\n className,\n classNameArrow,\n variant = 'dark',\n anchorId,\n anchorSelect,\n place = 'top',\n offset = 10,\n events = ['hover'],\n openOnClick = false,\n positionStrategy = 'absolute',\n middlewares,\n wrapper: WrapperElement,\n delayShow = 0,\n delayHide = 0,\n float = false,\n hidden = false,\n noArrow = false,\n clickable = false,\n closeOnEsc = false,\n closeOnScroll = false,\n closeOnResize = false,\n style: externalStyles,\n position,\n afterShow,\n afterHide,\n // props handled by controller\n content,\n contentWrapperRef,\n isOpen,\n setIsOpen,\n activeAnchor,\n setActiveAnchor,\n}: ITooltip) => {\n const tooltipRef = useRef<HTMLElement>(null)\n const tooltipArrowRef = useRef<HTMLElement>(null)\n const tooltipShowDelayTimerRef = useRef<NodeJS.Timeout | null>(null)\n const tooltipHideDelayTimerRef = useRef<NodeJS.Timeout | null>(null)\n const [actualPlacement, setActualPlacement] = useState(place)\n const [inlineStyles, setInlineStyles] = useState({})\n const [inlineArrowStyles, setInlineArrowStyles] = useState({})\n const [show, setShow] = useState(false)\n const [rendered, setRendered] = useState(false)\n const wasShowing = useRef(false)\n const lastFloatPosition = useRef<IPosition | null>(null)\n /**\n * @todo Remove this in a future version (provider/wrapper method is deprecated)\n */\n const { anchorRefs, setActiveAnchor: setProviderActiveAnchor } = useTooltip(id)\n const hoveringTooltip = useRef(false)\n const [anchorsBySelect, setAnchorsBySelect] = useState<HTMLElement[]>([])\n const mounted = useRef(false)\n\n const shouldOpenOnClick = openOnClick || events.includes('click')\n\n /**\n * useLayoutEffect runs before useEffect,\n * but should be used carefully because of caveats\n * https://beta.reactjs.org/reference/react/useLayoutEffect#caveats\n */\n useIsomorphicLayoutEffect(() => {\n mounted.current = true\n return () => {\n mounted.current = false\n }\n }, [])\n\n useEffect(() => {\n if (!show) {\n /**\n * this fixes weird behavior when switching between two anchor elements very quickly\n * remove the timeout and switch quickly between two adjancent anchor elements to see it\n *\n * in practice, this means the tooltip is not immediately removed from the DOM on hide\n */\n const timeout = setTimeout(() => {\n setRendered(false)\n }, 150)\n return () => {\n clearTimeout(timeout)\n }\n }\n return () => null\n }, [show])\n\n const handleShow = (value: boolean) => {\n if (!mounted.current) {\n return\n }\n if (value) {\n setRendered(true)\n }\n /**\n * wait for the component to render and calculate position\n * before actually showing\n */\n setTimeout(() => {\n if (!mounted.current) {\n return\n }\n setIsOpen?.(value)\n if (isOpen === undefined) {\n setShow(value)\n }\n }, 10)\n }\n\n /**\n * this replicates the effect from `handleShow()`\n * when `isOpen` is changed from outside\n */\n useEffect(() => {\n if (isOpen === undefined) {\n return () => null\n }\n if (isOpen) {\n setRendered(true)\n }\n const timeout = setTimeout(() => {\n setShow(isOpen)\n }, 10)\n return () => {\n clearTimeout(timeout)\n }\n }, [isOpen])\n\n useEffect(() => {\n if (show === wasShowing.current) {\n return\n }\n wasShowing.current = show\n if (show) {\n afterShow?.()\n } else {\n afterHide?.()\n }\n }, [show])\n\n const handleShowTooltipDelayed = () => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n\n tooltipShowDelayTimerRef.current = setTimeout(() => {\n handleShow(true)\n }, delayShow)\n }\n\n const handleHideTooltipDelayed = (delay = delayHide) => {\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n\n tooltipHideDelayTimerRef.current = setTimeout(() => {\n if (hoveringTooltip.current) {\n return\n }\n handleShow(false)\n }, delay)\n }\n\n const handleShowTooltip = (event?: Event) => {\n if (!event) {\n return\n }\n const target = (event.currentTarget ?? event.target) as HTMLElement | null\n if (!target?.isConnected) {\n /**\n * this happens when the target is removed from the DOM\n * at the same time the tooltip gets triggered\n */\n setActiveAnchor(null)\n setProviderActiveAnchor({ current: null })\n return\n }\n if (delayShow) {\n handleShowTooltipDelayed()\n } else {\n handleShow(true)\n }\n setActiveAnchor(target)\n setProviderActiveAnchor({ current: target })\n\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n }\n\n const handleHideTooltip = () => {\n if (clickable) {\n // allow time for the mouse to reach the tooltip, in case there's a gap\n handleHideTooltipDelayed(delayHide || 100)\n } else if (delayHide) {\n handleHideTooltipDelayed()\n } else {\n handleShow(false)\n }\n\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n }\n\n const handleTooltipPosition = ({ x, y }: IPosition) => {\n const virtualElement = {\n getBoundingClientRect() {\n return {\n x,\n y,\n width: 0,\n height: 0,\n top: y,\n left: x,\n right: x,\n bottom: y,\n }\n },\n } as Element\n computeTooltipPosition({\n place,\n offset,\n elementReference: virtualElement,\n tooltipReference: tooltipRef.current,\n tooltipArrowReference: tooltipArrowRef.current,\n strategy: positionStrategy,\n middlewares,\n }).then((computedStylesData) => {\n if (Object.keys(computedStylesData.tooltipStyles).length) {\n setInlineStyles(computedStylesData.tooltipStyles)\n }\n if (Object.keys(computedStylesData.tooltipArrowStyles).length) {\n setInlineArrowStyles(computedStylesData.tooltipArrowStyles)\n }\n setActualPlacement(computedStylesData.place as PlacesType)\n })\n }\n\n const handleMouseMove = (event?: Event) => {\n if (!event) {\n return\n }\n const mouseEvent = event as MouseEvent\n const mousePosition = {\n x: mouseEvent.clientX,\n y: mouseEvent.clientY,\n }\n handleTooltipPosition(mousePosition)\n lastFloatPosition.current = mousePosition\n }\n\n const handleClickTooltipAnchor = (event?: Event) => {\n handleShowTooltip(event)\n if (delayHide) {\n handleHideTooltipDelayed()\n }\n }\n\n const handleClickOutsideAnchors = (event: MouseEvent) => {\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n const anchors = [anchorById, ...anchorsBySelect]\n if (anchors.some((anchor) => anchor?.contains(event.target as HTMLElement))) {\n return\n }\n if (tooltipRef.current?.contains(event.target as HTMLElement)) {\n return\n }\n handleShow(false)\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n }\n\n // debounce handler to prevent call twice when\n // mouse enter and focus events being triggered toggether\n const debouncedHandleShowTooltip = debounce(handleShowTooltip, 50, true)\n const debouncedHandleHideTooltip = debounce(handleHideTooltip, 50, true)\n\n useEffect(() => {\n const elementRefs = new Set(anchorRefs)\n\n anchorsBySelect.forEach((anchor) => {\n elementRefs.add({ current: anchor })\n })\n\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n if (anchorById) {\n elementRefs.add({ current: anchorById })\n }\n\n const handleScrollResize = () => {\n handleShow(false)\n }\n\n const anchorScrollParent = getScrollParent(activeAnchor)\n const tooltipScrollParent = getScrollParent(tooltipRef.current)\n\n if (closeOnScroll) {\n window.addEventListener('scroll', handleScrollResize)\n anchorScrollParent?.addEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.addEventListener('scroll', handleScrollResize)\n }\n if (closeOnResize) {\n window.addEventListener('resize', handleScrollResize)\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n return\n }\n handleShow(false)\n }\n\n if (closeOnEsc) {\n window.addEventListener('keydown', handleEsc)\n }\n\n const enabledEvents: { event: string; listener: (event?: Event) => void }[] = []\n\n if (shouldOpenOnClick) {\n window.addEventListener('click', handleClickOutsideAnchors)\n enabledEvents.push({ event: 'click', listener: handleClickTooltipAnchor })\n } else {\n enabledEvents.push(\n { event: 'mouseenter', listener: debouncedHandleShowTooltip },\n { event: 'mouseleave', listener: debouncedHandleHideTooltip },\n { event: 'focus', listener: debouncedHandleShowTooltip },\n { event: 'blur', listener: debouncedHandleHideTooltip },\n )\n if (float) {\n enabledEvents.push({\n event: 'mousemove',\n listener: handleMouseMove,\n })\n }\n }\n\n const handleMouseEnterTooltip = () => {\n hoveringTooltip.current = true\n }\n const handleMouseLeaveTooltip = () => {\n hoveringTooltip.current = false\n handleHideTooltip()\n }\n\n if (clickable && !shouldOpenOnClick) {\n tooltipRef.current?.addEventListener('mouseenter', handleMouseEnterTooltip)\n tooltipRef.current?.addEventListener('mouseleave', handleMouseLeaveTooltip)\n }\n\n enabledEvents.forEach(({ event, listener }) => {\n elementRefs.forEach((ref) => {\n ref.current?.addEventListener(event, listener)\n })\n })\n\n return () => {\n if (closeOnScroll) {\n window.removeEventListener('scroll', handleScrollResize)\n anchorScrollParent?.removeEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.removeEventListener('scroll', handleScrollResize)\n }\n if (closeOnResize) {\n window.removeEventListener('resize', handleScrollResize)\n }\n if (shouldOpenOnClick) {\n window.removeEventListener('click', handleClickOutsideAnchors)\n }\n if (closeOnEsc) {\n window.removeEventListener('keydown', handleEsc)\n }\n if (clickable && !shouldOpenOnClick) {\n tooltipRef.current?.removeEventListener('mouseenter', handleMouseEnterTooltip)\n tooltipRef.current?.removeEventListener('mouseleave', handleMouseLeaveTooltip)\n }\n enabledEvents.forEach(({ event, listener }) => {\n elementRefs.forEach((ref) => {\n ref.current?.removeEventListener(event, listener)\n })\n })\n }\n /**\n * rendered is also a dependency to ensure anchor observers are re-registered\n * since `tooltipRef` becomes stale after removing/adding the tooltip to the DOM\n */\n }, [rendered, anchorRefs, anchorsBySelect, closeOnEsc, events])\n\n useEffect(() => {\n let selector = anchorSelect ?? ''\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n const documentObserverCallback: MutationCallback = (mutationList) => {\n const newAnchors: HTMLElement[] = []\n mutationList.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-tooltip-id') {\n const newId = (mutation.target as HTMLElement).getAttribute('data-tooltip-id')\n if (newId === id) {\n newAnchors.push(mutation.target as HTMLElement)\n }\n }\n if (mutation.type !== 'childList') {\n return\n }\n if (activeAnchor) {\n ;[...mutation.removedNodes].some((node) => {\n if (node?.contains?.(activeAnchor)) {\n setRendered(false)\n handleShow(false)\n setActiveAnchor(null)\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n return true\n }\n return false\n })\n }\n if (!selector) {\n return\n }\n try {\n const elements = [...mutation.addedNodes].filter((node) => node.nodeType === 1)\n newAnchors.push(\n // the element itself is an anchor\n ...(elements.filter((element) =>\n (element as HTMLElement).matches(selector),\n ) as HTMLElement[]),\n )\n newAnchors.push(\n // the element has children which are anchors\n ...elements.flatMap(\n (element) =>\n [...(element as HTMLElement).querySelectorAll(selector)] as HTMLElement[],\n ),\n )\n } catch {\n /**\n * invalid CSS selector.\n * already warned on tooltip controller\n */\n }\n })\n if (newAnchors.length) {\n setAnchorsBySelect((anchors) => [...anchors, ...newAnchors])\n }\n }\n const documentObserver = new MutationObserver(documentObserverCallback)\n // watch for anchor being removed from the DOM\n documentObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-tooltip-id'],\n })\n return () => {\n documentObserver.disconnect()\n }\n }, [id, anchorSelect, activeAnchor])\n\n const updateTooltipPosition = () => {\n if (position) {\n // if `position` is set, override regular and `float` positioning\n handleTooltipPosition(position)\n return\n }\n\n if (float) {\n if (lastFloatPosition.current) {\n /*\n Without this, changes to `content`, `place`, `offset`, ..., will only\n trigger a position calculation after a `mousemove` event.\n\n To see why this matters, comment this line, run `yarn dev` and click the\n \"Hover me!\" anchor.\n */\n handleTooltipPosition(lastFloatPosition.current)\n }\n // if `float` is set, override regular positioning\n return\n }\n\n computeTooltipPosition({\n place,\n offset,\n elementReference: activeAnchor,\n tooltipReference: tooltipRef.current,\n tooltipArrowReference: tooltipArrowRef.current,\n strategy: positionStrategy,\n middlewares,\n }).then((computedStylesData) => {\n if (!mounted.current) {\n // invalidate computed positions after remount\n return\n }\n if (Object.keys(computedStylesData.tooltipStyles).length) {\n setInlineStyles(computedStylesData.tooltipStyles)\n }\n if (Object.keys(computedStylesData.tooltipArrowStyles).length) {\n setInlineArrowStyles(computedStylesData.tooltipArrowStyles)\n }\n setActualPlacement(computedStylesData.place as PlacesType)\n })\n }\n\n useEffect(() => {\n updateTooltipPosition()\n }, [show, activeAnchor, content, externalStyles, place, offset, positionStrategy, position])\n\n useEffect(() => {\n if (!contentWrapperRef?.current) {\n return () => null\n }\n const contentObserver = new ResizeObserver(() => {\n updateTooltipPosition()\n })\n contentObserver.observe(contentWrapperRef.current)\n return () => {\n contentObserver.disconnect()\n }\n }, [content, contentWrapperRef?.current])\n\n useEffect(() => {\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n const anchors = [...anchorsBySelect, anchorById]\n if (!activeAnchor || !anchors.includes(activeAnchor)) {\n /**\n * if there is no active anchor,\n * or if the current active anchor is not amongst the allowed ones,\n * reset it\n */\n setActiveAnchor(anchorsBySelect[0] ?? anchorById)\n }\n }, [anchorId, anchorsBySelect, activeAnchor])\n\n useEffect(() => {\n return () => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n }\n }, [])\n\n useEffect(() => {\n let selector = anchorSelect\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n if (!selector) {\n return\n }\n try {\n const anchors = Array.from(document.querySelectorAll<HTMLElement>(selector))\n setAnchorsBySelect(anchors)\n } catch {\n // warning was already issued in the controller\n setAnchorsBySelect([])\n }\n }, [id, anchorSelect])\n\n const canShow = !hidden && content && show && Object.keys(inlineStyles).length > 0\n\n return rendered ? (\n <WrapperElement\n id={id}\n role=\"tooltip\"\n className={classNames(\n 'react-tooltip',\n coreStyles['tooltip'],\n styles['tooltip'],\n styles[variant],\n className,\n `react-tooltip__place-${actualPlacement}`,\n {\n [coreStyles['show']]: canShow,\n [coreStyles['fixed']]: positionStrategy === 'fixed',\n [coreStyles['clickable']]: clickable,\n },\n )}\n style={{ ...externalStyles, ...inlineStyles }}\n ref={tooltipRef}\n >\n {content}\n <WrapperElement\n className={classNames(\n 'react-tooltip-arrow',\n coreStyles['arrow'],\n styles['arrow'],\n classNameArrow,\n {\n /**\n * changed from dash `no-arrow` to camelcase because of:\n * https://github.com/indooorsman/esbuild-css-modules-plugin/issues/42\n */\n [coreStyles['noArrow']]: noArrow,\n },\n )}\n style={inlineArrowStyles}\n ref={tooltipArrowRef}\n />\n </WrapperElement>\n ) : null\n}\n\nexport default Tooltip\n","/* eslint-disable react/no-danger */\nimport React from 'react'\nimport type { ITooltipContent } from './TooltipContentTypes'\n\nconst TooltipContent = ({ content }: ITooltipContent) => {\n return <span dangerouslySetInnerHTML={{ __html: content }} />\n}\n\nexport default TooltipContent\n","import React, { useEffect, useRef, useState } from 'react'\nimport { Tooltip } from 'components/Tooltip'\nimport type {\n EventsType,\n PositionStrategy,\n PlacesType,\n VariantType,\n WrapperType,\n DataAttribute,\n ITooltip,\n ChildrenType,\n} from 'components/Tooltip/TooltipTypes'\nimport { useTooltip } from 'components/TooltipProvider'\nimport { TooltipContent } from 'components/TooltipContent'\nimport type { ITooltipController } from './TooltipControllerTypes'\n\nconst TooltipController = ({\n id,\n anchorId,\n anchorSelect,\n content,\n html,\n render,\n className,\n classNameArrow,\n variant = 'dark',\n place = 'top',\n offset = 10,\n wrapper = 'div',\n children = null,\n events = ['hover'],\n openOnClick = false,\n positionStrategy = 'absolute',\n middlewares,\n delayShow = 0,\n delayHide = 0,\n float = false,\n hidden = false,\n noArrow = false,\n clickable = false,\n closeOnEsc = false,\n closeOnScroll = false,\n closeOnResize = false,\n style,\n position,\n isOpen,\n setIsOpen,\n afterShow,\n afterHide,\n}: ITooltipController) => {\n const [tooltipContent, setTooltipContent] = useState(content)\n const [tooltipHtml, setTooltipHtml] = useState(html)\n const [tooltipPlace, setTooltipPlace] = useState(place)\n const [tooltipVariant, setTooltipVariant] = useState(variant)\n const [tooltipOffset, setTooltipOffset] = useState(offset)\n const [tooltipDelayShow, setTooltipDelayShow] = useState(delayShow)\n const [tooltipDelayHide, setTooltipDelayHide] = useState(delayHide)\n const [tooltipFloat, setTooltipFloat] = useState(float)\n const [tooltipHidden, setTooltipHidden] = useState(hidden)\n const [tooltipWrapper, setTooltipWrapper] = useState<WrapperType>(wrapper)\n const [tooltipEvents, setTooltipEvents] = useState(events)\n const [tooltipPositionStrategy, setTooltipPositionStrategy] = useState(positionStrategy)\n const [activeAnchor, setActiveAnchor] = useState<HTMLElement | null>(null)\n /**\n * @todo Remove this in a future version (provider/wrapper method is deprecated)\n */\n const { anchorRefs, activeAnchor: providerActiveAnchor } = useTooltip(id)\n\n const getDataAttributesFromAnchorElement = (elementReference: HTMLElement) => {\n const dataAttributes = elementReference?.getAttributeNames().reduce((acc, name) => {\n if (name.startsWith('data-tooltip-')) {\n const parsedAttribute = name.replace(/^data-tooltip-/, '') as DataAttribute\n acc[parsedAttribute] = elementReference?.getAttribute(name) ?? null\n }\n return acc\n }, {} as Record<DataAttribute, string | null>)\n\n return dataAttributes\n }\n\n const applyAllDataAttributesFromAnchorElement = (\n dataAttributes: Record<string, string | null>,\n ) => {\n const handleDataAttributes: Record<DataAttribute, (value: string | null) => void> = {\n place: (value) => {\n setTooltipPlace((value as PlacesType) ?? place)\n },\n content: (value) => {\n setTooltipContent(value ?? content)\n },\n html: (value) => {\n setTooltipHtml(value ?? html)\n },\n variant: (value) => {\n setTooltipVariant((value as VariantType) ?? variant)\n },\n offset: (value) => {\n setTooltipOffset(value === null ? offset : Number(value))\n },\n wrapper: (value) => {\n setTooltipWrapper((value as WrapperType) ?? wrapper)\n },\n events: (value) => {\n const parsed = value?.split(' ') as EventsType[]\n setTooltipEvents(parsed ?? events)\n },\n 'position-strategy': (value) => {\n setTooltipPositionStrategy((value as PositionStrategy) ?? positionStrategy)\n },\n 'delay-show': (value) => {\n setTooltipDelayShow(value === null ? delayShow : Number(value))\n },\n 'delay-hide': (value) => {\n setTooltipDelayHide(value === null ? delayHide : Number(value))\n },\n float: (value) => {\n setTooltipFloat(value === null ? float : value === 'true')\n },\n hidden: (value) => {\n setTooltipHidden(value === null ? hidden : value === 'true')\n },\n }\n // reset unset data attributes to default values\n // without this, data attributes from the last active anchor will still be used\n Object.values(handleDataAttributes).forEach((handler) => handler(null))\n Object.entries(dataAttributes).forEach(([key, value]) => {\n handleDataAttributes[key as DataAttribute]?.(value)\n })\n }\n\n useEffect(() => {\n setTooltipContent(content)\n }, [content])\n\n useEffect(() => {\n setTooltipHtml(html)\n }, [html])\n\n useEffect(() => {\n setTooltipPlace(place)\n }, [place])\n\n useEffect(() => {\n setTooltipVariant(variant)\n }, [variant])\n\n useEffect(() => {\n setTooltipOffset(offset)\n }, [offset])\n\n useEffect(() => {\n setTooltipDelayShow(delayShow)\n }, [delayShow])\n\n useEffect(() => {\n setTooltipDelayHide(delayHide)\n }, [delayHide])\n\n useEffect(() => {\n setTooltipFloat(float)\n }, [float])\n\n useEffect(() => {\n setTooltipHidden(hidden)\n }, [hidden])\n\n useEffect(() => {\n setTooltipPositionStrategy(positionStrategy)\n }, [positionStrategy])\n\n useEffect(() => {\n const elementRefs = new Set(anchorRefs)\n\n let selector = anchorSelect\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n if (selector) {\n try {\n const anchorsBySelect = document.querySelectorAll<HTMLElement>(selector)\n anchorsBySelect.forEach((anchor) => {\n elementRefs.add({ current: anchor })\n })\n } catch {\n if (!process.env.NODE_ENV || process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(`[react-tooltip] \"${selector}\" is not a valid CSS selector`)\n }\n }\n }\n\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n if (anchorById) {\n elementRefs.add({ current: anchorById })\n }\n\n if (!elementRefs.size) {\n return () => null\n }\n\n const anchorElement = activeAnchor ?? anchorById ?? providerActiveAnchor.current\n\n const observerCallback: MutationCallback = (mutationList) => {\n mutationList.forEach((mutation) => {\n if (\n !anchorElement ||\n mutation.type !== 'attributes' ||\n !mutation.attributeName?.startsWith('data-tooltip-')\n ) {\n return\n }\n // make sure to get all set attributes, since all unset attributes are reset\n const dataAttributes = getDataAttributesFromAnchorElement(anchorElement)\n applyAllDataAttributesFromAnchorElement(dataAttributes)\n })\n }\n\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(observerCallback)\n\n // do not check for subtree and childrens, we only want to know attribute changes\n // to stay watching `data-attributes-*` from anchor element\n const observerConfig = { attributes: true, childList: false, subtree: false }\n\n if (anchorElement) {\n const dataAttributes = getDataAttributesFromAnchorElement(anchorElement)\n applyAllDataAttributesFromAnchorElement(dataAttributes)\n // Start observing the target node for configured mutations\n observer.observe(anchorElement, observerConfig)\n }\n\n return () => {\n // Remove the observer when the tooltip is destroyed\n observer.disconnect()\n }\n }, [anchorRefs, providerActiveAnchor, activeAnchor, anchorId, anchorSelect])\n\n /**\n * content priority: children < render or content < html\n * children should be lower priority so that it can be used as the \"default\" content\n */\n let renderedContent: ChildrenType = children\n const contentWrapperRef = useRef<HTMLDivElement>(null)\n if (render) {\n const rendered = render({ content: tooltipContent ?? null, activeAnchor }) as React.ReactNode\n renderedContent = rendered ? (\n <div ref={contentWrapperRef} className=\"react-tooltip-content-wrapper\">\n {rendered}\n </div>\n ) : null\n } else if (tooltipContent) {\n renderedContent = tooltipContent\n }\n if (tooltipHtml) {\n renderedContent = <TooltipContent content={tooltipHtml} />\n }\n\n const props: ITooltip = {\n id,\n anchorId,\n anchorSelect,\n className,\n classNameArrow,\n content: renderedContent,\n contentWrapperRef,\n place: tooltipPlace,\n variant: tooltipVariant,\n offset: tooltipOffset,\n wrapper: tooltipWrapper,\n events: tooltipEvents,\n openOnClick,\n positionStrategy: tooltipPositionStrategy,\n middlewares,\n delayShow: tooltipDelayShow,\n delayHide: tooltipDelayHide,\n float: tooltipFloat,\n hidden: tooltipHidden,\n noArrow,\n clickable,\n closeOnEsc,\n closeOnScroll,\n closeOnResize,\n style,\n position,\n isOpen,\n setIsOpen,\n afterShow,\n afterHide,\n activeAnchor,\n setActiveAnchor: (anchor: HTMLElement | null) => setActiveAnchor(anchor),\n }\n\n return <Tooltip {...props} />\n}\n\nexport default TooltipController\n","import './tokens.css'\n\nimport { injectStyle } from 'utils/handle-style'\n\nimport type {\n ChildrenType,\n DataAttribute,\n EventsType,\n PlacesType,\n PositionStrategy,\n VariantType,\n WrapperType,\n IPosition,\n Middleware,\n} from './components/Tooltip/TooltipTypes'\nimport type { ITooltipController } from './components/TooltipController/TooltipControllerTypes'\nimport type { ITooltipWrapper } from './components/TooltipProvider/TooltipProviderTypes'\n\n// those content will be replaced in build time with the `react-tooltip.css` builded content\nconst TooltipCoreStyles = 'react-tooltip-core-css-placeholder'\nconst TooltipStyles = 'react-tooltip-css-placeholder'\n\ninjectStyle({ css: TooltipCoreStyles, type: 'core' })\ninjectStyle({ css: TooltipStyles })\n\nexport { TooltipController as Tooltip } from './components/TooltipController'\nexport { TooltipProvider, TooltipWrapper } from './components/TooltipProvider'\nexport type {\n ChildrenType,\n DataAttribute,\n EventsType,\n PlacesType,\n PositionStrategy,\n VariantType,\n WrapperType,\n ITooltipController as ITooltip,\n ITooltipWrapper,\n IPosition,\n Middleware,\n}\n\nexport { removeStyle } from './utils/handle-style'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-tooltip.mjs","sources":["../src/utils/handle-style.ts","../src/utils/debounce.ts","../src/components/TooltipProvider/TooltipProvider.tsx","../src/components/TooltipProvider/TooltipWrapper.tsx","../src/utils/use-isomorphic-layout-effect.ts","../src/utils/get-scroll-parent.ts","../src/utils/compute-positions.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/TooltipContent/TooltipContent.tsx","../src/components/TooltipController/TooltipController.tsx","../src/index.tsx"],"sourcesContent":["// This is the ID for the core styles of ReactTooltip\nconst REACT_TOOLTIP_CORE_STYLES_ID = 'react-tooltip-core-styles'\n// This is the ID for the visual styles of ReactTooltip\nconst REACT_TOOLTIP_BASE_STYLES_ID = 'react-tooltip-base-styles'\n\nfunction injectStyle({\n css,\n id = REACT_TOOLTIP_BASE_STYLES_ID,\n type = 'base',\n ref,\n}: {\n css: string\n id?: string\n type?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref?: any\n}) {\n if (\n type === 'core' &&\n typeof process !== 'undefined' && // this validation prevents docs from breaking even with `process?`\n process?.env?.REACT_TOOLTIP_DISABLE_CORE_STYLES\n ) {\n return\n }\n\n if (\n type !== 'core' &&\n typeof process !== 'undefined' && // this validation prevents docs from breaking even with `process?`\n process?.env?.REACT_TOOLTIP_DISABLE_BASE_STYLES\n ) {\n return\n }\n\n if (type === 'core') {\n // eslint-disable-next-line no-param-reassign\n id = REACT_TOOLTIP_CORE_STYLES_ID\n }\n\n if (!ref) {\n // eslint-disable-next-line no-param-reassign\n ref = {}\n }\n const { insertAt } = ref\n\n if (!css || typeof document === 'undefined' || document.getElementById(id)) {\n return\n }\n\n const head = document.head || document.getElementsByTagName('head')[0]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const style: any = document.createElement('style')\n style.id = id\n style.type = 'text/css'\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\n\nfunction removeStyle({\n type = 'base',\n id = REACT_TOOLTIP_BASE_STYLES_ID,\n}: {\n type?: string\n id?: string\n} = {}) {\n if (type === 'core') {\n // eslint-disable-next-line no-param-reassign\n id = REACT_TOOLTIP_CORE_STYLES_ID\n }\n\n const style = document.getElementById(id)\n style?.remove()\n}\n\nexport { injectStyle, removeStyle }\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This function debounce the received function\n * @param { function } \tfunc\t\t\t\tFunction to be debounced\n * @param { number } \t\twait\t\t\t\tTime to wait before execut the function\n * @param { boolean } \timmediate\t\tParam to define if the function will be executed immediately\n */\nconst debounce = (func: (...args: any[]) => void, wait?: number, immediate?: true) => {\n let timeout: NodeJS.Timeout | null = null\n\n return function debounced(this: typeof func, ...args: any[]) {\n const later = () => {\n timeout = null\n if (!immediate) {\n func.apply(this, args)\n }\n }\n\n if (immediate && !timeout) {\n /**\n * there's not need to clear the timeout\n * since we expect it to resolve and set `timeout = null`\n */\n func.apply(this, args)\n timeout = setTimeout(later, wait)\n }\n\n if (!immediate) {\n if (timeout) {\n clearTimeout(timeout)\n }\n timeout = setTimeout(later, wait)\n }\n }\n}\n\nexport default debounce\n","import React, {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\n\nimport type {\n AnchorRef,\n TooltipContextData,\n TooltipContextDataWrapper,\n} from './TooltipProviderTypes'\n\nconst DEFAULT_TOOLTIP_ID = 'DEFAULT_TOOLTIP_ID'\nconst DEFAULT_CONTEXT_DATA: TooltipContextData = {\n anchorRefs: new Set(),\n activeAnchor: { current: null },\n attach: () => {\n /* attach anchor element */\n },\n detach: () => {\n /* detach anchor element */\n },\n setActiveAnchor: () => {\n /* set active anchor */\n },\n}\n\nconst DEFAULT_CONTEXT_DATA_WRAPPER: TooltipContextDataWrapper = {\n getTooltipData: () => DEFAULT_CONTEXT_DATA,\n}\n\nconst TooltipContext = createContext<TooltipContextDataWrapper>(DEFAULT_CONTEXT_DATA_WRAPPER)\n\n/**\n * @deprecated Use the `data-tooltip-id` attribute, or the `anchorSelect` prop instead.\n * See https://react-tooltip.com/docs/getting-started\n */\nconst TooltipProvider: React.FC<PropsWithChildren<void>> = ({ children }) => {\n const [anchorRefMap, setAnchorRefMap] = useState<Record<string, Set<AnchorRef>>>({\n [DEFAULT_TOOLTIP_ID]: new Set(),\n })\n const [activeAnchorMap, setActiveAnchorMap] = useState<Record<string, AnchorRef>>({\n [DEFAULT_TOOLTIP_ID]: { current: null },\n })\n\n const attach = (tooltipId: string, ...refs: AnchorRef[]) => {\n setAnchorRefMap((oldMap) => {\n const tooltipRefs = oldMap[tooltipId] ?? new Set()\n refs.forEach((ref) => tooltipRefs.add(ref))\n // create new object to trigger re-render\n return { ...oldMap, [tooltipId]: new Set(tooltipRefs) }\n })\n }\n\n const detach = (tooltipId: string, ...refs: AnchorRef[]) => {\n setAnchorRefMap((oldMap) => {\n const tooltipRefs = oldMap[tooltipId]\n if (!tooltipRefs) {\n // tooltip not found\n // maybe thow error?\n return oldMap\n }\n refs.forEach((ref) => tooltipRefs.delete(ref))\n // create new object to trigger re-render\n return { ...oldMap }\n })\n }\n\n const setActiveAnchor = (tooltipId: string, ref: React.RefObject<HTMLElement>) => {\n setActiveAnchorMap((oldMap) => {\n if (oldMap[tooltipId]?.current === ref.current) {\n return oldMap\n }\n // create new object to trigger re-render\n return { ...oldMap, [tooltipId]: ref }\n })\n }\n\n const getTooltipData = useCallback(\n (tooltipId = DEFAULT_TOOLTIP_ID) => ({\n anchorRefs: anchorRefMap[tooltipId] ?? new Set(),\n activeAnchor: activeAnchorMap[tooltipId] ?? { current: null },\n attach: (...refs: AnchorRef[]) => attach(tooltipId, ...refs),\n detach: (...refs: AnchorRef[]) => detach(tooltipId, ...refs),\n setActiveAnchor: (ref: AnchorRef) => setActiveAnchor(tooltipId, ref),\n }),\n [anchorRefMap, activeAnchorMap, attach, detach],\n )\n\n const context = useMemo(() => {\n return {\n getTooltipData,\n }\n }, [getTooltipData])\n\n return <TooltipContext.Provider value={context}>{children}</TooltipContext.Provider>\n}\n\nexport function useTooltip(tooltipId = DEFAULT_TOOLTIP_ID) {\n return useContext(TooltipContext).getTooltipData(tooltipId)\n}\n\nexport default TooltipProvider\n","import React, { useEffect, useRef } from 'react'\nimport classNames from 'classnames'\nimport { useTooltip } from './TooltipProvider'\nimport type { ITooltipWrapper } from './TooltipProviderTypes'\n\n/**\n * @deprecated Use the `data-tooltip-id` attribute, or the `anchorSelect` prop instead.\n * See https://react-tooltip.com/docs/getting-started\n */\nconst TooltipWrapper = ({\n tooltipId,\n children,\n className,\n place,\n content,\n html,\n variant,\n offset,\n wrapper,\n events,\n positionStrategy,\n delayShow,\n delayHide,\n}: ITooltipWrapper) => {\n const { attach, detach } = useTooltip(tooltipId)\n const anchorRef = useRef<HTMLElement | null>(null)\n\n useEffect(() => {\n attach(anchorRef)\n return () => {\n detach(anchorRef)\n }\n }, [])\n\n return (\n <span\n ref={anchorRef}\n className={classNames('react-tooltip-wrapper', className)}\n data-tooltip-place={place}\n data-tooltip-content={content}\n data-tooltip-html={html}\n data-tooltip-variant={variant}\n data-tooltip-offset={offset}\n data-tooltip-wrapper={wrapper}\n data-tooltip-events={events}\n data-tooltip-position-strategy={positionStrategy}\n data-tooltip-delay-show={delayShow}\n data-tooltip-delay-hide={delayHide}\n >\n {children}\n </span>\n )\n}\n\nexport default TooltipWrapper\n","import { useLayoutEffect, useEffect } from 'react'\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport default useIsomorphicLayoutEffect\n","const isScrollable = (node: Element) => {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return false\n }\n const style = getComputedStyle(node)\n return ['overflow', 'overflow-x', 'overflow-y'].some((propertyName) => {\n const value = style.getPropertyValue(propertyName)\n return value === 'auto' || value === 'scroll'\n })\n}\n\nexport const getScrollParent = (node: Element | null) => {\n if (!node) {\n return null\n }\n let currentParent = node.parentElement\n while (currentParent) {\n if (isScrollable(currentParent)) {\n return currentParent\n }\n currentParent = currentParent.parentElement\n }\n return document.scrollingElement || document.documentElement\n}\n","import { computePosition, offset, shift, arrow, flip } from '@floating-ui/dom'\nimport type { IComputePositions } from './compute-positions-types'\n\nexport const computeTooltipPosition = async ({\n elementReference = null,\n tooltipReference = null,\n tooltipArrowReference = null,\n place = 'top',\n offset: offsetValue = 10,\n strategy = 'absolute',\n middlewares = [offset(Number(offsetValue)), flip(), shift({ padding: 5 })],\n border,\n}: IComputePositions) => {\n if (!elementReference) {\n // elementReference can be null or undefined and we will not compute the position\n // eslint-disable-next-line no-console\n // console.error('The reference element for tooltip was not defined: ', elementReference)\n return { tooltipStyles: {}, tooltipArrowStyles: {}, place }\n }\n\n if (tooltipReference === null) {\n return { tooltipStyles: {}, tooltipArrowStyles: {}, place }\n }\n\n const middleware = middlewares\n\n if (tooltipArrowReference) {\n middleware.push(arrow({ element: tooltipArrowReference as HTMLElement, padding: 5 }))\n\n return computePosition(elementReference as HTMLElement, tooltipReference as HTMLElement, {\n placement: place,\n strategy,\n middleware,\n }).then(({ x, y, placement, middlewareData }) => {\n const styles = { left: `${x}px`, top: `${y}px`, border }\n\n const { x: arrowX, y: arrowY } = middlewareData.arrow ?? { x: 0, y: 0 }\n\n const staticSide =\n {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]] ?? 'bottom'\n\n const borderSide =\n border &&\n {\n top: { borderBottom: border, borderRight: border },\n right: { borderBottom: border, borderLeft: border },\n bottom: { borderTop: border, borderLeft: border },\n left: { borderTop: border, borderRight: border },\n }[placement.split('-')[0]]\n\n let borderWidth = 0\n if (border) {\n const match = `${border}`.match(/(\\d+)px/)\n if (match?.[1]) {\n borderWidth = Number(match[1])\n } else {\n /**\n * this means `border` was set without `width`, or non-px value\n */\n borderWidth = 1\n }\n }\n\n const arrowStyle = {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n ...borderSide,\n [staticSide]: `-${4 + borderWidth}px`,\n }\n\n return { tooltipStyles: styles, tooltipArrowStyles: arrowStyle, place: placement }\n })\n }\n\n return computePosition(elementReference as HTMLElement, tooltipReference as HTMLElement, {\n placement: 'bottom',\n strategy,\n middleware,\n }).then(({ x, y, placement }) => {\n const styles = { left: `${x}px`, top: `${y}px` }\n\n return { tooltipStyles: styles, tooltipArrowStyles: {}, place: placement }\n })\n}\n","import React, { useEffect, useState, useRef } from 'react'\nimport classNames from 'classnames'\nimport debounce from 'utils/debounce'\nimport { useTooltip } from 'components/TooltipProvider'\nimport useIsomorphicLayoutEffect from 'utils/use-isomorphic-layout-effect'\nimport { getScrollParent } from 'utils/get-scroll-parent'\nimport { computeTooltipPosition } from 'utils/compute-positions'\nimport coreStyles from './core-styles.module.css'\nimport styles from './styles.module.css'\nimport type { IPosition, ITooltip, PlacesType } from './TooltipTypes'\n\nconst Tooltip = ({\n // props\n id,\n className,\n classNameArrow,\n variant = 'dark',\n anchorId,\n anchorSelect,\n place = 'top',\n offset = 10,\n events = ['hover'],\n openOnClick = false,\n positionStrategy = 'absolute',\n middlewares,\n wrapper: WrapperElement,\n delayShow = 0,\n delayHide = 0,\n float = false,\n hidden = false,\n noArrow = false,\n clickable = false,\n closeOnEsc = false,\n closeOnScroll = false,\n closeOnResize = false,\n style: externalStyles,\n position,\n afterShow,\n afterHide,\n // props handled by controller\n content,\n contentWrapperRef,\n isOpen,\n setIsOpen,\n activeAnchor,\n setActiveAnchor,\n border,\n}: ITooltip) => {\n const tooltipRef = useRef<HTMLElement>(null)\n const tooltipArrowRef = useRef<HTMLElement>(null)\n const tooltipShowDelayTimerRef = useRef<NodeJS.Timeout | null>(null)\n const tooltipHideDelayTimerRef = useRef<NodeJS.Timeout | null>(null)\n const [actualPlacement, setActualPlacement] = useState(place)\n const [inlineStyles, setInlineStyles] = useState({})\n const [inlineArrowStyles, setInlineArrowStyles] = useState({})\n const [show, setShow] = useState(false)\n const [rendered, setRendered] = useState(false)\n const wasShowing = useRef(false)\n const lastFloatPosition = useRef<IPosition | null>(null)\n /**\n * @todo Remove this in a future version (provider/wrapper method is deprecated)\n */\n const { anchorRefs, setActiveAnchor: setProviderActiveAnchor } = useTooltip(id)\n const hoveringTooltip = useRef(false)\n const [anchorsBySelect, setAnchorsBySelect] = useState<HTMLElement[]>([])\n const mounted = useRef(false)\n\n const shouldOpenOnClick = openOnClick || events.includes('click')\n\n /**\n * useLayoutEffect runs before useEffect,\n * but should be used carefully because of caveats\n * https://beta.reactjs.org/reference/react/useLayoutEffect#caveats\n */\n useIsomorphicLayoutEffect(() => {\n mounted.current = true\n return () => {\n mounted.current = false\n }\n }, [])\n\n useEffect(() => {\n if (!show) {\n /**\n * this fixes weird behavior when switching between two anchor elements very quickly\n * remove the timeout and switch quickly between two adjancent anchor elements to see it\n *\n * in practice, this means the tooltip is not immediately removed from the DOM on hide\n */\n const timeout = setTimeout(() => {\n setRendered(false)\n }, 150)\n return () => {\n clearTimeout(timeout)\n }\n }\n return () => null\n }, [show])\n\n const handleShow = (value: boolean) => {\n if (!mounted.current) {\n return\n }\n if (value) {\n setRendered(true)\n }\n /**\n * wait for the component to render and calculate position\n * before actually showing\n */\n setTimeout(() => {\n if (!mounted.current) {\n return\n }\n setIsOpen?.(value)\n if (isOpen === undefined) {\n setShow(value)\n }\n }, 10)\n }\n\n /**\n * this replicates the effect from `handleShow()`\n * when `isOpen` is changed from outside\n */\n useEffect(() => {\n if (isOpen === undefined) {\n return () => null\n }\n if (isOpen) {\n setRendered(true)\n }\n const timeout = setTimeout(() => {\n setShow(isOpen)\n }, 10)\n return () => {\n clearTimeout(timeout)\n }\n }, [isOpen])\n\n useEffect(() => {\n if (show === wasShowing.current) {\n return\n }\n wasShowing.current = show\n if (show) {\n afterShow?.()\n } else {\n afterHide?.()\n }\n }, [show])\n\n const handleShowTooltipDelayed = () => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n\n tooltipShowDelayTimerRef.current = setTimeout(() => {\n handleShow(true)\n }, delayShow)\n }\n\n const handleHideTooltipDelayed = (delay = delayHide) => {\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n\n tooltipHideDelayTimerRef.current = setTimeout(() => {\n if (hoveringTooltip.current) {\n return\n }\n handleShow(false)\n }, delay)\n }\n\n const handleShowTooltip = (event?: Event) => {\n if (!event) {\n return\n }\n const target = (event.currentTarget ?? event.target) as HTMLElement | null\n if (!target?.isConnected) {\n /**\n * this happens when the target is removed from the DOM\n * at the same time the tooltip gets triggered\n */\n setActiveAnchor(null)\n setProviderActiveAnchor({ current: null })\n return\n }\n if (delayShow) {\n handleShowTooltipDelayed()\n } else {\n handleShow(true)\n }\n setActiveAnchor(target)\n setProviderActiveAnchor({ current: target })\n\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n }\n\n const handleHideTooltip = () => {\n if (clickable) {\n // allow time for the mouse to reach the tooltip, in case there's a gap\n handleHideTooltipDelayed(delayHide || 100)\n } else if (delayHide) {\n handleHideTooltipDelayed()\n } else {\n handleShow(false)\n }\n\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n }\n\n const handleTooltipPosition = ({ x, y }: IPosition) => {\n const virtualElement = {\n getBoundingClientRect() {\n return {\n x,\n y,\n width: 0,\n height: 0,\n top: y,\n left: x,\n right: x,\n bottom: y,\n }\n },\n } as Element\n computeTooltipPosition({\n place,\n offset,\n elementReference: virtualElement,\n tooltipReference: tooltipRef.current,\n tooltipArrowReference: tooltipArrowRef.current,\n strategy: positionStrategy,\n middlewares,\n border,\n }).then((computedStylesData) => {\n if (Object.keys(computedStylesData.tooltipStyles).length) {\n setInlineStyles(computedStylesData.tooltipStyles)\n }\n if (Object.keys(computedStylesData.tooltipArrowStyles).length) {\n setInlineArrowStyles(computedStylesData.tooltipArrowStyles)\n }\n setActualPlacement(computedStylesData.place as PlacesType)\n })\n }\n\n const handleMouseMove = (event?: Event) => {\n if (!event) {\n return\n }\n const mouseEvent = event as MouseEvent\n const mousePosition = {\n x: mouseEvent.clientX,\n y: mouseEvent.clientY,\n }\n handleTooltipPosition(mousePosition)\n lastFloatPosition.current = mousePosition\n }\n\n const handleClickTooltipAnchor = (event?: Event) => {\n handleShowTooltip(event)\n if (delayHide) {\n handleHideTooltipDelayed()\n }\n }\n\n const handleClickOutsideAnchors = (event: MouseEvent) => {\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n const anchors = [anchorById, ...anchorsBySelect]\n if (anchors.some((anchor) => anchor?.contains(event.target as HTMLElement))) {\n return\n }\n if (tooltipRef.current?.contains(event.target as HTMLElement)) {\n return\n }\n handleShow(false)\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n }\n\n // debounce handler to prevent call twice when\n // mouse enter and focus events being triggered toggether\n const debouncedHandleShowTooltip = debounce(handleShowTooltip, 50, true)\n const debouncedHandleHideTooltip = debounce(handleHideTooltip, 50, true)\n\n useEffect(() => {\n const elementRefs = new Set(anchorRefs)\n\n anchorsBySelect.forEach((anchor) => {\n elementRefs.add({ current: anchor })\n })\n\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n if (anchorById) {\n elementRefs.add({ current: anchorById })\n }\n\n const handleScrollResize = () => {\n handleShow(false)\n }\n\n const anchorScrollParent = getScrollParent(activeAnchor)\n const tooltipScrollParent = getScrollParent(tooltipRef.current)\n\n if (closeOnScroll) {\n window.addEventListener('scroll', handleScrollResize)\n anchorScrollParent?.addEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.addEventListener('scroll', handleScrollResize)\n }\n if (closeOnResize) {\n window.addEventListener('resize', handleScrollResize)\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n return\n }\n handleShow(false)\n }\n\n if (closeOnEsc) {\n window.addEventListener('keydown', handleEsc)\n }\n\n const enabledEvents: { event: string; listener: (event?: Event) => void }[] = []\n\n if (shouldOpenOnClick) {\n window.addEventListener('click', handleClickOutsideAnchors)\n enabledEvents.push({ event: 'click', listener: handleClickTooltipAnchor })\n } else {\n enabledEvents.push(\n { event: 'mouseenter', listener: debouncedHandleShowTooltip },\n { event: 'mouseleave', listener: debouncedHandleHideTooltip },\n { event: 'focus', listener: debouncedHandleShowTooltip },\n { event: 'blur', listener: debouncedHandleHideTooltip },\n )\n if (float) {\n enabledEvents.push({\n event: 'mousemove',\n listener: handleMouseMove,\n })\n }\n }\n\n const handleMouseEnterTooltip = () => {\n hoveringTooltip.current = true\n }\n const handleMouseLeaveTooltip = () => {\n hoveringTooltip.current = false\n handleHideTooltip()\n }\n\n if (clickable && !shouldOpenOnClick) {\n tooltipRef.current?.addEventListener('mouseenter', handleMouseEnterTooltip)\n tooltipRef.current?.addEventListener('mouseleave', handleMouseLeaveTooltip)\n }\n\n enabledEvents.forEach(({ event, listener }) => {\n elementRefs.forEach((ref) => {\n ref.current?.addEventListener(event, listener)\n })\n })\n\n return () => {\n if (closeOnScroll) {\n window.removeEventListener('scroll', handleScrollResize)\n anchorScrollParent?.removeEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.removeEventListener('scroll', handleScrollResize)\n }\n if (closeOnResize) {\n window.removeEventListener('resize', handleScrollResize)\n }\n if (shouldOpenOnClick) {\n window.removeEventListener('click', handleClickOutsideAnchors)\n }\n if (closeOnEsc) {\n window.removeEventListener('keydown', handleEsc)\n }\n if (clickable && !shouldOpenOnClick) {\n tooltipRef.current?.removeEventListener('mouseenter', handleMouseEnterTooltip)\n tooltipRef.current?.removeEventListener('mouseleave', handleMouseLeaveTooltip)\n }\n enabledEvents.forEach(({ event, listener }) => {\n elementRefs.forEach((ref) => {\n ref.current?.removeEventListener(event, listener)\n })\n })\n }\n /**\n * rendered is also a dependency to ensure anchor observers are re-registered\n * since `tooltipRef` becomes stale after removing/adding the tooltip to the DOM\n */\n }, [rendered, anchorRefs, anchorsBySelect, closeOnEsc, events])\n\n useEffect(() => {\n let selector = anchorSelect ?? ''\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n const documentObserverCallback: MutationCallback = (mutationList) => {\n const newAnchors: HTMLElement[] = []\n mutationList.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-tooltip-id') {\n const newId = (mutation.target as HTMLElement).getAttribute('data-tooltip-id')\n if (newId === id) {\n newAnchors.push(mutation.target as HTMLElement)\n }\n }\n if (mutation.type !== 'childList') {\n return\n }\n if (activeAnchor) {\n ;[...mutation.removedNodes].some((node) => {\n if (node?.contains?.(activeAnchor)) {\n setRendered(false)\n handleShow(false)\n setActiveAnchor(null)\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n return true\n }\n return false\n })\n }\n if (!selector) {\n return\n }\n try {\n const elements = [...mutation.addedNodes].filter((node) => node.nodeType === 1)\n newAnchors.push(\n // the element itself is an anchor\n ...(elements.filter((element) =>\n (element as HTMLElement).matches(selector),\n ) as HTMLElement[]),\n )\n newAnchors.push(\n // the element has children which are anchors\n ...elements.flatMap(\n (element) =>\n [...(element as HTMLElement).querySelectorAll(selector)] as HTMLElement[],\n ),\n )\n } catch {\n /**\n * invalid CSS selector.\n * already warned on tooltip controller\n */\n }\n })\n if (newAnchors.length) {\n setAnchorsBySelect((anchors) => [...anchors, ...newAnchors])\n }\n }\n const documentObserver = new MutationObserver(documentObserverCallback)\n // watch for anchor being removed from the DOM\n documentObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-tooltip-id'],\n })\n return () => {\n documentObserver.disconnect()\n }\n }, [id, anchorSelect, activeAnchor])\n\n const updateTooltipPosition = () => {\n if (position) {\n // if `position` is set, override regular and `float` positioning\n handleTooltipPosition(position)\n return\n }\n\n if (float) {\n if (lastFloatPosition.current) {\n /*\n Without this, changes to `content`, `place`, `offset`, ..., will only\n trigger a position calculation after a `mousemove` event.\n\n To see why this matters, comment this line, run `yarn dev` and click the\n \"Hover me!\" anchor.\n */\n handleTooltipPosition(lastFloatPosition.current)\n }\n // if `float` is set, override regular positioning\n return\n }\n\n computeTooltipPosition({\n place,\n offset,\n elementReference: activeAnchor,\n tooltipReference: tooltipRef.current,\n tooltipArrowReference: tooltipArrowRef.current,\n strategy: positionStrategy,\n middlewares,\n border,\n }).then((computedStylesData) => {\n if (!mounted.current) {\n // invalidate computed positions after remount\n return\n }\n if (Object.keys(computedStylesData.tooltipStyles).length) {\n setInlineStyles(computedStylesData.tooltipStyles)\n }\n if (Object.keys(computedStylesData.tooltipArrowStyles).length) {\n setInlineArrowStyles(computedStylesData.tooltipArrowStyles)\n }\n setActualPlacement(computedStylesData.place as PlacesType)\n })\n }\n\n useEffect(() => {\n updateTooltipPosition()\n }, [show, activeAnchor, content, externalStyles, place, offset, positionStrategy, position])\n\n useEffect(() => {\n if (!contentWrapperRef?.current) {\n return () => null\n }\n const contentObserver = new ResizeObserver(() => {\n updateTooltipPosition()\n })\n contentObserver.observe(contentWrapperRef.current)\n return () => {\n contentObserver.disconnect()\n }\n }, [content, contentWrapperRef?.current])\n\n useEffect(() => {\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n const anchors = [...anchorsBySelect, anchorById]\n if (!activeAnchor || !anchors.includes(activeAnchor)) {\n /**\n * if there is no active anchor,\n * or if the current active anchor is not amongst the allowed ones,\n * reset it\n */\n setActiveAnchor(anchorsBySelect[0] ?? anchorById)\n }\n }, [anchorId, anchorsBySelect, activeAnchor])\n\n useEffect(() => {\n return () => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n }\n }, [])\n\n useEffect(() => {\n let selector = anchorSelect\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n if (!selector) {\n return\n }\n try {\n const anchors = Array.from(document.querySelectorAll<HTMLElement>(selector))\n setAnchorsBySelect(anchors)\n } catch {\n // warning was already issued in the controller\n setAnchorsBySelect([])\n }\n }, [id, anchorSelect])\n\n const canShow = !hidden && content && show && Object.keys(inlineStyles).length > 0\n\n return rendered ? (\n <WrapperElement\n id={id}\n role=\"tooltip\"\n className={classNames(\n 'react-tooltip',\n coreStyles['tooltip'],\n styles['tooltip'],\n styles[variant],\n className,\n `react-tooltip__place-${actualPlacement}`,\n {\n [coreStyles['show']]: canShow,\n [coreStyles['fixed']]: positionStrategy === 'fixed',\n [coreStyles['clickable']]: clickable,\n },\n )}\n style={{ ...externalStyles, ...inlineStyles }}\n ref={tooltipRef}\n >\n {content}\n <WrapperElement\n className={classNames(\n 'react-tooltip-arrow',\n coreStyles['arrow'],\n styles['arrow'],\n classNameArrow,\n {\n /**\n * changed from dash `no-arrow` to camelcase because of:\n * https://github.com/indooorsman/esbuild-css-modules-plugin/issues/42\n */\n [coreStyles['noArrow']]: noArrow,\n },\n )}\n style={inlineArrowStyles}\n ref={tooltipArrowRef}\n />\n </WrapperElement>\n ) : null\n}\n\nexport default Tooltip\n","/* eslint-disable react/no-danger */\nimport React from 'react'\nimport type { ITooltipContent } from './TooltipContentTypes'\n\nconst TooltipContent = ({ content }: ITooltipContent) => {\n return <span dangerouslySetInnerHTML={{ __html: content }} />\n}\n\nexport default TooltipContent\n","import React, { useEffect, useRef, useState } from 'react'\nimport { Tooltip } from 'components/Tooltip'\nimport type {\n EventsType,\n PositionStrategy,\n PlacesType,\n VariantType,\n WrapperType,\n DataAttribute,\n ITooltip,\n ChildrenType,\n} from 'components/Tooltip/TooltipTypes'\nimport { useTooltip } from 'components/TooltipProvider'\nimport { TooltipContent } from 'components/TooltipContent'\nimport type { ITooltipController } from './TooltipControllerTypes'\n\nconst TooltipController = ({\n id,\n anchorId,\n anchorSelect,\n content,\n html,\n render,\n className,\n classNameArrow,\n variant = 'dark',\n place = 'top',\n offset = 10,\n wrapper = 'div',\n children = null,\n events = ['hover'],\n openOnClick = false,\n positionStrategy = 'absolute',\n middlewares,\n delayShow = 0,\n delayHide = 0,\n float = false,\n hidden = false,\n noArrow = false,\n clickable = false,\n closeOnEsc = false,\n closeOnScroll = false,\n closeOnResize = false,\n style,\n position,\n isOpen,\n border,\n setIsOpen,\n afterShow,\n afterHide,\n}: ITooltipController) => {\n const [tooltipContent, setTooltipContent] = useState(content)\n const [tooltipHtml, setTooltipHtml] = useState(html)\n const [tooltipPlace, setTooltipPlace] = useState(place)\n const [tooltipVariant, setTooltipVariant] = useState(variant)\n const [tooltipOffset, setTooltipOffset] = useState(offset)\n const [tooltipDelayShow, setTooltipDelayShow] = useState(delayShow)\n const [tooltipDelayHide, setTooltipDelayHide] = useState(delayHide)\n const [tooltipFloat, setTooltipFloat] = useState(float)\n const [tooltipHidden, setTooltipHidden] = useState(hidden)\n const [tooltipWrapper, setTooltipWrapper] = useState<WrapperType>(wrapper)\n const [tooltipEvents, setTooltipEvents] = useState(events)\n const [tooltipPositionStrategy, setTooltipPositionStrategy] = useState(positionStrategy)\n const [activeAnchor, setActiveAnchor] = useState<HTMLElement | null>(null)\n /**\n * @todo Remove this in a future version (provider/wrapper method is deprecated)\n */\n const { anchorRefs, activeAnchor: providerActiveAnchor } = useTooltip(id)\n\n const getDataAttributesFromAnchorElement = (elementReference: HTMLElement) => {\n const dataAttributes = elementReference?.getAttributeNames().reduce((acc, name) => {\n if (name.startsWith('data-tooltip-')) {\n const parsedAttribute = name.replace(/^data-tooltip-/, '') as DataAttribute\n acc[parsedAttribute] = elementReference?.getAttribute(name) ?? null\n }\n return acc\n }, {} as Record<DataAttribute, string | null>)\n\n return dataAttributes\n }\n\n const applyAllDataAttributesFromAnchorElement = (\n dataAttributes: Record<string, string | null>,\n ) => {\n const handleDataAttributes: Record<DataAttribute, (value: string | null) => void> = {\n place: (value) => {\n setTooltipPlace((value as PlacesType) ?? place)\n },\n content: (value) => {\n setTooltipContent(value ?? content)\n },\n html: (value) => {\n setTooltipHtml(value ?? html)\n },\n variant: (value) => {\n setTooltipVariant((value as VariantType) ?? variant)\n },\n offset: (value) => {\n setTooltipOffset(value === null ? offset : Number(value))\n },\n wrapper: (value) => {\n setTooltipWrapper((value as WrapperType) ?? wrapper)\n },\n events: (value) => {\n const parsed = value?.split(' ') as EventsType[]\n setTooltipEvents(parsed ?? events)\n },\n 'position-strategy': (value) => {\n setTooltipPositionStrategy((value as PositionStrategy) ?? positionStrategy)\n },\n 'delay-show': (value) => {\n setTooltipDelayShow(value === null ? delayShow : Number(value))\n },\n 'delay-hide': (value) => {\n setTooltipDelayHide(value === null ? delayHide : Number(value))\n },\n float: (value) => {\n setTooltipFloat(value === null ? float : value === 'true')\n },\n hidden: (value) => {\n setTooltipHidden(value === null ? hidden : value === 'true')\n },\n }\n // reset unset data attributes to default values\n // without this, data attributes from the last active anchor will still be used\n Object.values(handleDataAttributes).forEach((handler) => handler(null))\n Object.entries(dataAttributes).forEach(([key, value]) => {\n handleDataAttributes[key as DataAttribute]?.(value)\n })\n }\n\n useEffect(() => {\n setTooltipContent(content)\n }, [content])\n\n useEffect(() => {\n setTooltipHtml(html)\n }, [html])\n\n useEffect(() => {\n setTooltipPlace(place)\n }, [place])\n\n useEffect(() => {\n setTooltipVariant(variant)\n }, [variant])\n\n useEffect(() => {\n setTooltipOffset(offset)\n }, [offset])\n\n useEffect(() => {\n setTooltipDelayShow(delayShow)\n }, [delayShow])\n\n useEffect(() => {\n setTooltipDelayHide(delayHide)\n }, [delayHide])\n\n useEffect(() => {\n setTooltipFloat(float)\n }, [float])\n\n useEffect(() => {\n setTooltipHidden(hidden)\n }, [hidden])\n\n useEffect(() => {\n setTooltipPositionStrategy(positionStrategy)\n }, [positionStrategy])\n\n useEffect(() => {\n const elementRefs = new Set(anchorRefs)\n\n let selector = anchorSelect\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n if (selector) {\n try {\n const anchorsBySelect = document.querySelectorAll<HTMLElement>(selector)\n anchorsBySelect.forEach((anchor) => {\n elementRefs.add({ current: anchor })\n })\n } catch {\n if (!process.env.NODE_ENV || process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(`[react-tooltip] \"${selector}\" is not a valid CSS selector`)\n }\n }\n }\n\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n if (anchorById) {\n elementRefs.add({ current: anchorById })\n }\n\n if (!elementRefs.size) {\n return () => null\n }\n\n const anchorElement = activeAnchor ?? anchorById ?? providerActiveAnchor.current\n\n const observerCallback: MutationCallback = (mutationList) => {\n mutationList.forEach((mutation) => {\n if (\n !anchorElement ||\n mutation.type !== 'attributes' ||\n !mutation.attributeName?.startsWith('data-tooltip-')\n ) {\n return\n }\n // make sure to get all set attributes, since all unset attributes are reset\n const dataAttributes = getDataAttributesFromAnchorElement(anchorElement)\n applyAllDataAttributesFromAnchorElement(dataAttributes)\n })\n }\n\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(observerCallback)\n\n // do not check for subtree and childrens, we only want to know attribute changes\n // to stay watching `data-attributes-*` from anchor element\n const observerConfig = { attributes: true, childList: false, subtree: false }\n\n if (anchorElement) {\n const dataAttributes = getDataAttributesFromAnchorElement(anchorElement)\n applyAllDataAttributesFromAnchorElement(dataAttributes)\n // Start observing the target node for configured mutations\n observer.observe(anchorElement, observerConfig)\n }\n\n return () => {\n // Remove the observer when the tooltip is destroyed\n observer.disconnect()\n }\n }, [anchorRefs, providerActiveAnchor, activeAnchor, anchorId, anchorSelect])\n\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') {\n return\n }\n if (style?.border) {\n // eslint-disable-next-line no-console\n console.warn('[react-tooltip] Do not set `style.border`. Use `border` prop instead.')\n }\n if (border && !CSS.supports('border', `${border}`)) {\n // eslint-disable-next-line no-console\n console.warn(`[react-tooltip] \"${border}\" is not a valid \\`border\\`.`)\n }\n }, [])\n\n /**\n * content priority: children < render or content < html\n * children should be lower priority so that it can be used as the \"default\" content\n */\n let renderedContent: ChildrenType = children\n const contentWrapperRef = useRef<HTMLDivElement>(null)\n if (render) {\n const rendered = render({ content: tooltipContent ?? null, activeAnchor }) as React.ReactNode\n renderedContent = rendered ? (\n <div ref={contentWrapperRef} className=\"react-tooltip-content-wrapper\">\n {rendered}\n </div>\n ) : null\n } else if (tooltipContent) {\n renderedContent = tooltipContent\n }\n if (tooltipHtml) {\n renderedContent = <TooltipContent content={tooltipHtml} />\n }\n\n const props: ITooltip = {\n id,\n anchorId,\n anchorSelect,\n className,\n classNameArrow,\n content: renderedContent,\n contentWrapperRef,\n place: tooltipPlace,\n variant: tooltipVariant,\n offset: tooltipOffset,\n wrapper: tooltipWrapper,\n events: tooltipEvents,\n openOnClick,\n positionStrategy: tooltipPositionStrategy,\n middlewares,\n delayShow: tooltipDelayShow,\n delayHide: tooltipDelayHide,\n float: tooltipFloat,\n hidden: tooltipHidden,\n noArrow,\n clickable,\n closeOnEsc,\n closeOnScroll,\n closeOnResize,\n style,\n position,\n isOpen,\n border,\n setIsOpen,\n afterShow,\n afterHide,\n activeAnchor,\n setActiveAnchor: (anchor: HTMLElement | null) => setActiveAnchor(anchor),\n }\n\n return <Tooltip {...props} />\n}\n\nexport default TooltipController\n","import './tokens.css'\n\nimport { injectStyle } from 'utils/handle-style'\n\nimport type {\n ChildrenType,\n DataAttribute,\n EventsType,\n PlacesType,\n PositionStrategy,\n VariantType,\n WrapperType,\n IPosition,\n Middleware,\n} from './components/Tooltip/TooltipTypes'\nimport type { ITooltipController } from './components/TooltipController/TooltipControllerTypes'\nimport type { ITooltipWrapper } from './components/TooltipProvider/TooltipProviderTypes'\n\n// those content will be replaced in build time with the `react-tooltip.css` builded content\nconst TooltipCoreStyles = 'react-tooltip-core-css-placeholder'\nconst TooltipStyles = 'react-tooltip-css-placeholder'\n\ninjectStyle({ css: TooltipCoreStyles, type: 'core' })\ninjectStyle({ css: TooltipStyles })\n\nexport { TooltipController as Tooltip } from './components/TooltipController'\nexport { TooltipProvider, TooltipWrapper } from './components/TooltipProvider'\nexport type {\n ChildrenType,\n DataAttribute,\n EventsType,\n PlacesType,\n PositionStrategy,\n VariantType,\n WrapperType,\n ITooltipController as ITooltip,\n ITooltipWrapper,\n IPosition,\n Middleware,\n}\n\nexport { removeStyle } from './utils/handle-style'\n"],"names":[],"mappings":"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"}
@@ -21,10 +21,15 @@
21
21
  // This is the ID for the visual styles of ReactTooltip
22
22
  const REACT_TOOLTIP_BASE_STYLES_ID = 'react-tooltip-base-styles';
23
23
  function injectStyle({ css, id = REACT_TOOLTIP_BASE_STYLES_ID, type = 'base', ref, }) {
24
- if (type === 'core' && process.env.REACT_TOOLTIP_DISABLE_CORE_STYLES) {
24
+ var _a, _b;
25
+ if (type === 'core' &&
26
+ typeof process !== 'undefined' && // this validation prevents docs from breaking even with `process?`
27
+ ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.REACT_TOOLTIP_DISABLE_CORE_STYLES)) {
25
28
  return;
26
29
  }
27
- if (type !== 'core' && process.env.REACT_TOOLTIP_DISABLE_BASE_STYLES) {
30
+ if (type !== 'core' &&
31
+ typeof process !== 'undefined' && // this validation prevents docs from breaking even with `process?`
32
+ ((_b = process === null || process === void 0 ? void 0 : process.env) === null || _b === void 0 ? void 0 : _b.REACT_TOOLTIP_DISABLE_BASE_STYLES)) {
28
33
  return;
29
34
  }
30
35
  if (type === 'core') {
@@ -228,7 +233,7 @@
228
233
  return document.scrollingElement || document.documentElement;
229
234
  };
230
235
 
231
- const computeTooltipPosition = async ({ elementReference = null, tooltipReference = null, tooltipArrowReference = null, place = 'top', offset: offsetValue = 10, strategy = 'absolute', middlewares = [dom.offset(Number(offsetValue)), dom.flip(), dom.shift({ padding: 5 })], }) => {
236
+ const computeTooltipPosition = async ({ elementReference = null, tooltipReference = null, tooltipArrowReference = null, place = 'top', offset: offsetValue = 10, strategy = 'absolute', middlewares = [dom.offset(Number(offsetValue)), dom.flip(), dom.shift({ padding: 5 })], border, }) => {
232
237
  if (!elementReference) {
233
238
  // elementReference can be null or undefined and we will not compute the position
234
239
  // eslint-disable-next-line no-console
@@ -247,7 +252,7 @@
247
252
  middleware,
248
253
  }).then(({ x, y, placement, middlewareData }) => {
249
254
  var _a, _b;
250
- const styles = { left: `${x}px`, top: `${y}px` };
255
+ const styles = { left: `${x}px`, top: `${y}px`, border };
251
256
  const { x: arrowX, y: arrowY } = (_a = middlewareData.arrow) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };
252
257
  const staticSide = (_b = {
253
258
  top: 'bottom',
@@ -255,12 +260,33 @@
255
260
  bottom: 'top',
256
261
  left: 'right',
257
262
  }[placement.split('-')[0]]) !== null && _b !== void 0 ? _b : 'bottom';
263
+ const borderSide = border &&
264
+ {
265
+ top: { borderBottom: border, borderRight: border },
266
+ right: { borderBottom: border, borderLeft: border },
267
+ bottom: { borderTop: border, borderLeft: border },
268
+ left: { borderTop: border, borderRight: border },
269
+ }[placement.split('-')[0]];
270
+ let borderWidth = 0;
271
+ if (border) {
272
+ const match = `${border}`.match(/(\d+)px/);
273
+ if (match === null || match === void 0 ? void 0 : match[1]) {
274
+ borderWidth = Number(match[1]);
275
+ }
276
+ else {
277
+ /**
278
+ * this means `border` was set without `width`, or non-px value
279
+ */
280
+ borderWidth = 1;
281
+ }
282
+ }
258
283
  const arrowStyle = {
259
284
  left: arrowX != null ? `${arrowX}px` : '',
260
285
  top: arrowY != null ? `${arrowY}px` : '',
261
286
  right: '',
262
287
  bottom: '',
263
- [staticSide]: '-4px',
288
+ ...borderSide,
289
+ [staticSide]: `-${4 + borderWidth}px`,
264
290
  };
265
291
  return { tooltipStyles: styles, tooltipArrowStyles: arrowStyle, place: placement };
266
292
  });
@@ -283,7 +309,7 @@
283
309
  // props
284
310
  id, className, classNameArrow, variant = 'dark', anchorId, anchorSelect, place = 'top', offset = 10, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, wrapper: WrapperElement, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, style: externalStyles, position, afterShow, afterHide,
285
311
  // props handled by controller
286
- content, contentWrapperRef, isOpen, setIsOpen, activeAnchor, setActiveAnchor, }) => {
312
+ content, contentWrapperRef, isOpen, setIsOpen, activeAnchor, setActiveAnchor, border, }) => {
287
313
  const tooltipRef = React.useRef(null);
288
314
  const tooltipArrowRef = React.useRef(null);
289
315
  const tooltipShowDelayTimerRef = React.useRef(null);
@@ -466,6 +492,7 @@
466
492
  tooltipArrowReference: tooltipArrowRef.current,
467
493
  strategy: positionStrategy,
468
494
  middlewares,
495
+ border,
469
496
  }).then((computedStylesData) => {
470
497
  if (Object.keys(computedStylesData.tooltipStyles).length) {
471
498
  setInlineStyles(computedStylesData.tooltipStyles);
@@ -706,6 +733,7 @@
706
733
  tooltipArrowReference: tooltipArrowRef.current,
707
734
  strategy: positionStrategy,
708
735
  middlewares,
736
+ border,
709
737
  }).then((computedStylesData) => {
710
738
  if (!mounted.current) {
711
739
  // invalidate computed positions after remount
@@ -796,7 +824,7 @@
796
824
  return React__default["default"].createElement("span", { dangerouslySetInnerHTML: { __html: content } });
797
825
  };
798
826
 
799
- const TooltipController = ({ id, anchorId, anchorSelect, content, html, render, className, classNameArrow, variant = 'dark', place = 'top', offset = 10, wrapper = 'div', children = null, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, style, position, isOpen, setIsOpen, afterShow, afterHide, }) => {
827
+ const TooltipController = ({ id, anchorId, anchorSelect, content, html, render, className, classNameArrow, variant = 'dark', place = 'top', offset = 10, wrapper = 'div', children = null, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, style, position, isOpen, border, setIsOpen, afterShow, afterHide, }) => {
800
828
  const [tooltipContent, setTooltipContent] = React.useState(content);
801
829
  const [tooltipHtml, setTooltipHtml] = React.useState(html);
802
830
  const [tooltipPlace, setTooltipPlace] = React.useState(place);
@@ -965,6 +993,16 @@
965
993
  observer.disconnect();
966
994
  };
967
995
  }, [anchorRefs, providerActiveAnchor, activeAnchor, anchorId, anchorSelect]);
996
+ React.useEffect(() => {
997
+ if (style === null || style === void 0 ? void 0 : style.border) {
998
+ // eslint-disable-next-line no-console
999
+ console.warn('[react-tooltip] Do not set `style.border`. Use `border` prop instead.');
1000
+ }
1001
+ if (border && !CSS.supports('border', `${border}`)) {
1002
+ // eslint-disable-next-line no-console
1003
+ console.warn(`[react-tooltip] "${border}" is not a valid \`border\`.`);
1004
+ }
1005
+ }, []);
968
1006
  /**
969
1007
  * content priority: children < render or content < html
970
1008
  * children should be lower priority so that it can be used as the "default" content
@@ -1009,6 +1047,7 @@
1009
1047
  style,
1010
1048
  position,
1011
1049
  isOpen,
1050
+ border,
1012
1051
  setIsOpen,
1013
1052
  afterShow,
1014
1053
  afterHide,