@unovis/mcp 1.7.0-mcp.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.
Files changed (153) hide show
  1. package/LICENSE +193 -0
  2. package/README.md +154 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +109 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/codegen/index.d.ts +14 -0
  7. package/dist/codegen/index.js +346 -0
  8. package/dist/codegen/index.js.map +1 -0
  9. package/dist/env/bbox.d.ts +13 -0
  10. package/dist/env/bbox.js +335 -0
  11. package/dist/env/bbox.js.map +1 -0
  12. package/dist/env/canvas.d.ts +9 -0
  13. package/dist/env/canvas.js +55 -0
  14. package/dist/env/canvas.js.map +1 -0
  15. package/dist/env/computed-style.d.ts +38 -0
  16. package/dist/env/computed-style.js +186 -0
  17. package/dist/env/computed-style.js.map +1 -0
  18. package/dist/env/fonts.d.ts +3 -0
  19. package/dist/env/fonts.js +103 -0
  20. package/dist/env/fonts.js.map +1 -0
  21. package/dist/env/index.d.ts +13 -0
  22. package/dist/env/index.js +121 -0
  23. package/dist/env/index.js.map +1 -0
  24. package/dist/env/raf-queue.d.ts +23 -0
  25. package/dist/env/raf-queue.js +51 -0
  26. package/dist/env/raf-queue.js.map +1 -0
  27. package/dist/env/size.d.ts +9 -0
  28. package/dist/env/size.js +30 -0
  29. package/dist/env/size.js.map +1 -0
  30. package/dist/html/document.d.ts +16 -0
  31. package/dist/html/document.js +95 -0
  32. package/dist/html/document.js.map +1 -0
  33. package/dist/index.d.ts +25 -0
  34. package/dist/index.js +18 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/recipes/area.d.ts +66 -0
  37. package/dist/recipes/area.js +76 -0
  38. package/dist/recipes/area.js.map +1 -0
  39. package/dist/recipes/bar.d.ts +67 -0
  40. package/dist/recipes/bar.js +69 -0
  41. package/dist/recipes/bar.js.map +1 -0
  42. package/dist/recipes/boxplot.d.ts +64 -0
  43. package/dist/recipes/boxplot.js +89 -0
  44. package/dist/recipes/boxplot.js.map +1 -0
  45. package/dist/recipes/chord.d.ts +41 -0
  46. package/dist/recipes/chord.js +72 -0
  47. package/dist/recipes/chord.js.map +1 -0
  48. package/dist/recipes/choropleth-regions.d.ts +49 -0
  49. package/dist/recipes/choropleth-regions.js +521 -0
  50. package/dist/recipes/choropleth-regions.js.map +1 -0
  51. package/dist/recipes/choropleth.d.ts +27 -0
  52. package/dist/recipes/choropleth.js +86 -0
  53. package/dist/recipes/choropleth.js.map +1 -0
  54. package/dist/recipes/donut.d.ts +25 -0
  55. package/dist/recipes/donut.js +51 -0
  56. package/dist/recipes/donut.js.map +1 -0
  57. package/dist/recipes/graph.d.ts +55 -0
  58. package/dist/recipes/graph.js +132 -0
  59. package/dist/recipes/graph.js.map +1 -0
  60. package/dist/recipes/heatmap.d.ts +21 -0
  61. package/dist/recipes/heatmap.js +79 -0
  62. package/dist/recipes/heatmap.js.map +1 -0
  63. package/dist/recipes/index.d.ts +5 -0
  64. package/dist/recipes/index.js +35 -0
  65. package/dist/recipes/index.js.map +1 -0
  66. package/dist/recipes/line.d.ts +69 -0
  67. package/dist/recipes/line.js +64 -0
  68. package/dist/recipes/line.js.map +1 -0
  69. package/dist/recipes/nested-donut.d.ts +22 -0
  70. package/dist/recipes/nested-donut.js +47 -0
  71. package/dist/recipes/nested-donut.js.map +1 -0
  72. package/dist/recipes/radial-bar.d.ts +25 -0
  73. package/dist/recipes/radial-bar.js +53 -0
  74. package/dist/recipes/radial-bar.js.map +1 -0
  75. package/dist/recipes/sankey.d.ts +41 -0
  76. package/dist/recipes/sankey.js +61 -0
  77. package/dist/recipes/sankey.js.map +1 -0
  78. package/dist/recipes/scatter.d.ts +68 -0
  79. package/dist/recipes/scatter.js +75 -0
  80. package/dist/recipes/scatter.js.map +1 -0
  81. package/dist/recipes/shared.d.ts +144 -0
  82. package/dist/recipes/shared.js +212 -0
  83. package/dist/recipes/shared.js.map +1 -0
  84. package/dist/recipes/timeline.d.ts +31 -0
  85. package/dist/recipes/timeline.js +123 -0
  86. package/dist/recipes/timeline.js.map +1 -0
  87. package/dist/recipes/treemap.d.ts +19 -0
  88. package/dist/recipes/treemap.js +43 -0
  89. package/dist/recipes/treemap.js.map +1 -0
  90. package/dist/recipes/types.d.ts +16 -0
  91. package/dist/recipes/types.js +2 -0
  92. package/dist/recipes/types.js.map +1 -0
  93. package/dist/render/headless.d.ts +62 -0
  94. package/dist/render/headless.js +158 -0
  95. package/dist/render/headless.js.map +1 -0
  96. package/dist/render/materialize.d.ts +35 -0
  97. package/dist/render/materialize.js +160 -0
  98. package/dist/render/materialize.js.map +1 -0
  99. package/dist/render/mutex.d.ts +9 -0
  100. package/dist/render/mutex.js +14 -0
  101. package/dist/render/mutex.js.map +1 -0
  102. package/dist/render/rasterize.d.ts +10 -0
  103. package/dist/render/rasterize.js +29 -0
  104. package/dist/render/rasterize.js.map +1 -0
  105. package/dist/render/renderer.d.ts +21 -0
  106. package/dist/render/renderer.js +66 -0
  107. package/dist/render/renderer.js.map +1 -0
  108. package/dist/render/spec.d.ts +95 -0
  109. package/dist/render/spec.js +15 -0
  110. package/dist/render/spec.js.map +1 -0
  111. package/dist/server.d.ts +4 -0
  112. package/dist/server.js +44 -0
  113. package/dist/server.js.map +1 -0
  114. package/dist/svg/collect-css.d.ts +14 -0
  115. package/dist/svg/collect-css.js +53 -0
  116. package/dist/svg/collect-css.js.map +1 -0
  117. package/dist/svg/css-vars.d.ts +17 -0
  118. package/dist/svg/css-vars.js +64 -0
  119. package/dist/svg/css-vars.js.map +1 -0
  120. package/dist/svg/header.d.ts +8 -0
  121. package/dist/svg/header.js +81 -0
  122. package/dist/svg/header.js.map +1 -0
  123. package/dist/svg/ids.d.ts +12 -0
  124. package/dist/svg/ids.js +94 -0
  125. package/dist/svg/ids.js.map +1 -0
  126. package/dist/svg/postprocess.d.ts +41 -0
  127. package/dist/svg/postprocess.js +135 -0
  128. package/dist/svg/postprocess.js.map +1 -0
  129. package/dist/tools/register.d.ts +12 -0
  130. package/dist/tools/register.js +127 -0
  131. package/dist/tools/register.js.map +1 -0
  132. package/dist/widget/bundle.js +1777 -0
  133. package/dist/widget/bundle.meta.json +3 -0
  134. package/dist/widget/entry.d.ts +34 -0
  135. package/dist/widget/entry.js +118 -0
  136. package/dist/widget/entry.js.map +1 -0
  137. package/dist/widget/interactions.d.ts +14 -0
  138. package/dist/widget/interactions.js +151 -0
  139. package/dist/widget/interactions.js.map +1 -0
  140. package/dist/widget/unovis-slim.d.ts +33 -0
  141. package/dist/widget/unovis-slim.js +34 -0
  142. package/dist/widget/unovis-slim.js.map +1 -0
  143. package/docs/README.md +56 -0
  144. package/docs/architecture.md +158 -0
  145. package/docs/chart-spec.md +148 -0
  146. package/docs/getting-started.md +175 -0
  147. package/docs/interactive.md +125 -0
  148. package/docs/output-types.md +170 -0
  149. package/docs/programmatic.md +234 -0
  150. package/docs/tools.md +273 -0
  151. package/docs/troubleshooting.md +140 -0
  152. package/fonts/README.md +19 -0
  153. package/package.json +73 -0
