{"version":3,"sources":["../src/hooks/useCep.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\n\nexport interface CepData {\n  cep: string;\n  logradouro: string;\n  complemento: string;\n  bairro: string;\n  localidade: string;\n  uf: string;\n  erro?: boolean;\n}\n\ninterface UseCepResult {\n  loading: boolean;\n  error: string | null;\n  fetchCep: (cep: string) => Promise<CepData | null>;\n}\n\n/**\n * Hook para buscar dados de endereço pela API ViaCEP\n *\n * @example\n * ```tsx\n * const { loading, error, fetchCep } = useCep();\n *\n * const handleCepChange = async (cep: string) => {\n *   const data = await fetchCep(cep);\n *   if (data) {\n *     setStreet(data.logradouro);\n *     setCity(data.localidade);\n *     setState(data.uf);\n *     setNeighborhood(data.bairro);\n *   }\n * };\n * ```\n */\nexport function useCep(): UseCepResult {\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState<string | null>(null);\n\n  const fetchCep = useCallback(async (cep: string): Promise<CepData | null> => {\n    // Remove caracteres não numéricos\n    const cleanCep = cep.replace(/\\D/g, '');\n\n    // Valida se o CEP tem 8 dígitos\n    if (cleanCep.length !== 8) {\n      setError('CEP deve conter 8 dígitos');\n      return null;\n    }\n\n    setLoading(true);\n    setError(null);\n\n    try {\n      const response = await fetch(\n        `https://viacep.com.br/ws/${cleanCep}/json/`\n      );\n\n      if (!response.ok) {\n        throw new Error('Erro ao buscar CEP');\n      }\n\n      const data: CepData = await response.json();\n\n      if (data.erro) {\n        setError('CEP não encontrado');\n        return null;\n      }\n\n      return data;\n    } catch (err) {\n      // Log error details for debugging\n      console.error('Erro ao buscar CEP:', err);\n\n      // Always show user-friendly Portuguese message\n      setError('Erro ao buscar CEP');\n      return null;\n    } finally {\n      setLoading(false);\n    }\n  }, []);\n\n  return { loading, error, fetchCep };\n}\n"],"mappings":";AAAA,SAAS,UAAU,mBAAmB;AAoC/B,SAAS,SAAuB;AACrC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,QAAM,WAAW,YAAY,OAAO,QAAyC;AAE3E,UAAM,WAAW,IAAI,QAAQ,OAAO,EAAE;AAGtC,QAAI,SAAS,WAAW,GAAG;AACzB,eAAS,8BAA2B;AACpC,aAAO;AAAA,IACT;AAEA,eAAW,IAAI;AACf,aAAS,IAAI;AAEb,QAAI;AACF,YAAM,WAAW,MAAM;AAAA,QACrB,4BAA4B,QAAQ;AAAA,MACtC;AAEA,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,MAAM,oBAAoB;AAAA,MACtC;AAEA,YAAM,OAAgB,MAAM,SAAS,KAAK;AAE1C,UAAI,KAAK,MAAM;AACb,iBAAS,uBAAoB;AAC7B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,SAAS,KAAK;AAEZ,cAAQ,MAAM,uBAAuB,GAAG;AAGxC,eAAS,oBAAoB;AAC7B,aAAO;AAAA,IACT,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,SAAS,OAAO,SAAS;AACpC;","names":[]}