{"version":3,"file":"index-BloSgfPz.js","sources":["../../Client/shared/Hooks/Resize.tsx","../../Client/shared/Hooks/Scroll.tsx","../../Client/legacy/Components/Tooltip/index.tsx"],"sourcesContent":["import { useEffect } from 'react';\r\n\r\nexport const useResize = (callback: (width: number, height: number) => void) => {\r\n useEffect(() => {\r\n const handler = () => {\r\n callback(\r\n Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\r\n Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\r\n );\r\n };\r\n\r\n window.addEventListener('resize', handler);\r\n return () => window.removeEventListener('resize', handler);\r\n }, []);\r\n};\r\n","import { useEffect } from 'react';\r\n\r\nexport const useScroll = (callback: (scrollY: number) => void, options?: boolean | AddEventListenerOptions) => {\r\n useEffect(() => {\r\n const handler = () => callback(window.scrollY);\r\n window.addEventListener('scroll', handler, options);\r\n\r\n return () => {\r\n window.removeEventListener('scroll', handler);\r\n };\r\n }, []);\r\n};\r\n","import { useResize } from '@shared/Hooks/Resize';\r\nimport { useScroll } from '@shared/Hooks/Scroll';\r\nimport Portal from '@webkit/components/portal';\r\nimport { PropsWithChildren, createRef, forwardRef, useImperativeHandle, useMemo, useState } from 'react';\r\nimport './style.scss';\r\n\r\nexport enum TooltipPlacement {\r\n Bottom = 'bottom',\r\n BottomLeft = 'bottom-left',\r\n BottomRight = 'bottom-right',\r\n Right = 'right',\r\n Top = 'top',\r\n}\r\n\r\nexport enum TooltipEvent {\r\n Focus = 'onFocus',\r\n Blur = 'onBlur',\r\n MouseEnter = 'onMouseEnter',\r\n MouseLeave = 'onMouseLeave',\r\n}\r\n\r\nexport enum TooltipSize {\r\n Small = 'small',\r\n Large = 'large',\r\n Fill = 'fill',\r\n}\r\n\r\nexport type TooltipProps = PropsWithChildren<{\r\n title?: string;\r\n message: string | JSX.Element;\r\n className?: string;\r\n wrapperClassName?: string;\r\n childrenClassName?: string;\r\n placement?: TooltipPlacement;\r\n offset?: number;\r\n delayShow?: number;\r\n delayHide?: number;\r\n disabled?: boolean;\r\n onEvent?: TooltipEvent;\r\n offEvent?: TooltipEvent;\r\n size?: TooltipSize;\r\n /** Optional, pass in some text to display in a highlight box for emphasis. */\r\n highlightBox?: string | null | undefined;\r\n persistent?: boolean;\r\n}>;\r\n\r\ninterface TooltipPosition {\r\n width: number;\r\n top: number;\r\n left: number;\r\n}\r\n\r\nexport type TooltipActions = {\r\n show: () => void;\r\n hide: () => void;\r\n persist: (delay?: number) => void;\r\n};\r\n\r\n/**\r\n * @deprecated This component is deprecated. Use the `Tooltip` component from @webkit/index` instead.\r\n */\r\nexport const Tooltip = forwardRef<TooltipActions, TooltipProps>((props, ref) => {\r\n const [position, setPosition] = useState<TooltipPosition>({ width: 0, top: 0, left: 0 }),\r\n [visible, setVisible] = useState<boolean>(false),\r\n childrenRef = useMemo(() => createRef<HTMLDivElement>(), []);\r\n\r\n useImperativeHandle(ref, () => ({\r\n show,\r\n hide,\r\n persist,\r\n }));\r\n\r\n useScroll(setTooltipPosition);\r\n useResize(setTooltipPosition);\r\n\r\n const placement: TooltipPlacement = props.placement || TooltipPlacement.Bottom;\r\n return (\r\n <div className={`tooltip-wrapper ${props.wrapperClassName || ''}`}>\r\n <div\r\n className={`tooltip-children ${props.childrenClassName ? props.childrenClassName : ''}`}\r\n {...buildEventProps()}\r\n ref={childrenRef}\r\n >\r\n {props.children}\r\n </div>\r\n <Portal>\r\n <div\r\n className={`tooltip-content-wrapper ${placement} ${\r\n visible ? 'tooltip-content-wrapper-visible' : ''\r\n }`}\r\n style={{ left: `${position.left}px`, top: `${position.top}px` }}\r\n >\r\n <div className='tooltip-arrow-wrapper' style={{ width: `${position.width}px` }}>\r\n <div className='tooltip-arrow'></div>\r\n </div>\r\n <div className={`tooltip-content ${props.size || TooltipSize.Small} ${props.className || ''}`}>\r\n <div className={`tooltip-title ${props.title ? 'tooltip-title-visible' : ''}`}>\r\n {props.title}\r\n </div>\r\n <div className='tooltip-message'>{props.message}</div>\r\n {props.highlightBox && <div className='tooltip-highlight-box'>{props.highlightBox}</div>}\r\n </div>\r\n </div>\r\n </Portal>\r\n </div>\r\n );\r\n\r\n function buildEventProps() {\r\n if (props.persistent) return;\r\n\r\n let p = {},\r\n onEvent: TooltipEvent = props.onEvent || TooltipEvent.MouseEnter,\r\n offEvent: TooltipEvent = props.offEvent || TooltipEvent.MouseLeave;\r\n\r\n p[onEvent] = () => show();\r\n p[offEvent] = () => hide();\r\n return p;\r\n }\r\n\r\n function show() {\r\n if (!childrenRef.current) return;\r\n\r\n setTooltipPosition();\r\n setVisible(!props.disabled);\r\n }\r\n\r\n function hide() {\r\n setVisible(false);\r\n }\r\n\r\n function persist() {\r\n if (!childrenRef.current) return;\r\n\r\n setTooltipPosition();\r\n setVisible(true);\r\n }\r\n\r\n function setTooltipPosition() {\r\n if (!childrenRef.current?.firstChild) return;\r\n\r\n const rect = childrenRef.current.getBoundingClientRect();\r\n setPosition({\r\n width: rect.width,\r\n top: rect.top + rect.height + window.scrollY + (props.offset || 0),\r\n left: rect.left + window.scrollX,\r\n });\r\n }\r\n});\r\n"],"names":["useResize","callback","useEffect","handler","useScroll","options","TooltipPlacement","TooltipSize","Tooltip","forwardRef","props","ref","position","setPosition","useState","visible","setVisible","childrenRef","useMemo","createRef","useImperativeHandle","show","hide","persist","setTooltipPosition","placement","jsx","buildEventProps","Portal","jsxs","p","onEvent","offEvent","_a","rect"],"mappings":"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"}