pouncejs
Version:
A collection of UI components from Panther labs
65 lines (49 loc) • 1.73 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: popoverId,
triggerRef: triggerRef,
popoverRef: popoverRef,
open: open,
close: close,
toggle: toggle,
isOpen: isOpen
};
}, [popoverId, triggerRef, popoverRef, close, toggle, isOpen]);
return /*#__PURE__*/_react.default.createElement(PopoverContext.Provider, {
value: contextValue
}, typeof children === 'function' ? children({
isOpen: isOpen,
open: open,
close: close,
toggle: toggle
}) : children);
};
var _default = Popover;
exports.default = _default;