UNPKG

pouncejs

Version:

A collection of UI components from Panther labs

49 lines (44 loc) 1.35 kB
import React from 'react'; import useDisclosure from '../../utils/useDisclosure'; import { useId } from '@reach/auto-id'; // @ts-ignore var PopoverContext = /*#__PURE__*/React.createContext(undefined); var usePopoverContext = function usePopoverContext() { return React.useContext(PopoverContext); }; var Popover = function Popover(_ref) { var isInitiallyOpen = _ref.isOpen, id = _ref.id, children = _ref.children; var _useDisclosure = useDisclosure({ isOpen: isInitiallyOpen }), isOpen = _useDisclosure.isOpen, close = _useDisclosure.close, open = _useDisclosure.open, toggle = _useDisclosure.toggle; var triggerRef = React.useRef(null); var popoverRef = React.useRef(null); var popoverId = useId(id); var contextValue = React.useMemo(function () { return { popoverId: popoverId, triggerRef: triggerRef, popoverRef: popoverRef, open: open, close: close, toggle: toggle, isOpen: isOpen }; }, [popoverId, triggerRef, popoverRef, close, toggle, isOpen]); return /*#__PURE__*/React.createElement(PopoverContext.Provider, { value: contextValue }, typeof children === 'function' ? children({ isOpen: isOpen, open: open, close: close, toggle: toggle }) : children); }; export { usePopoverContext }; export default Popover;