"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _proUtils = require("@ant-design/pro-utils");
var _antd = require("antd");
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
var _Select = require("../Select");
var _proProvider = require("@ant-design/pro-provider");
require("antd/lib/checkbox/style");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["layout", "renderFormItem", "mode", "render"]; // 兼容代码-----------
//----------------------
/**
 * 多选组件
 *
 * @param param0
 * @param ref
 */
var FieldCheckbox = function FieldCheckbox(_ref, ref) {
  var _Form$Item, _Form$Item$useStatus;
  var _ref$layout = _ref.layout,
    layout = _ref$layout === void 0 ? 'horizontal' : _ref$layout,
    renderFormItem = _ref.renderFormItem,
    mode = _ref.mode,
    render = _ref.render,
    rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
  var _useContext = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
    getPrefixCls = _useContext.getPrefixCls;
  var layoutClassName = getPrefixCls('pro-field-checkbox');
  var status = (_Form$Item = _antd.Form.Item) === null || _Form$Item === void 0 || (_Form$Item$useStatus = _Form$Item.useStatus) === null || _Form$Item$useStatus === void 0 ? void 0 : _Form$Item$useStatus.call(_Form$Item);
  var _useFieldFetchData = (0, _Select.useFieldFetchData)(rest),
    _useFieldFetchData2 = (0, _slicedToArray2.default)(_useFieldFetchData, 3),
    loading = _useFieldFetchData2[0],
    options = _useFieldFetchData2[1],
    _fetchData = _useFieldFetchData2[2];

  // css
  var _useStyle = (0, _proUtils.useStyle)('Checkbox', function (token) {
      var _vertical;
      return (0, _defineProperty2.default)({}, ".".concat(layoutClassName), {
        '&-error': {
          span: {
            color: token.colorError
          }
        },
        '&-warning': {
          span: {
            color: token.colorWarning
          }
        },
        '&-vertical': (_vertical = {}, (0, _defineProperty2.default)(_vertical, "&".concat(token.antCls, "-checkbox-group"), {
          display: 'inline-block'
        }), (0, _defineProperty2.default)(_vertical, "".concat(token.antCls, "-checkbox-wrapper+").concat(token.antCls, "-checkbox-wrapper"), {
          'margin-inline-start': '0  !important'
        }), (0, _defineProperty2.default)(_vertical, "".concat(token.antCls, "-checkbox-group-item"), {
          display: 'flex',
          marginInlineEnd: 0
        }), _vertical)
      });
    }),
    wrapSSR = _useStyle.wrapSSR,
    hashId = _useStyle.hashId;
  var _useToken = _proProvider.useToken === null || _proProvider.useToken === void 0 ? void 0 : (0, _proProvider.useToken)(),
    token = _useToken.token;
  var checkBoxRef = (0, _react.useRef)();
  (0, _react.useImperativeHandle)(ref, function () {
    return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, checkBoxRef.current || {}), {}, {
      fetchData: function fetchData(keyWord) {
        return _fetchData(keyWord);
      }
    });
  }, [_fetchData]);
  if (loading) {
    return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Spin, {
      size: "small"
    });
  }
  if (mode === 'read') {
    var optionsValueEnum = options !== null && options !== void 0 && options.length ? options === null || options === void 0 ? void 0 : options.reduce(function (pre, cur) {
      var _ref3;
      return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, pre), {}, (0, _defineProperty2.default)({}, (_ref3 = cur.value) !== null && _ref3 !== void 0 ? _ref3 : '', cur.label));
    }, {}) : undefined;
    var dom = (0, _proUtils.proFieldParsingText)(rest.text, (0, _proUtils.objectToMap)(rest.valueEnum || optionsValueEnum));
    if (render) {
      var _render;
      return (_render = render(rest.text, (0, _objectSpread3.default)({
        mode: mode
      }, rest.fieldProps), /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
        children: dom
      }))) !== null && _render !== void 0 ? _render : null;
    }
    return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
      style: {
        display: 'flex',
        flexWrap: 'wrap',
        alignItems: 'center',
        gap: token.marginSM
      },
      children: dom
    });
  }
  if (mode === 'edit') {
    var _rest$fieldProps, _classNames;
    var _dom = wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Checkbox.Group, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, rest.fieldProps), {}, {
      className: (0, _classnames.default)((_rest$fieldProps = rest.fieldProps) === null || _rest$fieldProps === void 0 ? void 0 : _rest$fieldProps.className, hashId, "".concat(layoutClassName, "-").concat(layout), (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(layoutClassName, "-error"), (status === null || status === void 0 ? void 0 : status.status) === 'error'), (0, _defineProperty2.default)(_classNames, "".concat(layoutClassName, "-warning"), (status === null || status === void 0 ? void 0 : status.status) === 'warning'), _classNames)),
      options: options
    })));
    if (renderFormItem) {
      var _renderFormItem;
      return (_renderFormItem = renderFormItem(rest.text, (0, _objectSpread3.default)((0, _objectSpread3.default)({
        mode: mode
      }, rest.fieldProps), {}, {
        options: options,
        loading: loading
      }), _dom)) !== null && _renderFormItem !== void 0 ? _renderFormItem : null;
    }
    return _dom;
  }
  return null;
};
var _default = exports.default = /*#__PURE__*/_react.default.forwardRef(FieldCheckbox);