canvas-globe 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +137 -0
- package/COPYRIGHT +8 -0
- package/LICENSE +674 -0
- package/LICENSING.md +83 -0
- package/README.md +638 -0
- package/THIRD_PARTY_NOTICES.md +14 -0
- package/codemeta.json +34 -0
- package/dist/canvas-globe.umd.js +4338 -0
- package/dist/package.json +1 -0
- package/package.json +110 -0
- package/src/csv.js +151 -0
- package/src/data/timezones.js +5 -0
- package/src/data/world.js +6 -0
- package/src/element.js +144 -0
- package/src/export.js +19 -0
- package/src/geo-globe.js +2856 -0
- package/src/geo.js +286 -0
- package/src/index.js +19 -0
- package/src/license.js +36 -0
- package/src/media.js +160 -0
- package/src/presets.js +21 -0
- package/src/react.js +60 -0
- package/src/recorder.js +70 -0
- package/src/scenes.js +80 -0
- package/src/texture.js +129 -0
- package/src/themes.js +241 -0
- package/src/viewer.js +130 -0
- package/types/element.d.ts +41 -0
- package/types/index.d.ts +696 -0
- package/types/react.d.ts +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "commonjs" }
|
package/package.json
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "canvas-globe",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Zero-dependency JavaScript and React library for interactive 3D globes and flat world maps rendered with Canvas 2D. No WebGL or API key.",
|
|
5
|
+
"license": "GPL-3.0-only",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Harsh Jhunjhunuwala"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://canvasglobe.swiftools.com/",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/Shree-hari/canvas-globe.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/Shree-hari/canvas-globe/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"javascript-globe",
|
|
19
|
+
"interactive-globe",
|
|
20
|
+
"canvas-globe",
|
|
21
|
+
"globe",
|
|
22
|
+
"canvas",
|
|
23
|
+
"interactive",
|
|
24
|
+
"map",
|
|
25
|
+
"world-map",
|
|
26
|
+
"react-globe",
|
|
27
|
+
"react",
|
|
28
|
+
"globe-visualization",
|
|
29
|
+
"data-visualization",
|
|
30
|
+
"canvas-2d",
|
|
31
|
+
"no-webgl",
|
|
32
|
+
"zero-dependency",
|
|
33
|
+
"choropleth-map",
|
|
34
|
+
"orthographic-projection",
|
|
35
|
+
"geospatial",
|
|
36
|
+
"markers",
|
|
37
|
+
"great-circle-arcs",
|
|
38
|
+
"web-component",
|
|
39
|
+
"vanilla-javascript"
|
|
40
|
+
],
|
|
41
|
+
"type": "module",
|
|
42
|
+
"main": "./src/index.js",
|
|
43
|
+
"module": "./src/index.js",
|
|
44
|
+
"types": "./types/index.d.ts",
|
|
45
|
+
"unpkg": "./dist/canvas-globe.umd.js",
|
|
46
|
+
"jsdelivr": "./dist/canvas-globe.umd.js",
|
|
47
|
+
"exports": {
|
|
48
|
+
".": {
|
|
49
|
+
"types": "./types/index.d.ts",
|
|
50
|
+
"import": "./src/index.js",
|
|
51
|
+
"default": "./src/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./element": {
|
|
54
|
+
"types": "./types/element.d.ts",
|
|
55
|
+
"import": "./src/element.js",
|
|
56
|
+
"default": "./src/element.js"
|
|
57
|
+
},
|
|
58
|
+
"./react": {
|
|
59
|
+
"types": "./types/react.d.ts",
|
|
60
|
+
"import": "./src/react.js",
|
|
61
|
+
"default": "./src/react.js"
|
|
62
|
+
},
|
|
63
|
+
"./data/world": "./src/data/world.js",
|
|
64
|
+
"./package.json": "./package.json"
|
|
65
|
+
},
|
|
66
|
+
"files": [
|
|
67
|
+
"src",
|
|
68
|
+
"dist",
|
|
69
|
+
"types",
|
|
70
|
+
"README.md",
|
|
71
|
+
"CHANGELOG.md",
|
|
72
|
+
"COPYRIGHT",
|
|
73
|
+
"LICENSE",
|
|
74
|
+
"LICENSING.md",
|
|
75
|
+
"THIRD_PARTY_NOTICES.md",
|
|
76
|
+
"codemeta.json"
|
|
77
|
+
],
|
|
78
|
+
"sideEffects": [
|
|
79
|
+
"./src/element.js"
|
|
80
|
+
],
|
|
81
|
+
"publishConfig": {
|
|
82
|
+
"access": "public"
|
|
83
|
+
},
|
|
84
|
+
"scripts": {
|
|
85
|
+
"build": "node scripts/build.mjs",
|
|
86
|
+
"data": "node scripts/generate-data.mjs && node scripts/generate-timezones.mjs",
|
|
87
|
+
"example": "node scripts/serve.mjs",
|
|
88
|
+
"test": "node --test",
|
|
89
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
90
|
+
"smoke:package": "node scripts/package-smoke.mjs",
|
|
91
|
+
"release:check": "npm run test && npm run typecheck && npm run build && node scripts/release-check.mjs && npm run smoke:package",
|
|
92
|
+
"prepublishOnly": "npm run test && npm run typecheck && npm run build && node scripts/release-check.mjs"
|
|
93
|
+
},
|
|
94
|
+
"peerDependencies": {
|
|
95
|
+
"react": ">=17"
|
|
96
|
+
},
|
|
97
|
+
"peerDependenciesMeta": {
|
|
98
|
+
"react": {
|
|
99
|
+
"optional": true
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"devDependencies": {
|
|
103
|
+
"polygon-clipping": "^0.15.7",
|
|
104
|
+
"topojson-client": "^3.1.0",
|
|
105
|
+
"typescript": "^5.5.0"
|
|
106
|
+
},
|
|
107
|
+
"engines": {
|
|
108
|
+
"node": ">=18"
|
|
109
|
+
}
|
|
110
|
+
}
|
package/src/csv.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turns spreadsheet-shaped data into markers.
|
|
3
|
+
*
|
|
4
|
+
* Marketing data arrives as CSV, not GeoJSON, so this resolves rows by
|
|
5
|
+
* lat/lon columns first, then a city name, then a country code or name: using
|
|
6
|
+
* only geometry that already ships in the package.
|
|
7
|
+
*/
|
|
8
|
+
import { world as bundledWorld } from "./data/world.js";
|
|
9
|
+
import { countryLocation, placeLocation } from "./viewer.js";
|
|
10
|
+
import { geometryBounds } from "./geo.js";
|
|
11
|
+
|
|
12
|
+
const LAT_KEYS = ["lat", "latitude", "y"];
|
|
13
|
+
const LON_KEYS = ["lon", "lng", "long", "longitude", "x"];
|
|
14
|
+
const CITY_KEYS = ["city", "place", "town", "location"];
|
|
15
|
+
const COUNTRY_KEYS = ["country", "iso", "country_code", "countrycode", "nation"];
|
|
16
|
+
const COUNT_KEYS = ["count", "value", "total", "users", "visits", "amount", "n"];
|
|
17
|
+
const LABEL_KEYS = ["label", "name", "title"];
|
|
18
|
+
|
|
19
|
+
let countryIndex = null;
|
|
20
|
+
|
|
21
|
+
const buildCountryIndex = () => {
|
|
22
|
+
if (countryIndex) return countryIndex;
|
|
23
|
+
countryIndex = new Map();
|
|
24
|
+
for (const shape of bundledWorld) {
|
|
25
|
+
const [west, south, east, north] = geometryBounds(shape.geometry);
|
|
26
|
+
const point = { lon: (west + east) / 2, lat: (south + north) / 2, country: shape.iso || null };
|
|
27
|
+
for (const key of [shape.iso, shape.id, shape.name]) {
|
|
28
|
+
if (key != null) countryIndex.set(String(key).toLowerCase(), point);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return countryIndex;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Resolves a country code or name to a coordinate. */
|
|
35
|
+
export function countryPoint(name) {
|
|
36
|
+
if (!name) return null;
|
|
37
|
+
const key = String(name).trim().toLowerCase();
|
|
38
|
+
return buildCountryIndex().get(key) || countryLocation(key) || null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Best-effort coordinate for a free-text place. Tries the city table, then
|
|
43
|
+
* countries. Pass `gazetteer` to plug in your own `{ "Ahmedabad": [72.58, 23.03] }`.
|
|
44
|
+
*/
|
|
45
|
+
export function geocode(name, { gazetteer } = {}) {
|
|
46
|
+
if (!name) return null;
|
|
47
|
+
const key = String(name).trim();
|
|
48
|
+
if (gazetteer) {
|
|
49
|
+
const hit = gazetteer[key] ?? gazetteer[key.toLowerCase()];
|
|
50
|
+
if (Array.isArray(hit)) return { lon: hit[0], lat: hit[1] };
|
|
51
|
+
if (hit && typeof hit === "object") return { lon: hit.lon ?? hit.lng, lat: hit.lat };
|
|
52
|
+
}
|
|
53
|
+
return placeLocation(key) || countryPoint(key);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** RFC 4180-ish CSV parser: handles quotes, embedded commas and CRLF. */
|
|
57
|
+
export function parseCSV(text, { delimiter = "," } = {}) {
|
|
58
|
+
const rows = [];
|
|
59
|
+
let row = [], field = "", quoted = false;
|
|
60
|
+
for (let i = 0; i < text.length; i++) {
|
|
61
|
+
const c = text[i];
|
|
62
|
+
if (quoted) {
|
|
63
|
+
if (c === '"') {
|
|
64
|
+
if (text[i + 1] === '"') {
|
|
65
|
+
field += '"';
|
|
66
|
+
i++;
|
|
67
|
+
} else quoted = false;
|
|
68
|
+
} else field += c;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (c === '"') quoted = true;
|
|
72
|
+
else if (c === delimiter) {
|
|
73
|
+
row.push(field);
|
|
74
|
+
field = "";
|
|
75
|
+
} else if (c === "\n" || c === "\r") {
|
|
76
|
+
if (c === "\r" && text[i + 1] === "\n") i++;
|
|
77
|
+
row.push(field);
|
|
78
|
+
rows.push(row);
|
|
79
|
+
row = [];
|
|
80
|
+
field = "";
|
|
81
|
+
} else field += c;
|
|
82
|
+
}
|
|
83
|
+
if (field !== "" || row.length) {
|
|
84
|
+
row.push(field);
|
|
85
|
+
rows.push(row);
|
|
86
|
+
}
|
|
87
|
+
if (!rows.length) return [];
|
|
88
|
+
const header = rows[0].map((h) => h.trim().toLowerCase());
|
|
89
|
+
return rows.slice(1)
|
|
90
|
+
.filter((r) => r.some((v) => v !== ""))
|
|
91
|
+
.map((r) => {
|
|
92
|
+
const out = {};
|
|
93
|
+
header.forEach((key, i) => (out[key] = (r[i] ?? "").trim()));
|
|
94
|
+
return out;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const pick = (row, keys) => {
|
|
99
|
+
for (const key of keys) if (row[key] != null && row[key] !== "") return row[key];
|
|
100
|
+
return null;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Number(null) is 0, which would make every row look like it sits at (0, 0).
|
|
104
|
+
const num = (value) => {
|
|
105
|
+
if (value == null || value === "") return NaN;
|
|
106
|
+
const n = Number(value);
|
|
107
|
+
return Number.isFinite(n) ? n : NaN;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Converts parsed rows to markers. Unresolvable rows are dropped and reported
|
|
112
|
+
* on the returned array as `skipped`.
|
|
113
|
+
*/
|
|
114
|
+
export function fromRows(rows, options = {}) {
|
|
115
|
+
const { gazetteer, extra = true } = options;
|
|
116
|
+
const markers = [];
|
|
117
|
+
const skipped = [];
|
|
118
|
+
for (const row of rows) {
|
|
119
|
+
const lat = num(pick(row, LAT_KEYS));
|
|
120
|
+
const lon = num(pick(row, LON_KEYS));
|
|
121
|
+
let point = Number.isFinite(lat) && Number.isFinite(lon) ? { lat, lon } : null;
|
|
122
|
+
if (!point) {
|
|
123
|
+
const city = pick(row, CITY_KEYS);
|
|
124
|
+
const country = pick(row, COUNTRY_KEYS);
|
|
125
|
+
const found = (city && geocode(city, { gazetteer })) || (country && countryPoint(country));
|
|
126
|
+
if (found) point = { lat: found.lat, lon: found.lon };
|
|
127
|
+
}
|
|
128
|
+
if (!point) {
|
|
129
|
+
skipped.push(row);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const marker = { lat: point.lat, lon: point.lon };
|
|
133
|
+
const count = num(pick(row, COUNT_KEYS));
|
|
134
|
+
if (Number.isFinite(count)) marker.count = count;
|
|
135
|
+
const label = pick(row, LABEL_KEYS) || pick(row, CITY_KEYS) || pick(row, COUNTRY_KEYS);
|
|
136
|
+
if (label) marker.label = label;
|
|
137
|
+
if (row.emoji) marker.emoji = row.emoji;
|
|
138
|
+
if (row.image) marker.image = row.image;
|
|
139
|
+
if (row.color) marker.color = row.color;
|
|
140
|
+
if (row.date) marker.date = row.date;
|
|
141
|
+
if (extra) for (const [k, v] of Object.entries(row)) if (!(k in marker)) marker[k] = v;
|
|
142
|
+
markers.push(marker);
|
|
143
|
+
}
|
|
144
|
+
markers.skipped = skipped;
|
|
145
|
+
return markers;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** `fromCSV("city,count\nAhmedabad,12")` → markers. */
|
|
149
|
+
export function fromCSV(text, options = {}) {
|
|
150
|
+
return fromRows(parseCSV(text, options), options);
|
|
151
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Generated by scripts/generate-timezones.mjs. Do not edit.
|
|
2
|
+
// Source: the IANA tz database (public domain).
|
|
3
|
+
// "zone|lon|lat|country", coordinates in hundredths of a degree.
|
|
4
|
+
export const zoneTable = "Europe/Andorra|152|4250|AD;Asia/Dubai|5530|2530|AE;Asia/Kabul|6920|3452|AF;Europe/Tirane|1983|4133|AL;Asia/Yerevan|4450|4018|AM;Antarctica/Casey|11052|-6628|AQ;Antarctica/Davis|7797|-6858|AQ;Antarctica/Mawson|6288|-6760|AQ;Antarctica/Palmer|-6410|-6480|AQ;Antarctica/Rothera|-6813|-6757|AQ;Antarctica/Troll|253|-7201|AQ;Antarctica/Vostok|10690|-7840|AQ;America/Argentina/Buenos_Aires|-5845|-3460|AR;America/Argentina/Cordoba|-6418|-3140|AR;America/Argentina/Salta|-6542|-2478|AR;America/Argentina/Jujuy|-6530|-2418|AR;America/Argentina/Tucuman|-6522|-2682|AR;America/Argentina/Catamarca|-6578|-2847|AR;America/Argentina/La_Rioja|-6685|-2943|AR;America/Argentina/San_Juan|-6852|-3153|AR;America/Argentina/Mendoza|-6882|-3288|AR;America/Argentina/San_Luis|-6635|-3332|AR;America/Argentina/Rio_Gallegos|-6922|-5163|AR;America/Argentina/Ushuaia|-6830|-5480|AR;Pacific/Pago_Pago|-17070|-1427|AS;Europe/Vienna|1633|4822|AT;Australia/Lord_Howe|15908|-3155|AU;Antarctica/Macquarie|15895|-5450|AU;Australia/Hobart|14732|-4288|AU;Australia/Melbourne|14497|-3782|AU;Australia/Sydney|15122|-3387|AU;Australia/Broken_Hill|14145|-3195|AU;Australia/Brisbane|15303|-2747|AU;Australia/Lindeman|14900|-2027|AU;Australia/Adelaide|13858|-3492|AU;Australia/Darwin|13083|-1247|AU;Australia/Perth|11585|-3195|AU;Australia/Eucla|12887|-3172|AU;Asia/Baku|4985|4038|AZ;America/Barbados|-5962|1310|BB;Asia/Dhaka|9042|2372|BD;Europe/Brussels|433|5083|BE;Europe/Sofia|2332|4268|BG;Atlantic/Bermuda|-6477|3228|BM;America/La_Paz|-6815|-1650|BO;America/Noronha|-3242|-385|BR;America/Belem|-4848|-145|BR;America/Fortaleza|-3850|-372|BR;America/Recife|-3490|-805|BR;America/Araguaina|-4820|-720|BR;America/Maceio|-3572|-967|BR;America/Bahia|-3852|-1298|BR;America/Sao_Paulo|-4662|-2353|BR;America/Campo_Grande|-5462|-2045|BR;America/Cuiaba|-5608|-1558|BR;America/Santarem|-5487|-243|BR;America/Porto_Velho|-6390|-877|BR;America/Boa_Vista|-6067|282|BR;America/Manaus|-6002|-313|BR;America/Eirunepe|-6987|-667|BR;America/Rio_Branco|-6780|-997|BR;Asia/Thimphu|8965|2747|BT;Europe/Minsk|2757|5390|BY;America/Belize|-8820|1750|BZ;America/St_Johns|-5272|4757|CA;America/Halifax|-6360|4465|CA;America/Glace_Bay|-5995|4620|CA;America/Moncton|-6478|4610|CA;America/Goose_Bay|-6042|5333|CA;America/Toronto|-7938|4365|CA;America/Iqaluit|-6847|6373|CA;America/Winnipeg|-9715|4988|CA;America/Resolute|-9483|7470|CA;America/Rankin_Inlet|-9208|6282|CA;America/Regina|-10465|5040|CA;America/Swift_Current|-10783|5028|CA;America/Edmonton|-11347|5355|CA;America/Cambridge_Bay|-10505|6911|CA;America/Inuvik|-13372|6835|CA;America/Vancouver|-12312|4927|CA;America/Dawson_Creek|-12023|5577|CA;America/Fort_Nelson|-12270|5880|CA;America/Whitehorse|-13505|6072|CA;America/Dawson|-13942|6407|CA;Europe/Zurich|853|4738|CH;Africa/Abidjan|-403|532|CI;Pacific/Rarotonga|-15977|-2123|CK;America/Santiago|-7067|-3345|CL;America/Coyhaique|-7207|-4557|CL;America/Punta_Arenas|-7092|-5315|CL;Pacific/Easter|-10943|-2715|CL;Asia/Shanghai|12147|3123|CN;Asia/Urumqi|8758|4380|CN;America/Bogota|-7408|460|CO;America/Costa_Rica|-8408|993|CR;America/Havana|-8237|2313|CU;Atlantic/Cape_Verde|-2352|1492|CV;Asia/Nicosia|3337|3517|CY;Asia/Famagusta|3395|3512|CY;Europe/Prague|1443|5008|CZ;Europe/Berlin|1337|5250|DE;America/Santo_Domingo|-6990|1847|DO;Africa/Algiers|305|3678|DZ;America/Guayaquil|-7983|-217|EC;Pacific/Galapagos|-8960|-90|EC;Europe/Tallinn|2475|5942|EE;Africa/Cairo|3125|3005|EG;Africa/El_Aaiun|-1320|2715|EH;Europe/Madrid|-368|4040|ES;Africa/Ceuta|-532|3588|ES;Atlantic/Canary|-1540|2810|ES;Europe/Helsinki|2497|6017|FI;Pacific/Fiji|17842|-1813|FJ;Atlantic/Stanley|-5785|-5170|FK;Pacific/Kosrae|16298|532|FM;Atlantic/Faroe|-677|6202|FO;Europe/Paris|233|4887|FR;Europe/London|-13|5151|GB;Asia/Tbilisi|4482|4172|GE;America/Cayenne|-5233|493|GF;Europe/Gibraltar|-535|3613|GI;America/Nuuk|-5173|6418|GL;America/Danmarkshavn|-1867|7677|GL;America/Scoresbysund|-2197|7048|GL;America/Thule|-6878|7657|GL;Europe/Athens|2372|3797|GR;Atlantic/South_Georgia|-3653|-5427|GS;America/Guatemala|-9052|1463|GT;Pacific/Guam|14475|1347|GU;Africa/Bissau|-1558|1185|GW;America/Guyana|-5817|680|GY;Asia/Hong_Kong|11415|2228|HK;America/Tegucigalpa|-8722|1410|HN;America/Port-au-Prince|-7233|1853|HT;Europe/Budapest|1908|4750|HU;Asia/Jakarta|10680|-617|ID;Asia/Pontianak|10933|-3|ID;Asia/Makassar|11940|-512|ID;Asia/Jayapura|14070|-253|ID;Europe/Dublin|-625|5333|IE;Asia/Jerusalem|3522|3178|IL;Asia/Kolkata|8837|2253|IN;Indian/Chagos|7242|-733|IO;Asia/Baghdad|4442|3335|IQ;Asia/Tehran|5143|3567|IR;Europe/Rome|1248|4190|IT;America/Jamaica|-7679|1797|JM;Asia/Amman|3593|3195|JO;Asia/Tokyo|13974|3565|JP;Africa/Nairobi|3682|-128|KE;Asia/Bishkek|7460|4290|KG;Pacific/Tarawa|17300|142|KI;Pacific/Kanton|-17172|-278|KI;Pacific/Kiritimati|-15733|187|KI;Asia/Pyongyang|12575|3902|KP;Asia/Seoul|12697|3755|KR;Asia/Almaty|7695|4325|KZ;Asia/Qyzylorda|6547|4480|KZ;Asia/Qostanay|6362|5320|KZ;Asia/Aqtobe|5717|5028|KZ;Asia/Aqtau|5027|4452|KZ;Asia/Atyrau|5193|4712|KZ;Asia/Oral|5135|5122|KZ;Asia/Beirut|3550|3388|LB;Asia/Colombo|7985|693|LK;Africa/Monrovia|-1078|630|LR;Europe/Vilnius|2532|5468|LT;Europe/Riga|2410|5695|LV;Africa/Tripoli|1318|3290|LY;Africa/Casablanca|-758|3365|MA;Europe/Chisinau|2883|4700|MD;Pacific/Kwajalein|16733|908|MH;Asia/Yangon|9617|1678|MM;Asia/Ulaanbaatar|10688|4792|MN;Asia/Hovd|9165|4802|MN;Asia/Macau|11354|2220|MO;America/Martinique|-6108|1460|MQ;Europe/Malta|1452|3590|MT;Indian/Mauritius|5750|-2017|MU;Indian/Maldives|7350|417|MV;America/Mexico_City|-9915|1940|MX;America/Cancun|-8677|2108|MX;America/Merida|-8962|2097|MX;America/Monterrey|-10032|2567|MX;America/Matamoros|-9750|2583|MX;America/Chihuahua|-10608|2863|MX;America/Ciudad_Juarez|-10648|3173|MX;America/Ojinaga|-10442|2957|MX;America/Mazatlan|-10642|2322|MX;America/Bahia_Banderas|-10525|2080|MX;America/Hermosillo|-11097|2907|MX;America/Tijuana|-11702|3253|MX;Asia/Kuching|11033|155|MY;Africa/Maputo|3258|-2597|MZ;Africa/Windhoek|1710|-2257|NA;Pacific/Noumea|16645|-2227|NC;Pacific/Norfolk|16797|-2905|NF;Africa/Lagos|340|645|NG;America/Managua|-8628|1215|NI;Asia/Kathmandu|8532|2772|NP;Pacific/Nauru|16692|-52|NR;Pacific/Niue|-16992|-1902|NU;Pacific/Auckland|17477|-3687|NZ;Pacific/Chatham|-17655|-4395|NZ;America/Panama|-7953|897|PA;America/Lima|-7705|-1205|PE;Pacific/Tahiti|-14957|-1753|PF;Pacific/Marquesas|-13950|-900|PF;Pacific/Gambier|-13495|-2313|PF;Pacific/Port_Moresby|14717|-950|PG;Pacific/Bougainville|15557|-622|PG;Asia/Manila|12097|1459|PH;Asia/Karachi|6705|2487|PK;Europe/Warsaw|2100|5225|PL;America/Miquelon|-5633|4705|PM;Pacific/Pitcairn|-13008|-2507|PN;America/Puerto_Rico|-6611|1847|PR;Asia/Gaza|3447|3150|PS;Asia/Hebron|3510|3153|PS;Europe/Lisbon|-913|3872|PT;Atlantic/Madeira|-1690|3263|PT;Atlantic/Azores|-2567|3773|PT;Pacific/Palau|13448|733|PW;America/Asuncion|-5767|-2527|PY;Asia/Qatar|5153|2528|QA;Europe/Bucharest|2610|4443|RO;Europe/Belgrade|2050|4483|RS;Europe/Kaliningrad|2050|5472|RU;Europe/Moscow|3762|5576|RU;Europe/Simferopol|3410|4495|RU;Europe/Kirov|4965|5860|RU;Europe/Volgograd|4442|4873|RU;Europe/Astrakhan|4805|4635|RU;Europe/Saratov|4603|5157|RU;Europe/Ulyanovsk|4840|5433|RU;Europe/Samara|5015|5320|RU;Asia/Yekaterinburg|6060|5685|RU;Asia/Omsk|7340|5500|RU;Asia/Novosibirsk|8292|5503|RU;Asia/Barnaul|8375|5337|RU;Asia/Tomsk|8497|5650|RU;Asia/Novokuznetsk|8712|5375|RU;Asia/Krasnoyarsk|9283|5602|RU;Asia/Irkutsk|10433|5227|RU;Asia/Chita|11347|5205|RU;Asia/Yakutsk|12967|6200|RU;Asia/Khandyga|13555|6266|RU;Asia/Vladivostok|13193|4317|RU;Asia/Ust-Nera|14323|6456|RU;Asia/Magadan|15080|5957|RU;Asia/Sakhalin|14270|4697|RU;Asia/Srednekolymsk|15372|6747|RU;Asia/Kamchatka|15865|5302|RU;Asia/Anadyr|17748|6475|RU;Asia/Riyadh|4672|2463|SA;Pacific/Guadalcanal|16020|-953|SB;Africa/Khartoum|3253|1560|SD;Asia/Singapore|10385|128|SG;America/Paramaribo|-5517|583|SR;Africa/Juba|3162|485|SS;Africa/Sao_Tome|673|33|ST;America/El_Salvador|-8920|1370|SV;Asia/Damascus|3630|3350|SY;America/Grand_Turk|-7113|2147|TC;Africa/Ndjamena|1505|1212|TD;Asia/Bangkok|10052|1375|TH;Asia/Dushanbe|6880|3858|TJ;Pacific/Fakaofo|-17123|-937|TK;Asia/Dili|12558|-855|TL;Asia/Ashgabat|5838|3795|TM;Africa/Tunis|1018|3680|TN;Pacific/Tongatapu|-17520|-2113|TO;Europe/Istanbul|2897|4102|TR;Asia/Taipei|12150|2505|TW;Europe/Kyiv|3052|5043|UA;America/New_York|-7401|4071|US;America/Detroit|-8305|4233|US;America/Kentucky/Louisville|-8576|3825|US;America/Kentucky/Monticello|-8485|3683|US;America/Indiana/Indianapolis|-8616|3977|US;America/Indiana/Vincennes|-8753|3868|US;America/Indiana/Winamac|-8660|4105|US;America/Indiana/Marengo|-8634|3838|US;America/Indiana/Petersburg|-8728|3849|US;America/Indiana/Vevay|-8507|3875|US;America/Chicago|-8765|4185|US;America/Indiana/Tell_City|-8676|3795|US;America/Indiana/Knox|-8662|4130|US;America/Menominee|-8761|4511|US;America/North_Dakota/Center|-10130|4712|US;America/North_Dakota/New_Salem|-10141|4685|US;America/North_Dakota/Beulah|-10178|4726|US;America/Denver|-10498|3974|US;America/Boise|-11620|4361|US;America/Phoenix|-11207|3345|US;America/Los_Angeles|-11824|3405|US;America/Anchorage|-14990|6122|US;America/Juneau|-13442|5830|US;America/Sitka|-13530|5718|US;America/Metlakatla|-13158|5513|US;America/Yakutat|-13973|5955|US;America/Nome|-16541|6450|US;America/Adak|-17666|5188|US;Pacific/Honolulu|-15786|2131|US;America/Montevideo|-5621|-3491|UY;Asia/Samarkand|6680|3967|UZ;Asia/Tashkent|6930|4133|UZ;America/Caracas|-6693|1050|VE;Asia/Ho_Chi_Minh|10667|1075|VN;Pacific/Efate|16842|-1767|VU;Pacific/Apia|-17173|-1383|WS;Africa/Johannesburg|2800|-2625|ZA";
|
|
5
|
+
export const zoneAliases = "Australia/ACT>Australia/Sydney;Australia/LHI>Australia/Lord_Howe;Australia/NSW>Australia/Sydney;Australia/North>Australia/Darwin;Australia/Queensland>Australia/Brisbane;Australia/South>Australia/Adelaide;Australia/Tasmania>Australia/Hobart;Australia/Victoria>Australia/Melbourne;Australia/West>Australia/Perth;Australia/Yancowinna>Australia/Broken_Hill;Brazil/Acre>America/Rio_Branco;Brazil/DeNoronha>America/Noronha;Brazil/East>America/Sao_Paulo;Brazil/West>America/Manaus;CET>Europe/Brussels;Canada/Atlantic>America/Halifax;Canada/Central>America/Winnipeg;Canada/Eastern>America/Toronto;Canada/Mountain>America/Edmonton;Canada/Newfoundland>America/St_Johns;Canada/Pacific>America/Vancouver;Canada/Saskatchewan>America/Regina;Canada/Yukon>America/Whitehorse;Chile/Continental>America/Santiago;Chile/EasterIsland>Pacific/Easter;Cuba>America/Havana;EET>Europe/Athens;EST>America/Panama;Egypt>Africa/Cairo;Eire>Europe/Dublin;GB>Europe/London;GB-Eire>Europe/London;Hongkong>Asia/Hong_Kong;Iceland>Africa/Abidjan;Iran>Asia/Tehran;Israel>Asia/Jerusalem;Jamaica>America/Jamaica;Japan>Asia/Tokyo;Kwajalein>Pacific/Kwajalein;Libya>Africa/Tripoli;MET>Europe/Brussels;MST>America/Phoenix;Mexico/BajaNorte>America/Tijuana;Mexico/BajaSur>America/Mazatlan;Mexico/General>America/Mexico_City;NZ>Pacific/Auckland;NZ-CHAT>Pacific/Chatham;Navajo>America/Denver;PRC>Asia/Shanghai;Poland>Europe/Warsaw;Portugal>Europe/Lisbon;ROC>Asia/Taipei;ROK>Asia/Seoul;Singapore>Asia/Singapore;Turkey>Europe/Istanbul;US/Alaska>America/Anchorage;US/Aleutian>America/Adak;US/Arizona>America/Phoenix;US/Central>America/Chicago;US/East-Indiana>America/Indiana/Indianapolis;US/Eastern>America/New_York;US/Hawaii>Pacific/Honolulu;US/Indiana-Starke>America/Indiana/Knox;US/Michigan>America/Detroit;US/Mountain>America/Denver;US/Pacific>America/Los_Angeles;US/Samoa>Pacific/Pago_Pago;W-SU>Europe/Moscow;America/Buenos_Aires>America/Argentina/Buenos_Aires;America/Catamarca>America/Argentina/Catamarca;America/Cordoba>America/Argentina/Cordoba;America/Indianapolis>America/Indiana/Indianapolis;America/Jujuy>America/Argentina/Jujuy;America/Knox_IN>America/Indiana/Knox;America/Louisville>America/Kentucky/Louisville;America/Mendoza>America/Argentina/Mendoza;America/Virgin>America/Puerto_Rico;Pacific/Samoa>Pacific/Pago_Pago;Africa/Accra>Africa/Abidjan;Africa/Addis_Ababa>Africa/Nairobi;Africa/Asmara>Africa/Nairobi;Africa/Bamako>Africa/Abidjan;Africa/Bangui>Africa/Lagos;Africa/Banjul>Africa/Abidjan;Africa/Blantyre>Africa/Maputo;Africa/Brazzaville>Africa/Lagos;Africa/Bujumbura>Africa/Maputo;Africa/Conakry>Africa/Abidjan;Africa/Dakar>Africa/Abidjan;Africa/Dar_es_Salaam>Africa/Nairobi;Africa/Djibouti>Africa/Nairobi;Africa/Douala>Africa/Lagos;Africa/Freetown>Africa/Abidjan;Africa/Gaborone>Africa/Maputo;Africa/Harare>Africa/Maputo;Africa/Kampala>Africa/Nairobi;Africa/Kigali>Africa/Maputo;Africa/Kinshasa>Africa/Lagos;Africa/Libreville>Africa/Lagos;Africa/Lome>Africa/Abidjan;Africa/Luanda>Africa/Lagos;Africa/Lubumbashi>Africa/Maputo;Africa/Lusaka>Africa/Maputo;Africa/Malabo>Africa/Lagos;Africa/Maseru>Africa/Johannesburg;Africa/Mbabane>Africa/Johannesburg;Africa/Mogadishu>Africa/Nairobi;Africa/Niamey>Africa/Lagos;Africa/Nouakchott>Africa/Abidjan;Africa/Ouagadougou>Africa/Abidjan;Africa/Porto-Novo>Africa/Lagos;America/Anguilla>America/Puerto_Rico;America/Antigua>America/Puerto_Rico;America/Aruba>America/Puerto_Rico;America/Atikokan>America/Panama;America/Blanc-Sablon>America/Puerto_Rico;America/Cayman>America/Panama;America/Creston>America/Phoenix;America/Curacao>America/Puerto_Rico;America/Dominica>America/Puerto_Rico;America/Grenada>America/Puerto_Rico;America/Guadeloupe>America/Puerto_Rico;America/Kralendijk>America/Puerto_Rico;America/Lower_Princes>America/Puerto_Rico;America/Marigot>America/Puerto_Rico;America/Montserrat>America/Puerto_Rico;America/Nassau>America/Toronto;America/Port_of_Spain>America/Puerto_Rico;America/St_Barthelemy>America/Puerto_Rico;America/St_Kitts>America/Puerto_Rico;America/St_Lucia>America/Puerto_Rico;America/St_Thomas>America/Puerto_Rico;America/St_Vincent>America/Puerto_Rico;America/Tortola>America/Puerto_Rico;Antarctica/DumontDUrville>Pacific/Port_Moresby;Antarctica/McMurdo>Pacific/Auckland;Antarctica/Syowa>Asia/Riyadh;Arctic/Longyearbyen>Europe/Berlin;Asia/Aden>Asia/Riyadh;Asia/Bahrain>Asia/Qatar;Asia/Brunei>Asia/Kuching;Asia/Kuala_Lumpur>Asia/Singapore;Asia/Kuwait>Asia/Riyadh;Asia/Muscat>Asia/Dubai;Asia/Phnom_Penh>Asia/Bangkok;Asia/Vientiane>Asia/Bangkok;Atlantic/Reykjavik>Africa/Abidjan;Atlantic/St_Helena>Africa/Abidjan;Europe/Amsterdam>Europe/Brussels;Europe/Bratislava>Europe/Prague;Europe/Busingen>Europe/Zurich;Europe/Copenhagen>Europe/Berlin;Europe/Guernsey>Europe/London;Europe/Isle_of_Man>Europe/London;Europe/Jersey>Europe/London;Europe/Ljubljana>Europe/Belgrade;Europe/Luxembourg>Europe/Brussels;Europe/Mariehamn>Europe/Helsinki;Europe/Monaco>Europe/Paris;Europe/Oslo>Europe/Berlin;Europe/Podgorica>Europe/Belgrade;Europe/San_Marino>Europe/Rome;Europe/Sarajevo>Europe/Belgrade;Europe/Skopje>Europe/Belgrade;Europe/Stockholm>Europe/Berlin;Europe/Vaduz>Europe/Zurich;Europe/Vatican>Europe/Rome;Europe/Zagreb>Europe/Belgrade;Indian/Antananarivo>Africa/Nairobi;Indian/Christmas>Asia/Bangkok;Indian/Cocos>Asia/Yangon;Indian/Comoro>Africa/Nairobi;Indian/Kerguelen>Indian/Maldives;Indian/Mahe>Asia/Dubai;Indian/Mayotte>Africa/Nairobi;Indian/Reunion>Asia/Dubai;Pacific/Chuuk>Pacific/Port_Moresby;Pacific/Funafuti>Pacific/Tarawa;Pacific/Majuro>Pacific/Tarawa;Pacific/Midway>Pacific/Pago_Pago;Pacific/Pohnpei>Pacific/Guadalcanal;Pacific/Saipan>Pacific/Guam;Pacific/Wake>Pacific/Tarawa;Pacific/Wallis>Pacific/Tarawa;Africa/Timbuktu>Africa/Abidjan;America/Argentina/ComodRivadavia>America/Argentina/Catamarca;America/Atka>America/Adak;America/Coral_Harbour>America/Panama;America/Ensenada>America/Tijuana;America/Fort_Wayne>America/Indiana/Indianapolis;America/Montreal>America/Toronto;America/Nipigon>America/Toronto;America/Pangnirtung>America/Iqaluit;America/Porto_Acre>America/Rio_Branco;America/Rainy_River>America/Winnipeg;America/Rosario>America/Argentina/Cordoba;America/Santa_Isabel>America/Tijuana;America/Shiprock>America/Denver;America/Thunder_Bay>America/Toronto;America/Yellowknife>America/Edmonton;Antarctica/South_Pole>Pacific/Auckland;Asia/Choibalsan>Asia/Ulaanbaatar;Asia/Chongqing>Asia/Shanghai;Asia/Harbin>Asia/Shanghai;Asia/Kashgar>Asia/Urumqi;Asia/Tel_Aviv>Asia/Jerusalem;Atlantic/Jan_Mayen>Europe/Berlin;Australia/Canberra>Australia/Sydney;Australia/Currie>Australia/Hobart;Europe/Belfast>Europe/London;Europe/Tiraspol>Europe/Chisinau;Europe/Uzhgorod>Europe/Kyiv;Europe/Zaporozhye>Europe/Kyiv;Pacific/Enderbury>Pacific/Kanton;Pacific/Johnston>Pacific/Honolulu;Pacific/Yap>Pacific/Port_Moresby;WET>Europe/Lisbon;Africa/Asmera>Africa/Nairobi;America/Godthab>America/Nuuk;Asia/Ashkhabad>Asia/Ashgabat;Asia/Calcutta>Asia/Kolkata;Asia/Chungking>Asia/Shanghai;Asia/Dacca>Asia/Dhaka;Asia/Istanbul>Europe/Istanbul;Asia/Katmandu>Asia/Kathmandu;Asia/Macao>Asia/Macau;Asia/Rangoon>Asia/Yangon;Asia/Saigon>Asia/Ho_Chi_Minh;Asia/Thimbu>Asia/Thimphu;Asia/Ujung_Pandang>Asia/Makassar;Asia/Ulan_Bator>Asia/Ulaanbaatar;Atlantic/Faeroe>Atlantic/Faroe;Europe/Kiev>Europe/Kyiv;Europe/Nicosia>Asia/Nicosia;HST>Pacific/Honolulu;Pacific/Ponape>Pacific/Guadalcanal;Pacific/Truk>Pacific/Port_Moresby";
|