{"version":3,"sources":["utils/commonFunctions.js","serviceWorker.js","i18n/index.js","index.js","constants.js"],"names":["locale","numberFormatter","Intl","NumberFormat","maximumFractionDigits","isDevelopmentOrTest","getIndiaDate","utcToZonedTime","Date","getIndiaDateISO","formatISO","representation","getIndiaDateYesterdayISO","subDays","formatLastUpdated","unformattedDate","then","localePackage","LOCALE_SHORTHANDS","i18n","language","window","localStorage","i18nextLng","formatDistance","parseIndiaDate","isoDate","match","ISO_DATE_REGEX","INDIA_ISO_SUFFIX","formatDate","formatString","date","format","formatNumber","value","option","statistic","NAN_STATISTICS","includes","NaN","isNaN","number","Math","abs","floor","capitalize","s","charAt","toUpperCase","slice","toTitleCase","str","replace","txt","substr","toLowerCase","getStatistic","data","type","count","perMillion","movingAverage","statisticDefinition","STATISTIC_CONFIGS","definition","normalizeByKey","PER_MILLION_OPTIONS","key","normalizeBy","multiplyFactor","meta","population","tested","confirmed","deceased","recovered","other","isFinite","getTableStatistic","args","lastUpdatedTT","expired","differenceInDays","TESTED_LOOKBACK_DAYS","tableConfig","total","delta","fetcher","url","fetch","response","json","retry","fn","retriesLeft","interval","Promise","resolve","reject","catch","error","setTimeout","isLocalhost","Boolean","location","hostname","registerValidSW","swUrl","config","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","onUpdate","onSuccess","use","Backend","LanguageDetector","initReactI18next","init","debug","keySeparator","returnEmptyString","fallbackLng","load","backend","loadPath","API_DOMAIN","addPath","saveMissing","interpolation","escapeValue","App","lazy","rootElement","document","getElementById","firebase","initializeApp","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","main","render","fallback","basename","requestIdleCallback","IntersectionObserver","src","done","js","createElement","onload","onerror","Error","head","appendChild","loadScript","URL","process","href","origin","addEventListener","headers","contentType","get","status","indexOf","ready","unregister","reload","checkValidServiceWorker","DATA_API_ROOT","english","hindi","telugu","kannada","gujarati","marathi","tamil","bengali","punjabi","malayalam","odiya","displayName","color","showDelta","active","vaccinated","tpr","cfr","recoveryRatio","activeRatio","nanKeys","Object","keys","filter","PRIMARY_STATISTICS","BRUSH_STATISTICS","TABLE_STATISTICS","TABLE_STATISTICS_EXPANDED","TIMESERIES_STATISTICS","UPDATES_COUNT","DISTRICT_TABLE_COUNT","D3_TRANSITION_DURATION","MINIGRAPH_LOOKBACK_DAYS","UNASSIGNED_STATE_CODE","UNKNOWN_DISTRICT_KEY","GOSPEL_DATE","SPRING_CONFIG_NUMBERS","clamp","precision","TIMESERIES_CHART_TYPES","TIMESERIES_LOOKBACK_DAYS","MAP_VIZS","CHOROPLETH","BUBBLES","MAP_VIEWS","STATES","DISTRICTS","MAP_TYPES","COUNTRY","STATE","MAPS_DIR","MAP_META","AP","geoDataFile","mapType","AR","AS","BR","CT","GA","GJ","HR","HP","JK","JH","KA","KL","MP","MH","MN","ML","MZ","NL","OR","PB","RJ","SK","TN","TG","TR","UT","UP","WB","AN","CH","DN","DL","LA","LD","PY","TT","MAP_LEGEND_HEIGHT","STATE_NAMES","stateCodes","stateCodesMap","map","index","push","code","name","STATE_CODES","STATE_CODES_ARRAY"],"mappings":"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","file":"static/js/main.24c60b1d.chunk.js","sourcesContent":["import {\n INDIA_ISO_SUFFIX,\n ISO_DATE_REGEX,\n LOCALE_SHORTHANDS,\n NAN_STATISTICS,\n PER_MILLION_OPTIONS,\n STATISTIC_CONFIGS,\n TESTED_LOOKBACK_DAYS,\n} from '../constants';\n\nimport {\n differenceInDays,\n format,\n formatDistance,\n formatISO,\n subDays,\n} from 'date-fns';\nimport {utcToZonedTime} from 'date-fns-tz';\nimport i18n from 'i18next';\n\nlet locale = null;\nconst numberFormatter = new Intl.NumberFormat('en-IN', {\n maximumFractionDigits: 1,\n});\n\nconst getLocale = () => {\n import('date-fns/locale/').then((localePackage) => {\n locale =\n localePackage[\n LOCALE_SHORTHANDS[i18n.language || window.localStorage.i18nextLng]\n ];\n });\n};\n\nexport const isDevelopmentOrTest = () => {\n if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test')\n return true;\n return false;\n};\n\nexport const getIndiaDate = () => {\n return utcToZonedTime(new Date(), 'Asia/Kolkata');\n};\n\nexport const getIndiaDateISO = () => {\n return formatISO(getIndiaDate(), {representation: 'date'});\n};\n\nexport const getIndiaDateYesterday = () => {\n return subDays(getIndiaDate(), 1);\n};\n\nexport const getIndiaDateYesterdayISO = () => {\n return formatISO(getIndiaDateYesterday(), {representation: 'date'});\n};\n\nexport const formatLastUpdated = (unformattedDate) => {\n getLocale();\n return formatDistance(new Date(unformattedDate), new Date(), {\n locale: locale,\n });\n};\n\nexport const parseIndiaDate = (isoDate) => {\n if (!isoDate) return getIndiaDate();\n if (isoDate.match(ISO_DATE_REGEX)) isoDate += INDIA_ISO_SUFFIX;\n return utcToZonedTime(new Date(isoDate), 'Asia/Kolkata');\n};\n\nexport const formatDate = (unformattedDate, formatString) => {\n if (!unformattedDate) return '';\n if (\n typeof unformattedDate === 'string' &&\n unformattedDate.match(ISO_DATE_REGEX)\n )\n unformattedDate += INDIA_ISO_SUFFIX;\n const date = utcToZonedTime(new Date(unformattedDate), 'Asia/Kolkata');\n return format(date, formatString, {\n locale: locale,\n });\n};\n\nexport const abbreviateNumber = (number) => {\n if (Math.abs(number) < 1e3) return numberFormatter.format(number);\n else if (Math.abs(number) >= 1e3 && Math.abs(number) < 1e5)\n return numberFormatter.format(number / 1e3) + 'K';\n else if (Math.abs(number) >= 1e5 && Math.abs(number) < 1e7)\n return numberFormatter.format(number / 1e5) + 'L';\n else if (Math.abs(number) >= 1e7 && Math.abs(number) < 1e10)\n return numberFormatter.format(number / 1e7) + 'Cr';\n else if (Math.abs(number) >= 1e10 && Math.abs(number) < 1e14)\n return numberFormatter.format(number / 1e10) + 'K Cr';\n else if (Math.abs(number) >= 1e14)\n return numberFormatter.format(number / 1e14) + 'L Cr';\n};\n\nexport const formatNumber = (value, option, statistic) => {\n if (statistic && NAN_STATISTICS.includes(statistic) && value === 0)\n value = NaN;\n\n if (isNaN(value)) return '-';\n else if (option === 'short') {\n return abbreviateNumber(value);\n } else if (option === 'int') {\n value = Math.floor(value);\n }\n return numberFormatter.format(value) + (option === '%' ? '%' : '');\n};\n\nexport const capitalize = (s) => {\n if (typeof s !== 'string') return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n};\n\nexport const toTitleCase = (str) => {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n};\n\nexport const getStatistic = (\n data,\n type,\n statistic,\n {perMillion = false, movingAverage = false} = {}\n) => {\n // TODO: Replace delta with daily to remove ambiguity\n // Or add another type for daily/delta\n const statisticDefinition = STATISTIC_CONFIGS[statistic]?.definition;\n\n const {key, normalizeByKey: normalizeBy} = {\n ...statisticDefinition,\n ...(perMillion &&\n !statisticDefinition?.normalizeByKey &&\n PER_MILLION_OPTIONS),\n };\n\n let multiplyFactor = statisticDefinition?.multiplyFactor || 1;\n multiplyFactor *=\n (!statisticDefinition?.normalizeByKey &&\n perMillion &&\n PER_MILLION_OPTIONS?.multiplyFactor) ||\n 1;\n\n if (type === 'delta' && movingAverage) {\n type = 'delta7';\n multiplyFactor *= (!statisticDefinition?.normalizeByKey && 1 / 7) || 1;\n }\n\n let count;\n if (key === 'population') {\n count = type === 'total' ? data?.meta?.population : 0;\n } else if (key === 'tested') {\n count = data?.[type]?.tested;\n } else if (key === 'active') {\n const confirmed = data?.[type]?.confirmed || 0;\n const deceased = data?.[type]?.deceased || 0;\n const recovered = data?.[type]?.recovered || 0;\n const other = data?.[type]?.other || 0;\n count = confirmed - deceased - recovered - other;\n } else {\n count = data?.[type]?.[key];\n }\n\n if (normalizeBy) {\n count /= getStatistic(\n data,\n normalizeBy === 'population' ? 'total' : type,\n normalizeBy\n );\n }\n\n return multiplyFactor * ((isFinite(count) && count) || 0);\n};\n\nexport const getTableStatistic = (data, statistic, args, lastUpdatedTT) => {\n const statisticDefinition = STATISTIC_CONFIGS[statistic]?.definition;\n\n const expired =\n (statisticDefinition?.key === 'tested' ||\n statisticDefinition?.normalizeByKey === 'tested') &&\n differenceInDays(\n lastUpdatedTT,\n parseIndiaDate(data.meta?.tested?.['last_updated'])\n ) > TESTED_LOOKBACK_DAYS;\n\n const type = STATISTIC_CONFIGS[statistic]?.tableConfig?.type || 'total';\n\n const total = !expired ? getStatistic(data, type, statistic, args) : 0;\n const delta =\n type === 'total' && !expired\n ? getStatistic(data, 'delta', statistic, args)\n : 0;\n return {total, delta};\n};\n\nexport const fetcher = (url) => {\n return fetch(url).then((response) => {\n return response.json();\n });\n};\n\nexport function retry(fn, retriesLeft = 5, interval = 1000) {\n return new Promise((resolve, reject) => {\n fn()\n .then(resolve)\n .catch((error) => {\n setTimeout(() => {\n if (retriesLeft === 1) {\n // reject('maximum retries exceeded');\n reject(error);\n return;\n }\n\n // Passing on \"reject\" is the important part\n retry(fn, retriesLeft - 1, interval).then(resolve, reject);\n }, interval);\n });\n });\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () =>\n setTimeout(() => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n }, 3000)\n );\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: {'Service-Worker': 'script'},\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import {API_DOMAIN} from '../constants';\nimport {isDevelopmentOrTest} from '../utils/commonFunctions';\n\nimport i18n from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport Backend from 'i18next-http-backend';\nimport {initReactI18next} from 'react-i18next';\n\nconst DEBUG = false;\n\ni18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n debug: isDevelopmentOrTest() && DEBUG,\n keySeparator: false,\n returnEmptyString: false,\n fallbackLng: 'english',\n load: 'languageOnly',\n backend: {\n loadPath: `${API_DOMAIN}/locales/locale_{{lng}}.json`,\n addPath: 'http://localhost:9999/',\n },\n saveMissing: isDevelopmentOrTest() && DEBUG,\n interpolation: {\n escapeValue: false,\n },\n });\n\nexport default i18n;\n","// import './wdyr';\nimport * as serviceWorker from './serviceWorker';\nimport './i18n';\nimport {retry} from './utils/commonFunctions';\n\nimport firebase from 'firebase/app';\nimport {Suspense, lazy, StrictMode} from 'react';\nimport {render} from 'react-dom';\nimport {BrowserRouter as Router} from 'react-router-dom';\nimport 'firebase/analytics';\n\nconst App = lazy(() => retry(() => import('./App')));\nconst rootElement = document.getElementById('root');\n\nconst firebaseConfig = {\n apiKey: 'AIzaSyD-sPsY0Y5jZBGhS9uuLqOWrNVLWvHBPjg',\n authDomain: 'neural-geode-744.firebaseapp.com',\n databaseURL: 'https://neural-geode-744.firebaseio.com',\n projectId: 'neural-geode-744',\n storageBucket: 'neural-geode-744.appspot.com',\n messagingSenderId: '574497742376',\n appId: '1:574497742376:web:72264ce0294e3af83fdf1d',\n measurementId: 'G-WG8EGFRMNR',\n};\n// initialize firebase\nfirebase.initializeApp(firebaseConfig);\n\nconst main = () =>\n render(\n }>\n \n \n \n \n \n ,\n rootElement\n );\n\nconst browserSupportsAllFeatures = () => {\n return window.requestIdleCallback && window.IntersectionObserver;\n};\n\nconst loadScript = (src, done) => {\n const js = document.createElement('script');\n js.src = src;\n js.onload = function () {\n done();\n };\n js.onerror = function () {\n done(new Error('Failed to load script ' + src));\n };\n document.head.appendChild(js);\n};\n\nif (browserSupportsAllFeatures()) {\n main();\n} else {\n loadScript(\n 'https://polyfill.io/v3/polyfill.min.js?version=3.52.1&features=requestIdleCallback%2CIntersectionObserver',\n main\n );\n}\n\nserviceWorker.register();\n","// export const API_DOMAIN = 'http://127.0.0.1:8080';\nexport const API_DOMAIN = 'https://api.covid19india.org';\nexport const DATA_API_ROOT = `${API_DOMAIN}/v4/min`;\n\nexport const LOCALE_SHORTHANDS = {\n english: 'en-US',\n hindi: 'hi',\n telugu: 'te',\n kannada: 'en-US',\n gujarati: 'gu',\n marathi: 'en-US',\n tamil: 'ta',\n bengali: 'bn',\n punjabi: 'en-US',\n malayalam: 'en-US',\n odiya: 'en-US',\n};\n\nexport const STATISTIC_CONFIGS = {\n confirmed: {\n displayName: 'confirmed',\n color: '#ff073a',\n format: 'int',\n definition: {key: 'confirmed'},\n showDelta: true,\n },\n active: {\n displayName: 'active',\n color: '#007bff',\n format: 'int',\n definition: {key: 'active'},\n },\n recovered: {\n displayName: 'recovered',\n color: '#28a745',\n format: 'int',\n definition: {key: 'recovered'},\n showDelta: true,\n },\n deceased: {\n displayName: 'deceased',\n color: '#6c757d',\n format: 'int',\n definition: {key: 'deceased'},\n showDelta: true,\n },\n other: {\n displayName: 'other',\n format: 'int',\n definition: {key: 'other'},\n showDelta: true,\n },\n tested: {\n displayName: 'tested',\n color: '#4b1eaa',\n format: 'short',\n definition: {key: 'tested'},\n showDelta: true,\n },\n vaccinated: {\n displayName: 'vaccine doses administered',\n color: '#fb5581',\n format: 'short',\n definition: {key: 'vaccinated'},\n showDelta: true,\n },\n tpr: {\n displayName: 'test positivity ratio',\n format: '%',\n definition: {\n key: 'confirmed',\n normalizeByKey: 'tested',\n multiplyFactor: 100,\n },\n // tableConfig: {\n // type: 'delta7',\n // displayName: 'test positivity ratio (last 7 days)',\n // },\n color: '#fd7e14',\n },\n cfr: {\n displayName: 'case fatality ratio',\n format: '%',\n definition: {\n key: 'deceased',\n normalizeByKey: 'confirmed',\n multiplyFactor: 100,\n },\n },\n recoveryRatio: {\n displayName: 'recovery ratio',\n format: '%',\n definition: {\n key: 'recovered',\n normalizeByKey: 'confirmed',\n multiplyFactor: 100,\n },\n },\n activeRatio: {\n displayName: 'active ratio',\n format: '%',\n definition: {\n key: 'active',\n normalizeByKey: 'confirmed',\n multiplyFactor: 100,\n },\n },\n population: {\n displayName: 'population',\n format: 'short',\n definition: {key: 'population'},\n },\n};\n\nexport const PER_MILLION_OPTIONS = {\n normalizeByKey: 'population',\n multiplyFactor: 1e6,\n};\n\nconst nanKeys = ['tested', 'vaccinated', 'population'];\nexport const NAN_STATISTICS = Object.keys(STATISTIC_CONFIGS).filter(\n (key) =>\n nanKeys.includes(STATISTIC_CONFIGS[key]?.definition?.key) ||\n nanKeys.includes(STATISTIC_CONFIGS[key]?.definition?.normalizeByKey)\n);\n\nexport const PRIMARY_STATISTICS = [\n 'confirmed',\n 'active',\n 'recovered',\n 'deceased',\n];\n\nexport const BRUSH_STATISTICS = ['confirmed'];\n\nexport const TABLE_STATISTICS = [...PRIMARY_STATISTICS, 'tested', 'vaccinated'];\n\nexport const TABLE_STATISTICS_EXPANDED = Object.keys(STATISTIC_CONFIGS);\n\nexport const TIMESERIES_STATISTICS = [\n ...PRIMARY_STATISTICS,\n 'tested',\n 'vaccinated',\n 'tpr',\n];\n\nexport const UPDATES_COUNT = 5;\n\nexport const DISTRICT_TABLE_COUNT = 40;\n\nexport const D3_TRANSITION_DURATION = 300;\n\nexport const MINIGRAPH_LOOKBACK_DAYS = 20;\n\nexport const TESTED_LOOKBACK_DAYS = 7;\n\nexport const UNASSIGNED_STATE_CODE = 'UN';\n\nexport const UNKNOWN_DISTRICT_KEY = 'Unknown';\n\nexport const GOSPEL_DATE = '2020-04-26';\n\nexport const ISO_DATE_REGEX = /^\\d{4}-([0]\\d|1[0-2])-([0-2]\\d|3[01])$/g;\n\nexport const INDIA_ISO_SUFFIX = 'T00:00:00+05:30';\n\nexport const SPRING_CONFIG_NUMBERS = {clamp: true, precision: 1};\n\nexport const TIMESERIES_CHART_TYPES = {\n total: 'Cumulative',\n delta: 'Daily',\n};\n\nexport const TIMESERIES_LOOKBACK_DAYS = [null, 90, 30];\n\nexport const MAP_VIZS = {\n CHOROPLETH: 0,\n BUBBLES: 1,\n};\n\nexport const MAP_VIEWS = {\n STATES: 0,\n DISTRICTS: 1,\n};\n\nexport const MAP_TYPES = {\n COUNTRY: 0,\n STATE: 1,\n};\n\nexport const MAPS_DIR =\n process.env.NODE_ENV === 'production'\n ? 'https://www.covid19india.org/mini_maps'\n : 'https://www.covid19india.org/projected_maps';\n\nexport const MAP_META = {\n AP: {\n geoDataFile: `${MAPS_DIR}/andhrapradesh.json`,\n mapType: MAP_TYPES.STATE,\n },\n AR: {\n geoDataFile: `${MAPS_DIR}/arunachalpradesh.json`,\n mapType: MAP_TYPES.STATE,\n },\n AS: {\n geoDataFile: `${MAPS_DIR}/assam.json`,\n mapType: MAP_TYPES.STATE,\n },\n BR: {\n geoDataFile: `${MAPS_DIR}/bihar.json`,\n mapType: MAP_TYPES.STATE,\n },\n CT: {\n geoDataFile: `${MAPS_DIR}/chhattisgarh.json`,\n mapType: MAP_TYPES.STATE,\n },\n GA: {\n geoDataFile: `${MAPS_DIR}/goa.json`,\n mapType: MAP_TYPES.STATE,\n },\n GJ: {\n geoDataFile: `${MAPS_DIR}/gujarat.json`,\n mapType: MAP_TYPES.STATE,\n },\n HR: {\n geoDataFile: `${MAPS_DIR}/haryana.json`,\n mapType: MAP_TYPES.STATE,\n },\n HP: {\n geoDataFile: `${MAPS_DIR}/himachalpradesh.json`,\n mapType: MAP_TYPES.STATE,\n },\n JK: {\n geoDataFile: `${MAPS_DIR}/jammukashmir.json`,\n mapType: MAP_TYPES.STATE,\n },\n JH: {\n geoDataFile: `${MAPS_DIR}/jharkhand.json`,\n mapType: MAP_TYPES.STATE,\n },\n KA: {\n geoDataFile: `${MAPS_DIR}/karnataka.json`,\n mapType: MAP_TYPES.STATE,\n },\n KL: {\n geoDataFile: `${MAPS_DIR}/kerala.json`,\n mapType: MAP_TYPES.STATE,\n },\n MP: {\n geoDataFile: `${MAPS_DIR}/madhyapradesh.json`,\n mapType: MAP_TYPES.STATE,\n },\n MH: {\n geoDataFile: `${MAPS_DIR}/maharashtra.json`,\n mapType: MAP_TYPES.STATE,\n },\n MN: {\n geoDataFile: `${MAPS_DIR}/manipur.json`,\n mapType: MAP_TYPES.STATE,\n },\n ML: {\n geoDataFile: `${MAPS_DIR}/meghalaya.json`,\n mapType: MAP_TYPES.STATE,\n },\n MZ: {\n geoDataFile: `${MAPS_DIR}/mizoram.json`,\n mapType: MAP_TYPES.STATE,\n },\n NL: {\n geoDataFile: `${MAPS_DIR}/nagaland.json`,\n mapType: MAP_TYPES.STATE,\n },\n OR: {\n geoDataFile: `${MAPS_DIR}/odisha.json`,\n mapType: MAP_TYPES.STATE,\n },\n PB: {\n geoDataFile: `${MAPS_DIR}/punjab.json`,\n mapType: MAP_TYPES.STATE,\n },\n RJ: {\n geoDataFile: `${MAPS_DIR}/rajasthan.json`,\n mapType: MAP_TYPES.STATE,\n },\n SK: {\n geoDataFile: `${MAPS_DIR}/sikkim.json`,\n mapType: MAP_TYPES.STATE,\n },\n TN: {\n geoDataFile: `${MAPS_DIR}/tamilnadu.json`,\n mapType: MAP_TYPES.STATE,\n },\n TG: {\n geoDataFile: `${MAPS_DIR}/telangana.json`,\n mapType: MAP_TYPES.STATE,\n },\n TR: {\n geoDataFile: `${MAPS_DIR}/tripura.json`,\n mapType: MAP_TYPES.STATE,\n },\n UT: {\n geoDataFile: `${MAPS_DIR}/uttarakhand.json`,\n mapType: MAP_TYPES.STATE,\n },\n UP: {\n geoDataFile: `${MAPS_DIR}/uttarpradesh.json`,\n mapType: MAP_TYPES.STATE,\n },\n WB: {\n geoDataFile: `${MAPS_DIR}/westbengal.json`,\n mapType: MAP_TYPES.STATE,\n },\n AN: {\n geoDataFile: `${MAPS_DIR}/andamannicobarislands.json`,\n mapType: MAP_TYPES.STATE,\n },\n CH: {\n geoDataFile: `${MAPS_DIR}/chandigarh.json`,\n mapType: MAP_TYPES.STATE,\n },\n DN: {\n geoDataFile: `${MAPS_DIR}/dnh-and-dd.json`,\n mapType: MAP_TYPES.STATE,\n },\n DL: {\n geoDataFile: `${MAPS_DIR}/delhi.json`,\n mapType: MAP_TYPES.STATE,\n },\n LA: {\n geoDataFile: `${MAPS_DIR}/ladakh.json`,\n mapType: MAP_TYPES.STATE,\n },\n LD: {\n geoDataFile: `${MAPS_DIR}/lakshadweep.json`,\n mapType: MAP_TYPES.STATE,\n },\n PY: {\n geoDataFile: `${MAPS_DIR}/puducherry.json`,\n mapType: MAP_TYPES.STATE,\n },\n TT: {\n geoDataFile: `${MAPS_DIR}/india.json`,\n mapType: MAP_TYPES.COUNTRY,\n },\n};\n\nexport const MAP_LEGEND_HEIGHT = 50;\n\nexport const STATE_NAMES = {\n AP: 'Andhra Pradesh',\n AR: 'Arunachal Pradesh',\n AS: 'Assam',\n BR: 'Bihar',\n CT: 'Chhattisgarh',\n GA: 'Goa',\n GJ: 'Gujarat',\n HR: 'Haryana',\n HP: 'Himachal Pradesh',\n JH: 'Jharkhand',\n KA: 'Karnataka',\n KL: 'Kerala',\n MP: 'Madhya Pradesh',\n MH: 'Maharashtra',\n MN: 'Manipur',\n ML: 'Meghalaya',\n MZ: 'Mizoram',\n NL: 'Nagaland',\n OR: 'Odisha',\n PB: 'Punjab',\n RJ: 'Rajasthan',\n SK: 'Sikkim',\n TN: 'Tamil Nadu',\n TG: 'Telangana',\n TR: 'Tripura',\n UT: 'Uttarakhand',\n UP: 'Uttar Pradesh',\n WB: 'West Bengal',\n AN: 'Andaman and Nicobar Islands',\n CH: 'Chandigarh',\n DN: 'Dadra and Nagar Haveli and Daman and Diu',\n DL: 'Delhi',\n JK: 'Jammu and Kashmir',\n LA: 'Ladakh',\n LD: 'Lakshadweep',\n PY: 'Puducherry',\n TT: 'India',\n [UNASSIGNED_STATE_CODE]: 'Unassigned',\n};\n\nconst stateCodes = [];\nconst stateCodesMap = {};\nObject.keys(STATE_NAMES).map((key, index) => {\n stateCodesMap[STATE_NAMES[key]] = key;\n stateCodes.push({code: key, name: STATE_NAMES[key]});\n return null;\n});\nexport const STATE_CODES = stateCodesMap;\nexport const STATE_CODES_ARRAY = stateCodes;\n"],"sourceRoot":""}