function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
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/src/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 ? void 0 : (_deleteButtonProps$on = deleteButtonProps.onClick) === null || _deleteButtonProps$on === void 0 ? void 0 : _deleteButtonProps$on.call(deleteButtonProps, e);
        onDelete === null || onDelete === void 0 ? 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;