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.

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