choropleth-kit 0.1.0 → 0.2.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 (487) hide show
  1. package/README.md +106 -16
  2. package/dist/admin1/ad.d.ts +4 -0
  3. package/dist/admin1/ad.js +2 -0
  4. package/dist/admin1/ae.d.ts +4 -0
  5. package/dist/admin1/ae.js +2 -0
  6. package/dist/admin1/af.d.ts +4 -0
  7. package/dist/admin1/af.js +2 -0
  8. package/dist/admin1/ag.d.ts +4 -0
  9. package/dist/admin1/ag.js +2 -0
  10. package/dist/admin1/ai.d.ts +4 -0
  11. package/dist/admin1/ai.js +2 -0
  12. package/dist/admin1/al.d.ts +4 -0
  13. package/dist/admin1/al.js +2 -0
  14. package/dist/admin1/am.d.ts +4 -0
  15. package/dist/admin1/am.js +2 -0
  16. package/dist/admin1/ao.d.ts +4 -0
  17. package/dist/admin1/ao.js +2 -0
  18. package/dist/admin1/aq.d.ts +4 -0
  19. package/dist/admin1/aq.js +2 -0
  20. package/dist/admin1/ar.d.ts +4 -0
  21. package/dist/admin1/ar.js +2 -0
  22. package/dist/admin1/as.d.ts +4 -0
  23. package/dist/admin1/as.js +2 -0
  24. package/dist/admin1/at.d.ts +4 -0
  25. package/dist/admin1/at.js +2 -0
  26. package/dist/admin1/au.d.ts +4 -0
  27. package/dist/admin1/au.js +2 -0
  28. package/dist/admin1/aw.d.ts +4 -0
  29. package/dist/admin1/aw.js +2 -0
  30. package/dist/admin1/ax.d.ts +4 -0
  31. package/dist/admin1/ax.js +2 -0
  32. package/dist/admin1/az.d.ts +4 -0
  33. package/dist/admin1/az.js +2 -0
  34. package/dist/admin1/ba.d.ts +4 -0
  35. package/dist/admin1/ba.js +2 -0
  36. package/dist/admin1/bb.d.ts +4 -0
  37. package/dist/admin1/bb.js +2 -0
  38. package/dist/admin1/bd.d.ts +4 -0
  39. package/dist/admin1/bd.js +2 -0
  40. package/dist/admin1/be.d.ts +4 -0
  41. package/dist/admin1/be.js +2 -0
  42. package/dist/admin1/bf.d.ts +4 -0
  43. package/dist/admin1/bf.js +2 -0
  44. package/dist/admin1/bg.d.ts +4 -0
  45. package/dist/admin1/bg.js +2 -0
  46. package/dist/admin1/bh.d.ts +4 -0
  47. package/dist/admin1/bh.js +2 -0
  48. package/dist/admin1/bi.d.ts +4 -0
  49. package/dist/admin1/bi.js +2 -0
  50. package/dist/admin1/bj.d.ts +4 -0
  51. package/dist/admin1/bj.js +2 -0
  52. package/dist/admin1/bl.d.ts +4 -0
  53. package/dist/admin1/bl.js +2 -0
  54. package/dist/admin1/bm.d.ts +4 -0
  55. package/dist/admin1/bm.js +2 -0
  56. package/dist/admin1/bn.d.ts +4 -0
  57. package/dist/admin1/bn.js +2 -0
  58. package/dist/admin1/bo.d.ts +4 -0
  59. package/dist/admin1/bo.js +2 -0
  60. package/dist/admin1/br.d.ts +4 -0
  61. package/dist/admin1/br.js +2 -0
  62. package/dist/admin1/bs.d.ts +4 -0
  63. package/dist/admin1/bs.js +2 -0
  64. package/dist/admin1/bt.d.ts +4 -0
  65. package/dist/admin1/bt.js +2 -0
  66. package/dist/admin1/bw.d.ts +4 -0
  67. package/dist/admin1/bw.js +2 -0
  68. package/dist/admin1/by.d.ts +4 -0
  69. package/dist/admin1/by.js +2 -0
  70. package/dist/admin1/bz.d.ts +4 -0
  71. package/dist/admin1/bz.js +2 -0
  72. package/dist/admin1/ca.d.ts +4 -0
  73. package/dist/admin1/ca.js +2 -0
  74. package/dist/admin1/cd.d.ts +4 -0
  75. package/dist/admin1/cd.js +2 -0
  76. package/dist/admin1/cf.d.ts +4 -0
  77. package/dist/admin1/cf.js +2 -0
  78. package/dist/admin1/cg.d.ts +4 -0
  79. package/dist/admin1/cg.js +2 -0
  80. package/dist/admin1/ch.d.ts +4 -0
  81. package/dist/admin1/ch.js +2 -0
  82. package/dist/admin1/ci.d.ts +4 -0
  83. package/dist/admin1/ci.js +2 -0
  84. package/dist/admin1/ck.d.ts +4 -0
  85. package/dist/admin1/ck.js +2 -0
  86. package/dist/admin1/cl.d.ts +4 -0
  87. package/dist/admin1/cl.js +2 -0
  88. package/dist/admin1/cm.d.ts +4 -0
  89. package/dist/admin1/cm.js +2 -0
  90. package/dist/admin1/cn.d.ts +4 -0
  91. package/dist/admin1/cn.js +2 -0
  92. package/dist/admin1/co.d.ts +4 -0
  93. package/dist/admin1/co.js +2 -0
  94. package/dist/admin1/cr.d.ts +4 -0
  95. package/dist/admin1/cr.js +2 -0
  96. package/dist/admin1/cu.d.ts +4 -0
  97. package/dist/admin1/cu.js +2 -0
  98. package/dist/admin1/cv.d.ts +4 -0
  99. package/dist/admin1/cv.js +2 -0
  100. package/dist/admin1/cw.d.ts +4 -0
  101. package/dist/admin1/cw.js +2 -0
  102. package/dist/admin1/cy.d.ts +4 -0
  103. package/dist/admin1/cy.js +2 -0
  104. package/dist/admin1/cz.d.ts +4 -0
  105. package/dist/admin1/cz.js +2 -0
  106. package/dist/admin1/de.d.ts +4 -0
  107. package/dist/admin1/de.js +2 -0
  108. package/dist/admin1/dj.d.ts +4 -0
  109. package/dist/admin1/dj.js +2 -0
  110. package/dist/admin1/dk.d.ts +4 -0
  111. package/dist/admin1/dk.js +2 -0
  112. package/dist/admin1/dm.d.ts +4 -0
  113. package/dist/admin1/dm.js +2 -0
  114. package/dist/admin1/do.d.ts +4 -0
  115. package/dist/admin1/do.js +2 -0
  116. package/dist/admin1/dz.d.ts +4 -0
  117. package/dist/admin1/dz.js +2 -0
  118. package/dist/admin1/ec.d.ts +4 -0
  119. package/dist/admin1/ec.js +2 -0
  120. package/dist/admin1/ee.d.ts +4 -0
  121. package/dist/admin1/ee.js +2 -0
  122. package/dist/admin1/eg.d.ts +4 -0
  123. package/dist/admin1/eg.js +2 -0
  124. package/dist/admin1/eh.d.ts +4 -0
  125. package/dist/admin1/eh.js +2 -0
  126. package/dist/admin1/er.d.ts +4 -0
  127. package/dist/admin1/er.js +2 -0
  128. package/dist/admin1/es.d.ts +4 -0
  129. package/dist/admin1/es.js +2 -0
  130. package/dist/admin1/et.d.ts +4 -0
  131. package/dist/admin1/et.js +2 -0
  132. package/dist/admin1/fi.d.ts +4 -0
  133. package/dist/admin1/fi.js +2 -0
  134. package/dist/admin1/fj.d.ts +4 -0
  135. package/dist/admin1/fj.js +2 -0
  136. package/dist/admin1/fk.d.ts +4 -0
  137. package/dist/admin1/fk.js +2 -0
  138. package/dist/admin1/fm.d.ts +4 -0
  139. package/dist/admin1/fm.js +2 -0
  140. package/dist/admin1/fo.d.ts +4 -0
  141. package/dist/admin1/fo.js +2 -0
  142. package/dist/admin1/fr.d.ts +4 -0
  143. package/dist/admin1/fr.js +2 -0
  144. package/dist/admin1/ga.d.ts +4 -0
  145. package/dist/admin1/ga.js +2 -0
  146. package/dist/admin1/gb.d.ts +4 -0
  147. package/dist/admin1/gb.js +2 -0
  148. package/dist/admin1/gd.d.ts +4 -0
  149. package/dist/admin1/gd.js +2 -0
  150. package/dist/admin1/ge.d.ts +4 -0
  151. package/dist/admin1/ge.js +2 -0
  152. package/dist/admin1/gg.d.ts +4 -0
  153. package/dist/admin1/gg.js +2 -0
  154. package/dist/admin1/gh.d.ts +4 -0
  155. package/dist/admin1/gh.js +2 -0
  156. package/dist/admin1/gi.d.ts +4 -0
  157. package/dist/admin1/gi.js +2 -0
  158. package/dist/admin1/gl.d.ts +4 -0
  159. package/dist/admin1/gl.js +2 -0
  160. package/dist/admin1/gm.d.ts +4 -0
  161. package/dist/admin1/gm.js +2 -0
  162. package/dist/admin1/gn.d.ts +4 -0
  163. package/dist/admin1/gn.js +2 -0
  164. package/dist/admin1/gq.d.ts +4 -0
  165. package/dist/admin1/gq.js +2 -0
  166. package/dist/admin1/gr.d.ts +4 -0
  167. package/dist/admin1/gr.js +2 -0
  168. package/dist/admin1/gs.d.ts +4 -0
  169. package/dist/admin1/gs.js +2 -0
  170. package/dist/admin1/gt.d.ts +4 -0
  171. package/dist/admin1/gt.js +2 -0
  172. package/dist/admin1/gu.d.ts +4 -0
  173. package/dist/admin1/gu.js +2 -0
  174. package/dist/admin1/gw.d.ts +4 -0
  175. package/dist/admin1/gw.js +2 -0
  176. package/dist/admin1/gy.d.ts +4 -0
  177. package/dist/admin1/gy.js +2 -0
  178. package/dist/admin1/hk.d.ts +4 -0
  179. package/dist/admin1/hk.js +2 -0
  180. package/dist/admin1/hm.d.ts +4 -0
  181. package/dist/admin1/hm.js +2 -0
  182. package/dist/admin1/hn.d.ts +4 -0
  183. package/dist/admin1/hn.js +2 -0
  184. package/dist/admin1/hr.d.ts +4 -0
  185. package/dist/admin1/hr.js +2 -0
  186. package/dist/admin1/ht.d.ts +4 -0
  187. package/dist/admin1/ht.js +2 -0
  188. package/dist/admin1/hu.d.ts +4 -0
  189. package/dist/admin1/hu.js +2 -0
  190. package/dist/admin1/id.d.ts +4 -0
  191. package/dist/admin1/id.js +2 -0
  192. package/dist/admin1/ie.d.ts +4 -0
  193. package/dist/admin1/ie.js +2 -0
  194. package/dist/admin1/il.d.ts +4 -0
  195. package/dist/admin1/il.js +2 -0
  196. package/dist/admin1/im.d.ts +4 -0
  197. package/dist/admin1/im.js +2 -0
  198. package/dist/admin1/in.d.ts +4 -0
  199. package/dist/admin1/in.js +2 -0
  200. package/dist/admin1/io.d.ts +4 -0
  201. package/dist/admin1/io.js +2 -0
  202. package/dist/admin1/iq.d.ts +4 -0
  203. package/dist/admin1/iq.js +2 -0
  204. package/dist/admin1/ir.d.ts +4 -0
  205. package/dist/admin1/ir.js +2 -0
  206. package/dist/admin1/is.d.ts +4 -0
  207. package/dist/admin1/is.js +2 -0
  208. package/dist/admin1/it.d.ts +4 -0
  209. package/dist/admin1/it.js +2 -0
  210. package/dist/admin1/je.d.ts +4 -0
  211. package/dist/admin1/je.js +2 -0
  212. package/dist/admin1/jm.d.ts +4 -0
  213. package/dist/admin1/jm.js +2 -0
  214. package/dist/admin1/jo.d.ts +4 -0
  215. package/dist/admin1/jo.js +2 -0
  216. package/dist/admin1/jp.d.ts +4 -0
  217. package/dist/admin1/jp.js +2 -0
  218. package/dist/admin1/ke.d.ts +4 -0
  219. package/dist/admin1/ke.js +2 -0
  220. package/dist/admin1/kg.d.ts +4 -0
  221. package/dist/admin1/kg.js +2 -0
  222. package/dist/admin1/kh.d.ts +4 -0
  223. package/dist/admin1/kh.js +2 -0
  224. package/dist/admin1/ki.d.ts +4 -0
  225. package/dist/admin1/ki.js +2 -0
  226. package/dist/admin1/km.d.ts +4 -0
  227. package/dist/admin1/km.js +2 -0
  228. package/dist/admin1/kn.d.ts +4 -0
  229. package/dist/admin1/kn.js +2 -0
  230. package/dist/admin1/kp.d.ts +4 -0
  231. package/dist/admin1/kp.js +2 -0
  232. package/dist/admin1/kr.d.ts +4 -0
  233. package/dist/admin1/kr.js +2 -0
  234. package/dist/admin1/kw.d.ts +4 -0
  235. package/dist/admin1/kw.js +2 -0
  236. package/dist/admin1/ky.d.ts +4 -0
  237. package/dist/admin1/ky.js +2 -0
  238. package/dist/admin1/kz.d.ts +4 -0
  239. package/dist/admin1/kz.js +2 -0
  240. package/dist/admin1/la.d.ts +4 -0
  241. package/dist/admin1/la.js +2 -0
  242. package/dist/admin1/lb.d.ts +4 -0
  243. package/dist/admin1/lb.js +2 -0
  244. package/dist/admin1/lc.d.ts +4 -0
  245. package/dist/admin1/lc.js +2 -0
  246. package/dist/admin1/li.d.ts +4 -0
  247. package/dist/admin1/li.js +2 -0
  248. package/dist/admin1/lk.d.ts +4 -0
  249. package/dist/admin1/lk.js +2 -0
  250. package/dist/admin1/lr.d.ts +4 -0
  251. package/dist/admin1/lr.js +2 -0
  252. package/dist/admin1/ls.d.ts +4 -0
  253. package/dist/admin1/ls.js +2 -0
  254. package/dist/admin1/lt.d.ts +4 -0
  255. package/dist/admin1/lt.js +2 -0
  256. package/dist/admin1/lu.d.ts +4 -0
  257. package/dist/admin1/lu.js +2 -0
  258. package/dist/admin1/lv.d.ts +4 -0
  259. package/dist/admin1/lv.js +2 -0
  260. package/dist/admin1/ly.d.ts +4 -0
  261. package/dist/admin1/ly.js +2 -0
  262. package/dist/admin1/ma.d.ts +4 -0
  263. package/dist/admin1/ma.js +2 -0
  264. package/dist/admin1/mc.d.ts +4 -0
  265. package/dist/admin1/mc.js +2 -0
  266. package/dist/admin1/md.d.ts +4 -0
  267. package/dist/admin1/md.js +2 -0
  268. package/dist/admin1/me.d.ts +4 -0
  269. package/dist/admin1/me.js +2 -0
  270. package/dist/admin1/mf.d.ts +4 -0
  271. package/dist/admin1/mf.js +2 -0
  272. package/dist/admin1/mg.d.ts +4 -0
  273. package/dist/admin1/mg.js +2 -0
  274. package/dist/admin1/mh.d.ts +4 -0
  275. package/dist/admin1/mh.js +2 -0
  276. package/dist/admin1/mk.d.ts +4 -0
  277. package/dist/admin1/mk.js +2 -0
  278. package/dist/admin1/ml.d.ts +4 -0
  279. package/dist/admin1/ml.js +2 -0
  280. package/dist/admin1/mm.d.ts +4 -0
  281. package/dist/admin1/mm.js +2 -0
  282. package/dist/admin1/mn.d.ts +4 -0
  283. package/dist/admin1/mn.js +2 -0
  284. package/dist/admin1/mo.d.ts +4 -0
  285. package/dist/admin1/mo.js +2 -0
  286. package/dist/admin1/mp.d.ts +4 -0
  287. package/dist/admin1/mp.js +2 -0
  288. package/dist/admin1/mr.d.ts +4 -0
  289. package/dist/admin1/mr.js +2 -0
  290. package/dist/admin1/ms.d.ts +4 -0
  291. package/dist/admin1/ms.js +2 -0
  292. package/dist/admin1/mt.d.ts +4 -0
  293. package/dist/admin1/mt.js +2 -0
  294. package/dist/admin1/mu.d.ts +4 -0
  295. package/dist/admin1/mu.js +2 -0
  296. package/dist/admin1/mv.d.ts +4 -0
  297. package/dist/admin1/mv.js +2 -0
  298. package/dist/admin1/mw.d.ts +4 -0
  299. package/dist/admin1/mw.js +2 -0
  300. package/dist/admin1/mx.d.ts +4 -0
  301. package/dist/admin1/mx.js +2 -0
  302. package/dist/admin1/my.d.ts +4 -0
  303. package/dist/admin1/my.js +2 -0
  304. package/dist/admin1/mz.d.ts +4 -0
  305. package/dist/admin1/mz.js +2 -0
  306. package/dist/admin1/na.d.ts +4 -0
  307. package/dist/admin1/na.js +2 -0
  308. package/dist/admin1/nc.d.ts +4 -0
  309. package/dist/admin1/nc.js +2 -0
  310. package/dist/admin1/ne.d.ts +4 -0
  311. package/dist/admin1/ne.js +2 -0
  312. package/dist/admin1/nf.d.ts +4 -0
  313. package/dist/admin1/nf.js +2 -0
  314. package/dist/admin1/ng.d.ts +4 -0
  315. package/dist/admin1/ng.js +2 -0
  316. package/dist/admin1/ni.d.ts +4 -0
  317. package/dist/admin1/ni.js +2 -0
  318. package/dist/admin1/nl.d.ts +4 -0
  319. package/dist/admin1/nl.js +2 -0
  320. package/dist/admin1/no.d.ts +4 -0
  321. package/dist/admin1/no.js +2 -0
  322. package/dist/admin1/np.d.ts +4 -0
  323. package/dist/admin1/np.js +2 -0
  324. package/dist/admin1/nr.d.ts +4 -0
  325. package/dist/admin1/nr.js +2 -0
  326. package/dist/admin1/nu.d.ts +4 -0
  327. package/dist/admin1/nu.js +2 -0
  328. package/dist/admin1/nz.d.ts +4 -0
  329. package/dist/admin1/nz.js +2 -0
  330. package/dist/admin1/om.d.ts +4 -0
  331. package/dist/admin1/om.js +2 -0
  332. package/dist/admin1/pa.d.ts +4 -0
  333. package/dist/admin1/pa.js +2 -0
  334. package/dist/admin1/pe.d.ts +4 -0
  335. package/dist/admin1/pe.js +2 -0
  336. package/dist/admin1/pf.d.ts +4 -0
  337. package/dist/admin1/pf.js +2 -0
  338. package/dist/admin1/pg.d.ts +4 -0
  339. package/dist/admin1/pg.js +2 -0
  340. package/dist/admin1/ph.d.ts +4 -0
  341. package/dist/admin1/ph.js +2 -0
  342. package/dist/admin1/pk.d.ts +4 -0
  343. package/dist/admin1/pk.js +2 -0
  344. package/dist/admin1/pl.d.ts +4 -0
  345. package/dist/admin1/pl.js +2 -0
  346. package/dist/admin1/pm.d.ts +4 -0
  347. package/dist/admin1/pm.js +2 -0
  348. package/dist/admin1/pn.d.ts +4 -0
  349. package/dist/admin1/pn.js +2 -0
  350. package/dist/admin1/ps.d.ts +4 -0
  351. package/dist/admin1/ps.js +2 -0
  352. package/dist/admin1/pt.d.ts +4 -0
  353. package/dist/admin1/pt.js +2 -0
  354. package/dist/admin1/pw.d.ts +4 -0
  355. package/dist/admin1/pw.js +2 -0
  356. package/dist/admin1/py.d.ts +4 -0
  357. package/dist/admin1/py.js +2 -0
  358. package/dist/admin1/qa.d.ts +4 -0
  359. package/dist/admin1/qa.js +2 -0
  360. package/dist/admin1/ro.d.ts +4 -0
  361. package/dist/admin1/ro.js +2 -0
  362. package/dist/admin1/rs.d.ts +4 -0
  363. package/dist/admin1/rs.js +2 -0
  364. package/dist/admin1/ru.d.ts +4 -0
  365. package/dist/admin1/ru.js +2 -0
  366. package/dist/admin1/rw.d.ts +4 -0
  367. package/dist/admin1/rw.js +2 -0
  368. package/dist/admin1/sa.d.ts +4 -0
  369. package/dist/admin1/sa.js +2 -0
  370. package/dist/admin1/sb.d.ts +4 -0
  371. package/dist/admin1/sb.js +2 -0
  372. package/dist/admin1/sc.d.ts +4 -0
  373. package/dist/admin1/sc.js +2 -0
  374. package/dist/admin1/sd.d.ts +4 -0
  375. package/dist/admin1/sd.js +2 -0
  376. package/dist/admin1/se.d.ts +4 -0
  377. package/dist/admin1/se.js +2 -0
  378. package/dist/admin1/sg.d.ts +4 -0
  379. package/dist/admin1/sg.js +2 -0
  380. package/dist/admin1/sh.d.ts +4 -0
  381. package/dist/admin1/sh.js +2 -0
  382. package/dist/admin1/si.d.ts +4 -0
  383. package/dist/admin1/si.js +2 -0
  384. package/dist/admin1/sk.d.ts +4 -0
  385. package/dist/admin1/sk.js +2 -0
  386. package/dist/admin1/sl.d.ts +4 -0
  387. package/dist/admin1/sl.js +2 -0
  388. package/dist/admin1/sm.d.ts +4 -0
  389. package/dist/admin1/sm.js +2 -0
  390. package/dist/admin1/sn.d.ts +4 -0
  391. package/dist/admin1/sn.js +2 -0
  392. package/dist/admin1/so.d.ts +4 -0
  393. package/dist/admin1/so.js +2 -0
  394. package/dist/admin1/sr.d.ts +4 -0
  395. package/dist/admin1/sr.js +2 -0
  396. package/dist/admin1/ss.d.ts +4 -0
  397. package/dist/admin1/ss.js +2 -0
  398. package/dist/admin1/st.d.ts +4 -0
  399. package/dist/admin1/st.js +2 -0
  400. package/dist/admin1/sv.d.ts +4 -0
  401. package/dist/admin1/sv.js +2 -0
  402. package/dist/admin1/sy.d.ts +4 -0
  403. package/dist/admin1/sy.js +2 -0
  404. package/dist/admin1/sz.d.ts +4 -0
  405. package/dist/admin1/sz.js +2 -0
  406. package/dist/admin1/tc.d.ts +4 -0
  407. package/dist/admin1/tc.js +2 -0
  408. package/dist/admin1/td.d.ts +4 -0
  409. package/dist/admin1/td.js +2 -0
  410. package/dist/admin1/tf.d.ts +4 -0
  411. package/dist/admin1/tf.js +2 -0
  412. package/dist/admin1/tg.d.ts +4 -0
  413. package/dist/admin1/tg.js +2 -0
  414. package/dist/admin1/th.d.ts +4 -0
  415. package/dist/admin1/th.js +2 -0
  416. package/dist/admin1/tj.d.ts +4 -0
  417. package/dist/admin1/tj.js +2 -0
  418. package/dist/admin1/tk.d.ts +4 -0
  419. package/dist/admin1/tk.js +2 -0
  420. package/dist/admin1/tl.d.ts +4 -0
  421. package/dist/admin1/tl.js +2 -0
  422. package/dist/admin1/tm.d.ts +4 -0
  423. package/dist/admin1/tm.js +2 -0
  424. package/dist/admin1/tn.d.ts +4 -0
  425. package/dist/admin1/tn.js +2 -0
  426. package/dist/admin1/to.d.ts +4 -0
  427. package/dist/admin1/to.js +2 -0
  428. package/dist/admin1/tr.d.ts +4 -0
  429. package/dist/admin1/tr.js +2 -0
  430. package/dist/admin1/tt.d.ts +4 -0
  431. package/dist/admin1/tt.js +2 -0
  432. package/dist/admin1/tv.d.ts +4 -0
  433. package/dist/admin1/tv.js +2 -0
  434. package/dist/admin1/tw.d.ts +4 -0
  435. package/dist/admin1/tw.js +2 -0
  436. package/dist/admin1/tz.d.ts +4 -0
  437. package/dist/admin1/tz.js +2 -0
  438. package/dist/admin1/ua.d.ts +4 -0
  439. package/dist/admin1/ua.js +2 -0
  440. package/dist/admin1/ug.d.ts +4 -0
  441. package/dist/admin1/ug.js +2 -0
  442. package/dist/admin1/um.d.ts +4 -0
  443. package/dist/admin1/um.js +2 -0
  444. package/dist/admin1/us.d.ts +4 -0
  445. package/dist/admin1/us.js +2 -0
  446. package/dist/admin1/uy.d.ts +4 -0
  447. package/dist/admin1/uy.js +2 -0
  448. package/dist/admin1/uz.d.ts +4 -0
  449. package/dist/admin1/uz.js +2 -0
  450. package/dist/admin1/va.d.ts +4 -0
  451. package/dist/admin1/va.js +2 -0
  452. package/dist/admin1/vc.d.ts +4 -0
  453. package/dist/admin1/vc.js +2 -0
  454. package/dist/admin1/ve.d.ts +4 -0
  455. package/dist/admin1/ve.js +2 -0
  456. package/dist/admin1/vg.d.ts +4 -0
  457. package/dist/admin1/vg.js +2 -0
  458. package/dist/admin1/vi.d.ts +4 -0
  459. package/dist/admin1/vi.js +2 -0
  460. package/dist/admin1/vn.d.ts +4 -0
  461. package/dist/admin1/vn.js +2 -0
  462. package/dist/admin1/vu.d.ts +4 -0
  463. package/dist/admin1/vu.js +2 -0
  464. package/dist/admin1/wf.d.ts +4 -0
  465. package/dist/admin1/wf.js +2 -0
  466. package/dist/admin1/ws.d.ts +4 -0
  467. package/dist/admin1/ws.js +2 -0
  468. package/dist/admin1/xk.d.ts +4 -0
  469. package/dist/admin1/xk.js +2 -0
  470. package/dist/admin1/ye.d.ts +4 -0
  471. package/dist/admin1/ye.js +2 -0
  472. package/dist/admin1/za.d.ts +4 -0
  473. package/dist/admin1/za.js +2 -0
  474. package/dist/admin1/zm.d.ts +4 -0
  475. package/dist/admin1/zm.js +2 -0
  476. package/dist/admin1/zw.d.ts +4 -0
  477. package/dist/admin1/zw.js +2 -0
  478. package/dist/{chunk-R3XS6XPP.js → chunk-ZN6SLXL3.js} +123 -7
  479. package/dist/core.d.ts +52 -2
  480. package/dist/core.js +7 -1
  481. package/dist/{drill-chain-DCiuiZKK.d.ts → drill-chain-C8hhHBnd.d.ts} +13 -4
  482. package/dist/geo.d.ts +55 -1
  483. package/dist/geo.js +96 -0
  484. package/dist/index.d.ts +75 -5
  485. package/dist/index.js +254 -70
  486. package/dist/styles.d.ts +1 -1
  487. package/package.json +12 -3
