import { jsx as i } from "../../../external/.pnpm/preact@10.28.2/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js";
import { useMemo as v, useCallback as I } from "../../../external/.pnpm/preact@10.28.2/node_modules/preact/hooks/dist/hooks.module.js";
import { useWizardFormContext as O } from "../../../hooks/form/wizard/WizardFormContext.js";
import R from "./FormField.js";
import $ from "../FormFields/InputBase.js";
import { VisibleField as j } from "./VisibleField.js";
import k from "../../../core/Context/preact/useCoreContext.js";
import { Controller as z } from "../../../hooks/form/Controller.js";
function Q({
  className: g,
  dropdown: C,
  fieldName: r,
  isRequired: a,
  isReadOnly: c,
  label: x,
  onDropdownInput: F,
  onInput: l,
  supportText: T,
  type: h,
  validate: m,
  min: q,
  maxLength: V,
  minLength: t,
  dropdownPosition: y,
  hideOptionalLabel: M
}) {
  const { control: b, fieldsConfig: e } = O(), { i18n: d } = k(), s = v(() => a ?? e[r]?.required, [e, r, a]), f = v(() => c ?? e[r]?.readOnly, [e, r, c]), w = I(
    (o, n) => {
      l?.(o), n(o.currentTarget.value);
    },
    [l]
  ), B = I(
    (o) => {
      const n = t && o?.length < t;
      return !o && !s ? { valid: !0 } : n ? { valid: !1, message: d.get("common.errors.minLength", { values: { minLength: t } }) } : m?.(o) ?? { valid: !0 };
    },
    [d, s, t, m]
  );
  return /* @__PURE__ */ i(j, { name: r, children: /* @__PURE__ */ i(
    R,
    {
      label: x,
      optional: !s && !M,
      supportText: T,
      className: g,
      testId: r ? `form-field-${r}` : void 0,
      children: /* @__PURE__ */ i(
        z,
        {
          name: r,
          control: b,
          rules: {
            validate: B,
            required: s
          },
          render: ({ field: o, fieldState: n }) => {
            const p = !!n.error && n.isTouched;
            return /* @__PURE__ */ i(
              $,
              {
                ...o,
                value: o.value,
                maxLength: V,
                minLength: t,
                name: r,
                isValid: !n.error,
                isInvalid: p,
                errorMessage: n.error?.message,
                errorTestId: r ? `field-error-${r}` : void 0,
                onDropdownInput: (...u) => {
                  F?.(...u), p && o.triggerValidation();
                },
                onInput: (u) => w(u, o.onInput),
                type: h,
                min: q,
                dropdown: C,
                dropdownPosition: y,
                readonly: f
              }
            );
          }
        }
      )
    }
  ) });
}
export {
  Q as FormTextInput
};
