import { CloseCircleFilled } from '@ant-design/icons';
import { FocusIndicator16BlueIcon } from '@cloudtower/icons-react';
import cs from 'classnames';
import React__default from 'react';
import Icon from '../../Icon/index.js';
import Input from '../../Input/index.js';
import InputTagItem from '../../InputTagItem/index.js';
import Overflow from '../../Overflow/index.js';
import { KitInputStyle } from '../../Styled/index.js';

var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {}))
    if (__hasOwnProp.call(b, prop))
      __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(b)) {
      if (__propIsEnum.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source)
    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
      target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(source)) {
      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
        target[prop] = source[prop];
    }
  return target;
};
const FieldsString = (_a) => {
  var _b = _a, {
    input,
    meta,
    autoComplete = "off",
    size,
    tags,
    className,
    allowClear,
    tagsOverflow,
    onTagsAllowClearClick,
    onClick,
    maxLength,
    focusIndicator,
    "data-testid": dataTestId
  } = _b, props = __objRest(_b, [
    "input",
    "meta",
    "autoComplete",
    "size",
    "tags",
    "className",
    "allowClear",
    "tagsOverflow",
    "onTagsAllowClearClick",
    "onClick",
    "maxLength",
    "focusIndicator",
    "data-testid"
  ]);
  const inputWithTestId = dataTestId ? __spreadProps(__spreadValues({}, input), { "data-testid": dataTestId }) : input;
  if (tags == null ? void 0 : tags.length) {
    return /* @__PURE__ */ React__default.createElement(
      "div",
      {
        "data-testid": dataTestId,
        className: cs(
          className,
          KitInputStyle,
          "input-tags",
          allowClear && "kit-input-suffix-wrapper"
        ),
        onClick
      },
      /* @__PURE__ */ React__default.createElement("div", { className: "input-tags-inner" }, /* @__PURE__ */ React__default.createElement(Overflow, { overflow: tagsOverflow }, /* @__PURE__ */ React__default.createElement("span", { className: "tags-overflow-auto" }, tags.map((tag) => /* @__PURE__ */ React__default.createElement(InputTagItem, { key: tag }, tag))))),
      /* @__PURE__ */ React__default.createElement("span", { className: "input-tag-suffix" }, allowClear && /* @__PURE__ */ React__default.createElement(
        CloseCircleFilled,
        {
          "data-testid": dataTestId ? `${dataTestId}-clear` : void 0,
          onClick: onTagsAllowClearClick
        }
      ))
    );
  }
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
    Input,
    __spreadProps(__spreadValues(__spreadProps(__spreadValues({
      className: cs(
        className,
        KitInputStyle,
        focusIndicator && "has-focus-indicator"
      )
    }, inputWithTestId), {
      autoComplete: props.type === "password" ? "new-password" : autoComplete,
      size,
      allowClear,
      onClick,
      prefix: focusIndicator ? /* @__PURE__ */ React__default.createElement(Icon, { alt: "focusIndicator16Blue", src: FocusIndicator16BlueIcon }) : void 0,
      error: meta.touched && (meta.error || !meta.dirtySinceLastSubmit && meta.submitError)
    }), props), {
      onChange: (e) => {
        var _a2;
        if (maxLength) {
          e.target.value = e.target.value.substr(0, maxLength);
        }
        (_a2 = input.onChange) == null ? void 0 : _a2.call(input, e);
      }
    })
  ));
};
var FieldsString$1 = FieldsString;

export { FieldsString$1 as default };
