{"version":3,"sources":["../src/textarea/index.native.tsx"],"names":["spacing","forwardRef","Textarea","useTheme","useState","radius","jsx","TextInput"],"mappings":";;;;;;;;;AAYA,IAAM,OAAA,GAAsG;AAAA,EAC1G,EAAA,EAAI,EAAE,QAAA,EAAU,EAAA,EAAI,IAAA,EAAMA,YAAA,CAAQ,CAAC,CAAA,EAAG,IAAA,EAAMA,YAAA,CAAQ,CAAC,CAAA,EAAG,YAAY,EAAA,EAAG;AAAA,EACvE,EAAA,EAAI,EAAE,QAAA,EAAU,EAAA,EAAI,IAAA,EAAMA,YAAA,CAAQ,CAAC,CAAA,EAAG,IAAA,EAAMA,YAAA,CAAQ,CAAC,CAAA,EAAG,YAAY,EAAA,EAAG;AAAA,EACvE,EAAA,EAAI,EAAE,QAAA,EAAU,EAAA,EAAI,IAAA,EAAMA,YAAA,CAAQ,CAAC,CAAA,EAAG,IAAA,EAAMA,YAAA,CAAQ,CAAC,CAAA,EAAG,YAAY,EAAA;AACtE,CAAA;AAaO,IAAM,WAAWC,gBAAA,CAAqC,SAASC,UACpE,EAAE,KAAA,EAAO,UAAU,IAAA,GAAO,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA,EAAG,KAAA,EAAO,cAAc,GAAG,IAAA,IACrF,GAAA,EACA;AACA,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIC,eAAA,EAAS;AAC5B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,cAAA,CAAiB,gBAAgB,EAAE,CAAA;AACnE,EAAA,MAAM,UAAU,KAAA,IAAS,QAAA;AACzB,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAI,CAAA;AAEzB,EAAA,MAAM,QAAA,GAAsB;AAAA,IAC1B,SAAA,EAAW,IAAA,GAAO,IAAA,CAAK,UAAA,GAAa,KAAK,IAAA,GAAO,CAAA;AAAA,IAChD,mBAAmB,IAAA,CAAK,IAAA;AAAA,IACxB,iBAAiB,IAAA,CAAK,IAAA;AAAA,IACtB,iBAAiB,MAAA,CAAO,WAAA;AAAA,IACxB,WAAA,EAAa,CAAA;AAAA,IACb,WAAA,EAAa,OAAA,GAAU,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,MAAA;AAAA,IACnD,cAAcC,WAAA,CAAO,EAAA;AAAA,IACrB,OAAO,MAAA,CAAO,IAAA;AAAA,IACd,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,OAAA,EAAS,WAAW,IAAA,GAAO,CAAA;AAAA,IAC3B,iBAAA,EAAmB,KAAA;AAAA,IACnB,GAAG;AAAA,GACL;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACT,UAAU,CAAC,QAAA;AAAA,MACX,KAAA,EAAO,OAAA;AAAA,MACP,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,QAAA,IAAI,KAAA,KAAU,MAAA,EAAW,WAAA,CAAY,CAAC,CAAA;AACtC,QAAA,QAAA,GAAW,CAAC,CAAA;AAAA,MACd,CAAA;AAAA,MACA,sBAAsB,MAAA,CAAO,SAAA;AAAA,MAC7B,KAAA,EAAO,QAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC","file":"textarea.native.cjs","sourcesContent":["/**\n * Textarea (native). Multi-line TextInput matching the web shape.\n * RN grows multiline inputs with content on its own, so there's no\n * scrollHeight dance -- minHeight from rows sets the floor.\n */\nimport { forwardRef, useState } from \"react\";\nimport { TextInput, type TextInputProps, type TextStyle } from \"react-native\";\nimport { useTheme } from \"@plyxui/styles\";\nimport { radius, spacing } from \"@plyxui/core\";\n\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\n\nconst sizeMap: Record<TextareaSize, { fontSize: number; padX: number; padY: number; lineHeight: number }> = {\n  sm: { fontSize: 13, padX: spacing[2], padY: spacing[2], lineHeight: 18 },\n  md: { fontSize: 14, padX: spacing[3], padY: spacing[3], lineHeight: 21 },\n  lg: { fontSize: 16, padX: spacing[4], padY: spacing[3], lineHeight: 24 },\n};\n\nexport interface TextareaProps extends Omit<TextInputProps, \"style\" | \"onChange\" | \"multiline\"> {\n  value?: string;\n  onChange?: (value: string) => void;\n  size?: TextareaSize;\n  invalid?: boolean;\n  disabled?: boolean;\n  /** Visible rows at rest (sets minHeight). Default 3. */\n  rows?: number;\n  style?: TextStyle;\n}\n\nexport const Textarea = forwardRef<TextInput, TextareaProps>(function Textarea(\n  { value, onChange, size = \"md\", invalid, disabled, rows = 3, style, defaultValue, ...rest },\n  ref,\n) {\n  const { colors } = useTheme();\n  const [internal, setInternal] = useState<string>(defaultValue ?? \"\");\n  const current = value ?? internal;\n  const dims = sizeMap[size];\n\n  const boxStyle: TextStyle = {\n    minHeight: rows * dims.lineHeight + dims.padY * 2,\n    paddingHorizontal: dims.padX,\n    paddingVertical: dims.padY,\n    backgroundColor: colors.surfaceFill,\n    borderWidth: 1,\n    borderColor: invalid ? colors.statusError : colors.stroke,\n    borderRadius: radius.md,\n    color: colors.text,\n    fontSize: dims.fontSize,\n    lineHeight: dims.lineHeight,\n    opacity: disabled ? 0.55 : 1,\n    textAlignVertical: \"top\",\n    ...style,\n  };\n\n  return (\n    <TextInput\n      ref={ref}\n      multiline\n      editable={!disabled}\n      value={current}\n      onChangeText={(t) => {\n        if (value === undefined) setInternal(t);\n        onChange?.(t);\n      }}\n      placeholderTextColor={colors.textMuted}\n      style={boxStyle}\n      {...rest}\n    />\n  );\n});\n"]}