UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

103 lines (100 loc) 3.41 kB
'use client'; import { TooltipGroupPropsContext } from "./groupContext.mjs"; import { useContext, useMemo } from "react"; //#region src/Tooltip/useMergedTooltipProps.ts const useMergedTooltipProps = (props) => { const sharedProps = useContext(TooltipGroupPropsContext); const { arrow, className, classNames, closeDelay, disabled, getPopupContainer, hotkey, hotkeyProps, mouseEnterDelay, mouseLeaveDelay, onOpenChange, openDelay, placement, portalled, styles: styleProps, title, zIndex } = props; const mergedClassName = useMemo(() => { if (!sharedProps?.className && !className) return void 0; return [sharedProps?.className, className].filter(Boolean).join(" "); }, [className, sharedProps?.className]); const mergedClassNames = useMemo(() => { if (!sharedProps?.classNames && !classNames) return void 0; return { ...sharedProps?.classNames, ...classNames }; }, [classNames, sharedProps?.classNames]); const resolvedSharedStyles = useMemo(() => { if (typeof sharedProps?.styles === "function") return void 0; return sharedProps?.styles; }, [sharedProps?.styles]); const resolvedLocalStyles = useMemo(() => { if (typeof styleProps === "function") return void 0; return styleProps; }, [styleProps]); const mergedStyles = useMemo(() => { if (!resolvedSharedStyles && !resolvedLocalStyles) return void 0; return { ...resolvedSharedStyles, ...resolvedLocalStyles }; }, [resolvedSharedStyles, resolvedLocalStyles]); const mergedHotkeyProps = useMemo(() => { if (!sharedProps?.hotkeyProps && !hotkeyProps) return void 0; return { ...sharedProps?.hotkeyProps, ...hotkeyProps }; }, [hotkeyProps, sharedProps?.hotkeyProps]); const mergedOnOpenChange = useMemo(() => { if (!sharedProps?.onOpenChange && !onOpenChange) return void 0; return (open) => { sharedProps?.onOpenChange?.(open); onOpenChange?.(open); }; }, [onOpenChange, sharedProps?.onOpenChange]); return useMemo(() => ({ arrow: arrow ?? sharedProps?.arrow ?? true, className: mergedClassName, classNames: mergedClassNames, closeDelay: closeDelay ?? sharedProps?.closeDelay, disabled: disabled ?? sharedProps?.disabled, getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer, hotkey: hotkey ?? sharedProps?.hotkey, hotkeyProps: mergedHotkeyProps, mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay, mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay, onOpenChange: mergedOnOpenChange, openDelay: openDelay ?? sharedProps?.openDelay, placement: placement ?? sharedProps?.placement ?? "top", portalled: portalled ?? sharedProps?.portalled, styles: mergedStyles, title, zIndex: zIndex ?? sharedProps?.zIndex }), [ arrow, closeDelay, disabled, getPopupContainer, hotkey, mergedClassName, mergedClassNames, mergedHotkeyProps, mergedOnOpenChange, mergedStyles, mouseEnterDelay, mouseLeaveDelay, openDelay, placement, portalled, sharedProps?.arrow, sharedProps?.closeDelay, sharedProps?.disabled, sharedProps?.getPopupContainer, sharedProps?.hotkey, sharedProps?.mouseEnterDelay, sharedProps?.mouseLeaveDelay, sharedProps?.onOpenChange, sharedProps?.openDelay, sharedProps?.placement, sharedProps?.portalled, sharedProps?.zIndex, title, zIndex ]); }; //#endregion export { useMergedTooltipProps }; //# sourceMappingURL=useMergedTooltipProps.mjs.map