UNPKG

houser-js-utils

Version:

A comprehensive collection of TypeScript utility functions for common development tasks including array manipulation, string processing, date handling, random number generation, validation, and much more.

1 lines 40.6 kB
{"version":3,"file":"TimeZoneUtils.mjs","sources":["../src/TimeZoneUtils.ts"],"sourcesContent":["/**\n * @module TimeZoneUtils\n * @description Utility functions for working with time zones, including getting time zone details, managing time zone lists, and handling user time zone preferences. Provides comprehensive support for IANA time zones with proper formatting and validation.\n * @example\n * ```typescript\n * import { TimeZoneUtils } from 'houser-js-utils';\n *\n * // Get user's time zone\n * const userTimeZone = TimeZoneUtils.getUsersTimeZone();\n * console.log(`User's time zone: ${userTimeZone.name} (${userTimeZone.shortName})`);\n *\n * // Get filtered time zones\n * const timeZones = TimeZoneUtils.getTimeZones(['America/New_York', 'Europe/London']);\n *\n * // Get time zone options for select element\n * const options = TimeZoneUtils.getTimeZonesOptions('America/New_York', 'Europe/London');\n * ```\n */\n\n/**\n * Interface for time zone data\n * @interface TimeZone\n * @property {string} name - The IANA time zone name (e.g., 'America/New_York')\n * @property {string} shortName - The abbreviated time zone name (e.g., 'EDT')\n */\ninterface TimeZone {\n name: string;\n shortName: string;\n}\n\n/**\n * Creates an HTML option element string for a time zone\n */\nexport const createTimeZoneOption = (name: string, shortName: string): string =>\n `<option value=\"${name}\">(${shortName}) ${name}</option>`;\n\n/**\n * List of all available time zones\n */\nconst timeZones: TimeZone[] = [\n { name: \"Pacific/Pago_Pago\", shortName: \"GMT-11\" },\n { name: \"Pacific/Niue\", shortName: \"GMT-11\" },\n { name: \"Pacific/Rarotonga\", shortName: \"GMT-10\" },\n { name: \"Pacific/Tahiti\", shortName: \"GMT-10\" },\n { name: \"Pacific/Honolulu\", shortName: \"HST\" },\n { name: \"Pacific/Marquesas\", shortName: \"GMT-9:30\" },\n { name: \"Pacific/Gambier\", shortName: \"GMT-9\" },\n { name: \"America/Adak\", shortName: \"HADT\" },\n { name: \"Pacific/Pitcairn\", shortName: \"GMT-8\" },\n { name: \"America/Anchorage\", shortName: \"AKDT\" },\n { name: \"America/Juneau\", shortName: \"AKDT\" },\n { name: \"America/Sitka\", shortName: \"AKDT\" },\n { name: \"America/Metlakatla\", shortName: \"AKDT\" },\n { name: \"America/Yakutat\", shortName: \"AKDT\" },\n { name: \"America/Nome\", shortName: \"AKDT\" },\n { name: \"America/Creston\", shortName: \"MST\" },\n { name: \"America/Dawson_Creek\", shortName: \"MST\" },\n { name: \"America/Fort_Nelson\", shortName: \"MST\" },\n { name: \"America/Vancouver\", shortName: \"PDT\" },\n { name: \"America/Whitehorse\", shortName: \"MST\" },\n { name: \"America/Dawson\", shortName: \"MST\" },\n { name: \"America/Hermosillo\", shortName: \"GMT-7\" },\n { name: \"America/Tijuana\", shortName: \"PDT\" },\n { name: \"America/Phoenix\", shortName: \"MST\" },\n { name: \"America/Los_Angeles\", shortName: \"PDT\" },\n { name: \"America/Belize\", shortName: \"CST\" },\n { name: \"America/Regina\", shortName: \"CST\" },\n { name: \"America/Swift_Current\", shortName: \"CST\" },\n { name: \"America/Edmonton\", shortName: \"MDT\" },\n { name: \"America/Cambridge_Bay\", shortName: \"MDT\" },\n { name: \"America/Yellowknife\", shortName: \"MDT\" },\n { name: \"America/Inuvik\", shortName: \"MDT\" },\n { name: \"America/Costa_Rica\", shortName: \"CST\" },\n { name: \"Pacific/Galapagos\", shortName: \"GMT-6\" },\n { name: \"America/Guatemala\", shortName: \"CST\" },\n { name: \"America/Tegucigalpa\", shortName: \"CST\" },\n { name: \"America/Mazatlan\", shortName: \"GMT-6\" },\n { name: \"America/Chihuahua\", shortName: \"GMT-6\" },\n { name: \"America/Ojinaga\", shortName: \"MDT\" },\n { name: \"America/Managua\", shortName: \"CST\" },\n { name: \"America/El_Salvador\", shortName: \"CST\" },\n { name: \"America/Denver\", shortName: \"MDT\" },\n { name: \"America/Boise\", shortName: \"MDT\" },\n { name: \"America/Eirunepe\", shortName: \"GMT-5\" },\n { name: \"America/Rio_Branco\", shortName: \"GMT-5\" },\n { name: \"America/Atikokan\", shortName: \"EST\" },\n { name: \"America/Winnipeg\", shortName: \"CDT\" },\n { name: \"America/Rainy_River\", shortName: \"CDT\" },\n { name: \"America/Resolute\", shortName: \"CDT\" },\n { name: \"America/Rankin_Inlet\", shortName: \"CDT\" },\n { name: \"Pacific/Easter\", shortName: \"GMT-5\" },\n { name: \"America/Bogota\", shortName: \"GMT-5\" },\n { name: \"America/Guayaquil\", shortName: \"GMT-5\" },\n { name: \"America/Jamaica\", shortName: \"EST\" },\n { name: \"America/Mexico_City\", shortName: \"CDT\" },\n { name: \"America/Cancun\", shortName: \"EST\" },\n { name: \"America/Merida\", shortName: \"CDT\" },\n { name: \"America/Monterrey\", shortName: \"CDT\" },\n { name: \"America/Matamoros\", shortName: \"CDT\" },\n { name: \"America/Bahia_Banderas\", shortName: \"CDT\" },\n { name: \"America/Panama\", shortName: \"EST\" },\n { name: \"America/Lima\", shortName: \"GMT-5\" },\n { name: \"America/Chicago\", shortName: \"CDT\" },\n { name: \"America/Indiana/Tell_City\", shortName: \"CDT\" },\n { name: \"America/Indiana/Knox\", shortName: \"CDT\" },\n { name: \"America/Menominee\", shortName: \"CDT\" },\n { name: \"America/North_Dakota/Center\", shortName: \"CDT\" },\n { name: \"America/North_Dakota/New_Salem\", shortName: \"CDT\" },\n { name: \"America/North_Dakota/Beulah\", shortName: \"CDT\" },\n { name: \"America/Barbados\", shortName: \"AST\" },\n { name: \"America/La_Paz\", shortName: \"GMT-4\" },\n { name: \"America/Campo_Grande\", shortName: \"GMT-4\" },\n { name: \"America/Cuiaba\", shortName: \"GMT-4\" },\n { name: \"America/Porto_Velho\", shortName: \"GMT-4\" },\n { name: \"America/Boa_Vista\", shortName: \"GMT-4\" },\n { name: \"America/Manaus\", shortName: \"GMT-4\" },\n { name: \"America/Nassau\", shortName: \"EDT\" },\n { name: \"America/Blanc-Sablon\", shortName: \"AST\" },\n { name: \"America/Toronto\", shortName: \"EDT\" },\n { name: \"America/Nipigon\", shortName: \"EDT\" },\n { name: \"America/Thunder_Bay\", shortName: \"EDT\" },\n { name: \"America/Iqaluit\", shortName: \"EDT\" },\n { name: \"America/Pangnirtung\", shortName: \"EDT\" },\n { name: \"America/Havana\", shortName: \"GMT-4\" },\n { name: \"America/Curacao\", shortName: \"AST\" },\n { name: \"America/Santo_Domingo\", shortName: \"AST\" },\n { name: \"America/Guyana\", shortName: \"GMT-4\" },\n { name: \"America/Port-au-Prince\", shortName: \"EDT\" },\n { name: \"America/Martinique\", shortName: \"AST\" },\n { name: \"America/Puerto_Rico\", shortName: \"AST\" },\n { name: \"America/Asuncion\", shortName: \"GMT-4\" },\n { name: \"America/Grand_Turk\", shortName: \"EDT\" },\n { name: \"America/Port_of_Spain\", shortName: \"AST\" },\n { name: \"America/New_York\", shortName: \"EDT\" },\n { name: \"America/Detroit\", shortName: \"EDT\" },\n { name: \"America/Kentucky/Louisville\", shortName: \"EDT\" },\n { name: \"America/Kentucky/Monticello\", shortName: \"EDT\" },\n { name: \"America/Indiana/Indianapolis\", shortName: \"EDT\" },\n { name: \"America/Indiana/Vincennes\", shortName: \"EDT\" },\n { name: \"America/Indiana/Winamac\", shortName: \"EDT\" },\n { name: \"America/Indiana/Marengo\", shortName: \"EDT\" },\n { name: \"America/Indiana/Petersburg\", shortName: \"EDT\" },\n { name: \"America/Indiana/Vevay\", shortName: \"EDT\" },\n { name: \"America/Caracas\", shortName: \"GMT-4\" },\n { name: \"Antarctica/Palmer\", shortName: \"GMT-3\" },\n { name: \"Antarctica/Rothera\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Buenos_Aires\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Cordoba\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Salta\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Jujuy\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Tucuman\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Catamarca\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/La_Rioja\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/San_Juan\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Mendoza\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/San_Luis\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Rio_Gallegos\", shortName: \"GMT-3\" },\n { name: \"America/Argentina/Ushuaia\", shortName: \"GMT-3\" },\n { name: \"Atlantic/Bermuda\", shortName: \"ADT\" },\n { name: \"America/Belem\", shortName: \"GMT-3\" },\n { name: \"America/Fortaleza\", shortName: \"GMT-3\" },\n { name: \"America/Recife\", shortName: \"GMT-3\" },\n { name: \"America/Araguaina\", shortName: \"GMT-3\" },\n { name: \"America/Maceio\", shortName: \"GMT-3\" },\n { name: \"America/Bahia\", shortName: \"GMT-3\" },\n { name: \"America/Sao_Paulo\", shortName: \"GMT-3\" },\n { name: \"America/Santarem\", shortName: \"GMT-3\" },\n { name: \"America/Halifax\", shortName: \"ADT\" },\n { name: \"America/Glace_Bay\", shortName: \"ADT\" },\n { name: \"America/Moncton\", shortName: \"ADT\" },\n { name: \"America/Goose_Bay\", shortName: \"ADT\" },\n { name: \"America/Santiago\", shortName: \"GMT-3\" },\n { name: \"America/Punta_Arenas\", shortName: \"GMT-3\" },\n { name: \"Atlantic/Stanley\", shortName: \"GMT-3\" },\n { name: \"America/Cayenne\", shortName: \"GMT-3\" },\n { name: \"America/Thule\", shortName: \"ADT\" },\n { name: \"America/Paramaribo\", shortName: \"GMT-3\" },\n { name: \"America/Montevideo\", shortName: \"GMT-3\" },\n { name: \"America/St_Johns\", shortName: \"GMT-2:30\" },\n { name: \"America/Noronha\", shortName: \"GMT-2\" },\n { name: \"America/Godthab\", shortName: \"GMT-2\" },\n { name: \"Atlantic/South_Georgia\", shortName: \"GMT-2\" },\n { name: \"America/Miquelon\", shortName: \"GMT-2\" },\n { name: \"Atlantic/Cape_Verde\", shortName: \"GMT-1\" },\n { name: \"Africa/Abidjan\", shortName: \"GMT\" },\n { name: \"Africa/Accra\", shortName: \"GMT\" },\n { name: \"America/Danmarkshavn\", shortName: \"GMT\" },\n { name: \"America/Scoresbysund\", shortName: \"GMT\" },\n { name: \"Africa/Bissau\", shortName: \"GMT\" },\n { name: \"Atlantic/Reykjavik\", shortName: \"GMT\" },\n { name: \"Africa/Monrovia\", shortName: \"GMT\" },\n { name: \"Atlantic/Azores\", shortName: \"GMT\" },\n { name: \"Africa/Sao_Tome\", shortName: \"GMT\" },\n { name: \"Africa/Algiers\", shortName: \"GMT+1\" },\n { name: \"Africa/El_Aaiun\", shortName: \"GMT+1\" },\n { name: \"Atlantic/Canary\", shortName: \"GMT+1\" },\n { name: \"Atlantic/Faroe\", shortName: \"GMT+1\" },\n { name: \"Europe/London\", shortName: \"GMT+1\" },\n { name: \"Europe/Dublin\", shortName: \"GMT+1\" },\n { name: \"Africa/Casablanca\", shortName: \"GMT+1\" },\n { name: \"Africa/Lagos\", shortName: \"GMT+1\" },\n { name: \"Europe/Lisbon\", shortName: \"GMT+1\" },\n { name: \"Atlantic/Madeira\", shortName: \"GMT+1\" },\n { name: \"Africa/Ndjamena\", shortName: \"GMT+1\" },\n { name: \"Africa/Tunis\", shortName: \"GMT+1\" },\n { name: \"Europe/Andorra\", shortName: \"GMT+2\" },\n { name: \"Europe/Tirane\", shortName: \"GMT+2\" },\n { name: \"Antarctica/Troll\", shortName: \"GMT+2\" },\n { name: \"Europe/Vienna\", shortName: \"GMT+2\" },\n { name: \"Europe/Brussels\", shortName: \"GMT+2\" },\n { name: \"Europe/Zurich\", shortName: \"GMT+2\" },\n { name: \"Europe/Prague\", shortName: \"GMT+2\" },\n { name: \"Europe/Berlin\", shortName: \"GMT+2\" },\n { name: \"Europe/Copenhagen\", shortName: \"GMT+2\" },\n { name: \"Africa/Cairo\", shortName: \"GMT+2\" },\n { name: \"Europe/Madrid\", shortName: \"GMT+2\" },\n { name: \"Africa/Ceuta\", shortName: \"GMT+2\" },\n { name: \"Europe/Paris\", shortName: \"GMT+2\" },\n { name: \"Europe/Gibraltar\", shortName: \"GMT+2\" },\n { name: \"Europe/Budapest\", shortName: \"GMT+2\" },\n { name: \"Europe/Rome\", shortName: \"GMT+2\" },\n { name: \"Europe/Luxembourg\", shortName: \"GMT+2\" },\n { name: \"Africa/Tripoli\", shortName: \"GMT+2\" },\n { name: \"Europe/Monaco\", shortName: \"GMT+2\" },\n { name: \"Europe/Malta\", shortName: \"GMT+2\" },\n { name: \"Africa/Maputo\", shortName: \"GMT+2\" },\n { name: \"Africa/Windhoek\", shortName: \"GMT+2\" },\n { name: \"Europe/Amsterdam\", shortName: \"GMT+2\" },\n { name: \"Europe/Oslo\", shortName: \"GMT+2\" },\n { name: \"Europe/Warsaw\", shortName: \"GMT+2\" },\n { name: \"Europe/Belgrade\", shortName: \"GMT+2\" },\n { name: \"Europe/Kaliningrad\", shortName: \"GMT+2\" },\n { name: \"Africa/Khartoum\", shortName: \"GMT+2\" },\n { name: \"Europe/Stockholm\", shortName: \"GMT+2\" },\n { name: \"Africa/Johannesburg\", shortName: \"GMT+2\" },\n { name: \"Antarctica/Syowa\", shortName: \"GMT+3\" },\n { name: \"Europe/Sofia\", shortName: \"GMT+3\" },\n { name: \"Europe/Minsk\", shortName: \"GMT+3\" },\n { name: \"Asia/Nicosia\", shortName: \"GMT+3\" },\n { name: \"Asia/Famagusta\", shortName: \"GMT+3\" },\n { name: \"Europe/Tallinn\", shortName: \"GMT+3\" },\n { name: \"Europe/Helsinki\", shortName: \"GMT+3\" },\n { name: \"Europe/Athens\", shortName: \"GMT+3\" },\n { name: \"Asia/Jerusalem\", shortName: \"GMT+3\" },\n { name: \"Asia/Baghdad\", shortName: \"GMT+3\" },\n { name: \"Asia/Amman\", shortName: \"GMT+3\" },\n { name: \"Africa/Nairobi\", shortName: \"GMT+3\" },\n { name: \"Asia/Beirut\", shortName: \"GMT+3\" },\n { name: \"Europe/Vilnius\", shortName: \"GMT+3\" },\n { name: \"Europe/Riga\", shortName: \"GMT+3\" },\n { name: \"Europe/Chisinau\", shortName: \"GMT+3\" },\n { name: \"Asia/Gaza\", shortName: \"GMT+3\" },\n { name: \"Asia/Hebron\", shortName: \"GMT+3\" },\n { name: \"Asia/Qatar\", shortName: \"GMT+3\" },\n { name: \"Europe/Bucharest\", shortName: \"GMT+3\" },\n { name: \"Europe/Moscow\", shortName: \"GMT+3\" },\n { name: \"Europe/Simferopol\", shortName: \"GMT+3\" },\n { name: \"Europe/Kirov\", shortName: \"GMT+3\" },\n { name: \"Asia/Riyadh\", shortName: \"GMT+3\" },\n { name: \"Africa/Juba\", shortName: \"GMT+3\" },\n { name: \"Asia/Damascus\", shortName: \"GMT+3\" },\n { name: \"Europe/Istanbul\", shortName: \"GMT+3\" },\n { name: \"Europe/Kiev\", shortName: \"GMT+3\" },\n { name: \"Europe/Uzhgorod\", shortName: \"GMT+3\" },\n { name: \"Europe/Zaporozhye\", shortName: \"GMT+3\" },\n { name: \"Asia/Dubai\", shortName: \"GMT+4\" },\n { name: \"Asia/Yerevan\", shortName: \"GMT+4\" },\n { name: \"Asia/Baku\", shortName: \"GMT+4\" },\n { name: \"Asia/Tbilisi\", shortName: \"GMT+4\" },\n { name: \"Indian/Mauritius\", shortName: \"GMT+4\" },\n { name: \"Indian/Reunion\", shortName: \"GMT+4\" },\n { name: \"Europe/Astrakhan\", shortName: \"GMT+4\" },\n { name: \"Europe/Volgograd\", shortName: \"GMT+4\" },\n { name: \"Europe/Saratov\", shortName: \"GMT+4\" },\n { name: \"Europe/Ulyanovsk\", shortName: \"GMT+4\" },\n { name: \"Europe/Samara\", shortName: \"GMT+4\" },\n { name: \"Indian/Mahe\", shortName: \"GMT+4\" },\n { name: \"Asia/Kabul\", shortName: \"GMT+4:30\" },\n { name: \"Asia/Tehran\", shortName: \"GMT+4:30\" },\n { name: \"Antarctica/Mawson\", shortName: \"GMT+5\" },\n { name: \"Asia/Qyzylorda\", shortName: \"GMT+5\" },\n { name: \"Asia/Aqtobe\", shortName: \"GMT+5\" },\n { name: \"Asia/Aqtau\", shortName: \"GMT+5\" },\n { name: \"Asia/Atyrau\", shortName: \"GMT+5\" },\n { name: \"Asia/Oral\", shortName: \"GMT+5\" },\n { name: \"Indian/Maldives\", shortName: \"GMT+5\" },\n { name: \"Asia/Karachi\", shortName: \"GMT+5\" },\n { name: \"Asia/Yekaterinburg\", shortName: \"GMT+5\" },\n { name: \"Indian/Kerguelen\", shortName: \"GMT+5\" },\n { name: \"Asia/Dushanbe\", shortName: \"GMT+5\" },\n { name: \"Asia/Ashgabat\", shortName: \"GMT+5\" },\n { name: \"Asia/Samarkand\", shortName: \"GMT+5\" },\n { name: \"Asia/Tashkent\", shortName: \"GMT+5\" },\n { name: \"Asia/Kolkata\", shortName: \"GMT+5:30\" },\n { name: \"Asia/Colombo\", shortName: \"GMT+5:30\" },\n { name: \"Asia/Kathmandu\", shortName: \"GMT+5:45\" },\n { name: \"Antarctica/Vostok\", shortName: \"GMT+6\" },\n { name: \"Asia/Dhaka\", shortName: \"GMT+6\" },\n { name: \"Asia/Thimphu\", shortName: \"GMT+6\" },\n { name: \"Asia/Urumqi\", shortName: \"GMT+6\" },\n { name: \"Indian/Chagos\", shortName: \"GMT+6\" },\n { name: \"Asia/Bishkek\", shortName: \"GMT+6\" },\n { name: \"Asia/Almaty\", shortName: \"GMT+6\" },\n { name: \"Asia/Qostanay\", shortName: \"GMT+6\" },\n { name: \"Asia/Omsk\", shortName: \"GMT+6\" },\n { name: \"Indian/Cocos\", shortName: \"GMT+6:30\" },\n { name: \"Asia/Yangon\", shortName: \"GMT+6:30\" },\n { name: \"Antarctica/Davis\", shortName: \"GMT+7\" },\n { name: \"Indian/Christmas\", shortName: \"GMT+7\" },\n { name: \"Asia/Jakarta\", shortName: \"GMT+7\" },\n { name: \"Asia/Pontianak\", shortName: \"GMT+7\" },\n { name: \"Asia/Hovd\", shortName: \"GMT+7\" },\n { name: \"Asia/Novosibirsk\", shortName: \"GMT+7\" },\n { name: \"Asia/Barnaul\", shortName: \"GMT+7\" },\n { name: \"Asia/Tomsk\", shortName: \"GMT+7\" },\n { name: \"Asia/Novokuznetsk\", shortName: \"GMT+7\" },\n { name: \"Asia/Krasnoyarsk\", shortName: \"GMT+7\" },\n { name: \"Asia/Bangkok\", shortName: \"GMT+7\" },\n { name: \"Asia/Ho_Chi_Minh\", shortName: \"GMT+7\" },\n { name: \"Antarctica/Casey\", shortName: \"GMT+8\" },\n { name: \"Australia/Perth\", shortName: \"GMT+8\" },\n { name: \"Asia/Brunei\", shortName: \"GMT+8\" },\n { name: \"Asia/Shanghai\", shortName: \"GMT+8\" },\n { name: \"Asia/Hong_Kong\", shortName: \"GMT+8\" },\n { name: \"Asia/Makassar\", shortName: \"GMT+8\" },\n { name: \"Asia/Ulaanbaatar\", shortName: \"GMT+8\" },\n { name: \"Asia/Choibalsan\", shortName: \"GMT+8\" },\n { name: \"Asia/Macau\", shortName: \"GMT+8\" },\n { name: \"Asia/Kuala_Lumpur\", shortName: \"GMT+8\" },\n { name: \"Asia/Kuching\", shortName: \"GMT+8\" },\n { name: \"Asia/Manila\", shortName: \"GMT+8\" },\n { name: \"Asia/Irkutsk\", shortName: \"GMT+8\" },\n { name: \"Asia/Singapore\", shortName: \"GMT+8\" },\n { name: \"Asia/Taipei\", shortName: \"GMT+8\" },\n { name: \"Australia/Eucla\", shortName: \"GMT+8:45\" },\n { name: \"Asia/Jayapura\", shortName: \"GMT+9\" },\n { name: \"Asia/Tokyo\", shortName: \"GMT+9\" },\n { name: \"Asia/Pyongyang\", shortName: \"GMT+9\" },\n { name: \"Asia/Seoul\", shortName: \"GMT+9\" },\n { name: \"Pacific/Palau\", shortName: \"GMT+9\" },\n { name: \"Asia/Chita\", shortName: \"GMT+9\" },\n { name: \"Asia/Yakutsk\", shortName: \"GMT+9\" },\n { name: \"Asia/Khandyga\", shortName: \"GMT+9\" },\n { name: \"Asia/Dili\", shortName: \"GMT+9\" },\n { name: \"Australia/Broken_Hill\", shortName: \"GMT+9:30\" },\n { name: \"Australia/Adelaide\", shortName: \"GMT+9:30\" },\n { name: \"Australia/Darwin\", shortName: \"GMT+9:30\" },\n { name: \"Antarctica/Macquarie\", shortName: \"GMT+11\" },\n { name: \"Pacific/Pohnpei\", shortName: \"GMT+11\" },\n { name: \"Pacific/Kosrae\", shortName: \"GMT+11\" },\n { name: \"Pacific/Noumea\", shortName: \"GMT+11\" },\n { name: \"Pacific/Norfolk\", shortName: \"GMT+11\" },\n { name: \"Pacific/Bougainville\", shortName: \"GMT+11\" },\n { name: \"Asia/Magadan\", shortName: \"GMT+11\" },\n { name: \"Asia/Sakhalin\", shortName: \"GMT+11\" },\n { name: \"Asia/Srednekolymsk\", shortName: \"GMT+11\" },\n { name: \"Pacific/Guadalcanal\", shortName: \"GMT+11\" },\n { name: \"Pacific/Efate\", shortName: \"GMT+11\" },\n { name: \"Pacific/Fiji\", shortName: \"GMT+12\" },\n { name: \"Pacific/Tarawa\", shortName: \"GMT+12\" },\n { name: \"Pacific/Majuro\", shortName: \"GMT+12\" },\n { name: \"Pacific/Kwajalein\", shortName: \"GMT+12\" },\n { name: \"Pacific/Nauru\", shortName: \"GMT+12\" },\n { name: \"Pacific/Auckland\", shortName: \"GMT+12\" },\n { name: \"Asia/Kamchatka\", shortName: \"GMT+12\" },\n { name: \"Asia/Anadyr\", shortName: \"GMT+12\" },\n { name: \"Pacific/Funafuti\", shortName: \"GMT+12\" },\n { name: \"Pacific/Wake\", shortName: \"GMT+12\" },\n { name: \"Pacific/Wallis\", shortName: \"GMT+12\" },\n { name: \"Pacific/Chatham\", shortName: \"GMT+12:45\" },\n { name: \"Pacific/Enderbury\", shortName: \"GMT+13\" },\n { name: \"Pacific/Fakaofo\", shortName: \"GMT+13\" },\n { name: \"Pacific/Tongatapu\", shortName: \"GMT+13\" },\n { name: \"Pacific/Apia\", shortName: \"GMT+13\" },\n { name: \"Pacific/Kiritimati\", shortName: \"GMT+14\" },\n { name: \"Antarctica/DumontDUrville\", shortName: \"GMT+10\" },\n { name: \"Australia/Hobart\", shortName: \"GMT+10\" },\n { name: \"Australia/Currie\", shortName: \"GMT+10\" },\n { name: \"Australia/Melbourne\", shortName: \"GMT+10\" },\n { name: \"Australia/Sydney\", shortName: \"GMT+10\" },\n { name: \"Australia/Brisbane\", shortName: \"GMT+10\" },\n { name: \"Australia/Lindeman\", shortName: \"GMT+10\" },\n { name: \"Pacific/Chuuk\", shortName: \"GMT+10\" },\n { name: \"Pacific/Guam\", shortName: \"GMT+10\" },\n { name: \"Pacific/Port_Moresby\", shortName: \"GMT+10\" },\n { name: \"Asia/Vladivostok\", shortName: \"GMT+10\" },\n { name: \"Asia/Ust-Nera\", shortName: \"GMT+10\" },\n { name: \"Australia/Lord_Howe\", shortName: \"GMT+10:30\" },\n];\n\nexport const TimeZoneUtils = {\n /**\n * Gets details for a specific time zone\n * @param timeZone - The IANA time zone name\n * @returns Object containing time zone name and short name\n * @throws Error if the time zone is invalid\n * @example\n * ```typescript\n * const details = TimeZoneUtils.getTimeZoneDetails('America/New_York');\n * console.log(details);\n * // Output: { name: 'America/New_York', shortName: 'EDT' }\n * ```\n */\n getTimeZoneDetails(timeZone: string): TimeZone {\n const format = new Intl.DateTimeFormat(undefined, {\n timeZoneName: \"short\",\n timeZone,\n });\n\n return {\n name: format.resolvedOptions().timeZone,\n shortName:\n format.formatToParts().find((part) => part.type === \"timeZoneName\")\n ?.value || \"\",\n };\n },\n\n /**\n * Gets a list of time zones, optionally filtered and with user's time zone first\n * @param filters - Optional array of time zone names to filter by\n * @param showUsersFirst - Whether to show user's time zone first in the list\n * @returns Array of time zone objects\n * @example\n * ```typescript\n * // Get all time zones with user's time zone first\n * const allTimeZones = TimeZoneUtils.getTimeZones();\n *\n * // Get filtered time zones without user's time zone first\n * const filteredTimeZones = TimeZoneUtils.getTimeZones(\n * ['America/New_York', 'Europe/London'],\n * false\n * );\n * ```\n */\n getTimeZones(filters?: string[], showUsersFirst = true): TimeZone[] {\n const hasFilters = filters && filters.length > 0;\n\n if (!hasFilters && !showUsersFirst) {\n return timeZones;\n }\n\n const usersTimeZone = showUsersFirst ? this.getUsersTimeZone() : null;\n\n const result = !hasFilters\n ? [...timeZones]\n : [...new Set(filters || [])]\n .map((filterZone) =>\n timeZones.findIndex((timeZone) => timeZone.name === filterZone)\n )\n .sort()\n .map((zoneIndex) => {\n if (timeZones[zoneIndex]) {\n return this.getTimeZoneDetails(timeZones[zoneIndex].name);\n }\n return null;\n })\n .filter((row): row is TimeZone => !!row);\n\n if (usersTimeZone && !hasFilters) {\n const userIndex = result.findIndex(\n (timeZone) => timeZone.name === usersTimeZone.name\n );\n\n if (userIndex !== -1) {\n result.splice(userIndex, 1);\n }\n\n result.unshift(usersTimeZone);\n }\n\n return result;\n },\n\n /**\n * Gets HTML option elements for time zones\n * @param filters - Optional array of time zone names to filter by\n * @returns Array of HTML option strings\n * @example\n * ```typescript\n * // Get options for specific time zones\n * const options = TimeZoneUtils.getTimeZonesOptions(\n * 'America/New_York',\n * 'Europe/London'\n * );\n *\n * // Use in select element\n * const select = document.createElement('select');\n * select.innerHTML = options.join('');\n * ```\n */\n getTimeZonesOptions(...filters: string[]): string[] {\n return this.getTimeZones(filters).map((timeZone) =>\n createTimeZoneOption(timeZone.name, timeZone.shortName)\n );\n },\n\n /**\n * Gets the user's time zone\n * @returns Time zone object for user's time zone\n * @example\n * ```typescript\n * const userTimeZone = TimeZoneUtils.getUsersTimeZone();\n * console.log(`User's time zone: ${userTimeZone.name} (${userTimeZone.shortName})`);\n * ```\n */\n getUsersTimeZone(): TimeZone {\n return this.getTimeZoneDetails(this.getUsersTimeZoneName());\n },\n\n /**\n * Gets the user's time zone name\n * @returns User's IANA time zone name\n * @example\n * ```typescript\n * const timeZoneName = TimeZoneUtils.getUsersTimeZoneName();\n * console.log(`User's time zone name: ${timeZoneName}`);\n * ```\n */\n getUsersTimeZoneName(): string {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n },\n\n /**\n * Checks if a time zone name is valid\n * @param timeZone - The IANA time zone name to check\n * @returns True if the time zone is valid\n * @example\n * ```typescript\n * const isValid = TimeZoneUtils.isValidTimeZone('America/New_York');\n * console.log(`Is valid time zone: ${isValid}`);\n * ```\n */\n isValidTimeZone(timeZone: string): boolean {\n return !!timeZones.find((item) => item.name === timeZone);\n },\n};\n"],"names":[],"mappings":"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"}