var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.tsx var src_exports = {}; __export(src_exports, { allTimezones: () => timezone_list_default, default: () => src_default }); module.exports = __toCommonJS(src_exports); var React = __toESM(require("react"), 1); var import_react_select = __toESM(require("react-select"), 1); var import_spacetime = __toESM(require("spacetime"), 1); var import_timezone_soft = __toESM(require("timezone-soft"), 1); // src/timezone-list.ts var allTimezones = { "Pacific/Midway": "Midway Island, Samoa", "Pacific/Honolulu": "Hawaii", "America/Juneau": "Alaska", "America/Boise": "Mountain Time", "America/Dawson": "Dawson, Yukon", "America/Chihuahua": "Chihuahua, La Paz, Mazatlan", "America/Phoenix": "Arizona", "America/Chicago": "Central Time", "America/Regina": "Saskatchewan", "America/Mexico_City": "Guadalajara, Mexico City, Monterrey", "America/Belize": "Central America", "America/Detroit": "Eastern Time", "America/Bogota": "Bogota, Lima, Quito", "America/Caracas": "Caracas, La Paz", "America/Santiago": "Santiago", "America/St_Johns": "Newfoundland and Labrador", "America/Sao_Paulo": "Brasilia", "America/Tijuana": "Tijuana", "America/Montevideo": "Montevideo", "America/Argentina/Buenos_Aires": "Buenos Aires, Georgetown", "America/Godthab": "Greenland", "America/Los_Angeles": "Pacific Time", "Atlantic/Azores": "Azores", "Atlantic/Cape_Verde": "Cape Verde Islands", GMT: "UTC", "Europe/London": "Edinburgh, London", "Europe/Dublin": "Dublin", "Europe/Lisbon": "Lisbon", "Africa/Casablanca": "Casablanca, Monrovia", "Atlantic/Canary": "Canary Islands", "Europe/Belgrade": "Belgrade, Bratislava, Budapest, Ljubljana, Prague", "Europe/Sarajevo": "Sarajevo, Skopje, Warsaw, Zagreb", "Europe/Brussels": "Brussels, Copenhagen, Madrid, Paris", "Europe/Amsterdam": "Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna", "Africa/Algiers": "West Central Africa", "Europe/Bucharest": "Bucharest", "Africa/Cairo": "Cairo", "Europe/Helsinki": "Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius", "Europe/Athens": "Athens, Minsk", "Asia/Jerusalem": "Jerusalem", "Africa/Harare": "Harare, Pretoria", "Europe/Moscow": "Istanbul, Moscow, St. Petersburg, Volgograd", "Asia/Kuwait": "Kuwait, Riyadh", "Africa/Nairobi": "Nairobi", "Asia/Baghdad": "Baghdad", "Asia/Tehran": "Tehran", "Asia/Dubai": "Abu Dhabi, Muscat", "Asia/Baku": "Baku, Tbilisi, Yerevan", "Asia/Kabul": "Kabul", "Asia/Yekaterinburg": "Ekaterinburg", "Asia/Karachi": "Islamabad, Karachi, Tashkent", "Asia/Kolkata": "Chennai, Kolkata, Mumbai, New Delhi", "Asia/Kathmandu": "Kathmandu", "Asia/Dhaka": "Astana, Dhaka", "Asia/Colombo": "Sri Jayawardenepura", "Asia/Almaty": "Almaty, Novosibirsk", "Asia/Rangoon": "Yangon Rangoon", "Asia/Bangkok": "Bangkok, Hanoi, Jakarta", "Asia/Krasnoyarsk": "Krasnoyarsk", "Asia/Shanghai": "Beijing, Chongqing, Hong Kong SAR, Urumqi", "Asia/Kuala_Lumpur": "Kuala Lumpur, Singapore", "Asia/Taipei": "Taipei", "Australia/Perth": "Perth", "Asia/Irkutsk": "Irkutsk, Ulaanbaatar", "Asia/Seoul": "Seoul", "Asia/Tokyo": "Osaka, Sapporo, Tokyo", "Asia/Yakutsk": "Yakutsk", "Australia/Darwin": "Darwin", "Australia/Adelaide": "Adelaide", "Australia/Sydney": "Canberra, Melbourne, Sydney", "Australia/Brisbane": "Brisbane", "Australia/Hobart": "Hobart", "Asia/Vladivostok": "Vladivostok", "Pacific/Guam": "Guam, Port Moresby", "Asia/Magadan": "Magadan, Solomon Islands, New Caledonia", "Asia/Kamchatka": "Kamchatka, Marshall Islands", "Pacific/Fiji": "Fiji Islands", "Pacific/Auckland": "Auckland, Wellington", "Pacific/Tongatapu": "Nuku'alofa" }; var timezone_list_default = allTimezones; // src/index.tsx var TimezoneSelect = ({ value, onBlur, onChange, labelStyle = "original", timezones, maxAbbrLength = 4, ...props }) => { if (!timezones) timezones = timezone_list_default; const getOptions = React.useMemo(() => { return Object.entries(timezones).reduce((selectOptions, zone) => { try { const now = import_spacetime.default.now(zone[0]); const tz = now.timezone(); const tzStrings = (0, import_timezone_soft.default)(zone[0]); let label = ""; let abbr = now.isDST() ? tzStrings[0].daylight.abbr : tzStrings[0].standard.abbr; let altName = now.isDST() ? tzStrings[0].daylight.name : tzStrings[0].standard.name; const min = tz.current.offset * 60; const hr = `${min / 60 ^ 0}:` + (min % 60 === 0 ? "00" : Math.abs(min % 60)); const prefix = `(GMT${hr.includes("-") ? hr : `+${hr}`}) ${zone[1]}`; switch (labelStyle) { case "original": label = prefix; break; case "altName": label = `${prefix} ${altName?.length ? `(${altName})` : ""}`; break; case "abbrev": label = `${prefix} (${abbr.substring(0, maxAbbrLength)})`; break; default: label = `${prefix}`; } selectOptions.push({ value: tz.name, label, offset: tz.current.offset, abbrev: abbr, altName }); return selectOptions; } catch { return selectOptions; } }, []).sort((a, b) => a.offset - b.offset); }, [labelStyle, timezones]); const handleChange = (tz) => { onChange && onChange(tz); }; const findFuzzyTz = (zone) => { let currentTime = import_spacetime.default.now("GMT"); try { currentTime = import_spacetime.default.now(zone); } catch (err) { return; } return getOptions.filter( (tz) => tz.offset === currentTime.timezone().current.offset ).map((tz) => { let score = 0; if (currentTime.timezones[tz.value.toLowerCase()] && !!currentTime.timezones[tz.value.toLowerCase()].dst === currentTime.timezone().hasDst) { if (tz.value.toLowerCase().indexOf( currentTime.tz.substring(currentTime.tz.indexOf("/") + 1) ) !== -1) { score += 8; } if (tz.label.toLowerCase().indexOf( currentTime.tz.substring(currentTime.tz.indexOf("/") + 1) ) !== -1) { score += 4; } if (tz.value.toLowerCase().indexOf(currentTime.tz.substring(0, currentTime.tz.indexOf("/")))) { score += 2; } score += 1; } else if (tz.value === "GMT") { score += 1; } return { tz, score }; }).sort((a, b) => b.score - a.score).map(({ tz }) => tz)[0]; }; const parseTimezone = (zone) => { if (typeof zone === "object" && zone.value && zone.label) return zone; if (typeof zone === "string") { return getOptions.find((tz) => tz.value === zone) || zone.indexOf("/") !== -1 && findFuzzyTz(zone); } else if (zone.value && !zone.label) { return getOptions.find((tz) => tz.value === zone.value); } }; return /* @__PURE__ */ React.createElement( import_react_select.default, { value: parseTimezone(value), onChange: handleChange, options: getOptions, onBlur, ...props } ); }; var src_default = TimezoneSelect; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { allTimezones });