UNPKG

@ntragas/pouncejstest

Version:

A collection of UI components from Panther labs

65 lines (49 loc) 1.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.usePopoverContext = void 0; var _react = _interopRequireDefault(require("react")); var _useDisclosure2 = _interopRequireDefault(require("../../utils/useDisclosure")); var _autoId = require("@reach/auto-id"); // @ts-ignore var PopoverContext = /*#__PURE__*/_react.default.createContext(undefined); var usePopoverContext = function usePopoverContext() { return _react.default.useContext(PopoverContext); }; exports.usePopoverContext = usePopoverContext; var Popover = function Popover(_ref) { var isInitiallyOpen = _ref.isOpen, id = _ref.id, children = _ref.children; var _useDisclosure = (0, _useDisclosure2.default)({ isOpen: isInitiallyOpen }), isOpen = _useDisclosure.isOpen, close = _useDisclosure.close, open = _useDisclosure.open, toggle = _useDisclosure.toggle; var triggerRef = _react.default.useRef(null); var popoverRef = _react.default.useRef(null); var popoverId = (0, _autoId.useId)(id); var contextValue = _react.default.useMemo(function () { return { popoverId, triggerRef, popoverRef, open, close, toggle, isOpen }; }, [popoverId, triggerRef, popoverRef, close, toggle, isOpen]); return /*#__PURE__*/_react.default.createElement(PopoverContext.Provider, { value: contextValue }, typeof children === 'function' ? children({ isOpen, open, close, toggle }) : children); }; var _default = Popover; exports.default = _default;