Viewing File: /home/ubuntu/voice-assistant-frontend/node_modules/react-tooltip/dist/react-tooltip.min.mjs.map
{"version":3,"file":"react-tooltip.min.mjs","sources":["../src/utils/handle-style.ts","../src/utils/compute-tooltip-position.ts","../src/utils/css-supports.ts","../src/utils/debounce.ts","../src/utils/deep-equal.ts","../src/utils/get-scroll-parent.ts","../src/utils/use-isomorphic-layout-effect.ts","../src/components/TooltipProvider/TooltipProvider.tsx","../src/components/TooltipProvider/TooltipWrapper.tsx","../src/components/Tooltip/Tooltip.tsx","../src/utils/css-time-to-ms.ts","../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\nconst injected = {\n core: false,\n base: false,\n}\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?: 'core' | 'base'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref?: any\n}) {\n if (!css || typeof document === 'undefined' || injected[type]) {\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_CORE_STYLES\n ) {\n return\n }\n\n if (\n type !== 'base' &&\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 (document.getElementById(id)) {\n // this should never happen because of `injected[type]`\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\n `[react-tooltip] Element with id '${id}' already exists. Call \\`removeStyle()\\` first`,\n )\n }\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 injected[type] = true\n}\n\n/**\n * @deprecated Use the `disableStyleInjection` tooltip prop instead.\n * See https://react-tooltip.com/docs/examples/styling#disabling-reacttooltip-css\n */\nfunction removeStyle({\n type = 'base',\n id = REACT_TOOLTIP_BASE_STYLES_ID,\n}: {\n type?: 'core' | 'base'\n id?: string\n} = {}) {\n if (!injected[type]) {\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 const style = document.getElementById(id)\n if (style?.tagName === 'style') {\n style?.remove()\n } else if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\n `[react-tooltip] Failed to remove 'style' element with id '${id}'. Call \\`injectStyle()\\` first`,\n )\n }\n\n injected[type] = false\n}\n\nexport { injectStyle, removeStyle }\n","import { computePosition, offset, shift, arrow, flip } from '@floating-ui/dom'\nimport type { IComputePositionArgs } from './compute-tooltip-position-types'\n\nconst computeTooltipPosition = async ({\n elementReference = null,\n tooltipReference = null,\n tooltipArrowReference = null,\n place = 'top',\n offset: offsetValue = 10,\n strategy = 'absolute',\n middlewares = [\n offset(Number(offsetValue)),\n flip({\n fallbackAxisSideDirection: 'start',\n }),\n shift({ padding: 5 }),\n ],\n border,\n}: IComputePositionArgs) => {\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 /* c8 ignore start */\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 /* c8 ignore end */\n\n const borderSide = border && {\n borderBottom: border,\n borderRight: border,\n }\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`,\n * or non-px value (such as `medium`, `thick`, ...)\n */\n borderWidth = 1\n }\n }\n\n /* c8 ignore start */\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 /* c8 ignore end */\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\nexport default computeTooltipPosition\n","const cssSupports = (property: string, value: string): boolean => {\n const hasCssSupports = 'CSS' in window && 'supports' in window.CSS\n return hasCssSupports ? window.CSS.supports(property, value) : true\n}\n\nexport default cssSupports\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 = <T, A extends any[]>(\n func: (...args: A) => void,\n wait?: number,\n immediate?: boolean,\n) => {\n let timeout: NodeJS.Timeout | null = null\n\n const debounced = function debounced(this: T, ...args: A): void {\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 no 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 debounced.cancel = () => {\n /* c8 ignore start */\n if (!timeout) {\n return\n }\n /* c8 ignore end */\n clearTimeout(timeout)\n timeout = null\n }\n\n return debounced\n}\n\nexport default debounce\n","const isObject = (object: unknown): object is Record<string, unknown> => {\n return object !== null && !Array.isArray(object) && typeof object === 'object'\n}\n\nconst deepEqual = (object1: unknown, object2: unknown): boolean => {\n if (object1 === object2) {\n return true\n }\n\n if (Array.isArray(object1) && Array.isArray(object2)) {\n if (object1.length !== object2.length) {\n return false\n }\n return object1.every((val, index) => deepEqual(val, object2[index]))\n }\n\n if (Array.isArray(object1) !== Array.isArray(object2)) {\n return false\n }\n\n if (!isObject(object1) || !isObject(object2)) {\n return object1 === object2\n }\n\n const keys1 = Object.keys(object1)\n const keys2 = Object.keys(object2)\n if (keys1.length !== keys2.length) {\n return false\n }\n\n return keys1.every((key) => deepEqual(object1[key], object2[key]))\n}\n\nexport default deepEqual\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\nconst 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\nexport default getScrollParent\n","import { useLayoutEffect, useEffect } from 'react'\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport default useIsomorphicLayoutEffect\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 React, { useEffect, useState, useRef, useCallback, useImperativeHandle } from 'react'\nimport { autoUpdate } from '@floating-ui/dom'\nimport classNames from 'classnames'\nimport {\n debounce,\n deepEqual,\n useIsomorphicLayoutEffect,\n getScrollParent,\n computeTooltipPosition,\n cssTimeToMs,\n} from 'utils'\nimport type { IComputedPosition } from 'utils'\nimport { useTooltip } from 'components/TooltipProvider'\nimport coreStyles from './core-styles.module.css'\nimport styles from './styles.module.css'\nimport type {\n AnchorCloseEvents,\n AnchorOpenEvents,\n GlobalCloseEvents,\n IPosition,\n ITooltip,\n TooltipImperativeOpenOptions,\n} from './TooltipTypes'\n\nconst Tooltip = ({\n // props\n forwardRef,\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 openEvents,\n closeEvents,\n globalCloseEvents,\n imperativeModeOnly,\n style: externalStyles,\n position,\n afterShow,\n afterHide,\n // props handled by controller\n content,\n contentWrapperRef,\n isOpen,\n defaultIsOpen = false,\n setIsOpen,\n activeAnchor,\n setActiveAnchor,\n border,\n opacity,\n arrowColor,\n role = 'tooltip',\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 missedTransitionTimerRef = useRef<NodeJS.Timeout | null>(null)\n const [computedPosition, setComputedPosition] = useState<IComputedPosition>({\n tooltipStyles: {},\n tooltipArrowStyles: {},\n place,\n })\n const [show, setShow] = useState(false)\n const [rendered, setRendered] = useState(false)\n const [imperativeOptions, setImperativeOptions] = useState<TooltipImperativeOpenOptions | null>(\n null,\n )\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 /**\n * @todo Update when deprecated stuff gets removed.\n */\n const shouldOpenOnClick = openOnClick || events.includes('click')\n const hasClickEvent =\n shouldOpenOnClick || openEvents?.click || openEvents?.dblclick || openEvents?.mousedown\n const actualOpenEvents: AnchorOpenEvents = openEvents\n ? { ...openEvents }\n : {\n mouseenter: true,\n focus: true,\n click: false,\n dblclick: false,\n mousedown: false,\n }\n if (!openEvents && shouldOpenOnClick) {\n Object.assign(actualOpenEvents, {\n mouseenter: false,\n focus: false,\n click: true,\n })\n }\n const actualCloseEvents: AnchorCloseEvents = closeEvents\n ? { ...closeEvents }\n : {\n mouseleave: true,\n blur: true,\n click: false,\n dblclick: false,\n mouseup: false,\n }\n if (!closeEvents && shouldOpenOnClick) {\n Object.assign(actualCloseEvents, {\n mouseleave: false,\n blur: false,\n })\n }\n const actualGlobalCloseEvents: GlobalCloseEvents = globalCloseEvents\n ? { ...globalCloseEvents }\n : {\n escape: closeOnEsc || false,\n scroll: closeOnScroll || false,\n resize: closeOnResize || false,\n clickOutsideAnchor: hasClickEvent || false,\n }\n\n if (imperativeModeOnly) {\n Object.assign(actualOpenEvents, {\n mouseenter: false,\n focus: false,\n click: false,\n dblclick: false,\n mousedown: false,\n })\n Object.assign(actualCloseEvents, {\n mouseleave: false,\n blur: false,\n click: false,\n dblclick: false,\n mouseup: false,\n })\n Object.assign(actualGlobalCloseEvents, {\n escape: false,\n scroll: false,\n resize: false,\n clickOutsideAnchor: false,\n })\n }\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 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 if (missedTransitionTimerRef.current) {\n clearTimeout(missedTransitionTimerRef.current)\n }\n wasShowing.current = show\n if (show) {\n afterShow?.()\n } else {\n /**\n * see `onTransitionEnd` on tooltip wrapper\n */\n const style = getComputedStyle(document.body)\n const transitionShowDelay = cssTimeToMs(style.getPropertyValue('--rt-transition-show-delay'))\n missedTransitionTimerRef.current = setTimeout(() => {\n /**\n * if the tooltip switches from `show === true` to `show === false` too fast\n * the transition never runs, so `onTransitionEnd` callback never gets fired\n */\n setRendered(false)\n setImperativeOptions(null)\n afterHide?.()\n // +25ms just to make sure `onTransitionEnd` (if it gets fired) has time to run\n }, transitionShowDelay + 25)\n }\n }, [show])\n\n const handleComputedPosition = (newComputedPosition: IComputedPosition) => {\n setComputedPosition((oldComputedPosition) =>\n deepEqual(oldComputedPosition, newComputedPosition)\n ? oldComputedPosition\n : newComputedPosition,\n )\n }\n\n const handleShowTooltipDelayed = (delay = delayShow) => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n\n if (rendered) {\n // if the tooltip is already rendered, ignore delay\n handleShow(true)\n return\n }\n\n tooltipShowDelayTimerRef.current = setTimeout(() => {\n handleShow(true)\n }, delay)\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: imperativeOptions?.place ?? 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 handleComputedPosition(computedStylesData)\n })\n }\n\n const handlePointerMove = (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 handleClickOutsideAnchors = (event: MouseEvent) => {\n if (!show) {\n return\n }\n const target = event.target as HTMLElement\n if (!target.isConnected) {\n return\n }\n if (tooltipRef.current?.contains(target)) {\n return\n }\n const anchorById = document.querySelector<HTMLElement>(`[id='${anchorId}']`)\n const anchors = [anchorById, ...anchorsBySelect]\n if (anchors.some((anchor) => anchor?.contains(target))) {\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 internalDebouncedHandleShowTooltip = debounce(handleShowTooltip, 50, true)\n const internalDebouncedHandleHideTooltip = debounce(handleHideTooltip, 50, true)\n // If either of the functions is called while the other is still debounced,\n // reset the timeout. Otherwise if there is a sub-50ms (leave A, enter B, leave B)\n // sequence of events, the tooltip will stay open because the hide debounce\n // from leave A prevented the leave B event from calling it, leaving the\n // tooltip visible.\n const debouncedHandleShowTooltip = (e?: Event) => {\n internalDebouncedHandleHideTooltip.cancel()\n internalDebouncedHandleShowTooltip(e)\n }\n const debouncedHandleHideTooltip = () => {\n internalDebouncedHandleShowTooltip.cancel()\n internalDebouncedHandleHideTooltip()\n }\n\n const updateTooltipPosition = useCallback(() => {\n const actualPosition = imperativeOptions?.position ?? position\n if (actualPosition) {\n // if `position` is set, override regular and `float` positioning\n handleTooltipPosition(actualPosition)\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 if (!activeAnchor?.isConnected) {\n return\n }\n\n computeTooltipPosition({\n place: imperativeOptions?.place ?? 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 handleComputedPosition(computedStylesData)\n })\n }, [\n show,\n activeAnchor,\n content,\n externalStyles,\n place,\n imperativeOptions?.place,\n offset,\n positionStrategy,\n position,\n imperativeOptions?.position,\n float,\n ])\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 (actualGlobalCloseEvents.scroll) {\n window.addEventListener('scroll', handleScrollResize)\n anchorScrollParent?.addEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.addEventListener('scroll', handleScrollResize)\n }\n let updateTooltipCleanup: null | (() => void) = null\n if (actualGlobalCloseEvents.resize) {\n window.addEventListener('resize', handleScrollResize)\n } else if (activeAnchor && tooltipRef.current) {\n updateTooltipCleanup = autoUpdate(\n activeAnchor as HTMLElement,\n tooltipRef.current as HTMLElement,\n updateTooltipPosition,\n {\n ancestorResize: true,\n elementResize: true,\n layoutShift: true,\n },\n )\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n return\n }\n handleShow(false)\n }\n if (actualGlobalCloseEvents.escape) {\n window.addEventListener('keydown', handleEsc)\n }\n\n if (actualGlobalCloseEvents.clickOutsideAnchor) {\n window.addEventListener('click', handleClickOutsideAnchors)\n }\n\n const enabledEvents: { event: string; listener: (event?: Event) => void }[] = []\n\n const handleClickOpenTooltipAnchor = (event?: Event) => {\n if (show && event?.target === activeAnchor) {\n /**\n * ignore clicking the anchor that was used to open the tooltip.\n * this avoids conflict with the click close event.\n */\n return\n }\n handleShowTooltip(event)\n }\n const handleClickCloseTooltipAnchor = (event?: Event) => {\n if (!show || event?.target !== activeAnchor) {\n /**\n * ignore clicking the anchor that was NOT used to open the tooltip.\n * this avoids closing the tooltip when clicking on a\n * new anchor with the tooltip already open.\n */\n return\n }\n handleHideTooltip()\n }\n\n const regularEvents = ['mouseenter', 'mouseleave', 'focus', 'blur']\n const clickEvents = ['click', 'dblclick', 'mousedown', 'mouseup']\n\n Object.entries(actualOpenEvents).forEach(([event, enabled]) => {\n if (!enabled) {\n return\n }\n if (regularEvents.includes(event)) {\n enabledEvents.push({ event, listener: debouncedHandleShowTooltip })\n } else if (clickEvents.includes(event)) {\n enabledEvents.push({ event, listener: handleClickOpenTooltipAnchor })\n } else {\n // never happens\n }\n })\n\n Object.entries(actualCloseEvents).forEach(([event, enabled]) => {\n if (!enabled) {\n return\n }\n if (regularEvents.includes(event)) {\n enabledEvents.push({ event, listener: debouncedHandleHideTooltip })\n } else if (clickEvents.includes(event)) {\n enabledEvents.push({ event, listener: handleClickCloseTooltipAnchor })\n } else {\n // never happens\n }\n })\n\n if (float) {\n enabledEvents.push({\n event: 'pointermove',\n listener: handlePointerMove,\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 && !hasClickEvent) {\n // used to keep the tooltip open when hovering content.\n // not needed if using click events.\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 (actualGlobalCloseEvents.scroll) {\n window.removeEventListener('scroll', handleScrollResize)\n anchorScrollParent?.removeEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.removeEventListener('scroll', handleScrollResize)\n }\n if (actualGlobalCloseEvents.resize) {\n window.removeEventListener('resize', handleScrollResize)\n } else {\n updateTooltipCleanup?.()\n }\n if (actualGlobalCloseEvents.clickOutsideAnchor) {\n window.removeEventListener('click', handleClickOutsideAnchors)\n }\n if (actualGlobalCloseEvents.escape) {\n window.removeEventListener('keydown', handleEsc)\n }\n if (clickable && !hasClickEvent) {\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 }, [\n activeAnchor,\n updateTooltipPosition,\n rendered,\n anchorRefs,\n anchorsBySelect,\n // the effect uses the `actual*Events` objects, but this should work\n openEvents,\n closeEvents,\n globalCloseEvents,\n shouldOpenOnClick,\n delayShow,\n delayHide,\n ])\n\n useEffect(() => {\n let selector = imperativeOptions?.anchorSelect ?? anchorSelect ?? ''\n if (!selector && id) {\n selector = `[data-tooltip-id='${id}']`\n }\n const documentObserverCallback: MutationCallback = (mutationList) => {\n const newAnchors: HTMLElement[] = []\n const removedAnchors: 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 } else if (mutation.oldValue === id) {\n // data-tooltip-id has now been changed, so we need to remove this anchor\n removedAnchors.push(mutation.target as HTMLElement)\n }\n }\n if (mutation.type !== 'childList') {\n return\n }\n if (activeAnchor) {\n const elements = [...mutation.removedNodes].filter((node) => node.nodeType === 1)\n if (selector) {\n try {\n removedAnchors.push(\n // the element itself is an anchor\n ...(elements.filter((element) =>\n (element as HTMLElement).matches(selector),\n ) as HTMLElement[]),\n )\n removedAnchors.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 elements.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 || removedAnchors.length) {\n setAnchorsBySelect((anchors) => [\n ...anchors.filter((anchor) => !removedAnchors.includes(anchor)),\n ...newAnchors,\n ])\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 // to track the prev value if we need to remove anchor when data-tooltip-id gets changed\n attributeOldValue: true,\n })\n return () => {\n documentObserver.disconnect()\n }\n }, [id, anchorSelect, imperativeOptions?.anchorSelect, activeAnchor])\n\n useEffect(() => {\n updateTooltipPosition()\n }, [updateTooltipPosition])\n\n useEffect(() => {\n if (!contentWrapperRef?.current) {\n return () => null\n }\n const contentObserver = new ResizeObserver(() => {\n setTimeout(() => 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 if (defaultIsOpen) {\n handleShow(true)\n }\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 = imperativeOptions?.anchorSelect ?? 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, imperativeOptions?.anchorSelect])\n\n useEffect(() => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n handleShowTooltipDelayed(delayShow)\n }\n }, [delayShow])\n\n const actualContent = imperativeOptions?.content ?? content\n const canShow = show && Object.keys(computedPosition.tooltipStyles).length > 0\n\n useImperativeHandle(forwardRef, () => ({\n open: (options) => {\n if (options?.anchorSelect) {\n try {\n document.querySelector(options.anchorSelect)\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] \"${options.anchorSelect}\" is not a valid CSS selector`)\n }\n return\n }\n }\n setImperativeOptions(options ?? null)\n if (options?.delay) {\n handleShowTooltipDelayed(options.delay)\n } else {\n handleShow(true)\n }\n },\n close: (options) => {\n if (options?.delay) {\n handleHideTooltipDelayed(options.delay)\n } else {\n handleShow(false)\n }\n },\n activeAnchor,\n place: computedPosition.place,\n isOpen: Boolean(rendered && !hidden && actualContent && canShow),\n }))\n\n return rendered && !hidden && actualContent ? (\n <WrapperElement\n id={id}\n role={role}\n className={classNames(\n 'react-tooltip',\n coreStyles['tooltip'],\n styles['tooltip'],\n styles[variant],\n className,\n `react-tooltip__place-${computedPosition.place}`,\n coreStyles[canShow ? 'show' : 'closing'],\n canShow ? 'react-tooltip__show' : 'react-tooltip__closing',\n positionStrategy === 'fixed' && coreStyles['fixed'],\n clickable && coreStyles['clickable'],\n )}\n onTransitionEnd={(event: TransitionEvent) => {\n if (missedTransitionTimerRef.current) {\n clearTimeout(missedTransitionTimerRef.current)\n }\n if (show || event.propertyName !== 'opacity') {\n return\n }\n setRendered(false)\n setImperativeOptions(null)\n afterHide?.()\n }}\n style={{\n ...externalStyles,\n ...computedPosition.tooltipStyles,\n opacity: opacity !== undefined && canShow ? opacity : undefined,\n }}\n ref={tooltipRef}\n >\n {actualContent}\n <WrapperElement\n className={classNames(\n 'react-tooltip-arrow',\n coreStyles['arrow'],\n styles['arrow'],\n classNameArrow,\n noArrow && coreStyles['noArrow'],\n )}\n style={{\n ...computedPosition.tooltipArrowStyles,\n background: arrowColor\n ? `linear-gradient(to right bottom, transparent 50%, ${arrowColor} 50%)`\n : undefined,\n }}\n ref={tooltipArrowRef}\n />\n </WrapperElement>\n ) : null\n}\n\nexport default Tooltip\n","const cssTimeToMs = (time: string): number => {\n const match = time.match(/^([\\d.]+)(ms|s)$/)\n if (!match) {\n return 0\n }\n const [, amount, unit] = match\n return Number(amount) * (unit === 'ms' ? 1 : 1000)\n}\n\nexport default cssTimeToMs\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 TooltipRefProps,\n} from 'components/Tooltip/TooltipTypes'\nimport { useTooltip } from 'components/TooltipProvider'\nimport { TooltipContent } from 'components/TooltipContent'\nimport { cssSupports } from 'utils'\nimport classNames from 'classnames'\nimport type { ITooltipController } from './TooltipControllerTypes'\n\nconst TooltipController = React.forwardRef<TooltipRefProps, ITooltipController>(\n (\n {\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 openEvents,\n closeEvents,\n globalCloseEvents,\n imperativeModeOnly = false,\n style,\n position,\n isOpen,\n defaultIsOpen = false,\n disableStyleInjection = false,\n border,\n opacity,\n arrowColor,\n setIsOpen,\n afterShow,\n afterHide,\n role = 'tooltip',\n }: ITooltipController,\n ref,\n ) => {\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 [tooltipClassName, setTooltipClassName] = useState<string | null>(null)\n const [activeAnchor, setActiveAnchor] = useState<HTMLElement | null>(null)\n const styleInjectionRef = useRef(disableStyleInjection)\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 'class-name': (value) => {\n setTooltipClassName(value)\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 if (styleInjectionRef.current === disableStyleInjection) {\n return\n }\n /* c8 ignore start */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('[react-tooltip] Do not change `disableStyleInjection` dynamically.')\n }\n /* c8 ignore end */\n }, [disableStyleInjection])\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n window.dispatchEvent(\n new CustomEvent('react-tooltip-inject-styles', {\n detail: {\n disableCore: disableStyleInjection === 'core',\n disableBase: disableStyleInjection,\n },\n }),\n )\n }\n }, [])\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 /* c8 ignore start */\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 /* c8 ignore end */\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 /* c8 ignore start */\n if (process.env.NODE_ENV === 'production') {\n return\n }\n /* c8 ignore end */\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 && !cssSupports('border', `${border}`)) {\n // eslint-disable-next-line no-console\n console.warn(`[react-tooltip] \"${border}\" is not a valid \\`border\\`.`)\n }\n if (style?.opacity) {\n // eslint-disable-next-line no-console\n console.warn('[react-tooltip] Do not set `style.opacity`. Use `opacity` prop instead.')\n }\n if (opacity && !cssSupports('opacity', `${opacity}`)) {\n // eslint-disable-next-line no-console\n console.warn(`[react-tooltip] \"${opacity}\" is not a valid \\`opacity\\`.`)\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 actualContent =\n activeAnchor?.getAttribute('data-tooltip-content') || tooltipContent || null\n const rendered = render({ content: actualContent, 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 forwardRef: ref,\n id,\n anchorId,\n anchorSelect,\n className: classNames(className, tooltipClassName),\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 openEvents,\n closeEvents,\n globalCloseEvents,\n imperativeModeOnly,\n style,\n position,\n isOpen,\n defaultIsOpen,\n border,\n opacity,\n arrowColor,\n setIsOpen,\n afterShow,\n afterHide,\n activeAnchor,\n setActiveAnchor: (anchor: HTMLElement | null) => setActiveAnchor(anchor),\n role,\n }\n\n return <Tooltip {...props} />\n },\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 TooltipRefProps,\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\nif (typeof window !== 'undefined') {\n window.addEventListener('react-tooltip-inject-styles', ((\n event: CustomEvent<{ disableCore: boolean; disableBase: boolean }>,\n ) => {\n if (!event.detail.disableCore) {\n injectStyle({ css: TooltipCoreStyles, type: 'core' })\n }\n if (!event.detail.disableBase) {\n injectStyle({ css: TooltipStyles, type: 'base' })\n }\n }) as EventListener)\n}\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 TooltipRefProps,\n}\n\nexport { removeStyle } from './utils/handle-style'\n"],"names":["REACT_TOOLTIP_CORE_STYLES_ID","REACT_TOOLTIP_BASE_STYLES_ID","injected","core","base","injectStyle","css","id","type","ref","document","process","_a","env","REACT_TOOLTIP_DISABLE_CORE_STYLES","_b","REACT_TOOLTIP_DISABLE_BASE_STYLES","insertAt","getElementById","console","warn","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","removeStyle","tagName","remove","computeTooltipPosition","async","elementReference","tooltipReference","tooltipArrowReference","place","offset","offsetValue","strategy","middlewares","Number","flip","fallbackAxisSideDirection","shift","padding","border","tooltipStyles","tooltipArrowStyles","middleware","push","arrow","element","computePosition","placement","then","x","y","middlewareData","styles","left","top","arrowX","arrowY","staticSide","right","bottom","split","borderSide","borderBottom","borderRight","borderWidth","match","cssSupports","property","value","window","CSS","supports","debounce","func","wait","immediate","timeout","debounced","args","later","apply","this","setTimeout","clearTimeout","cancel","isObject","object","Array","isArray","deepEqual","object1","object2","length","every","val","index","keys1","Object","keys","keys2","key","isScrollable","node","HTMLElement","SVGElement","getComputedStyle","some","propertyName","getPropertyValue","getScrollParent","currentParent","parentElement","scrollingElement","documentElement","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","DEFAULT_TOOLTIP_ID","DEFAULT_CONTEXT_DATA","anchorRefs","Set","activeAnchor","current","attach","detach","setActiveAnchor","TooltipContext","createContext","getTooltipData","TooltipProvider","children","anchorRefMap","setAnchorRefMap","useState","activeAnchorMap","setActiveAnchorMap","tooltipId","refs","oldMap","tooltipRefs","forEach","add","delete","useCallback","context","useMemo","React","Provider","useTooltip","useContext","TooltipWrapper","className","content","html","variant","wrapper","events","positionStrategy","delayShow","delayHide","anchorRef","useRef","classNames","Tooltip","forwardRef","classNameArrow","anchorId","anchorSelect","openOnClick","WrapperElement","float","hidden","noArrow","clickable","closeOnEsc","closeOnScroll","closeOnResize","openEvents","closeEvents","globalCloseEvents","imperativeModeOnly","externalStyles","position","afterShow","afterHide","contentWrapperRef","isOpen","defaultIsOpen","setIsOpen","opacity","arrowColor","role","tooltipRef","tooltipArrowRef","tooltipShowDelayTimerRef","tooltipHideDelayTimerRef","missedTransitionTimerRef","computedPosition","setComputedPosition","show","setShow","rendered","setRendered","imperativeOptions","setImperativeOptions","wasShowing","lastFloatPosition","setProviderActiveAnchor","hoveringTooltip","anchorsBySelect","setAnchorsBySelect","mounted","shouldOpenOnClick","includes","hasClickEvent","click","dblclick","mousedown","actualOpenEvents","mouseenter","focus","assign","actualCloseEvents","mouseleave","blur","mouseup","actualGlobalCloseEvents","escape","scroll","resize","clickOutsideAnchor","handleShow","undefined","transitionShowDelay","time","amount","unit","cssTimeToMs","body","handleComputedPosition","newComputedPosition","oldComputedPosition","handleShowTooltipDelayed","delay","handleHideTooltipDelayed","handleShowTooltip","event","target","currentTarget","isConnected","handleHideTooltip","handleTooltipPosition","virtualElement","getBoundingClientRect","width","height","computedStylesData","handlePointerMove","mouseEvent","mousePosition","clientX","clientY","handleClickOutsideAnchors","contains","querySelector","anchor","internalDebouncedHandleShowTooltip","internalDebouncedHandleHideTooltip","debouncedHandleShowTooltip","e","debouncedHandleHideTooltip","updateTooltipPosition","actualPosition","elementRefs","anchorById","handleScrollResize","anchorScrollParent","tooltipScrollParent","addEventListener","updateTooltipCleanup","autoUpdate","ancestorResize","elementResize","layoutShift","handleEsc","enabledEvents","handleClickOpenTooltipAnchor","handleClickCloseTooltipAnchor","regularEvents","clickEvents","entries","enabled","listener","handleMouseEnterTooltip","handleMouseLeaveTooltip","removeEventListener","selector","documentObserver","MutationObserver","mutationList","newAnchors","removedAnchors","mutation","attributeName","getAttribute","oldValue","elements","removedNodes","filter","nodeType","matches","flatMap","querySelectorAll","call","addedNodes","anchors","observe","childList","subtree","attributes","attributeFilter","attributeOldValue","disconnect","contentObserver","ResizeObserver","from","actualContent","canShow","useImperativeHandle","open","options","close","Boolean","coreStyles","onTransitionEnd","background","TooltipContent","dangerouslySetInnerHTML","__html","TooltipController","render","disableStyleInjection","tooltipContent","setTooltipContent","tooltipHtml","setTooltipHtml","tooltipPlace","setTooltipPlace","tooltipVariant","setTooltipVariant","tooltipOffset","setTooltipOffset","tooltipDelayShow","setTooltipDelayShow","tooltipDelayHide","setTooltipDelayHide","tooltipFloat","setTooltipFloat","tooltipHidden","setTooltipHidden","tooltipWrapper","setTooltipWrapper","tooltipEvents","setTooltipEvents","tooltipPositionStrategy","setTooltipPositionStrategy","tooltipClassName","setTooltipClassName","styleInjectionRef","providerActiveAnchor","getDataAttributesFromAnchorElement","getAttributeNames","reduce","acc","name","startsWith","replace","applyAllDataAttributesFromAnchorElement","dataAttributes","handleDataAttributes","parsed","values","handler","dispatchEvent","CustomEvent","detail","disableCore","disableBase","size","anchorElement","observer","observerConfig","renderedContent","props"],"mappings":"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"}
Back to Directory
File Manager