@ntragas/pouncejstest
Version:
A collection of UI components from Panther labs
65 lines (49 loc) • 1.64 kB
JavaScript
;
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;