|
| 1 | +import 'flag-icons/css/flag-icons.min.css'; |
| 2 | +import '../../public/css/flag-icons.css'; |
| 3 | + |
1 | 4 | export const countryCodeList = {
|
2 | 5 | 'Afghanistan': 'AF',
|
3 | 6 | 'Algeria': 'ALG',
|
@@ -78,6 +81,297 @@ export const countryCodeList = {
|
78 | 81 | 'Vietnam': 'VN|VTNM',
|
79 | 82 | };
|
80 | 83 |
|
| 84 | +export const countryFlagIconMap = { |
| 85 | + 'AAT': 'AAT', // No matching code, kept original |
| 86 | + 'ADG': 'RU', // Adygea is part of Russia |
| 87 | + 'AF': 'AF', |
| 88 | + 'AG': 'AG', |
| 89 | + 'AGUK': 'AG', |
| 90 | + 'AM': 'AM', |
| 91 | + 'ANTN': 'ANTN', // No matching code, kept original |
| 92 | + 'AO': 'AO', |
| 93 | + 'AQ': 'AQ', // Added new code for Antarctica |
| 94 | + 'AR': 'AR', |
| 95 | + 'ARV': 'AR', // Argentine Antarctic is part of Argentina |
| 96 | + 'AT': 'AT', |
| 97 | + 'AU': 'AU', |
| 98 | + 'AZ': 'AZ', |
| 99 | + 'B': 'BE', // Belgium |
| 100 | + 'BASH': 'RU', // Bashkiria is part of Russia |
| 101 | + 'BAT': 'BAT', // No matching code, kept original |
| 102 | + 'BB': 'BB', |
| 103 | + 'BBUK': 'BB', |
| 104 | + 'BD': 'BD', |
| 105 | + 'BG': 'BG', |
| 106 | + 'BGN': 'BG', // PR Bulgaria is now Bulgaria |
| 107 | + 'BM': 'BM', |
| 108 | + 'BO': 'BO', |
| 109 | + 'BR': 'BR', |
| 110 | + 'BS': 'BS', |
| 111 | + 'BT': 'BT', |
| 112 | + 'BY': 'BY', |
| 113 | + 'CA': 'CA', |
| 114 | + 'CD': 'CD', |
| 115 | + 'CH': 'CH', |
| 116 | + 'CI': 'CI', |
| 117 | + 'CK': 'CK', |
| 118 | + 'CL': 'CL', |
| 119 | + 'CM': 'CM', |
| 120 | + 'CN': 'CN', |
| 121 | + 'CO': 'CO', |
| 122 | + 'COLP': 'CG', // Congo |
| 123 | + 'CR': 'CR', |
| 124 | + 'CSFR': 'CSFR', // No matching code, kept original (historical Czechoslovakia) |
| 125 | + 'CSSR': 'CSSR', // No matching code, kept original (historical Czechoslovakia) |
| 126 | + 'CU': 'CU', |
| 127 | + 'CYM': 'KY', // Cayman Islands |
| 128 | + 'CYMRU': 'GB-WLS', // Wales |
| 129 | + 'CZ': 'CZ', |
| 130 | + 'D': 'DE', // Germany |
| 131 | + 'DAG': 'RU', // Dagestan is part of Russia |
| 132 | + 'DD': 'DD', // No matching code, kept original (historical East Germany) |
| 133 | + 'DK': 'DK', |
| 134 | + 'DML': 'DML', // No matching code, kept original |
| 135 | + 'DR': 'DR', // No matching code, kept original (historical Germany) |
| 136 | + 'DX': 'DX', // No matching code, kept original (historical occupied Germany) |
| 137 | + 'DZ': 'DZ', |
| 138 | + 'E': 'ES', // Spain |
| 139 | + 'EC': 'EC', |
| 140 | + 'EE': 'EE', |
| 141 | + 'EG': 'EG', |
| 142 | + 'ENG': 'GB-ENG', // England |
| 143 | + 'ESCN': 'ES', // Canary Islands are part of Spain |
| 144 | + 'ET': 'ET', |
| 145 | + 'F': 'FR', // France |
| 146 | + 'FI': 'FI', |
| 147 | + 'GE': 'GE', |
| 148 | + 'GH': 'GH', |
| 149 | + 'GI': 'GI', |
| 150 | + 'GL': 'GL', |
| 151 | + 'GR': 'GR', |
| 152 | + '': 'GD', // Grenada (fixed empty key) |
| 153 | + 'GT': 'GT', |
| 154 | + 'GU': 'GU', |
| 155 | + 'GUF': 'GF', // French Guiana |
| 156 | + 'HK': 'HK', |
| 157 | + 'HKUK': 'HK', |
| 158 | + 'HU': 'HU', |
| 159 | + 'I': 'IT', // Italy |
| 160 | + 'I-ARAB': 'I-ARAB', // No matching code, kept original |
| 161 | + 'I-CSC1': 'I-CSC1', // No matching code, kept original |
| 162 | + 'I-ELDO': 'I-ELDO', // No matching code, kept original |
| 163 | + 'I-ESRO': 'I-ESRO', // No matching code, kept original |
| 164 | + 'I-EUM': 'I-EUM', // No matching code, kept original |
| 165 | + 'I-EU': 'I-EU', // No matching code, kept original |
| 166 | + 'I-EUT': 'I-EUT', // No matching code, kept original |
| 167 | + 'I-INM': 'I-INM', // No matching code, kept original |
| 168 | + 'I-INT': 'I-INT', // No matching code, kept original |
| 169 | + 'I-ISS': 'I-ISS', // No matching code, kept original |
| 170 | + 'I-NATO': 'I-NATO', // No matching code, kept original |
| 171 | + 'I-RASC': 'I-RASC', // No matching code, kept original |
| 172 | + 'ID': 'ID', |
| 173 | + 'IE': 'IE', |
| 174 | + 'IL': 'IL', |
| 175 | + 'IN': 'IN', |
| 176 | + 'IQ': 'IQ', |
| 177 | + 'IR': 'IR', |
| 178 | + 'IS': 'IS', |
| 179 | + 'J': 'JP', // Japan |
| 180 | + 'JO': 'JO', |
| 181 | + 'KE': 'KE', |
| 182 | + 'KI': 'KI', |
| 183 | + 'KG': 'KG', |
| 184 | + 'KGSR': 'KG', // Kyrgyz SSR is now Kyrgyzstan |
| 185 | + 'KH': 'KH', |
| 186 | + 'KORS': 'KORS', // No matching code, kept original |
| 187 | + 'KORSA': 'KORSA', // No matching code, kept original |
| 188 | + 'KP': 'KP', |
| 189 | + 'KR': 'KR', |
| 190 | + 'KW': 'KW', |
| 191 | + 'KZ': 'KZ', |
| 192 | + 'L': 'LU', // Luxembourg |
| 193 | + 'LA': 'LA', |
| 194 | + 'LB': 'LB', |
| 195 | + 'LK': 'LK', |
| 196 | + 'LT': 'LT', |
| 197 | + 'LV': 'LV', |
| 198 | + 'LY': 'LY', |
| 199 | + 'MA': 'MA', |
| 200 | + 'MC': 'MC', |
| 201 | + 'MD': 'MD', |
| 202 | + 'MH': 'MH', |
| 203 | + 'MN': 'MN', |
| 204 | + 'MR': 'MR', |
| 205 | + 'MU': 'MU', |
| 206 | + 'MV': 'MV', |
| 207 | + 'MX': 'MX', |
| 208 | + 'MY': 'MY', |
| 209 | + 'MYM': 'MM', // Myanmar |
| 210 | + 'N': 'NO', // Norway |
| 211 | + 'NG': 'NG', |
| 212 | + 'NL': 'NL', |
| 213 | + 'NP': 'NP', |
| 214 | + 'NZ': 'NZ', |
| 215 | + 'NZRD': 'NZRD', // No matching code, kept original |
| 216 | + 'P': 'PT', // Portugal |
| 217 | + 'PAR': 'PA', // Panama |
| 218 | + 'PCZ': 'PCZ', // No matching code, kept original |
| 219 | + 'PE': 'PE', |
| 220 | + 'PG': 'PG', |
| 221 | + 'PK': 'PK', |
| 222 | + 'PH': 'PH', |
| 223 | + 'PL': 'PL', |
| 224 | + 'PLRL': 'PL', |
| 225 | + 'PR': 'PR', |
| 226 | + 'PT': 'PT', |
| 227 | + 'PY': 'PY', |
| 228 | + 'QA': 'QA', |
| 229 | + 'RO': 'RO', |
| 230 | + 'RU': 'RU', |
| 231 | + 'RW': 'RW', |
| 232 | + 'S': 'SE', // Sweden |
| 233 | + 'SA': 'SA', |
| 234 | + 'SCOT': 'GB-SCT', // Scotland |
| 235 | + 'SD': 'SD', |
| 236 | + 'SG': 'SG', |
| 237 | + 'SH': 'SH', |
| 238 | + 'SI': 'SI', |
| 239 | + 'SK': 'SK', |
| 240 | + 'SR': 'SR', |
| 241 | + 'SU': 'SU', // No matching code, kept original (historical USSR) |
| 242 | + 'SY': 'SY', |
| 243 | + 'T': 'TH', // Thailand |
| 244 | + 'TC': 'TC', |
| 245 | + 'TF': 'TF', |
| 246 | + 'TJ': 'TJ', |
| 247 | + 'TM': 'TM', |
| 248 | + 'TN': 'TN', |
| 249 | + 'TO': 'TO', |
| 250 | + 'TR': 'TR', |
| 251 | + 'TTPI': 'TTPI', // No matching code, kept original |
| 252 | + 'TUVA': 'RU', // Tuva is part of Russia |
| 253 | + 'TW': 'TW', |
| 254 | + 'UA': 'UA', |
| 255 | + 'UAE': 'AE', // United Arab Emirates |
| 256 | + 'UK': 'GB', // United Kingdom |
| 257 | + 'UM': 'UM', |
| 258 | + 'US': 'US', |
| 259 | + 'UY': 'UY', |
| 260 | + 'UZ': 'UZ', |
| 261 | + 'VE': 'VE', |
| 262 | + 'VN': 'VN', |
| 263 | + 'YE': 'YE', |
| 264 | + 'ZA': 'ZA', |
| 265 | + 'ZR': 'CD', // Zaire is now Democratic Republic of the Congo |
| 266 | + 'ANALSAT': 'ANALSAT', // No matching code, kept original |
| 267 | + 'SAUD': 'SA', // Saudi Arabia |
| 268 | + 'AB': 'SA', // Saudi Arabia |
| 269 | + 'AC': 'AC', // No matching code, kept original |
| 270 | + 'ALG': 'DZ', // Algeria |
| 271 | + 'ALL': 'ALL', // No matching code, kept original |
| 272 | + 'ARGN': 'AR', // Argentina |
| 273 | + 'ASRA': 'AT', // Austria |
| 274 | + 'AUS': 'AU', |
| 275 | + 'AZER': 'AZ', |
| 276 | + 'BEL': 'BE', |
| 277 | + 'BELA': 'BY', |
| 278 | + 'BERM': 'BM', |
| 279 | + 'BOL': 'BO', |
| 280 | + 'BRAZ': 'BR', |
| 281 | + 'CHBZ': 'CHBZ', // No matching code, kept original |
| 282 | + 'CHLE': 'CL', // Chile |
| 283 | + 'CIS': 'CIS', // No matching code, kept original |
| 284 | + 'COL': 'CO', |
| 285 | + 'CZCH': 'CZ', // Czech Republic (formerly Czechoslovakia) |
| 286 | + 'DEN': 'DK', |
| 287 | + 'ECU': 'EC', |
| 288 | + 'EGYP': 'EG', |
| 289 | + 'ESA': 'ESA', // No matching code, kept original |
| 290 | + 'I-ESA': 'I-ESA', // No matching code, kept original |
| 291 | + 'EST': 'EE', |
| 292 | + 'EUME': 'EUME', // No matching code, kept original |
| 293 | + 'EUTE': 'EUTE', // No matching code, kept original |
| 294 | + 'FIN': 'FI', |
| 295 | + 'FGER': 'FGER', // No matching code, kept original |
| 296 | + 'FR': 'FR', |
| 297 | + 'FRIT': 'FRIT', // No matching code, kept original |
| 298 | + 'GER': 'DE', |
| 299 | + 'GLOB': 'US', |
| 300 | + 'GREC': 'GR', |
| 301 | + 'HUN': 'HU', |
| 302 | + 'IM': 'IM', |
| 303 | + 'IND': 'IN', |
| 304 | + 'INDO': 'ID', |
| 305 | + 'IRAN': 'IR', |
| 306 | + 'IRAQ': 'IQ', |
| 307 | + 'ISRA': 'IL', |
| 308 | + 'ISS': 'ISS', // No matching code, kept original |
| 309 | + 'IT': 'IT', |
| 310 | + 'ITSO': 'LU', // Luxembourg |
| 311 | + 'JPN': 'JP', |
| 312 | + 'KAZ': 'KZ', |
| 313 | + 'LAOS': 'LA', |
| 314 | + 'LTU': 'LT', |
| 315 | + 'LUXE': 'LU', |
| 316 | + 'MALA': 'MY', |
| 317 | + 'MEX': 'MX', |
| 318 | + 'NATO': 'NATO', // No matching code, kept original |
| 319 | + 'NETH': 'NL', |
| 320 | + 'NICO': 'US', |
| 321 | + 'NIG': 'NG', |
| 322 | + 'NKOR': 'KP', |
| 323 | + 'NOR': 'NO', |
| 324 | + 'O3B': 'LU', |
| 325 | + 'ORB': 'US', |
| 326 | + 'PAKI': 'PK', |
| 327 | + 'PERU': 'PE', |
| 328 | + 'POL': 'PL', |
| 329 | + 'POR': 'PT', |
| 330 | + 'PRC': 'CN', |
| 331 | + 'RASC': 'MU', // Mauritius |
| 332 | + 'ROC': 'TW', |
| 333 | + 'Taiwan': 'TW', |
| 334 | + 'ROM': 'RO', |
| 335 | + 'SAFR': 'ZA', |
| 336 | + 'SEAL': 'RU', |
| 337 | + 'RP': 'PH', |
| 338 | + 'SES': 'LU', |
| 339 | + 'SING': 'SG', |
| 340 | + 'SKOR': 'KR', |
| 341 | + 'SPN': 'ES', |
| 342 | + 'STCT': 'STCT', // No matching code, kept original |
| 343 | + 'SWED': 'SE', |
| 344 | + 'SWTZ': 'CH', |
| 345 | + 'THAI': 'TH', |
| 346 | + 'TMMC': 'TMMC', // No matching code, kept original |
| 347 | + 'TURK': 'TR', |
| 348 | + 'UKR': 'UA', |
| 349 | + 'URY': 'UY', |
| 350 | + 'USA': 'US', |
| 351 | + 'USBZ': 'USBZ', // No matching code, kept original |
| 352 | + 'VENZ': 'VE', |
| 353 | + 'VTNM': 'VN', |
| 354 | + 'TBD': 'TBD', // No matching code, kept original |
| 355 | +}; |
| 356 | + |
| 357 | +export const country2flagIcon = (country: string): string => { |
| 358 | + // Get the country code from the list |
| 359 | + const countryCode = countryCodeList[country] ?? countryCodeList[countryMapList[country]] ?? country; |
| 360 | + |
| 361 | + // Flag codes look like this: fi-us (for United States) or fi-uk (for United Kingdom) |
| 362 | + |
| 363 | + // If there is more than one then we will use both |
| 364 | + if (countryCode) { |
| 365 | + const codes = countryCode.split('|').map((code: string) => countryFlagIconMap[code] ?? code.toLowerCase()); |
| 366 | + |
| 367 | + return codes.map((code) => `fi-${code.toLowerCase()}`).join(' '); |
| 368 | + } |
| 369 | + |
| 370 | + console.warn(`Country code not found for ${country}`); |
| 371 | + |
| 372 | + return 'fi-unknown'; |
| 373 | +}; |
| 374 | + |
81 | 375 | /**
|
82 | 376 | * An array of country names with satellites.
|
83 | 377 | */
|
|
0 commit comments