package/dist/index.js CHANGED
@@ -25,6 +25,7 @@ import {
25
25
  defineTheme,
26
26
  drillDirectionBetween,
27
27
  drillReducer,
28
+ dropOverseas,
28
29
  extendTheme,
29
30
  flightDuration,
30
31
  formatDrillRequestProblem,
@@ -41,11 +42,13 @@ import {
41
42
  isThemeName,
42
43
  joinData,
43
44
  preserveView,
45
+ regionRotation,
44
46
  relativeTransform,
45
47
  releaseVelocity,
46
48
  resolveControls,
47
49
  resolveDrillData,
48
50
  resolveLabels,
51
+ resolveRegion,
49
52
  resolveTheme,
50
53
  resolveVariant,
51
54
  resolveZoomOptions,
@@ -57,13 +60,13 @@ import {
57
60
  unwrapGeography,
58
61
  validateLevels,
59
62
  zoomKeyAction
60
- } from "./chunk-R3XS6XPP.js";
63
+ } from "./chunk-ZN6SLXL3.js";
61
64
 
62
65
  // src/react/use-choropleth.ts
63
66
  import {
64
67
  useEffect as useEffect6,
65
68
  useLayoutEffect,
66
- useMemo as useMemo3,
69
+ useMemo as useMemo4,
67
70
  useRef as useRef5,
68
71
  useState as useState5
69
72
  } from "react";
@@ -268,14 +271,134 @@ var useContainerSize = ({
268
271
  import {
269
272
  useCallback as useCallback2,
270
273
  useEffect as useEffect4,
271
- useMemo as useMemo2,
274
+ useMemo as useMemo3,
272
275
  useReducer,
273
276
  useRef as useRef4,
274
277
  useState as useState3
275
278
  } from "react";
276
279
 
280
+ // src/react/region.ts
281
+ import { useMemo } from "react";
282
+
283
+ // src/geo/overseas.ts
284
+ var OVERSEAS_TERRITORIES = {
285
+ // French Guiana.
286
+ FR: [
287
+ [
288
+ [-56, 1],
289
+ [-51, 7]
290
+ ]
291
+ ],
292
+ // Svalbard.
293
+ NO: [
294
+ [
295
+ [0, 73],
296
+ [40, 82]
297
+ ]
298
+ ],
299
+ // Hawaii.
300
+ US: [
301
+ [
302
+ [-162, 18],
303
+ [-154, 23]
304
+ ]
305
+ ]
306
+ };
307
+
308
+ // src/geo/region-presets.ts
309
+ var ids = (list) => list.split(" ");
310
+ var northernEurope = ids("AX DK EE FI FO GB GG IE IM IS JE LT LV NO SE");
311
+ var westernEurope = ids("AT BE CH DE FR LI LU MC NL");
312
+ var southernEurope = ids("AD AL BA ES GI GR HR IT ME MK MT PT RS SI SM VA XK");
313
+ var easternEurope = ids("BG BY CZ HU MD PL RO SK UA");
314
+ var northernAfrica = ids("DZ EG EH LY MA SD TN");
315
+ var easternAfrica = ids("BI DJ ER ET KE KM MG MU MW MZ RW SC SO SS TZ UG ZM ZW");
316
+ var middleAfrica = ids("AO CD CF CG CM GA GQ ST TD");
317
+ var southernAfrica = ids("BW LS NA SZ ZA");
318
+ var westernAfrica = ids("BF BJ CI CV GH GM GN GW LR ML MR NE NG SL SN TG");
319
+ var centralAsia = ids("KG KZ TJ TM UZ");
320
+ var easternAsia = ids("CN HK JP KP KR MN MO TW");
321
+ var southeasternAsia = ids("BN ID KH LA MM MY PH SG TH TL VN");
322
+ var southernAsia = ids("AF BD BT IN IR LK MV NP PK");
323
+ var westernAsia = ids("AE AM AZ BH CY GE IL IQ JO KW LB OM PS QA SA SY TR YE");
324
+ var usAndCanada = ids("BM CA GL US");
325
+ var centralAmerica = ids("BZ CR GT HN MX NI PA SV");
326
+ var caribbean = ids("AG AW BB BS CU CW DM DO GD HT JM KN KY LC PR TT VC");
327
+ var southAmerica = ids("AR BO BR CL CO EC FK GY PE PY SR UY VE");
328
+ var australiaAndNewZealand = ids("AU NZ");
329
+ var melanesia = ids("FJ NC PG SB VU");
330
+ var micronesia = ids("FM GU KI MH NR PW");
331
+ var polynesia = ids("PF TO TV WS");
332
+ var REGION_PRESETS = {
333
+ // Continents: disjoint, each one is the union of its subregions.
334
+ africa: [
335
+ ...northernAfrica,
336
+ ...easternAfrica,
337
+ ...middleAfrica,
338
+ ...southernAfrica,
339
+ ...westernAfrica
340
+ ],
341
+ asia: [...centralAsia, ...easternAsia, ...southeasternAsia, ...southernAsia, ...westernAsia],
342
+ europe: [...northernEurope, ...westernEurope, ...southernEurope, ...easternEurope],
343
+ northAmerica: [...usAndCanada, ...centralAmerica, ...caribbean],
344
+ southAmerica,
345
+ oceania: [...australiaAndNewZealand, ...melanesia, ...micronesia, ...polynesia],
346
+ // Subregions (UN geoscheme).
347
+ northernAfrica,
348
+ easternAfrica,
349
+ middleAfrica,
350
+ southernAfrica,
351
+ westernAfrica,
352
+ centralAsia,
353
+ easternAsia,
354
+ southeasternAsia,
355
+ southernAsia,
356
+ westernAsia,
357
+ northernEurope,
358
+ westernEurope,
359
+ southernEurope,
360
+ easternEurope,
361
+ usAndCanada,
362
+ centralAmerica,
363
+ caribbean,
364
+ australiaAndNewZealand,
365
+ melanesia,
366
+ micronesia,
367
+ polynesia,
368
+ // Political / commercial groupings: they may overlap with everything else. FIRST CUT, to be confirmed with
369
+ // the tools that will use them (see FEAT-022); each one is a maintenance cost.
370
+ eu27: ids("AT BE BG CY CZ DE DK EE ES FI FR GR HR HU IE IT LT LU LV MT NL PL PT RO SE SI SK"),
371
+ nordics: ids("DK FI IS NO SE"),
372
+ iberia: ids("ES PT"),
373
+ latam: ids("AR BO BR CL CO CR CU DO EC GT HN HT MX NI PA PE PR PY SV UY VE"),
374
+ mena: ids("AE BH DZ EG EH IL IQ IR JO KW LB LY MA OM PS QA SA SY TN YE")
375
+ };
376
+
377
+ // src/react/region.ts
378
+ var regionKey = (region) => typeof region === "string" ? region : region.join("\0");
379
+ var useRegion = (region) => {
380
+ const key = region === void 0 ? void 0 : regionKey(region);
381
+ return useMemo(
382
+ () => region === void 0 || key === void 0 ? void 0 : { key, ids: resolveRegion(region, REGION_PRESETS) },
383
+ // `key` summarizes the content of `region`.
384
+ // oxlint-disable-next-line react-hooks/exhaustive-deps
385
+ [key]
386
+ );
387
+ };
388
+ var cache = /* @__PURE__ */ new WeakMap();
389
+ var withoutOverseas = (fc, region) => {
390
+ const byKey = cache.get(fc) ?? /* @__PURE__ */ new Map();
391
+ cache.set(fc, byKey);
392
+ const found = byKey.get(region.key);
393
+ if (found !== void 0) return found;
394
+ const features = dropOverseas(fc.features, OVERSEAS_TERRITORIES);
395
+ const created = features.every((feature, i) => feature === fc.features[i]) ? fc : { ...fc, features };
396
+ byKey.set(region.key, created);
397
+ return created;
398
+ };
399
+
277
400
  // src/react/use-drill-down.ts
278
- import { useCallback, useEffect as useEffect3, useMemo, useRef as useRef3, useState as useState2, useSyncExternalStore as useSyncExternalStore2 } from "react";
401
+ import { useCallback, useEffect as useEffect3, useMemo as useMemo2, useRef as useRef3, useState as useState2, useSyncExternalStore as useSyncExternalStore2 } from "react";
279
402
  var createDrillBridge = () => {
280
403
  let status = "idle";
281
404
  const listeners = /* @__PURE__ */ new Set();
@@ -304,7 +427,7 @@ var useDrillDown = ({
304
427
  onPathChange,
305
428
  getLabel
306
429
  }) => {
307
- useMemo(() => validateLevels(levels), [levels]);
430
+ useMemo2(() => validateLevels(levels), [levels]);
308
431
  const controlled = controlledPath !== void 0;
309
432
  const [innerPath, setInnerPath] = useState2(
310
433
  () => clampPath(defaultPath ?? [], levels.length).path
@@ -354,7 +477,7 @@ var useDrillDown = ({
354
477
  const reset = useCallback(() => commit([]), [commit]);
355
478
  const status = useSyncExternalStore2(bridge.subscribe, bridge.getStatus, bridge.getStatus);
356
479
  const rootLabel = levels[0]?.label ?? levels[0]?.id ?? "";
357
- const breadcrumbs = useMemo(
480
+ const breadcrumbs = useMemo2(
358
481
  () => buildBreadcrumbs({
359
482
  path,
360
483
  rootLabel,
@@ -366,8 +489,8 @@ var useDrillDown = ({
366
489
  [pathKey, rootLabel]
367
490
  );
368
491
  const level = levels[path.length] ?? levels[levels.length - 1];
369
- const context = useMemo(() => contextOf(path), [path]);
370
- return useMemo(
492
+ const context = useMemo2(() => contextOf(path), [path]);
493
+ return useMemo2(
371
494
  () => ({
372
495
  levels,
373
496
  path,
@@ -447,6 +570,7 @@ var useDrillEngine = ({
447
570
  drill,
448
571
  data,
449
572
  filterFeatures,
573
+ region,
450
574
  store,
451
575
  onDrill,
452
576
  onDrillEnd,
@@ -461,7 +585,7 @@ var useDrillEngine = ({
461
585
  const target = controller?.path ?? EMPTY_PATH;
462
586
  const targetKey = JSON.stringify(target);
463
587
  const [machine, dispatch] = useReducer(drillReducer, target, createDrillState);
464
- const [cache] = useState3(() => createLruCache());
588
+ const [cache2] = useState3(() => createLruCache());
465
589
  const [version, setVersion] = useState3(0);
466
590
  const [failed, setFailed] = useState3(/* @__PURE__ */ new Map());
467
591
  const pending = useRef4(/* @__PURE__ */ new Set());
@@ -470,7 +594,7 @@ var useDrillEngine = ({
470
594
  const geographyAt = (depth2, path) => {
471
595
  const level2 = levels[sourceOf(depth2)];
472
596
  if (level2 === void 0) return void 0;
473
- return fixedGeography(level2) ?? cache.get(keyAt(depth2, path));
597
+ return fixedGeography(level2) ?? cache2.get(keyAt(depth2, path));
474
598
  };
475
599
  const mounted = useRef4(false);
476
600
  useEffect4(() => {
@@ -485,7 +609,7 @@ var useDrillEngine = ({
485
609
  const level2 = levels[source];
486
610
  if (level2 === void 0 || fixedGeography(level2) !== void 0) continue;
487
611
  const key = keyAt(depth2, path);
488
- if (cache.has(key) || pending.current.has(key)) continue;
612
+ if (cache2.has(key) || pending.current.has(key)) continue;
489
613
  if (failed.has(key) && !retryFailed) continue;
490
614
  const input = typeof level2.geography === "function" ? level2.geography(contextOf(path.slice(0, source))) : level2.geography;
491
615
  if (input === "inherit") continue;
@@ -493,7 +617,7 @@ var useDrillEngine = ({
493
617
  resolveInput(input).then(
494
618
  (loaded) => {
495
619
  pending.current.delete(key);
496
- cache.set(key, loaded);
620
+ cache2.set(key, loaded);
497
621
  if (mounted.current) setVersion((v) => v + 1);
498
622
  },
499
623
  (error) => {
@@ -528,15 +652,24 @@ var useDrillEngine = ({
528
652
  const level2 = levels[k];
529
653
  if (level2?.filterFeatures?.(feature, contextOf(path.slice(0, k))) === false) return false;
530
654
  }
531
- return source !== 0 || filterFeatures === void 0 || filterFeatures(feature);
655
+ if (source !== 0) return true;
656
+ if (region !== void 0) {
657
+ const id = (levels[0]?.getFeatureId ?? defaultFeatureId)(feature);
658
+ if (id === void 0 || !region.ids.has(id)) return false;
659
+ }
660
+ return filterFeatures === void 0 || filterFeatures(feature);
532
661
  };
533
662
  };
534
663
  const featuresAt = (depth2, path) => {
535
664
  const geography2 = geographyAt(depth2, path);
536
665
  if (geography2 === void 0) return void 0;
537
- const raw = featureCollectionOf(geography2, levels[sourceOf(depth2)]?.objectName);
538
- return stableFilter(raw, keepFor(depth2, path));
666
+ const source = sourceOf(depth2);
667
+ const raw = featureCollectionOf(geography2, levels[source]?.objectName);
668
+ const kept = stableFilter(raw, keepFor(depth2, path));
669
+ return source === 0 && region !== void 0 ? withoutOverseas(kept, region) : kept;
539
670
  };
671
+ const rootGeography = active ? geographyAt(0, EMPTY_PATH) : void 0;
672
+ const rootAll = rootGeography === void 0 || region === void 0 ? void 0 : featureCollectionOf(rootGeography, levels[sourceOf(0)]?.objectName);
540
673
  const featuresFor = (path) => Array.from({ length: path.length + 1 }, (_, d) => featuresAt(d, path));
541
674
  const chainLevelOf = (depth2, fc) => ({
542
675
  features: fc.features,
@@ -571,7 +704,7 @@ var useDrillEngine = ({
571
704
  [latest]
572
705
  );
573
706
  const chainSig = `${shownKey}|${shownFeatures.map(idOfCollection).join(",")}`;
574
- const chain = useMemo2(
707
+ const chain = useMemo3(
575
708
  () => shownFeatures.flatMap((fc, depth2) => fc === void 0 ? [] : [chainLevelOf(depth2, fc)]),
576
709
  // oxlint-disable-next-line react-hooks/exhaustive-deps
577
710
  [chainSig, levels]
@@ -592,7 +725,7 @@ var useDrillEngine = ({
592
725
  const sourceLevel = levels[sourceOf(depth)];
593
726
  const features = hasShown ? shownFeatures[depth] : void 0;
594
727
  const geography = hasShown ? geographyAt(depth, shownPath) : void 0;
595
- const emptyError = useMemo2(() => {
728
+ const emptyError = useMemo3(() => {
596
729
  if (!targetEmpty) return null;
597
730
  const parent = target.at(-1) ?? null;
598
731
  const id = levels[target.length]?.id ?? "?";
@@ -756,6 +889,7 @@ var useDrillEngine = ({
756
889
  chainSig,
757
890
  filterFeatures: active && hasShown ? keepFor(depth, shownPath) : void 0,
758
891
  rootFeatures: hasShown ? shownFeatures[0] : void 0,
892
+ rootAll,
759
893
  data: !active ? void 0 : shownIsTarget ? liveData : latest.data,
760
894
  noteItem,
761
895
  machine,
@@ -836,10 +970,12 @@ var clearGeographyCache = () => {
836
970
  var FALLBACK_POINT_RADIUS = 4;
837
971
  var useChoropleth = (rawOptions) => {
838
972
  const [store] = useState5(createMapStore);
973
+ const region = useRegion(rawOptions.region);
839
974
  const engine = useDrillEngine({
840
975
  drill: rawOptions.drill,
841
976
  data: rawOptions.data,
842
977
  filterFeatures: rawOptions.filterFeatures,
978
+ region,
843
979
  store,
844
980
  onDrill: rawOptions.onDrill,
845
981
  onDrillEnd: rawOptions.onDrillEnd,
@@ -869,8 +1005,13 @@ var useChoropleth = (rawOptions) => {
869
1005
  const geography = engine.active ? engine.geography : single.geography;
870
1006
  const status = engine.active ? engine.status : single.status;
871
1007
  const objectName = engine.active ? engine.objectName : options.objectName;
872
- const filterFeatures = engine.active ? engine.filterFeatures : options.filterFeatures;
873
- const allFeatures = useMemo3(
1008
+ const regionIdOf = getFeatureId ?? defaultFeatureId2;
1009
+ const userFilter = engine.active ? engine.filterFeatures : options.filterFeatures;
1010
+ const filterFeatures = engine.active || region === void 0 ? userFilter : (feature) => {
1011
+ const id = regionIdOf(feature);
1012
+ return id !== void 0 && region.ids.has(id) && (userFilter?.(feature) ?? true);
1013
+ };
1014
+ const allFeatures = useMemo4(
874
1015
  () => engine.active ? engine.features ?? EMPTY_FEATURES : geography === void 0 ? EMPTY_FEATURES : toFeatureCollection({ geography, objectName }),
875
1016
  // `engine.features` already comes filtered and is stable (the engine's caches).
876
1017
  // oxlint-disable-next-line react-hooks/exhaustive-deps
@@ -878,31 +1019,43 @@ var useChoropleth = (rawOptions) => {
878
1019
  );
879
1020
  const keptIndexes = filterFeatures === void 0 ? null : allFeatures.features.flatMap((f, index) => filterFeatures(f) ? [index] : []);
880
1021
  const keptKey = keptIndexes === null ? "" : keptIndexes.join(",");
881
- const features = useMemo3(
882
- () => keptIndexes === null ? allFeatures : {
1022
+ const features = useMemo4(() => {
1023
+ const kept = keptIndexes === null ? allFeatures : {
883
1024
  ...allFeatures,
884
1025
  features: keptIndexes.flatMap((index) => {
885
1026
  const feature = allFeatures.features[index];
886
1027
  return feature === void 0 ? [] : [feature];
887
1028
  })
888
- },
889
- // `keptIndexes` is summarized in `keptKey` (see above).
890
- // oxlint-disable-next-line react-hooks/exhaustive-deps
891
- [allFeatures, keptKey]
892
- );
893
- const bordersGeometry = useMemo3(
1029
+ };
1030
+ return engine.active || region === void 0 ? kept : withoutOverseas(kept, region);
1031
+ }, [allFeatures, keptKey, engine.active, region?.key]);
1032
+ const bordersGeometry = useMemo4(
894
1033
  () => geography === void 0 ? null : createBorders({ geography, objectName, filterFeatures }),
895
1034
  // `filterFeatures` is summarized in `keptKey`: its identity must not relaunch the computation.
896
1035
  // oxlint-disable-next-line react-hooks/exhaustive-deps
897
1036
  [geography, objectName, keptKey]
898
1037
  );
899
- const autoAspect = useMemo3(
1038
+ const rotationFeatures = engine.active ? engine.rootFeatures : features;
1039
+ const rotation = useMemo4(() => {
1040
+ if (region === void 0 || rotationFeatures === void 0) return void 0;
1041
+ const points = Object.entries(fallbackPoints ?? {}).flatMap(
1042
+ ([id, point]) => region.ids.has(id) ? [point] : []
1043
+ );
1044
+ return regionRotation(rotationFeatures.features, points);
1045
+ }, [region?.key, rotationFeatures, fallbackPoints]);
1046
+ const rotateLon = rotation?.[0];
1047
+ const rotate = useMemo4(
1048
+ () => rotateLon === void 0 ? void 0 : [rotateLon, 0],
1049
+ [rotateLon]
1050
+ );
1051
+ const autoAspect = useMemo4(
900
1052
  () => options.aspectRatio === "auto" ? computeAspectRatio({
901
1053
  name: projection,
902
1054
  // With drill the proportion is the root's: it must not change when going down a level.
903
- featureCollection: (engine.active ? engine.rootFeatures : void 0) ?? features
1055
+ featureCollection: (engine.active ? engine.rootFeatures : void 0) ?? features,
1056
+ rotate
904
1057
  }) : void 0,
905
- [options.aspectRatio, projection, features, engine.active, engine.rootFeatures]
1058
+ [options.aspectRatio, projection, features, engine.active, engine.rootFeatures, rotate]
906
1059
  );
907
1060
  const measured = useContainerSize({
908
1061
  aspectRatio: options.aspectRatio === "auto" ? autoAspect : options.aspectRatio
@@ -915,7 +1068,7 @@ var useChoropleth = (rawOptions) => {
915
1068
  { ...DEFAULT_FOCUS_BOUNDS, ...options.focusBounds }
916
1069
  );
917
1070
  const focusKey = JSON.stringify(drillFocusBounds);
918
- const chain = useMemo3(
1071
+ const chain = useMemo4(
919
1072
  () => engine.active && engine.chain.length > 0 && width > 0 && height > 0 ? buildProjectionChain({
920
1073
  levels: engine.chain,
921
1074
  path: engine.shownPath,
@@ -923,11 +1076,12 @@ var useChoropleth = (rawOptions) => {
923
1076
  width,
924
1077
  height,
925
1078
  padding: rebasePadding,
926
- focusBounds: drillFocusBounds
1079
+ focusBounds: drillFocusBounds,
1080
+ rotate
927
1081
  }) : null,
928
1082
  // `chainSig` summarizes the content of `engine.chain`; `focusKey`, that of `drillFocusBounds`.
929
1083
  // oxlint-disable-next-line react-hooks/exhaustive-deps
930
- [engine.active, engine.chainSig, projection, width, height, rebasePadding, focusKey]
1084
+ [engine.active, engine.chainSig, projection, width, height, rebasePadding, focusKey, rotate]
931
1085
  );
932
1086
  const chainMissing = chain?.missing ?? null;
933
1087
  useEffect6(() => {
@@ -944,12 +1098,13 @@ var useChoropleth = (rawOptions) => {
944
1098
  width,
945
1099
  height,
946
1100
  padding: rebasePadding,
947
- focusBounds: drillFocusBounds
1101
+ focusBounds: drillFocusBounds,
1102
+ rotate
948
1103
  });
949
1104
  useDrillChoreography({ engine, store, shownChain: chain, chainFor });
950
1105
  const { machine, previous } = engine;
951
1106
  const leaving = machine.layers.some((layer) => layer.role === "exiting");
952
- const previousChain = useMemo3(
1107
+ const previousChain = useMemo4(
953
1108
  () => engine.active && previous !== null && width > 0 && height > 0 && (leaving || machine.direction === "up") ? buildProjectionChain({
954
1109
  levels: [...previous.chain],
955
1110
  path: previous.path,
@@ -957,7 +1112,8 @@ var useChoropleth = (rawOptions) => {
957
1112
  width,
958
1113
  height,
959
1114
  padding: rebasePadding,
960
- focusBounds: drillFocusBounds
1115
+ focusBounds: drillFocusBounds,
1116
+ rotate
961
1117
  }) : null,
962
1118
  // `previous` changes only when the level changes; `focusKey` summarizes `drillFocusBounds`.
963
1119
  // oxlint-disable-next-line react-hooks/exhaustive-deps
@@ -970,13 +1126,14 @@ var useChoropleth = (rawOptions) => {
970
1126
  width,
971
1127
  height,
972
1128
  rebasePadding,
973
- focusKey
1129
+ focusKey,
1130
+ rotate
974
1131
  ]
975
1132
  );
976
1133
  const activeProjection = chain?.projections[chain.projections.length - 1];
977
1134
  const layersKey = machine.layers.map((layer) => `${layer.key}:${layer.role}`).join("|");
978
1135
  const contextMode = engine.level?.context ?? "siblings";
979
- const drillLayers = useMemo3(() => {
1136
+ const drillLayers = useMemo4(() => {
980
1137
  if (!engine.active || chain === null || activeProjection === void 0) return [];
981
1138
  const views = [];
982
1139
  const activeSource = sourceDepth(engine.levels, engine.depth);
@@ -1028,7 +1185,7 @@ var useChoropleth = (rawOptions) => {
1028
1185
  return views;
1029
1186
  }, [engine.active, chain, previousChain, previous, layersKey, engine.chainSig, contextMode]);
1030
1187
  const controller = engine.controller;
1031
- const drillNav = useMemo3(() => {
1188
+ const drillNav = useMemo4(() => {
1032
1189
  if (!engine.active || controller === null) return null;
1033
1190
  const rootLabel = engine.levels[0]?.label ?? labels.breadcrumbRoot;
1034
1191
  const items = controller.breadcrumbs.map((crumb) => {
@@ -1061,12 +1218,13 @@ var useChoropleth = (rawOptions) => {
1061
1218
  labels.breadcrumbRoot
1062
1219
  ]);
1063
1220
  const drillFocusId = engine.active && (machine.phase === "flying" || machine.phase === "loading") && machine.direction !== "up" && machine.direction !== null ? machine.path.at(-1) ?? null : null;
1064
- const { paths, bordersPath, anchors, project, invert, toPath } = useMemo3(() => {
1221
+ const { paths, bordersPath, anchors, project, invert, toPath } = useMemo4(() => {
1065
1222
  const geoProjection = chain?.projections[chain.projections.length - 1] ?? createProjection({
1066
1223
  name: projection,
1067
1224
  width,
1068
1225
  height,
1069
- featureCollection: features
1226
+ featureCollection: features,
1227
+ rotate
1070
1228
  });
1071
1229
  const toPath2 = geoPath(geoProjection);
1072
1230
  const toPoint = (coordinates) => {
@@ -1096,16 +1254,32 @@ var useChoropleth = (rawOptions) => {
1096
1254
  return at != null && Number.isFinite(at[0]) && Number.isFinite(at[1]) ? [at[0], at[1]] : null;
1097
1255
  }
1098
1256
  };
1099
- }, [features, bordersGeometry, projection, width, height, isBubble, chain]);
1257
+ }, [features, bordersGeometry, projection, width, height, isBubble, chain, rotate]);
1100
1258
  const lastData = useRef5(options.data);
1101
1259
  if (options.data !== void 0) lastData.current = options.data;
1102
1260
  const data = options.data ?? lastData.current ?? NO_DATA;
1103
1261
  const dataLoading = options.loading ?? options.data === void 0;
1104
1262
  const idOf = getFeatureId ?? defaultFeatureId2;
1105
1263
  const join = joinData({ features: features.features, data, getId, getFeatureId: idOf });
1264
+ const outOfRegion = [];
1265
+ let unmatchedIds = join.unmatchedData;
1266
+ const regionDrawn = !engine.active || sourceDepth(engine.levels, engine.depth) === 0;
1267
+ if (region !== void 0 && regionDrawn && unmatchedIds.length > 0) {
1268
+ const world = engine.active ? engine.rootAll : allFeatures;
1269
+ const worldIds = /* @__PURE__ */ new Set();
1270
+ for (const feature of world?.features ?? []) {
1271
+ const id = idOf(feature);
1272
+ if (id !== void 0) worldIds.add(id);
1273
+ }
1274
+ unmatchedIds = unmatchedIds.filter((id) => {
1275
+ const outside = !region.ids.has(id) && (worldIds.has(id) || fallbackPoints?.[id] !== void 0);
1276
+ if (outside) outOfRegion.push(id);
1277
+ return !outside;
1278
+ });
1279
+ }
1106
1280
  const fallbacks = [];
1107
- if (fallbackPoints !== void 0 && join.unmatchedData.length > 0) {
1108
- const wanted = new Set(join.unmatchedData.filter((id) => fallbackPoints[id] !== void 0));
1281
+ if (fallbackPoints !== void 0 && unmatchedIds.length > 0) {
1282
+ const wanted = new Set(unmatchedIds.filter((id) => fallbackPoints[id] !== void 0));
1109
1283
  const seen = /* @__PURE__ */ new Set();
1110
1284
  for (const datum of data) {
1111
1285
  const id = getId(datum);
@@ -1120,9 +1294,10 @@ var useChoropleth = (rawOptions) => {
1120
1294
  const fallbackIds = new Set(fallbacks.map((f) => f.id));
1121
1295
  const hasOwnCoordinates = options.variant === "bubble" && options.getCoordinates !== void 0;
1122
1296
  const joinReport = {
1123
- unmatchedData: hasOwnCoordinates ? [] : join.unmatchedData.filter((id) => !fallbackIds.has(id)),
1297
+ unmatchedData: hasOwnCoordinates ? [] : unmatchedIds.filter((id) => !fallbackIds.has(id)),
1124
1298
  featuresWithoutData: hasOwnCoordinates ? [] : join.featuresWithoutData,
1125
- duplicateDataIds: join.duplicateDataIds
1299
+ duplicateDataIds: join.duplicateDataIds,
1300
+ outOfRegion: hasOwnCoordinates ? [] : outOfRegion
1126
1301
  };
1127
1302
  const entries = features.features.map((feature) => {
1128
1303
  const id = idOf(feature);
@@ -1216,7 +1391,8 @@ var useChoropleth = (rawOptions) => {
1216
1391
  data.length,
1217
1392
  joinReport.unmatchedData.join(""),
1218
1393
  joinReport.featuresWithoutData.join(""),
1219
- joinReport.duplicateDataIds.join("")
1394
+ joinReport.duplicateDataIds.join(""),
1395
+ joinReport.outOfRegion.join("")
1220
1396
  ].join("\0");
1221
1397
  const { onJoinReport, diagnostics = true } = options;
1222
1398
  useEffect6(() => {
@@ -1236,6 +1412,14 @@ var useChoropleth = (rawOptions) => {
1236
1412
  ${levelHint}`);
1237
1413
  }
1238
1414
  }, [reportKey, status]);
1415
+ const emptyRegion = region !== void 0 && regionDrawn && features.features.length === 0;
1416
+ useEffect6(() => {
1417
+ if (status === "ready" && emptyRegion && diagnostics && !isProduction()) {
1418
+ console.warn(
1419
+ `[choropleth] region "${region?.key}" matches no region of the geometry. Regions are matched by ISO 3166-1 alpha-2 code against \`feature.id\`: if your geometry uses other ids, pass \`getFeatureId\`.`
1420
+ );
1421
+ }
1422
+ }, [emptyRegion, status, diagnostics, region?.key]);
1239
1423
  const noIdsMessage = formatNoIdsDiagnostic({
1240
1424
  featureCount: features.features.length,
1241
1425
  idCount: regions.length,
@@ -1267,9 +1451,9 @@ var useChoropleth = (rawOptions) => {
1267
1451
  const { rememberFills } = engine;
1268
1452
  const drillActive = engine.active;
1269
1453
  useEffect6(() => {
1270
- if (drillActive) rememberFills(new Map(regions.map((region) => [region.id, region.fill])));
1454
+ if (drillActive) rememberFills(new Map(regions.map((region2) => [region2.id, region2.fill])));
1271
1455
  });
1272
- const regionsById = new Map(regions.map((region) => [region.id, region]));
1456
+ const regionsById = new Map(regions.map((region2) => [region2.id, region2]));
1273
1457
  const featuresById = /* @__PURE__ */ new Map();
1274
1458
  features.features.forEach((feature) => {
1275
1459
  const id = idOf(feature);
@@ -1279,19 +1463,19 @@ var useChoropleth = (rawOptions) => {
1279
1463
  const fallbackMarksById = new Map(fallbackMarks.map((f) => [f.id, f]));
1280
1464
  const getItemContext = (ref) => {
1281
1465
  if (ref.kind === "region") {
1282
- const region = regionsById.get(ref.id);
1283
- if (region === void 0) return void 0;
1466
+ const region2 = regionsById.get(ref.id);
1467
+ if (region2 === void 0) return void 0;
1284
1468
  return {
1285
1469
  kind: "region",
1286
- id: region.id,
1287
- feature: region.feature,
1288
- datum: region.datum,
1470
+ id: region2.id,
1471
+ feature: region2.feature,
1472
+ datum: region2.datum,
1289
1473
  level: levelInfo,
1290
- drillable: region.drillable,
1291
- value: region.value,
1292
- formattedValue: region.formattedValue,
1293
- color: region.fill,
1294
- label: nameOf(region.feature) ?? region.id
1474
+ drillable: region2.drillable,
1475
+ value: region2.value,
1476
+ formattedValue: region2.formattedValue,
1477
+ color: region2.fill,
1478
+ label: nameOf(region2.feature) ?? region2.id
1295
1479
  };
1296
1480
  }
1297
1481
  const bubble = bubblesById.get(ref.id);
@@ -1395,7 +1579,7 @@ var useChoropleth = (rawOptions) => {
1395
1579
  useEffect6(() => {
1396
1580
  latestDrill.current = { findRequestProblem, engine };
1397
1581
  });
1398
- const drillApi = useMemo3(() => {
1582
+ const drillApi = useMemo4(() => {
1399
1583
  const refuse = (message) => {
1400
1584
  if (!isProduction()) console.warn(message);
1401
1585
  return Promise.resolve({ completed: false });
@@ -1431,11 +1615,11 @@ var useChoropleth = (rawOptions) => {
1431
1615
  hoverItem(null);
1432
1616
  }
1433
1617
  };
1434
- const getRegionProps = (region) => {
1435
- const ref = { kind: "region", id: region.id };
1618
+ const getRegionProps = (region2) => {
1619
+ const ref = { kind: "region", id: region2.id };
1436
1620
  return {
1437
- "data-region-id": region.id,
1438
- "data-selected": region.id === selectedId ? true : void 0,
1621
+ "data-region-id": region2.id,
1622
+ "data-selected": region2.id === selectedId ? true : void 0,
1439
1623
  onClick: () => clickItem(ref),
1440
1624
  onPointerEnter: () => hoverItem(ref),
1441
1625
  onPointerLeave: leaveHandler(ref)
@@ -1607,10 +1791,10 @@ var Patterns = () => {
1607
1791
  };
1608
1792
 
1609
1793
  // src/react/use-camera.ts
1610
- import { useMemo as useMemo4, useSyncExternalStore as useSyncExternalStore3 } from "react";
1794
+ import { useMemo as useMemo5, useSyncExternalStore as useSyncExternalStore3 } from "react";
1611
1795
  var useCamera = (selector) => {
1612
1796
  const { store, api } = useChoroplethContext();
1613
- const getSnapshot = useMemo4(
1797
+ const getSnapshot = useMemo5(
1614
1798
  () => createCameraSnapshot(store, () => api.getView(), selector),
1615
1799
  [store, api, selector]
1616
1800
  );
@@ -2442,7 +2626,7 @@ import {
2442
2626
  useEffect as useEffect9,
2443
2627
  useId,
2444
2628
  useImperativeHandle,
2445
- useMemo as useMemo5,
2629
+ useMemo as useMemo6,
2446
2630
  useRef as useRef7
2447
2631
  } from "react";
2448
2632
 
@@ -2509,10 +2693,10 @@ var RootInner = ({
2509
2693
  );
2510
2694
  return () => store.registerFallbackView(null);
2511
2695
  }, [store, width, height, invert]);
2512
- const api = useMemo5(() => createHandle(store), [store]);
2696
+ const api = useMemo6(() => createHandle(store), [store]);
2513
2697
  useImperativeHandle(ref, () => api, [api]);
2514
- const themeVars = useMemo5(() => themeToCssVars(resolveTheme(theme)), [theme]);
2515
- const slots = useMemo5(() => classNames ?? {}, [classNames]);
2698
+ const themeVars = useMemo6(() => themeToCssVars(resolveTheme(theme)), [theme]);
2699
+ const slots = useMemo6(() => classNames ?? {}, [classNames]);
2516
2700
  const instance = useId().replace(/[^a-zA-Z0-9_-]/g, "");
2517
2701
  const defId = useCallback3((name) => `cm${instance}-${name}`, [instance]);
2518
2702
  const pattern = emptyPattern ?? resolveTheme(theme)?.empty?.pattern;
package/dist/styles.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- export { }
2
+ export { };