UNPKG

digipin-reactjs

Version:

React hooks and components for integrating DIGIPIN (Indian Postal Digital PIN) geocoding into React apps. Includes hooks, prebuilt UI, and helpers for seamless integration.

1 lines 16.2 kB
{"version":3,"file":"index.mjs","sources":["../src/hooks/useDigiPin.ts","../src/components/DigiPinInput.tsx","../src/hooks/useLatLonToDigiPin.ts","../src/hooks/useDigiPinToLatLon.ts","../src/components/LatLonToDigiPinInput.tsx","../src/components/DigiPinToLatLonInput.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { getDigiPin, getLatLngFromDigiPin } from 'digipinjs';\n\nexport type SearchResult = string | { latitude: number; longitude: number } | null;\n\nexport function useDigiPin() {\n const [input, setInput] = useState('');\n const [result, setResult] = useState<SearchResult>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const search = useCallback(async (query?: string) => {\n setLoading(true);\n setError(null);\n try {\n let res;\n // Use provided query or fall back to state input\n const textToSearch = query !== undefined ? query : input;\n const trimmed = textToSearch.trim();\n\n // If input looks like lat,lon, encode to DIGIPIN\n if (/^-?\\d+(\\.\\d+)?\\s*,\\s*-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n const [latStr, lonStr] = trimmed.split(',');\n const lat = Number(latStr.trim());\n const lon = Number(lonStr.trim());\n if (isNaN(lat) || isNaN(lon)) {\n throw new Error('Invalid latitude or longitude');\n }\n if (lat < -90 || lat > 90) {\n throw new Error('Latitude must be between -90 and 90');\n }\n if (lon < -180 || lon > 180) {\n throw new Error('Longitude must be between -180 and 180');\n }\n res = getDigiPin(lat, lon);\n } else {\n // Otherwise, decode as DIGIPIN\n if (!trimmed) {\n throw new Error('Input cannot be empty');\n }\n res = getLatLngFromDigiPin(trimmed);\n }\n setResult(res);\n } catch (e: unknown) {\n let errorMessage = 'Unknown error';\n if (e instanceof Error) {\n errorMessage = e.message;\n } else if (typeof e === 'string') {\n errorMessage = e;\n }\n setError(errorMessage);\n setResult(null);\n } finally {\n setLoading(false);\n }\n }, [input]);\n\n return { input, setInput, result, loading, error, search };\n}\n","import React from 'react';\nimport { useDigiPin, SearchResult } from '../hooks/useDigiPin';\n\nexport interface DigiPinInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n onResult?: (result: SearchResult) => void;\n onSearchError?: (error: string) => void;\n}\n\nexport const DigiPinInput: React.FC<DigiPinInputProps> = ({ onResult, onSearchError, ...props }) => {\n const { input, setInput, result, loading, error, search } = useDigiPin();\n\n React.useEffect(() => {\n if (result && onResult) {\n onResult(result);\n }\n }, [result, onResult]);\n\n React.useEffect(() => {\n if (error && onSearchError) {\n onSearchError(error);\n }\n }, [error, onSearchError]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n search(input);\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <input\n type=\"text\"\n value={input}\n onChange={e => setInput(e.target.value)}\n placeholder=\"Enter DigiPin query\"\n {...props}\n />\n <button type=\"submit\" disabled={loading}>\n {loading ? 'Searching...' : 'Search'}\n </button>\n {error && <div style={{ color: 'red' }}>{error}</div>}\n {result && (\n <pre>{JSON.stringify(result, null, 2)}</pre>\n )}\n </form>\n );\n}; ","import { useCallback, useState } from 'react';\nimport { getDigiPin } from 'digipinjs';\n\nexport function useLatLonToDigiPin() {\n const [lat, setLat] = useState('');\n const [lon, setLon] = useState('');\n const [digipinResult, setDigiPinResult] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const convert = useCallback(() => {\n setLoading(true);\n setError(null);\n try {\n const latNum = Number(lat.trim());\n const lonNum = Number(lon.trim());\n if (isNaN(latNum) || isNaN(lonNum)) {\n throw new Error('Invalid latitude or longitude');\n }\n if (latNum < -90 || latNum > 90) {\n throw new Error('Latitude must be between -90 and 90');\n }\n if (lonNum < -180 || lonNum > 180) {\n throw new Error('Longitude must be between -180 and 180');\n }\n const result = getDigiPin(latNum, lonNum);\n setDigiPinResult(result);\n } catch (e: unknown) {\n let errorMessage = 'Unknown error';\n if (e instanceof Error) {\n errorMessage = e.message;\n } else if (typeof e === 'string') {\n errorMessage = e;\n }\n setError(errorMessage);\n setDigiPinResult(null);\n } finally {\n setLoading(false);\n }\n }, [lat, lon]);\n\n return { lat, setLat, lon, setLon, digipinResult, loading, error, convert };\n}\n","import { useCallback, useState } from 'react';\nimport { getLatLngFromDigiPin } from 'digipinjs';\n\nexport function useDigiPinToLatLon() {\n const [digipinInput, setDigiPinInput] = useState('');\n const [latLonResult, setLatLonResult] = useState<{ lat: number; lon: number } | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const convert = useCallback(() => {\n setLoading(true);\n setError(null);\n try {\n const input = digipinInput.trim();\n if (!input) {\n throw new Error('DIGIPIN cannot be empty');\n }\n const result = getLatLngFromDigiPin(input);\n setLatLonResult({ lat: result.latitude, lon: result.longitude });\n } catch (e: unknown) {\n let errorMessage = 'Unknown error';\n if (e instanceof Error) {\n errorMessage = e.message;\n } else if (typeof e === 'string') {\n errorMessage = e;\n }\n setError(errorMessage);\n setLatLonResult(null);\n } finally {\n setLoading(false);\n }\n }, [digipinInput]);\n\n return { digipinInput, setDigiPinInput, latLonResult, loading, error, convert };\n}\n","import React from 'react';\nimport { useLatLonToDigiPin } from '../hooks/useLatLonToDigiPin';\n\nexport const LatLonToDigiPinInput: React.FC = () => {\n const { lat, setLat, lon, setLon, digipinResult, loading, error, convert } = useLatLonToDigiPin();\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n convert();\n };\n\n return (\n <form onSubmit={handleSubmit} style={{ marginBottom: 24 }}>\n <div>\n <input\n type=\"text\"\n value={lat}\n onChange={e => setLat(e.target.value)}\n placeholder=\"Latitude\"\n style={{ marginRight: 8 }}\n />\n <input\n type=\"text\"\n value={lon}\n onChange={e => setLon(e.target.value)}\n placeholder=\"Longitude\"\n style={{ marginRight: 8 }}\n />\n <button type=\"submit\" disabled={loading}>\n {loading ? 'Converting...' : 'Convert to DIGIPIN'}\n </button>\n </div>\n {error && <div style={{ color: 'red' }}>{error}</div>}\n {digipinResult && (\n <div style={{ marginTop: 8 }}>\n <strong>DIGIPIN:</strong> {digipinResult}\n </div>\n )}\n </form>\n );\n}; ","import React from 'react';\nimport { useDigiPinToLatLon } from '../hooks/useDigiPinToLatLon';\n\nexport const DigiPinToLatLonInput: React.FC = () => {\n const { digipinInput, setDigiPinInput, latLonResult, loading, error, convert } = useDigiPinToLatLon();\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n convert();\n };\n\n return (\n <form onSubmit={handleSubmit} style={{ marginBottom: 24 }}>\n <div>\n <input\n type=\"text\"\n value={digipinInput}\n onChange={e => setDigiPinInput(e.target.value)}\n placeholder=\"DIGIPIN\"\n style={{ marginRight: 8 }}\n />\n <button type=\"submit\" disabled={loading}>\n {loading ? 'Converting...' : 'Convert to Lat/Lon'}\n </button>\n </div>\n {error && <div style={{ color: 'red' }}>{error}</div>}\n {latLonResult && (\n <div style={{ marginTop: 8 }}>\n <strong>Latitude:</strong> {latLonResult.lat} <br />\n <strong>Longitude:</strong> {latLonResult.lon}\n </div>\n )}\n </form>\n );\n}; "],"names":["_jsxs","_jsx"],"mappings":"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"}