function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React, { useMemo } from 'react';
import { Button } from 'antd';
import classNames from 'classnames';
import { isBoolean, isUndefined } from '@pisell/utils';
import XClose from '@pisell/icon/es/XClose';
import Delete_wght300_24px from '@pisell/icon/es/Delete_wght300_24px';
import Modal from "../../../modal";
import { sizeMap } from "../../constants";
import "./index.less";
var PcModal = function PcModal(props) {
  var wrapClassName = props.wrapClassName,
    okButtonProps = props.okButtonProps,
    cancelButtonProps = props.cancelButtonProps,
    propsWidth = props.width,
    _props$size = props.size,
    size = _props$size === void 0 ? 'middle' : _props$size,
    propsCloseIcon = props.closeIcon,
    headerDivider = props.headerDivider,
    footerDivider = props.footerDivider,
    title = props.title,
    _props$centered = props.centered,
    centered = _props$centered === void 0 ? true : _props$centered,
    deleteButtonProps = props.deleteButtonProps,
    onDelete = props.onDelete,
    _props$cancelVisible = props.cancelVisible,
    cancelVisible = _props$cancelVisible === void 0 ? true : _props$cancelVisible,
    _props$okVisible = props.okVisible,
    okVisible = _props$okVisible === void 0 ? true : _props$okVisible,
    actions = props.actions,
    footer = props.footer,
    header = props.header;
  var width = useMemo(function () {
    // 如果没有设置宽度，则根据size来设置宽度
    return propsWidth || sizeMap[size];
  }, [propsWidth, size]);
  var closeIcon = useMemo(function () {
    if (isUndefined(propsCloseIcon)) {
      return /*#__PURE__*/React.createElement(XClose, {
        style: {
          fontSize: 20
        }
      });
    }
  }, [propsCloseIcon]);
  var deleteBtn = useMemo(function () {
    if (!deleteButtonProps) {
      return null;
    }
    return /*#__PURE__*/React.createElement("span", {
      style: {
        flexShrink: 0
      }
    }, /*#__PURE__*/React.createElement(Button, _extends({
      icon: /*#__PURE__*/React.createElement(Delete_wght300_24px, {
        style: {
          fontSize: 20
        }
      }),
      size: 'large'
    }, deleteButtonProps, {
      onClick: function onClick(e) {
        var _deleteButtonProps$on;
        deleteButtonProps === null || deleteButtonProps === void 0 || (_deleteButtonProps$on = deleteButtonProps.onClick) === null || _deleteButtonProps$on === void 0 || _deleteButtonProps$on.call(deleteButtonProps, e);
        onDelete === null || onDelete === void 0 || onDelete();
      }
    })));
  }, [deleteButtonProps]);
  var isHideFooter = useMemo(function () {
    return isBoolean(footer) && !footer || footer === null;
  }, [footer]);
  var isHideHeader = useMemo(function () {
    return isBoolean(header) && !header || header === null;
  }, [header]);
  var renderFooter = function renderFooter(_, _ref) {
    var OkBtn = _ref.OkBtn,
      CancelBtn = _ref.CancelBtn;
    if (footer) {
      return footer;
    }
    if ([deleteBtn, actions, cancelVisible, okVisible].every(function (item) {
      return !item;
    })) {
      return null;
    }
    return /*#__PURE__*/React.createElement(React.Fragment, null, deleteBtn, actions, cancelVisible && /*#__PURE__*/React.createElement(CancelBtn, null), okVisible && /*#__PURE__*/React.createElement(OkBtn, null));
  };
  return /*#__PURE__*/React.createElement(Modal, _extends({
    keyboard: false
  }, props, {
    centered: centered,
    title: title || /*#__PURE__*/React.createElement("div", {
      style: {
        height: 24
      }
    }),
    width: width,
    wrapClassName: classNames('pisell-pc-modal', _defineProperty({}, wrapClassName, wrapClassName)),
    closeIcon: closeIcon,
    footer: isHideFooter ? null : renderFooter,
    okButtonProps: _objectSpread({
      block: true,
      size: 'large',
      style: {
        margin: 0
      }
    }, okButtonProps || {}),
    cancelButtonProps: _objectSpread({
      block: true,
      size: 'large'
    }, cancelButtonProps || {}),
    styles: {
      header: {
        borderBottom: headerDivider ? '1px solid var(--Gray-200, #EAECF0)' : 'none',
        display: isHideHeader ? 'none' : 'block'
      },
      footer: {
        borderTop: footerDivider ? '1px solid var(--Gray-200, #EAECF0)' : 'none'
      }
    }
  }));
};
export default PcModal;