var __assign = this && this.__assign || function () {
  __assign = Object.assign || function (t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
      s = arguments[i];

      for (var p in s) {
        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
      }
    }

    return t;
  };

  return __assign.apply(this, arguments);
};

var __rest = this && this.__rest || function (s, e) {
  var t = {};

  for (var p in s) {
    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  }

  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  }
  return t;
};

import { jsx as _jsx } from "react/jsx-runtime";
import * as React from 'react';
import Button from "../button";
import Popover from "./Popover";
export var PopoverButton = /*#__PURE__*/React.forwardRef(function (props, ref) {
  var buttonText = props.buttonText,
      buttonProps = props.buttonProps,
      renderButton = props.renderButton,
      onVisibleChange = props.onVisibleChange,
      popverProps = __rest(props, ["buttonText", "buttonProps", "renderButton", "onVisibleChange"]);

  var _a = React.useState(false),
      actived = _a[0],
      setActived = _a[1];

  React.useImperativeHandle(ref, function () {
    return {
      toggle: function toggle(vis) {
        return setActived(vis);
      }
    };
  }, []);

  var handleVisibleChange = function handleVisibleChange(vis) {
    setActived(vis);
    onVisibleChange && onVisibleChange(vis);
  };

  var button = renderButton ? renderButton(actived) : _jsx(Button, __assign({}, buttonProps || {}, {
    disabled: actived
  }, {
    children: buttonText
  }), void 0);
  return _jsx(Popover, __assign({}, popverProps, {
    visible: actived,
    onVisibleChange: handleVisibleChange
  }, {
    children: button
  }), void 0);
});
PopoverButton.defaultProps = {
  placement: 'bottom',
  trigger: 'click'
};
PopoverButton.displayName = 'PopoverButton';
export default PopoverButton;

