"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
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;
};
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var TextArea_exports = {};
__export(TextArea_exports, {
  default: () => TextArea_default
});
module.exports = __toCommonJS(TextArea_exports);
var import_jsx_runtime = require("react/jsx-runtime");
var import_react = __toESM(require("react"));
var import_styled_components = __toESM(require("styled-components"));
var import_prop_types = require("prop-types");
var import_Fieldset = __toESM(require("../../Input/web/Fieldset"));
var import_Field = __toESM(require("../../Input/web/Field"));
var import_Label = __toESM(require("../../Input/web/Label"));
var import_Legend = __toESM(require("../../Input/web/Legend"));
var import_Helper = __toESM(require("../../Input/web/Helper"));
const Root = import_styled_components.default.div`
  display: inline-block;

  cursor: text;

  ${({ full }) => `
    width: ${full ? "100%" : "auto"};
  `}
`;
const StyledFieldSet = (0, import_styled_components.default)(import_Fieldset.default)`
  height: 88px;
  box-sizing: border-box;
`;
const StyledField = (0, import_styled_components.default)(import_Field.default)`
  resize: none;
  height: 100%;
`;
const noop = () => {
};
const TextArea = import_react.default.forwardRef(
  (_a, ref) => {
    var _b = _a, {
      disabled = false,
      error,
      full = false,
      helper,
      label = "",
      maxLength,
      className,
      style,
      value = "",
      onChange = noop,
      readOnly = false
    } = _b, props = __objRest(_b, [
      "disabled",
      "error",
      "full",
      "helper",
      "label",
      "maxLength",
      "className",
      "style",
      "value",
      "onChange",
      "readOnly"
    ]);
    const [textAreaValue, setTextAreaValue] = (0, import_react.useState)(value);
    const [typed, setTyped] = (0, import_react.useState)(Boolean(value));
    const textAreaRef = ref || (0, import_react.useRef)(null);
    (0, import_react.useEffect)(() => {
      setTextAreaValue(value);
      setTyped(Boolean(value));
    }, [value]);
    return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
      Root,
      {
        className,
        full,
        style,
        onClick: () => textAreaRef.current.focus(),
        children: [
          /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
            StyledFieldSet,
            {
              error,
              disabled,
              full,
              label,
              children: [
                /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
                  StyledField,
                  __spreadProps(__spreadValues({}, props), {
                    readOnly,
                    disabled,
                    full,
                    label,
                    as: "textarea",
                    ref: textAreaRef,
                    cleanable: false,
                    maxLength,
                    typed,
                    error,
                    value: textAreaValue,
                    onChange: (e) => {
                      setTextAreaValue(e.target.value);
                      setTyped(Boolean(e.target.value));
                      onChange(e);
                    }
                  })
                ),
                /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Label.default, __spreadProps(__spreadValues({ error, disabled }, props), { children: label })),
                label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Legend.default, { children: label })
              ]
            }
          ),
          /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
            import_Helper.default,
            {
              disabled,
              error,
              helper,
              maxLength,
              length: textAreaValue.length
            }
          )
        ]
      }
    );
  }
);
TextArea.propTypes = {
  className: import_prop_types.string,
  disabled: import_prop_types.bool,
  /** A error text to be displayed below field */
  error: import_prop_types.string,
  full: import_prop_types.bool,
  /** A helper text to be displayed below field */
  helper: import_prop_types.string,
  label: import_prop_types.string,
  /** maximum length (number of characters) of value */
  maxLength: import_prop_types.number,
  placeholder: import_prop_types.string,
  readOnly: import_prop_types.bool,
  style: (0, import_prop_types.shape)({}),
  value: import_prop_types.string,
  onChange: import_prop_types.func
};
var TextArea_default = TextArea;