@@ -0,0 +1,521 @@
1
+ /** Area id lookup tables for the choropleth recipe.
2
+ *
3
+ * The TopoJSONMap joins area data to map features by comparing the feature's
4
+ * `id` with the datum's `id` (string equality), and each map uses a different
5
+ * id scheme:
6
+ *
7
+ * - world: ISO 3166-1 alpha-2 codes ('US', 'DE', 'BR')
8
+ * - usa: numeric state FIPS codes WITHOUT zero-padding ('6' = California)
9
+ * - germany / france / india: ISO 3166-2 codes ('DE-BY', 'FR-11', 'IN-MH')
10
+ * - uk: GSS statistical region codes ('E15000007' = London)
11
+ * - china: 'CN-XX' codes that do NOT follow ISO 3166-2 (e.g. the map's
12
+ * 'CN-HA' is Hainan while ISO CN-HA is Henan) — join by name
13
+ *
14
+ * Since several of these are unguessable for tool callers, `resolveArea`
15
+ * accepts codes in common formats (USPS state abbreviations, zero-padded
16
+ * FIPS, bare region codes without the country prefix) as well as area names.
17
+ *
18
+ * Rows are generated from the @unovis/ts map files (feature id +
19
+ * `properties.name`) with hand-curated aliases appended:
20
+ * `[featureId, displayName, ...aliases]`.
21
+ */
22
+ /** Lowercase and strip diacritics/punctuation for tolerant name matching */
23
+ export const normalizeKey = (value) => value
24
+ .toLowerCase()
25
+ .normalize('NFD')
26
+ .replace(/[̀-ͯ]/g, '')
27
+ .replace(/[-_,.'’()]/g, ' ')
28
+ .replace(/\s+/g, ' ')
29
+ .trim();
30
+ const WORLD_REGIONS = [
31
+ ['AD', 'Andorra'],
32
+ ['AE', 'United Arab Emirates', 'uae'],
33
+ ['AF', 'Afghanistan'],
34
+ ['AG', 'Antigua and Barbuda'],
35
+ ['AI', 'Anguilla'],
36
+ ['AL', 'Albania'],
37
+ ['AM', 'Armenia'],
38
+ ['AO', 'Angola'],
39
+ ['AR', 'Argentina'],
40
+ ['AS', 'American Samoa'],
41
+ ['AT', 'Austria'],
42
+ ['AU', 'Australia'],
43
+ ['AW', 'Aruba'],
44
+ ['AX', 'Åland Islands'],
45
+ ['AZ', 'Azerbaijan'],
46
+ ['BA', 'Bosnia and Herzegovina'],
47
+ ['BB', 'Barbados'],
48
+ ['BD', 'Bangladesh'],
49
+ ['BE', 'Belgium'],
50
+ ['BF', 'Burkina Faso'],
51
+ ['BG', 'Bulgaria'],
52
+ ['BH', 'Bahrain'],
53
+ ['BI', 'Burundi'],
54
+ ['BJ', 'Benin'],
55
+ ['BM', 'Bermuda'],
56
+ ['BN', 'Brunei Darussalam', 'brunei'],
57
+ ['BO', 'Bolivia, Plurinational State of', 'bolivia'],
58
+ ['BR', 'Brazil'],
59
+ ['BS', 'Bahamas', 'the bahamas'],
60
+ ['BT', 'Bhutan'],
61
+ ['BW', 'Botswana'],
62
+ ['BY', 'Belarus'],
63
+ ['BZ', 'Belize'],
64
+ ['CA', 'Canada'],
65
+ ['CC', 'Cocos Islands'],
66
+ ['CD', 'Congo, the Democratic Republic of the', 'dr congo', 'democratic republic of the congo', 'drc', 'congo kinshasa'],
67
+ ['CF', 'Central African Republic'],
68
+ ['CG', 'Congo', 'republic of the congo', 'congo brazzaville'],
69
+ ['CH', 'Switzerland'],
70
+ ['CI', 'Côte d\'Ivoire', 'ivory coast'],
71
+ ['CK', 'Cook Islands'],
72
+ ['CL', 'Chile'],
73
+ ['CM', 'Cameroon'],
74
+ ['CN', 'China'],
75
+ ['CO', 'Colombia'],
76
+ ['CR', 'Costa Rica'],
77
+ ['CU', 'Cuba'],
78
+ ['CV', 'Cape Verde', 'cabo verde'],
79
+ ['CW', 'Curaçao'],
80
+ ['CX', 'Christmas Island'],
81
+ ['CY', 'Cyprus'],
82
+ ['CZ', 'Czech Republic', 'czechia'],
83
+ ['DE', 'Germany'],
84
+ ['DJ', 'Djibouti'],
85
+ ['DK', 'Denmark'],
86
+ ['DM', 'Dominica'],
87
+ ['DO', 'Dominican Republic'],
88
+ ['DZ', 'Algeria'],
89
+ ['EC', 'Ecuador'],
90
+ ['EE', 'Estonia'],
91
+ ['EG', 'Egypt'],
92
+ ['EH', 'Western Sahara'],
93
+ ['ER', 'Eritrea'],
94
+ ['ES', 'Spain'],
95
+ ['ET', 'Ethiopia'],
96
+ ['FI', 'Finland'],
97
+ ['FJ', 'Fiji'],
98
+ ['FK', 'Falkland Islands (Malvinas)', 'falkland islands'],
99
+ ['FM', 'Micronesia, Federated States of', 'micronesia'],
100
+ ['FO', 'Faroe Islands'],
101
+ ['FR', 'France'],
102
+ ['GA', 'Gabon'],
103
+ ['GB', 'United Kingdom', 'uk', 'great britain', 'britain', 'england'],
104
+ ['GD', 'Grenada'],
105
+ ['GE', 'Georgia'],
106
+ ['GF', 'French Guyana'],
107
+ ['GG', 'Guernsey'],
108
+ ['GH', 'Ghana'],
109
+ ['GL', 'Greenland'],
110
+ ['GM', 'Gambia', 'the gambia'],
111
+ ['GN', 'Guinea'],
112
+ ['GQ', 'Equatorial Guinea'],
113
+ ['GR', 'Greece'],
114
+ ['GT', 'Guatemala'],
115
+ ['GU', 'Guam'],
116
+ ['GW', 'Guinea-Bissau'],
117
+ ['GY', 'Guyana'],
118
+ ['HK', 'Hong Kong'],
119
+ ['HM', 'Heard Island and McDonald Islands'],
120
+ ['HN', 'Honduras'],
121
+ ['HR', 'Croatia'],
122
+ ['HT', 'Haiti'],
123
+ ['HU', 'Hungary'],
124
+ ['ID', 'Indonesia'],
125
+ ['IE', 'Ireland'],
126
+ ['IL', 'Israel'],
127
+ ['IM', 'Isle of Man'],
128
+ ['IN', 'India'],
129
+ ['IO', 'British Indian Ocean Territory'],
130
+ ['IQ', 'Iraq'],
131
+ ['IR', 'Iran, Islamic Republic of', 'iran'],
132
+ ['IS', 'Iceland'],
133
+ ['IT', 'Italy'],
134
+ ['JE', 'Jersey'],
135
+ ['JM', 'Jamaica'],
136
+ ['JO', 'Jordan'],
137
+ ['JP', 'Japan'],
138
+ ['KE', 'Kenya'],
139
+ ['KG', 'Kyrgyzstan'],
140
+ ['KH', 'Cambodia'],
141
+ ['KI', 'Kiribati'],
142
+ ['KM', 'Comoros'],
143
+ ['KN', 'Saint Kitts and Nevis', 'saint kitts'],
144
+ ['KP', 'Korea, Democratic People\'s Republic of', 'north korea'],
145
+ ['KR', 'Korea, Republic of', 'south korea', 'korea'],
146
+ ['KW', 'Kuwait'],
147
+ ['KY', 'Cayman Islands'],
148
+ ['KZ', 'Kazakhstan'],
149
+ ['LA', 'Lao People\'s Democratic Republic', 'laos'],
150
+ ['LB', 'Lebanon'],
151
+ ['LC', 'Saint Lucia'],
152
+ ['LI', 'Liechtenstein'],
153
+ ['LK', 'Sri Lanka'],
154
+ ['LR', 'Liberia'],
155
+ ['LS', 'Lesotho'],
156
+ ['LT', 'Lithuania'],
157
+ ['LU', 'Luxembourg'],
158
+ ['LV', 'Latvia'],
159
+ ['LY', 'Libya'],
160
+ ['MA', 'Morocco'],
161
+ ['MC', 'Monaco'],
162
+ ['MD', 'Moldova, Republic of', 'moldova'],
163
+ ['ME', 'Montenegro'],
164
+ ['MF', 'Saint Martin (French part)'],
165
+ ['MG', 'Madagascar'],
166
+ ['MH', 'Marshall Islands'],
167
+ ['MK', 'Macedonia, the former Yugoslav Republic of', 'macedonia', 'north macedonia'],
168
+ ['ML', 'Mali'],
169
+ ['MM', 'Myanmar', 'burma'],
170
+ ['MN', 'Mongolia'],
171
+ ['MO', 'Macao', 'macau'],
172
+ ['MP', 'Northern Mariana Islands'],
173
+ ['MR', 'Mauritania'],
174
+ ['MS', 'Montserrat'],
175
+ ['MT', 'Malta'],
176
+ ['MU', 'Mauritius'],
177
+ ['MV', 'Maldives'],
178
+ ['MW', 'Malawi'],
179
+ ['MX', 'Mexico'],
180
+ ['MY', 'Malaysia'],
181
+ ['MZ', 'Mozambique'],
182
+ ['NA', 'Namibia'],
183
+ ['NC', 'New Caledonia'],
184
+ ['NE', 'Niger'],
185
+ ['NF', 'Norfolk Island'],
186
+ ['NG', 'Nigeria'],
187
+ ['NI', 'Nicaragua'],
188
+ ['NL', 'Netherlands', 'holland'],
189
+ ['NO', 'Norway'],
190
+ ['NP', 'Nepal'],
191
+ ['NU', 'Niue'],
192
+ ['NZ', 'New Zealand'],
193
+ ['OM', 'Oman'],
194
+ ['PA', 'Panama'],
195
+ ['PE', 'Peru'],
196
+ ['PF', 'French Polynesia'],
197
+ ['PG', 'Papua New Guinea'],
198
+ ['PH', 'Philippines'],
199
+ ['PK', 'Pakistan'],
200
+ ['PL', 'Poland'],
201
+ ['PM', 'Saint Pierre and Miquelon'],
202
+ ['PN', 'Pitcairn'],
203
+ ['PR', 'Puerto Rico'],
204
+ ['PT', 'Portugal'],
205
+ ['PW', 'Palau'],
206
+ ['PY', 'Paraguay'],
207
+ ['QA', 'Qatar'],
208
+ ['RO', 'Romania'],
209
+ ['RS', 'Serbia'],
210
+ ['RU', 'Russian Federation', 'russia'],
211
+ ['RW', 'Rwanda'],
212
+ ['SA', 'Saudi Arabia'],
213
+ ['SB', 'Solomon Islands'],
214
+ ['SC', 'Seychelles'],
215
+ ['SD', 'Sudan'],
216
+ ['SE', 'Sweden'],
217
+ ['SG', 'Singapore'],
218
+ ['SH', 'Saint Helena, Ascension and Tristan da Cunha', 'saint helena'],
219
+ ['SI', 'Slovenia'],
220
+ ['SK', 'Slovakia'],
221
+ ['SL', 'Sierra Leone'],
222
+ ['SM', 'San Marino'],
223
+ ['SN', 'Senegal'],
224
+ ['SO', 'Somalia'],
225
+ ['SR', 'Suriname'],
226
+ ['SS', 'South Sudan'],
227
+ ['ST', 'Sao Tome and Principe'],
228
+ ['SV', 'El Salvador'],
229
+ ['SX', 'Sint Maarten (Dutch part)'],
230
+ ['SY', 'Syrian Arab Republic', 'syria'],
231
+ ['SZ', 'Swaziland', 'eswatini'],
232
+ ['TC', 'Turks and Caicos Islands'],
233
+ ['TD', 'Chad'],
234
+ ['TF', 'French Southern Territories'],
235
+ ['TG', 'Togo'],
236
+ ['TH', 'Thailand'],
237
+ ['TJ', 'Tajikistan'],
238
+ ['TL', 'Timor-Leste', 'east timor'],
239
+ ['TM', 'Turkmenistan'],
240
+ ['TN', 'Tunisia'],
241
+ ['TO', 'Tonga'],
242
+ ['TR', 'Turkey', 'turkiye'],
243
+ ['TT', 'Trinidad and Tobago'],
244
+ ['TW', 'Taiwan, Province of China', 'taiwan'],
245
+ ['TZ', 'Tanzania, United Republic of', 'tanzania'],
246
+ ['UA', 'Ukraine'],
247
+ ['UG', 'Uganda'],
248
+ ['US', 'United States', 'usa', 'united states of america', 'america'],
249
+ ['UY', 'Uruguay'],
250
+ ['UZ', 'Uzbekistan'],
251
+ ['VC', 'Saint Vincent and the Grenadines', 'saint vincent'],
252
+ ['VE', 'Venezuela, Bolivarian Republic of', 'venezuela'],
253
+ ['VG', 'Virgin Islands, British', 'british virgin islands'],
254
+ ['VI', 'Virgin Islands, U.S.', 'us virgin islands'],
255
+ ['VN', 'Viet Nam', 'vietnam'],
256
+ ['VU', 'Vanuatu'],
257
+ ['WF', 'Wallis and Futuna'],
258
+ ['WS', 'Samoa'],
259
+ ['XK', 'Kosovo'],
260
+ ['YE', 'Yemen'],
261
+ ['ZA', 'South Africa'],
262
+ ['ZM', 'Zambia'],
263
+ ['ZW', 'Zimbabwe'],
264
+ ];
265
+ const USA_REGIONS = [
266
+ ['1', 'Alabama', 'AL'],
267
+ ['2', 'Alaska', 'AK'],
268
+ ['4', 'Arizona', 'AZ'],
269
+ ['5', 'Arkansas', 'AR'],
270
+ ['6', 'California', 'CA'],
271
+ ['8', 'Colorado', 'CO'],
272
+ ['9', 'Connecticut', 'CT'],
273
+ ['10', 'Delaware', 'DE'],
274
+ ['11', 'District of Columbia', 'DC', 'washington dc', 'washington d c'],
275
+ ['12', 'Florida', 'FL'],
276
+ ['13', 'Georgia', 'GA'],
277
+ ['15', 'Hawaii', 'HI'],
278
+ ['16', 'Idaho', 'ID'],
279
+ ['17', 'Illinois', 'IL'],
280
+ ['18', 'Indiana', 'IN'],
281
+ ['19', 'Iowa', 'IA'],
282
+ ['20', 'Kansas', 'KS'],
283
+ ['21', 'Kentucky', 'KY'],
284
+ ['22', 'Louisiana', 'LA'],
285
+ ['23', 'Maine', 'ME'],
286
+ ['24', 'Maryland', 'MD'],
287
+ ['25', 'Massachusetts', 'MA'],
288
+ ['26', 'Michigan', 'MI'],
289
+ ['27', 'Minnesota', 'MN'],
290
+ ['28', 'Mississippi', 'MS'],
291
+ ['29', 'Missouri', 'MO'],
292
+ ['30', 'Montana', 'MT'],
293
+ ['31', 'Nebraska', 'NE'],
294
+ ['32', 'Nevada', 'NV'],
295
+ ['33', 'New Hampshire', 'NH'],
296
+ ['34', 'New Jersey', 'NJ'],
297
+ ['35', 'New Mexico', 'NM'],
298
+ ['36', 'New York', 'NY'],
299
+ ['37', 'North Carolina', 'NC'],
300
+ ['38', 'North Dakota', 'ND'],
301
+ ['39', 'Ohio', 'OH'],
302
+ ['40', 'Oklahoma', 'OK'],
303
+ ['41', 'Oregon', 'OR'],
304
+ ['42', 'Pennsylvania', 'PA'],
305
+ ['44', 'Rhode Island', 'RI'],
306
+ ['45', 'South Carolina', 'SC'],
307
+ ['46', 'South Dakota', 'SD'],
308
+ ['47', 'Tennessee', 'TN'],
309
+ ['48', 'Texas', 'TX'],
310
+ ['49', 'Utah', 'UT'],
311
+ ['50', 'Vermont', 'VT'],
312
+ ['51', 'Virginia', 'VA'],
313
+ ['53', 'Washington', 'WA'],
314
+ ['54', 'West Virginia', 'WV'],
315
+ ['55', 'Wisconsin', 'WI'],
316
+ ['56', 'Wyoming', 'WY'],
317
+ ];
318
+ const GERMANY_REGIONS = [
319
+ ['DE-BB', 'Brandenburg'],
320
+ ['DE-BE', 'Berlin'],
321
+ ['DE-BW', 'Baden-Württemberg'],
322
+ ['DE-BY', 'Bayern', 'bavaria'],
323
+ ['DE-HB', 'Bremen'],
324
+ ['DE-HE', 'Hessen', 'hesse'],
325
+ ['DE-HH', 'Hamburg'],
326
+ ['DE-MV', 'Mecklenburg-Vorpommern', 'mecklenburg western pomerania', 'mecklenburg west pomerania'],
327
+ ['DE-NI', 'Niedersachsen', 'lower saxony'],
328
+ ['DE-NW', 'Nordrhein-Westfalen', 'north rhine westphalia', 'nrw'],
329
+ ['DE-RP', 'Rheinland-Pfalz', 'rhineland palatinate'],
330
+ ['DE-SH', 'Schleswig-Holstein'],
331
+ ['DE-SL', 'Saarland'],
332
+ ['DE-SN', 'Sachsen', 'saxony'],
333
+ ['DE-ST', 'Sachsen-Anhalt', 'saxony anhalt'],
334
+ ['DE-TH', 'Thüringen', 'thuringia'],
335
+ ];
336
+ const UK_REGIONS = [
337
+ ['E15000001', 'North East England'],
338
+ ['E15000002', 'North West England'],
339
+ ['E15000003', 'Yorkshire and the Humber', 'yorkshire'],
340
+ ['E15000004', 'East Midlands'],
341
+ ['E15000005', 'West Midlands'],
342
+ ['E15000006', 'East of England', 'east anglia'],
343
+ ['E15000007', 'London', 'greater london'],
344
+ ['E15000008', 'South East England'],
345
+ ['E15000009', 'South West England and Gibraltar', 'south west england'],
346
+ ['N07000001', 'Northern Ireland'],
347
+ ['S15000001', 'Scotland'],
348
+ ['W08000001', 'Wales'],
349
+ ];
350
+ const FRANCE_REGIONS = [
351
+ ['FR-11', 'Île-de-France', 'paris region'],
352
+ ['FR-24', 'Centre-Val de Loire'],
353
+ ['FR-27', 'Bourgogne-Franche-Comté', 'burgundy franche comte'],
354
+ ['FR-28', 'Normandie', 'normandy'],
355
+ ['FR-32', 'Hauts-de-France'],
356
+ ['FR-44', 'Grand Est'],
357
+ ['FR-52', 'Pays de la Loire'],
358
+ ['FR-53', 'Bretagne', 'brittany'],
359
+ ['FR-75', 'Nouvelle-Aquitaine', 'new aquitaine'],
360
+ ['FR-76', 'Occitanie', 'occitania'],
361
+ ['FR-84', 'Auvergne-Rhône-Alpes'],
362
+ ['FR-93', 'Provence-Alpes-Côte d\'Azur', 'paca', 'provence'],
363
+ ['FR-94', 'Corse', 'corsica'],
364
+ ];
365
+ const INDIA_REGIONS = [
366
+ ['IN-AN', 'Andaman and Nicobar Islands'],
367
+ ['IN-AP', 'Andhra Pradesh'],
368
+ ['IN-AR', 'Arunachal Pradesh'],
369
+ ['IN-AS', 'Assam'],
370
+ ['IN-BR', 'Bihar'],
371
+ ['IN-CH', 'Chandigarh'],
372
+ ['IN-CT', 'Chhattisgarh', 'chattisgarh'],
373
+ ['IN-DD', 'Dadra and Nagar Haveli and Daman and Diu'],
374
+ ['IN-DL', 'Delhi', 'new delhi'],
375
+ ['IN-GA', 'Goa'],
376
+ ['IN-GJ', 'Gujarat'],
377
+ ['IN-HP', 'Himachal Pradesh'],
378
+ ['IN-HR', 'Haryana'],
379
+ ['IN-JH', 'Jharkhand'],
380
+ ['IN-JK', 'Jammu and Kashmir'],
381
+ ['IN-KA', 'Karnataka'],
382
+ ['IN-KL', 'Kerala'],
383
+ ['IN-LA', 'Ladakh'],
384
+ ['IN-LD', 'Lakshadweep'],
385
+ ['IN-MH', 'Maharashtra'],
386
+ ['IN-ML', 'Meghalaya'],
387
+ ['IN-MN', 'Manipur'],
388
+ ['IN-MP', 'Madhya Pradesh'],
389
+ ['IN-MZ', 'Mizoram'],
390
+ ['IN-NL', 'Nagaland'],
391
+ ['IN-OR', 'Odisha', 'orissa'],
392
+ ['IN-PB', 'Punjab'],
393
+ ['IN-PY', 'Puducherry', 'pondicherry'],
394
+ ['IN-RJ', 'Rajasthan'],
395
+ ['IN-SK', 'Sikkim'],
396
+ ['IN-TG', 'Telangana'],
397
+ ['IN-TN', 'Tamil Nadu'],
398
+ ['IN-TR', 'Tripura'],
399
+ ['IN-UP', 'Uttar Pradesh'],
400
+ ['IN-UT', 'Uttarakhand', 'uttaranchal'],
401
+ ['IN-WB', 'West Bengal'],
402
+ ];
403
+ const CHINA_REGIONS = [
404
+ ['CN-AH', 'Anhui'],
405
+ ['CN-BJ', 'Beijing'],
406
+ ['CN-CQ', 'Chongqing'],
407
+ ['CN-FJ', 'Fujian'],
408
+ ['CN-GD', 'Guangdong'],
409
+ ['CN-GS', 'Gansu'],
410
+ ['CN-GX', 'Guangxi'],
411
+ ['CN-GZ', 'Guizhou'],
412
+ ['CN-HA', 'Hainan'],
413
+ ['CN-HB', 'Hebei'],
414
+ ['CN-HE', 'Henan'],
415
+ ['CN-HL', 'Heilongjiang'],
416
+ ['CN-HN', 'Hunan'],
417
+ ['CN-HU', 'Hubei'],
418
+ ['CN-JL', 'Jilin'],
419
+ ['CN-JS', 'Jiangsu'],
420
+ ['CN-JX', 'Jiangxi'],
421
+ ['CN-LN', 'Liaoning'],
422
+ ['CN-NM', 'Inner Mongol', 'inner mongolia', 'nei mongol'],
423
+ ['CN-NX', 'Ningxia'],
424
+ ['CN-QH', 'Qinghai'],
425
+ ['CN-SA', 'Shaanxi'],
426
+ ['CN-SC', 'Sichuan'],
427
+ ['CN-SD', 'Shandong'],
428
+ ['CN-SH', 'Shanghai'],
429
+ ['CN-SX', 'Shanxi'],
430
+ ['CN-TJ', 'Tianjin'],
431
+ ['CN-XJ', 'Xinjiang'],
432
+ ['CN-XZ', 'Xizang', 'tibet'],
433
+ ['CN-YN', 'Yunnan'],
434
+ ['CN-ZJ', 'Zhejiang'],
435
+ ];
436
+ export const choroplethMaps = {
437
+ world: {
438
+ marker: 'WorldMapTopoJSON',
439
+ idFormat: 'an ISO 3166-1 alpha-2 country code (e.g. "US", "DE", "BR") or an English country name',
440
+ regions: WORLD_REGIONS,
441
+ },
442
+ usa: {
443
+ marker: 'USATopoJSON',
444
+ idFormat: 'a US state name, USPS abbreviation (e.g. "CA") or FIPS code — 50 states plus the District of Columbia',
445
+ numericIds: true,
446
+ projection: 'AlbersUsa',
447
+ regions: USA_REGIONS,
448
+ },
449
+ germany: {
450
+ marker: 'GermanyTopoJSON',
451
+ idFormat: 'an ISO 3166-2 code (e.g. "DE-BY" or "BY") or a state name (e.g. "Bavaria", "Sachsen")',
452
+ codePrefix: 'DE',
453
+ regions: GERMANY_REGIONS,
454
+ },
455
+ uk: {
456
+ marker: 'UKTopoJSON',
457
+ idFormat: 'a UK country/region name (e.g. "Scotland", "Wales", "London", "North West England")',
458
+ regions: UK_REGIONS,
459
+ },
460
+ france: {
461
+ marker: 'FranceTopoJSON',
462
+ idFormat: 'an ISO 3166-2 region code (e.g. "FR-11" or "11") or a metropolitan region name (e.g. "Bretagne", "Normandy")',
463
+ codePrefix: 'FR',
464
+ regions: FRANCE_REGIONS,
465
+ },
466
+ india: {
467
+ marker: 'IndiaTopoJSON',
468
+ idFormat: 'an ISO 3166-2 code (e.g. "IN-MH" or "MH") or a state/territory name (e.g. "Maharashtra")',
469
+ codePrefix: 'IN',
470
+ regions: INDIA_REGIONS,
471
+ },
472
+ china: {
473
+ marker: 'ChinaTopoJSON',
474
+ idFormat: 'a province name (e.g. "Guangdong", "Beijing") — prefer names over codes, this map\'s CN-XX codes do not follow ISO 3166-2',
475
+ codePrefix: 'CN',
476
+ regions: CHINA_REGIONS,
477
+ },
478
+ };
479
+ const indices = new Map();
480
+ function indexFor(map) {
481
+ const cached = indices.get(map);
482
+ if (cached)
483
+ return cached;
484
+ const byId = new Map();
485
+ const byName = new Map();
486
+ for (const [id, name, ...aliases] of choroplethMaps[map].regions) {
487
+ const area = { id, name };
488
+ byId.set(id.toUpperCase(), area);
489
+ byName.set(normalizeKey(name), area);
490
+ for (const alias of aliases)
491
+ byName.set(normalizeKey(alias), area);
492
+ }
493
+ const index = { byId, byName };
494
+ indices.set(map, index);
495
+ return index;
496
+ }
497
+ /** Resolve a user-supplied area id (code in common formats, or name) to the
498
+ * map's feature id. Returns undefined when nothing matches. */
499
+ export function resolveArea(map, rawId) {
500
+ const def = choroplethMaps[map];
501
+ const { byId, byName } = indexFor(map);
502
+ const raw = rawId.trim();
503
+ const upper = raw.toUpperCase();
504
+ const direct = byId.get(upper);
505
+ if (direct)
506
+ return direct;
507
+ // Zero-padded FIPS codes ('06' → '6')
508
+ if (def.numericIds && /^\d+$/.test(raw)) {
509
+ const unpadded = byId.get(String(parseInt(raw, 10)));
510
+ if (unpadded)
511
+ return unpadded;
512
+ }
513
+ // Bare region codes without the country prefix ('BY' → 'DE-BY')
514
+ if (def.codePrefix && /^[A-Z]{2}$/.test(upper)) {
515
+ const prefixed = byId.get(`${def.codePrefix}-${upper}`);
516
+ if (prefixed)
517
+ return prefixed;
518
+ }
519
+ return byName.get(normalizeKey(raw));
520
+ }
521
+ //# sourceMappingURL=choropleth-regions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choropleth-regions.js","sourceRoot":"","sources":["../../src/recipes/choropleth-regions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import type { Recipe } from './types.js';
3
+ export declare const choroplethInputShape: {
4
+ width: z.ZodDefault<z.ZodNumber>;
5
+ height: z.ZodDefault<z.ZodNumber>;
6
+ theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
7
+ title: z.ZodOptional<z.ZodString>;
8
+ colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
+ framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
10
+ outputType: z.ZodDefault<z.ZodEnum<["svg", "png", "html", "interactive", "config", "code"]>>;
11
+ outputPath: z.ZodOptional<z.ZodString>;
12
+ scale: z.ZodDefault<z.ZodNumber>;
13
+ map: z.ZodDefault<z.ZodEnum<["world", "usa", "germany", "uk", "france", "india", "china"]>>;
14
+ data: z.ZodArray<z.ZodObject<{
15
+ id: z.ZodString;
16
+ value: z.ZodNumber;
17
+ }, "strip", z.ZodTypeAny, {
18
+ value: number;
19
+ id: string;
20
+ }, {
21
+ value: number;
22
+ id: string;
23
+ }>, "many">;
24
+ colorRange: z.ZodOptional<z.ZodTuple<[z.ZodString, z.ZodString], null>>;
25
+ valueLabel: z.ZodDefault<z.ZodString>;
26
+ };
27
+ export declare const choroplethRecipe: Recipe<typeof choroplethInputShape>;
@@ -0,0 +1,86 @@
1
+ import { z } from 'zod';
2
+ import { commonInput, ChartInputError } from './shared.js';
3
+ import { choroplethMaps, resolveArea } from './choropleth-regions.js';
4
+ const hexColor = z.string().regex(/^#[0-9a-fA-F]{3,8}$/, 'hex color, e.g. #2260C4');
5
+ const hexToRgb = (hex) => {
6
+ let h = hex.slice(1);
7
+ if (h.length < 6)
8
+ h = h.split('').map(c => c + c).join('');
9
+ return [parseInt(h.slice(0, 2), 16), parseInt(h.slice(2, 4), 16), parseInt(h.slice(4, 6), 16)];
10
+ };
11
+ const mixHex = (from, to, t) => {
12
+ const a = hexToRgb(from);
13
+ const b = hexToRgb(to);
14
+ return `#${a.map((channel, c) => Math.round(channel + (b[c] - channel) * t).toString(16).padStart(2, '0')).join('')}`;
15
+ };
16
+ export const choroplethInputShape = {
17
+ map: z.enum(['world', 'usa', 'germany', 'uk', 'france', 'india', 'china']).default('world')
18
+ .describe('Which map to draw. Area ids: world — ISO 3166-1 alpha-2 codes or country names; ' +
19
+ 'usa — state names, USPS abbreviations or FIPS codes; germany/france/india — ISO 3166-2 codes or names; ' +
20
+ 'uk — statistical regions by name; china — province names'),
21
+ data: z.array(z.object({
22
+ id: z.string().min(1).describe('Area code or name (see the map option for accepted formats)'),
23
+ value: z.number().describe('Numeric value driving the area color'),
24
+ })).min(1).describe('One entry per area, e.g. [{"id":"US","value":21},{"id":"Germany","value":46}]'),
25
+ colorRange: z.tuple([hexColor, hexColor]).optional()
26
+ .describe('[lowColor, highColor] hex pair; area colors are interpolated between them. Defaults to a blue ramp'),
27
+ valueLabel: z.string().default('').describe('Unit for legend labels, e.g. "%" or " GWh"'),
28
+ ...commonInput,
29
+ };
30
+ export const choroplethRecipe = {
31
+ name: 'generate_choropleth_map',
32
+ title: 'Choropleth map',
33
+ description: 'Generate a choropleth map: geographic areas (countries, states, regions) shaded by value. ' +
34
+ 'Supports the world map plus USA, Germany, UK, France, India and China. ' +
35
+ 'Example: map="world", data=[{"id":"US","value":21},{"id":"BR","value":85},{"id":"Germany","value":46}].',
36
+ inputShape: choroplethInputShape,
37
+ toSpec: (input) => {
38
+ const mapKey = input.map;
39
+ const mapDef = choroplethMaps[mapKey];
40
+ const unresolved = [];
41
+ const resolved = input.data.map(d => {
42
+ const area = resolveArea(mapKey, d.id);
43
+ if (!area)
44
+ unresolved.push(d.id);
45
+ return { area, value: d.value };
46
+ });
47
+ if (unresolved.length) {
48
+ throw new ChartInputError(`Unknown ${input.map} area${unresolved.length > 1 ? 's' : ''}: ${unresolved.map(id => `"${id}"`).join(', ')}. ` +
49
+ `Expected ${mapDef.idFormat}.`);
50
+ }
51
+ const values = resolved.map(r => r.value);
52
+ const min = Math.min(...values);
53
+ const max = Math.max(...values);
54
+ const [low, high] = input.colorRange ?? ['#dbe9fd', '#2260c4'];
55
+ const spread = max - min || 1;
56
+ const areas = resolved.map(r => ({
57
+ id: r.area.id,
58
+ name: r.area.name,
59
+ value: r.value,
60
+ color: mixHex(low, high, (r.value - min) / spread),
61
+ }));
62
+ const legend = [
63
+ { name: `${min}${input.valueLabel}`, color: low },
64
+ { name: `${max}${input.valueLabel}`, color: high },
65
+ ];
66
+ return {
67
+ container: 'single',
68
+ width: input.width,
69
+ height: input.height,
70
+ theme: input.theme,
71
+ title: input.title,
72
+ colors: input.colors,
73
+ components: [{
74
+ type: 'TopoJSONMap',
75
+ config: {
76
+ topojson: { $unovisMap: mapDef.marker },
77
+ disableZoom: true,
78
+ ...(mapDef.projection ? { projection: { $mapProjection: mapDef.projection } } : {}),
79
+ },
80
+ }],
81
+ legend,
82
+ data: { areas },
83
+ };
84
+ },
85
+ };
86
+ //# sourceMappingURL=choropleth.js.map