UNPKG

@lobehub/ui

Version:

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

91 lines (88 loc) 2.98 kB
'use client'; import { PopoverGroupPropsContext } from "./groupContext.mjs"; import { useContext, useMemo } from "react"; //#region src/Popover/useMergedPopoverProps.ts const useMergedPopoverProps = (props) => { const sharedProps = useContext(PopoverGroupPropsContext); const { arrow, inset, trigger, placement, className, classNames, styles: styleProps, onOpenChange, content, closeDelay, disabled, getPopupContainer, mouseEnterDelay, mouseLeaveDelay, nativeButton, openDelay, portalled, 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 mergedStyles = useMemo(() => { if (!sharedProps?.styles && !styleProps) return void 0; return { ...sharedProps?.styles, ...styleProps }; }, [sharedProps?.styles, styleProps]); 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 ?? false, className: mergedClassName, classNames: mergedClassNames, closeDelay: closeDelay ?? sharedProps?.closeDelay, content, disabled: disabled ?? sharedProps?.disabled, getPopupContainer: getPopupContainer ?? sharedProps?.getPopupContainer, inset: inset ?? sharedProps?.inset ?? false, mouseEnterDelay: mouseEnterDelay ?? sharedProps?.mouseEnterDelay, mouseLeaveDelay: mouseLeaveDelay ?? sharedProps?.mouseLeaveDelay, nativeButton: nativeButton ?? sharedProps?.nativeButton, onOpenChange: mergedOnOpenChange, openDelay: openDelay ?? sharedProps?.openDelay, placement: placement ?? sharedProps?.placement ?? "top", portalled: portalled ?? sharedProps?.portalled, styles: mergedStyles, trigger: trigger ?? sharedProps?.trigger ?? "hover", zIndex: zIndex ?? sharedProps?.zIndex }), [ arrow, closeDelay, content, disabled, getPopupContainer, inset, mergedClassName, mergedClassNames, mergedOnOpenChange, mergedStyles, mouseEnterDelay, mouseLeaveDelay, nativeButton, openDelay, placement, portalled, sharedProps?.arrow, sharedProps?.closeDelay, sharedProps?.disabled, sharedProps?.getPopupContainer, sharedProps?.inset, sharedProps?.mouseEnterDelay, sharedProps?.mouseLeaveDelay, sharedProps?.nativeButton, sharedProps?.openDelay, sharedProps?.placement, sharedProps?.portalled, sharedProps?.trigger, sharedProps?.zIndex, trigger, zIndex ]); }; //#endregion export { useMergedPopoverProps }; //# sourceMappingURL=useMergedPopoverProps.mjs.map