"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _typeof = require("@babel/runtime/helpers/typeof");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

require("maycur-antd/lib/popover/style/css");

var _popover = _interopRequireDefault(require("maycur-antd/lib/popover"));

require("maycur-antd/lib/button/style/css");

var _button = _interopRequireDefault(require("maycur-antd/lib/button"));

var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));

var _react = _interopRequireWildcard(require("react"));

var _lodash = require("lodash");

var _ColumnSetPanel = _interopRequireDefault(require("../ColumnSetPanel"));

var _utils = _interopRequireDefault(require("../../utils/utils"));

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 || _typeof(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; }

var prefix = _utils.default.prefixCls;

function ColumnSet(props) {
  var dataSource = props.dataSource,
      onEnd = props.onEnd,
      name = props.name,
      keepLastItem = props.keepLastItem;

  var _useState = (0, _react.useState)(),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      btnName = _useState2[0],
      setBtnName = _useState2[1];

  var _useState3 = (0, _react.useState)(),
      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
      visible = _useState4[0],
      setVisible = _useState4[1];

  var _useState5 = (0, _react.useState)((0, _lodash.cloneDeep)(dataSource)),
      _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
      panels = _useState6[0],
      setPanels = _useState6[1];

  var triggerEnd = function triggerEnd() {
    if (!(0, _lodash.isEqual)(panels, dataSource)) {
      onEnd(panels, true);
    }
  };

  var onVisibleChange = function onVisibleChange(visible) {
    setVisible(visible);

    if (!visible) {
      triggerEnd();
    }
  };

  var closePanel = function closePanel() {
    setVisible(false);
    triggerEnd();
  };

  var onChange = function onChange(newValue) {
    setPanels(newValue);
  };

  (0, _react.useEffect)(function () {
    if (name !== btnName && name !== '...') {
      setBtnName(name);
    }
  }, [name, btnName]);
  (0, _react.useEffect)(function () {
    setPanels((0, _lodash.cloneDeep)(dataSource));
  }, [dataSource]);
  return /*#__PURE__*/_react.default.createElement(_popover.default, {
    placement: "bottomRight",
    trigger: "click",
    visible: visible,
    overlayClassName: "".concat(prefix, "-column-set-card"),
    onVisibleChange: onVisibleChange,
    content: /*#__PURE__*/_react.default.createElement(_ColumnSetPanel.default, {
      dataSource: panels,
      onChange: onChange,
      closePanel: closePanel,
      keepLastItem: keepLastItem
    })
  }, /*#__PURE__*/_react.default.createElement(_button.default, {
    style: {
      marginRight: 0,
      marginLeft: 8,
      borderColor: '#E1E1E1'
    },
    type: "primary",
    disabled: !Array.isArray(dataSource) || dataSource.length === 0,
    ghost: true
  }, btnName));
}

var _default = /*#__PURE__*/(0, _react.memo)(ColumnSet, function (prevProps, nextProps) {
  return prevProps.dataSource === nextProps.dataSource && prevProps.name === nextProps.name;
});

exports.default = _default;