text: "use strict";
  
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  
  var _typeof3 = require("@babel/runtime/helpers/typeof");
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  Object.defineProperty(exports, "anchorRef", {
    enumerable: true,
    get: function get() {
      return _core.anchorRef;
    }
  });
  Object.defineProperty(exports, "bindTrigger", {
    enumerable: true,
    get: function get() {
      return _core.bindTrigger;
    }
  });
  Object.defineProperty(exports, "bindContextMenu", {
    enumerable: true,
    get: function get() {
      return _core.bindContextMenu;
    }
  });
  Object.defineProperty(exports, "bindToggle", {
    enumerable: true,
    get: function get() {
      return _core.bindToggle;
    }
  });
  Object.defineProperty(exports, "bindHover", {
    enumerable: true,
    get: function get() {
      return _core.bindHover;
    }
  });
  Object.defineProperty(exports, "bindFocus", {
    enumerable: true,
    get: function get() {
      return _core.bindFocus;
    }
  });
  Object.defineProperty(exports, "bindMenu", {
    enumerable: true,
    get: function get() {
      return _core.bindMenu;
    }
  });
  Object.defineProperty(exports, "bindPopover", {
    enumerable: true,
    get: function get() {
      return _core.bindPopover;
    }
  });
  Object.defineProperty(exports, "bindPopper", {
    enumerable: true,
    get: function get() {
      return _core.bindPopper;
    }
  });
  exports["default"] = void 0;
  
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
  
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
  
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
  
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
  
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
  
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  
  var React = _interopRequireWildcard(require("react"));
  
  var _propTypes = _interopRequireDefault(require("prop-types"));
  
  var _core = require("./core");
  
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
  
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
  
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
  
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
  
  var PopupState = /*#__PURE__*/function (_React$Component) {
    (0, _inherits2["default"])(PopupState, _React$Component);
  
    var _super = _createSuper(PopupState);
  
    function PopupState() {
      var _this;
  
      (0, _classCallCheck2["default"])(this, PopupState);
  
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
  
      _this = _super.call.apply(_super, [this].concat(args));
      (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", _core.initCoreState);
      (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_mounted", true);
      (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_setStateIfMounted", function (state) {
        if (_this._mounted) _this.setState(state);
      });
      return _this;
    }
  
    (0, _createClass2["default"])(PopupState, [{
      key: "componentWillUnmount",
      value: function componentWillUnmount() {
        this._mounted = false;
      }
    }, {
      key: "componentDidUpdate",
      value: function componentDidUpdate(prevProps, prevState) {
        var _this$props = this.props,
            popupId = _this$props.popupId,
            disableAutoFocus = _this$props.disableAutoFocus;
  
        if (!disableAutoFocus && (typeof document === "undefined" ? "undefined" : (0, _typeof2["default"])(document)) === 'object' && popupId && (popupId !== prevProps.popupId || this.state.anchorEl !== prevState.anchorEl)) {
          var popup = document.getElementById(popupId);
          if (popup) popup.focus();
        }
      }
    }, {
      key: "render",
      value: function render() {
        var _this$props2 = this.props,
            children = _this$props2.children,
            popupId = _this$props2.popupId,
            variant = _this$props2.variant,
            parentPopupState = _this$props2.parentPopupState,
            disableAutoFocus = _this$props2.disableAutoFocus;
        var popupState = (0, _core.createPopupState)({
          state: this.state,
          setState: this._setStateIfMounted,
          popupId: popupId,
          variant: variant,
          parentPopupState: parentPopupState,
          disableAutoFocus: disableAutoFocus
        });
        var result = children(popupState);
        if (result == null) return null;
        return result;
      }
    }]);
    return PopupState;
  }(React.Component);
  
  exports["default"] = PopupState;
  (0, _defineProperty2["default"])(PopupState, "propTypes", {
    /**
     * The render function.
     *
     * @param {object} props the properties injected by `PopupState`:
     * <ul>
     *   <li>`open(eventOrAnchorEl)`: opens the popup</li>
     *   <li>`close()`: closes the popup</li>
     *   <li>`toggle(eventOrAnchorEl)`: opens the popup if it is closed, or
     *     closes the popup if it is open.
     *   </li>
     *   <li>`setOpen(open, [eventOrAnchorEl])`: sets whether the popup is open.
     *     `eventOrAnchorEl` is required if `open` is truthy.
     *   </li>
     *   <li>`isOpen`: `true`/`false` if the popup is open/closed</li>
     *   <li>`anchorEl`: the current anchor element (`null` the popup is closed)</li>
     *   <li>`popupId`: the `popupId` prop you passed</li>
     * </ul>
     *
     * @returns {React.Node} the content to display
     */
    children: _propTypes["default"].func.isRequired,
  
    /**
     * The `id` property to use for the popup.  Will be passed to the render
     * function as `bindPopup.id`, and also used for the `aria-controls` property
     * passed to the trigger component via `bindTrigger`.
     */
    popupId: _propTypes["default"].string,
  
    /**
     * Which type of popup you are controlling.  Use `'popover'` for `Popover`
     * and `Menu`; use `'popper'` for `Popper`s.  Right now this only affects
     * whether `aria-controls` or `aria-describedby` is used on the trigger
     * component.
     */
    variant: _propTypes["default"].oneOf(['popover', 'popper']).isRequired,
  
    /**
     * The popupState of the parent menu (for cascading menus)
     */
    parentPopupState: _propTypes["default"].object,
  
    /**
     * Will focus the popup when it opens unless disableAutoFocus is explicitly false.
     */
    disableAutoFocus: _propTypes["default"].bool
  });