"use strict";

var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.FieldLabel = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _icons = require("@ant-design/icons");
var _proProvider = require("@ant-design/pro-provider");
var _antd = require("antd");
var _classnames = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
var _style = require("./style");
var _jsxRuntime = require("react/jsx-runtime");
var FieldLabelFunction = function FieldLabelFunction(props, ref) {
  var _ConfigProvider$useCo, _ref2, _props$size, _classNames;
  var label = props.label,
    onClear = props.onClear,
    value = props.value,
    disabled = props.disabled,
    onLabelClick = props.onLabelClick,
    ellipsis = props.ellipsis,
    placeholder = props.placeholder,
    className = props.className,
    formatter = props.formatter,
    bordered = props.bordered,
    style = props.style,
    downIcon = props.downIcon,
    _props$allowClear = props.allowClear,
    allowClear = _props$allowClear === void 0 ? true : _props$allowClear;
  var _ref = (_antd.ConfigProvider === null || _antd.ConfigProvider === void 0 ? void 0 : (_ConfigProvider$useCo = _antd.ConfigProvider.useConfig) === null || _ConfigProvider$useCo === void 0 ? void 0 : _ConfigProvider$useCo.call(_antd.ConfigProvider)) || {
      componentSize: 'middle'
    },
    componentSize = _ref.componentSize;
  var size = componentSize;
  var _useContext = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
    getPrefixCls = _useContext.getPrefixCls;
  var prefixCls = getPrefixCls('pro-core-field-label');
  var _useStyle = (0, _style.useStyle)(prefixCls),
    wrapSSR = _useStyle.wrapSSR,
    hashId = _useStyle.hashId;
  var intl = (0, _proProvider.useIntl)();
  var clearRef = (0, _react.useRef)(null);
  var labelRef = (0, _react.useRef)(null);
  (0, _react.useImperativeHandle)(ref, function () {
    return {
      labelRef: labelRef,
      clearRef: clearRef
    };
  });
  var wrapElements = function wrapElements(array) {
    if (array.every(function (item) {
      return typeof item === 'string';
    })) return array.join(',');
    return array.map(function (item, index) {
      var comma = index === array.length - 1 ? '' : ',';
      if (typeof item === 'string') {
        return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
          children: [item, comma]
        }, index);
      }
      return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
        style: {
          display: 'flex'
        },
        children: [item, comma]
      });
    });
  };
  var formatterText = function formatterText(aValue) {
    if (formatter) {
      return formatter(aValue);
    }
    return Array.isArray(aValue) ? wrapElements(aValue) : aValue;
  };
  var getTextByValue = function getTextByValue(aLabel, aValue) {
    if (aValue !== undefined && aValue !== null && aValue !== '' && (!Array.isArray(aValue) || aValue.length)) {
      var _str$toString, _str$toString$substr;
      var prefix = aLabel ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
        onClick: function onClick() {
          onLabelClick === null || onLabelClick === void 0 ? void 0 : onLabelClick();
        },
        className: "".concat(prefixCls, "-text"),
        children: [aLabel, ': ']
      }) : '';
      var str = formatterText(aValue);
      if (!ellipsis) {
        return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
          style: {
            display: 'inline-flex',
            alignItems: 'center'
          },
          children: [prefix, formatterText(aValue)]
        });
      }
      // 普通表单值最大长度41，如2022-06-21 20:11:25 ~ 2022-06-22 20:11:25
      var VALUE_MAX_LENGTH = 41;
      var getText = function getText() {
        var isArrayValue = Array.isArray(aValue) && aValue.length > 1;
        var unitText = intl.getMessage('form.lightFilter.itemUnit', '项');
        if (typeof str === 'string' && str.length > VALUE_MAX_LENGTH && isArrayValue) {
          return "...".concat(aValue.length).concat(unitText);
        }
        return '';
      };
      var tail = getText();
      return /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
        title: typeof str === 'string' ? str : undefined,
        style: {
          display: 'inline-flex',
          alignItems: 'center'
        },
        children: [prefix, /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
          style: {
            paddingInlineStart: 4,
            display: 'flex'
          },
          children: typeof str === 'string' ? str === null || str === void 0 ? void 0 : (_str$toString = str.toString()) === null || _str$toString === void 0 ? void 0 : (_str$toString$substr = _str$toString.substr) === null || _str$toString$substr === void 0 ? void 0 : _str$toString$substr.call(_str$toString, 0, VALUE_MAX_LENGTH) : str
        }), tail]
      });
    }
    return aLabel || placeholder;
  };
  return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
    className: (0, _classnames.default)(prefixCls, hashId, "".concat(prefixCls, "-").concat((_ref2 = (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : size) !== null && _ref2 !== void 0 ? _ref2 : 'middle'), (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-active"), !!value || value === 0), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-bordered"), bordered), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-allow-clear"), allowClear), _classNames), className),
    style: style,
    ref: labelRef,
    onClick: function onClick() {
      var _props$onClick;
      props === null || props === void 0 ? void 0 : (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props);
    },
    children: [getTextByValue(label, value), (value || value === 0) && allowClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.CloseCircleFilled, {
      role: "button",
      title: intl.getMessage('form.lightFilter.clear', '清除'),
      className: (0, _classnames.default)("".concat(prefixCls, "-icon"), hashId, "".concat(prefixCls, "-close")),
      onClick: function onClick(e) {
        if (!disabled) onClear === null || onClear === void 0 ? void 0 : onClear();
        e.stopPropagation();
      },
      ref: clearRef
    }), downIcon !== false ? downIcon !== null && downIcon !== void 0 ? downIcon : /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.DownOutlined, {
      className: (0, _classnames.default)("".concat(prefixCls, "-icon"), hashId, "".concat(prefixCls, "-arrow"))
    }) : null]
  }));
};
var FieldLabel = /*#__PURE__*/_react.default.forwardRef(FieldLabelFunction);
exports.FieldLabel = FieldLabel;