{"version":3,"file":"AutoFormField.mjs","names":[],"sources":["../../src/tanstack-form/AutoFormField.tsx"],"sourcesContent":["import React from \"react\";\nimport { getLabel } from \"@autoform/core\";\nimport type { ParsedField } from \"@autoform/core\";\nimport type { AutoFormFieldProps } from \"../types\";\nimport { useAutoForm } from \"../context\";\nimport { ArrayField } from \"./ArrayField\";\nimport { ObjectField } from \"./ObjectField\";\nimport { useFormContext } from \"./hooks\";\nimport { formatTanStackPath, getErrorMessage } from \"./utils\";\n\nexport const AutoFormField: React.FC<{\n  parsedField: ParsedField;\n  path: string[];\n}> = ({ path, parsedField }) => {\n  const { formComponents, uiComponents } = useAutoForm();\n  const form = useFormContext() as any;\n\n  const domPath = path.join(\".\");\n  const fullPath = formatTanStackPath(path);\n  const fieldConfig = parsedField.fieldConfig;\n  const label = getLabel(parsedField);\n  const FieldWrapper = fieldConfig?.fieldWrapper || uiComponents.FieldWrapper;\n\n  let FieldComponent: React.ComponentType<AutoFormFieldProps>;\n  if (parsedField.type === \"array\") {\n    FieldComponent = ArrayField;\n  } else if (parsedField.type === \"object\") {\n    FieldComponent = ObjectField;\n  } else if (parsedField.type in formComponents) {\n    FieldComponent = formComponents[parsedField.type]!;\n  } else if (\"fallback\" in formComponents) {\n    FieldComponent = formComponents.fallback;\n  } else {\n    FieldComponent = () => (\n      <uiComponents.ErrorMessage\n        error={`[AutoForm Configuration Error] No component found for type \"${parsedField.type}\" nor a fallback`}\n      />\n    );\n  }\n\n  const AppField = form.AppField as React.ComponentType<any>;\n  return (\n    <AppField\n      name={fullPath}\n      mode={parsedField.type === \"array\" ? \"array\" : undefined}\n    >\n      {(fieldApi: any) => {\n        const error = getErrorMessage(fieldApi);\n\n        return (\n          <FieldWrapper\n            label={label}\n            error={error}\n            id={domPath}\n            parsedField={parsedField}\n          >\n            <FieldComponent\n              key={`${domPath}-input`}\n              path={path}\n              id={domPath}\n              error={error}\n              parsedField={parsedField}\n              label={label}\n              inputProps={{\n                ...fieldConfig?.inputProps,\n                \"aria-invalid\": !!error || undefined,\n              }}\n            />\n          </FieldWrapper>\n        );\n      }}\n    </AppField>\n  );\n};\n"],"mappings":";;;;;;;;;AAUA,MAAa,iBAGP,EAAE,MAAM,kBAAkB;CAC9B,MAAM,EAAE,gBAAgB,iBAAiB,YAAY;CACrD,MAAM,OAAO,eAAe;CAE5B,MAAM,UAAU,KAAK,KAAK,GAAG;CAC7B,MAAM,WAAW,mBAAmB,IAAI;CACxC,MAAM,cAAc,YAAY;CAChC,MAAM,QAAQ,SAAS,WAAW;CAClC,MAAM,eAAe,aAAa,gBAAgB,aAAa;CAE/D,IAAI;CACJ,IAAI,YAAY,SAAS,SACvB,iBAAiB;MACZ,IAAI,YAAY,SAAS,UAC9B,iBAAiB;MACZ,IAAI,YAAY,QAAQ,gBAC7B,iBAAiB,eAAe,YAAY;MACvC,IAAI,cAAc,gBACvB,iBAAiB,eAAe;MAEhC,uBACE,oBAAC,aAAa,cAAd,EACE,OAAO,+DAA+D,YAAY,KAAK,kBACxF,CAAA;CAIL,MAAM,WAAW,KAAK;CACtB,OACE,oBAAC,UAAD;EACE,MAAM;EACN,MAAM,YAAY,SAAS,UAAU,UAAU,KAAA;aAE7C,aAAkB;GAClB,MAAM,QAAQ,gBAAgB,QAAQ;GAEtC,OACE,oBAAC,cAAD;IACS;IACA;IACP,IAAI;IACS;cAEb,oBAAC,gBAAD;KAEQ;KACN,IAAI;KACG;KACM;KACN;KACP,YAAY;MACV,GAAG,aAAa;MAChB,gBAAgB,CAAC,CAAC,SAAS,KAAA;KAC7B;IACD,GAVM,GAAG,QAAQ,OAUjB;GACW,CAAA;EAElB;CACQ,CAAA;AAEd"}