{"version":3,"file":"fieldControls.cjs","sources":["../../../../../src/components/ui/field/fieldControls.tsx"],"sourcesContent":["import type React from 'react';\nimport { ComponentKeys } from \"../props\";\nimport { pickFirstTruthyKeyByCategory } from \"../../utils/componentUtils\";\nimport { Input } from \"../input/Input\";\nimport { Textarea } from \"../textarea/Textarea\";\nimport { Select } from \"../select/Select\";\nimport { Checkbox } from \"../checkbox/Checkbox\";\nimport { Switch } from \"../switch/Switch\";\nimport { RadioGroup } from \"../radio/RadioGroup\";\n\nexport type ControlKey = typeof ComponentKeys.control[number];\n\nexport type FieldControlDescriptor = {\n  Component: React.ElementType;\n  layout: 'stacked' | 'inline';\n  inputType?: string;\n};\n\nexport const FIELD_CONTROLS: Record<ControlKey, FieldControlDescriptor> = {\n  textInput: { Component: Input, layout: 'stacked', inputType: 'text' },\n  textarea: { Component: Textarea, layout: 'stacked' },\n  select: { Component: Select, layout: 'stacked' },\n  radiogroup: { Component: RadioGroup, layout: 'stacked' },\n  checkbox: { Component: Checkbox, layout: 'inline' },\n  switch: { Component: Switch, layout: 'inline' },\n};\n\n// control kinds spelled as the string prop takes them; everything else is a native input type\nconst TYPE_TO_KEY: Record<string, ControlKey> = {\n  select: 'select',\n  textarea: 'textarea',\n  checkbox: 'checkbox',\n  switch: 'switch',\n  radiogroup: 'radiogroup',\n};\n\nexport function resolveControl(\n  props: Record<string, unknown>,\n  defaults: Record<string, unknown>\n): { key: ControlKey; descriptor: FieldControlDescriptor; inputType?: string } | undefined {\n  const type = props.type as string | undefined;\n  if (type) {\n    const key = TYPE_TO_KEY[type] ?? 'textInput';\n    const descriptor = FIELD_CONTROLS[key];\n    return { key, descriptor, inputType: key === 'textInput' ? type : undefined };\n  }\n\n  const key = pickFirstTruthyKeyByCategory(props, defaults, 'control');\n  if (!key) return undefined;\n  const descriptor = FIELD_CONTROLS[key];\n  return { key, descriptor, inputType: descriptor.inputType };\n}\n"],"names":["Input","Textarea","Select","RadioGroup","Checkbox","Switch","key","descriptor","pickFirstTruthyKeyByCategory"],"mappings":";;;;;;;;;;AAkBO,MAAM,cAAA,GAA6D;AAAA,EACxE,WAAW,EAAE,SAAA,EAAWA,aAAO,MAAA,EAAQ,SAAA,EAAW,WAAW,MAAA,EAAO;AAAA,EACpE,QAAA,EAAU,EAAE,SAAA,EAAWC,iBAAA,EAAU,QAAQ,SAAA,EAAU;AAAA,EACnD,MAAA,EAAQ,EAAE,SAAA,EAAWC,aAAA,EAAQ,QAAQ,SAAA,EAAU;AAAA,EAC/C,UAAA,EAAY,EAAE,SAAA,EAAWC,qBAAA,EAAY,QAAQ,SAAA,EAAU;AAAA,EACvD,QAAA,EAAU,EAAE,SAAA,EAAWC,iBAAA,EAAU,QAAQ,QAAA,EAAS;AAAA,EAClD,MAAA,EAAQ,EAAE,SAAA,EAAWC,aAAA,EAAQ,QAAQ,QAAA;AACvC;AAGA,MAAM,WAAA,GAA0C;AAAA,EAC9C,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY;AACd,CAAA;AAEO,SAAS,cAAA,CACd,OACA,QAAA,EACyF;AACzF,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,MAAMC,IAAAA,GAAM,WAAA,CAAY,IAAI,CAAA,IAAK,WAAA;AACjC,IAAA,MAAMC,WAAAA,GAAa,eAAeD,IAAG,CAAA;AACrC,IAAA,OAAO,EAAE,KAAAA,IAAAA,EAAK,UAAA,EAAAC,aAAY,SAAA,EAAWD,IAAAA,KAAQ,WAAA,GAAc,IAAA,GAAO,MAAA,EAAU;AAAA,EAC9E;AAEA,EAAA,MAAM,GAAA,GAAME,2CAAA,CAA6B,KAAA,EAAO,QAAA,EAAU,SAAS,CAAA;AACnE,EAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AACjB,EAAA,MAAM,UAAA,GAAa,eAAe,GAAG,CAAA;AACrC,EAAA,OAAO,EAAE,GAAA,EAAK,UAAA,EAAY,SAAA,EAAW,WAAW,SAAA,EAAU;AAC5D;;;;;"}