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.
- package/README.md +106 -16
- package/dist/admin1/ad.d.ts +4 -0
- package/dist/admin1/ad.js +2 -0
- package/dist/admin1/ae.d.ts +4 -0
- package/dist/admin1/ae.js +2 -0
- package/dist/admin1/af.d.ts +4 -0
- package/dist/admin1/af.js +2 -0
- package/dist/admin1/ag.d.ts +4 -0
- package/dist/admin1/ag.js +2 -0
- package/dist/admin1/ai.d.ts +4 -0
- package/dist/admin1/ai.js +2 -0
- package/dist/admin1/al.d.ts +4 -0
- package/dist/admin1/al.js +2 -0
- package/dist/admin1/am.d.ts +4 -0
- package/dist/admin1/am.js +2 -0
- package/dist/admin1/ao.d.ts +4 -0
- package/dist/admin1/ao.js +2 -0
- package/dist/admin1/aq.d.ts +4 -0
- package/dist/admin1/aq.js +2 -0
- package/dist/admin1/ar.d.ts +4 -0
- package/dist/admin1/ar.js +2 -0
- package/dist/admin1/as.d.ts +4 -0
- package/dist/admin1/as.js +2 -0
- package/dist/admin1/at.d.ts +4 -0
- package/dist/admin1/at.js +2 -0
- package/dist/admin1/au.d.ts +4 -0
- package/dist/admin1/au.js +2 -0
- package/dist/admin1/aw.d.ts +4 -0
- package/dist/admin1/aw.js +2 -0
- package/dist/admin1/ax.d.ts +4 -0
- package/dist/admin1/ax.js +2 -0
- package/dist/admin1/az.d.ts +4 -0
- package/dist/admin1/az.js +2 -0
- package/dist/admin1/ba.d.ts +4 -0
- package/dist/admin1/ba.js +2 -0
- package/dist/admin1/bb.d.ts +4 -0
- package/dist/admin1/bb.js +2 -0
- package/dist/admin1/bd.d.ts +4 -0
- package/dist/admin1/bd.js +2 -0
- package/dist/admin1/be.d.ts +4 -0
- package/dist/admin1/be.js +2 -0
- package/dist/admin1/bf.d.ts +4 -0
- package/dist/admin1/bf.js +2 -0
- package/dist/admin1/bg.d.ts +4 -0
- package/dist/admin1/bg.js +2 -0
- package/dist/admin1/bh.d.ts +4 -0
- package/dist/admin1/bh.js +2 -0
- package/dist/admin1/bi.d.ts +4 -0
- package/dist/admin1/bi.js +2 -0
- package/dist/admin1/bj.d.ts +4 -0
- package/dist/admin1/bj.js +2 -0
- package/dist/admin1/bl.d.ts +4 -0
- package/dist/admin1/bl.js +2 -0
- package/dist/admin1/bm.d.ts +4 -0
- package/dist/admin1/bm.js +2 -0
- package/dist/admin1/bn.d.ts +4 -0
- package/dist/admin1/bn.js +2 -0
- package/dist/admin1/bo.d.ts +4 -0
- package/dist/admin1/bo.js +2 -0
- package/dist/admin1/br.d.ts +4 -0
- package/dist/admin1/br.js +2 -0
- package/dist/admin1/bs.d.ts +4 -0
- package/dist/admin1/bs.js +2 -0
- package/dist/admin1/bt.d.ts +4 -0
- package/dist/admin1/bt.js +2 -0
- package/dist/admin1/bw.d.ts +4 -0
- package/dist/admin1/bw.js +2 -0
- package/dist/admin1/by.d.ts +4 -0
- package/dist/admin1/by.js +2 -0
- package/dist/admin1/bz.d.ts +4 -0
- package/dist/admin1/bz.js +2 -0
- package/dist/admin1/ca.d.ts +4 -0
- package/dist/admin1/ca.js +2 -0
- package/dist/admin1/cd.d.ts +4 -0
- package/dist/admin1/cd.js +2 -0
- package/dist/admin1/cf.d.ts +4 -0
- package/dist/admin1/cf.js +2 -0
- package/dist/admin1/cg.d.ts +4 -0
- package/dist/admin1/cg.js +2 -0
- package/dist/admin1/ch.d.ts +4 -0
- package/dist/admin1/ch.js +2 -0
- package/dist/admin1/ci.d.ts +4 -0
- package/dist/admin1/ci.js +2 -0
- package/dist/admin1/ck.d.ts +4 -0
- package/dist/admin1/ck.js +2 -0
- package/dist/admin1/cl.d.ts +4 -0
- package/dist/admin1/cl.js +2 -0
- package/dist/admin1/cm.d.ts +4 -0
- package/dist/admin1/cm.js +2 -0
- package/dist/admin1/cn.d.ts +4 -0
- package/dist/admin1/cn.js +2 -0
- package/dist/admin1/co.d.ts +4 -0
- package/dist/admin1/co.js +2 -0
- package/dist/admin1/cr.d.ts +4 -0
- package/dist/admin1/cr.js +2 -0
- package/dist/admin1/cu.d.ts +4 -0
- package/dist/admin1/cu.js +2 -0
- package/dist/admin1/cv.d.ts +4 -0
- package/dist/admin1/cv.js +2 -0
- package/dist/admin1/cw.d.ts +4 -0
- package/dist/admin1/cw.js +2 -0
- package/dist/admin1/cy.d.ts +4 -0
- package/dist/admin1/cy.js +2 -0
- package/dist/admin1/cz.d.ts +4 -0
- package/dist/admin1/cz.js +2 -0
- package/dist/admin1/de.d.ts +4 -0
- package/dist/admin1/de.js +2 -0
- package/dist/admin1/dj.d.ts +4 -0
- package/dist/admin1/dj.js +2 -0
- package/dist/admin1/dk.d.ts +4 -0
- package/dist/admin1/dk.js +2 -0
- package/dist/admin1/dm.d.ts +4 -0
- package/dist/admin1/dm.js +2 -0
- package/dist/admin1/do.d.ts +4 -0
- package/dist/admin1/do.js +2 -0
- package/dist/admin1/dz.d.ts +4 -0
- package/dist/admin1/dz.js +2 -0
- package/dist/admin1/ec.d.ts +4 -0
- package/dist/admin1/ec.js +2 -0
- package/dist/admin1/ee.d.ts +4 -0
- package/dist/admin1/ee.js +2 -0
- package/dist/admin1/eg.d.ts +4 -0
- package/dist/admin1/eg.js +2 -0
- package/dist/admin1/eh.d.ts +4 -0
- package/dist/admin1/eh.js +2 -0
- package/dist/admin1/er.d.ts +4 -0
- package/dist/admin1/er.js +2 -0
- package/dist/admin1/es.d.ts +4 -0
- package/dist/admin1/es.js +2 -0
- package/dist/admin1/et.d.ts +4 -0
- package/dist/admin1/et.js +2 -0
- package/dist/admin1/fi.d.ts +4 -0
- package/dist/admin1/fi.js +2 -0
- package/dist/admin1/fj.d.ts +4 -0
- package/dist/admin1/fj.js +2 -0
- package/dist/admin1/fk.d.ts +4 -0
- package/dist/admin1/fk.js +2 -0
- package/dist/admin1/fm.d.ts +4 -0
- package/dist/admin1/fm.js +2 -0
- package/dist/admin1/fo.d.ts +4 -0
- package/dist/admin1/fo.js +2 -0
- package/dist/admin1/fr.d.ts +4 -0
- package/dist/admin1/fr.js +2 -0
- package/dist/admin1/ga.d.ts +4 -0
- package/dist/admin1/ga.js +2 -0
- package/dist/admin1/gb.d.ts +4 -0
- package/dist/admin1/gb.js +2 -0
- package/dist/admin1/gd.d.ts +4 -0
- package/dist/admin1/gd.js +2 -0
- package/dist/admin1/ge.d.ts +4 -0
- package/dist/admin1/ge.js +2 -0
- package/dist/admin1/gg.d.ts +4 -0
- package/dist/admin1/gg.js +2 -0
- package/dist/admin1/gh.d.ts +4 -0
- package/dist/admin1/gh.js +2 -0
- package/dist/admin1/gi.d.ts +4 -0
- package/dist/admin1/gi.js +2 -0
- package/dist/admin1/gl.d.ts +4 -0
- package/dist/admin1/gl.js +2 -0
- package/dist/admin1/gm.d.ts +4 -0
- package/dist/admin1/gm.js +2 -0
- package/dist/admin1/gn.d.ts +4 -0
- package/dist/admin1/gn.js +2 -0
- package/dist/admin1/gq.d.ts +4 -0
- package/dist/admin1/gq.js +2 -0
- package/dist/admin1/gr.d.ts +4 -0
- package/dist/admin1/gr.js +2 -0
- package/dist/admin1/gs.d.ts +4 -0
- package/dist/admin1/gs.js +2 -0
- package/dist/admin1/gt.d.ts +4 -0
- package/dist/admin1/gt.js +2 -0
- package/dist/admin1/gu.d.ts +4 -0
- package/dist/admin1/gu.js +2 -0
- package/dist/admin1/gw.d.ts +4 -0
- package/dist/admin1/gw.js +2 -0
- package/dist/admin1/gy.d.ts +4 -0
- package/dist/admin1/gy.js +2 -0
- package/dist/admin1/hk.d.ts +4 -0
- package/dist/admin1/hk.js +2 -0
- package/dist/admin1/hm.d.ts +4 -0
- package/dist/admin1/hm.js +2 -0
- package/dist/admin1/hn.d.ts +4 -0
- package/dist/admin1/hn.js +2 -0
- package/dist/admin1/hr.d.ts +4 -0
- package/dist/admin1/hr.js +2 -0
- package/dist/admin1/ht.d.ts +4 -0
- package/dist/admin1/ht.js +2 -0
- package/dist/admin1/hu.d.ts +4 -0
- package/dist/admin1/hu.js +2 -0
- package/dist/admin1/id.d.ts +4 -0
- package/dist/admin1/id.js +2 -0
- package/dist/admin1/ie.d.ts +4 -0
- package/dist/admin1/ie.js +2 -0
- package/dist/admin1/il.d.ts +4 -0
- package/dist/admin1/il.js +2 -0
- package/dist/admin1/im.d.ts +4 -0
- package/dist/admin1/im.js +2 -0
- package/dist/admin1/in.d.ts +4 -0
- package/dist/admin1/in.js +2 -0
- package/dist/admin1/io.d.ts +4 -0
- package/dist/admin1/io.js +2 -0
- package/dist/admin1/iq.d.ts +4 -0
- package/dist/admin1/iq.js +2 -0
- package/dist/admin1/ir.d.ts +4 -0
- package/dist/admin1/ir.js +2 -0
- package/dist/admin1/is.d.ts +4 -0
- package/dist/admin1/is.js +2 -0
- package/dist/admin1/it.d.ts +4 -0
- package/dist/admin1/it.js +2 -0
- package/dist/admin1/je.d.ts +4 -0
- package/dist/admin1/je.js +2 -0
- package/dist/admin1/jm.d.ts +4 -0
- package/dist/admin1/jm.js +2 -0
- package/dist/admin1/jo.d.ts +4 -0
- package/dist/admin1/jo.js +2 -0
- package/dist/admin1/jp.d.ts +4 -0
- package/dist/admin1/jp.js +2 -0
- package/dist/admin1/ke.d.ts +4 -0
- package/dist/admin1/ke.js +2 -0
- package/dist/admin1/kg.d.ts +4 -0
- package/dist/admin1/kg.js +2 -0
- package/dist/admin1/kh.d.ts +4 -0
- package/dist/admin1/kh.js +2 -0
- package/dist/admin1/ki.d.ts +4 -0
- package/dist/admin1/ki.js +2 -0
- package/dist/admin1/km.d.ts +4 -0
- package/dist/admin1/km.js +2 -0
- package/dist/admin1/kn.d.ts +4 -0
- package/dist/admin1/kn.js +2 -0
- package/dist/admin1/kp.d.ts +4 -0
- package/dist/admin1/kp.js +2 -0
- package/dist/admin1/kr.d.ts +4 -0
- package/dist/admin1/kr.js +2 -0
- package/dist/admin1/kw.d.ts +4 -0
- package/dist/admin1/kw.js +2 -0
- package/dist/admin1/ky.d.ts +4 -0
- package/dist/admin1/ky.js +2 -0
- package/dist/admin1/kz.d.ts +4 -0
- package/dist/admin1/kz.js +2 -0
- package/dist/admin1/la.d.ts +4 -0
- package/dist/admin1/la.js +2 -0
- package/dist/admin1/lb.d.ts +4 -0
- package/dist/admin1/lb.js +2 -0
- package/dist/admin1/lc.d.ts +4 -0
- package/dist/admin1/lc.js +2 -0
- package/dist/admin1/li.d.ts +4 -0
- package/dist/admin1/li.js +2 -0
- package/dist/admin1/lk.d.ts +4 -0
- package/dist/admin1/lk.js +2 -0
- package/dist/admin1/lr.d.ts +4 -0
- package/dist/admin1/lr.js +2 -0
- package/dist/admin1/ls.d.ts +4 -0
- package/dist/admin1/ls.js +2 -0
- package/dist/admin1/lt.d.ts +4 -0
- package/dist/admin1/lt.js +2 -0
- package/dist/admin1/lu.d.ts +4 -0
- package/dist/admin1/lu.js +2 -0
- package/dist/admin1/lv.d.ts +4 -0
- package/dist/admin1/lv.js +2 -0
- package/dist/admin1/ly.d.ts +4 -0
- package/dist/admin1/ly.js +2 -0
- package/dist/admin1/ma.d.ts +4 -0
- package/dist/admin1/ma.js +2 -0
- package/dist/admin1/mc.d.ts +4 -0
- package/dist/admin1/mc.js +2 -0
- package/dist/admin1/md.d.ts +4 -0
- package/dist/admin1/md.js +2 -0
- package/dist/admin1/me.d.ts +4 -0
- package/dist/admin1/me.js +2 -0
- package/dist/admin1/mf.d.ts +4 -0
- package/dist/admin1/mf.js +2 -0
- package/dist/admin1/mg.d.ts +4 -0
- package/dist/admin1/mg.js +2 -0
- package/dist/admin1/mh.d.ts +4 -0
- package/dist/admin1/mh.js +2 -0
- package/dist/admin1/mk.d.ts +4 -0
- package/dist/admin1/mk.js +2 -0
- package/dist/admin1/ml.d.ts +4 -0
- package/dist/admin1/ml.js +2 -0
- package/dist/admin1/mm.d.ts +4 -0
- package/dist/admin1/mm.js +2 -0
- package/dist/admin1/mn.d.ts +4 -0
- package/dist/admin1/mn.js +2 -0
- package/dist/admin1/mo.d.ts +4 -0
- package/dist/admin1/mo.js +2 -0
- package/dist/admin1/mp.d.ts +4 -0
- package/dist/admin1/mp.js +2 -0
- package/dist/admin1/mr.d.ts +4 -0
- package/dist/admin1/mr.js +2 -0
- package/dist/admin1/ms.d.ts +4 -0
- package/dist/admin1/ms.js +2 -0
- package/dist/admin1/mt.d.ts +4 -0
- package/dist/admin1/mt.js +2 -0
- package/dist/admin1/mu.d.ts +4 -0
- package/dist/admin1/mu.js +2 -0
- package/dist/admin1/mv.d.ts +4 -0
- package/dist/admin1/mv.js +2 -0
- package/dist/admin1/mw.d.ts +4 -0
- package/dist/admin1/mw.js +2 -0
- package/dist/admin1/mx.d.ts +4 -0
- package/dist/admin1/mx.js +2 -0
- package/dist/admin1/my.d.ts +4 -0
- package/dist/admin1/my.js +2 -0
- package/dist/admin1/mz.d.ts +4 -0
- package/dist/admin1/mz.js +2 -0
- package/dist/admin1/na.d.ts +4 -0
- package/dist/admin1/na.js +2 -0
- package/dist/admin1/nc.d.ts +4 -0
- package/dist/admin1/nc.js +2 -0
- package/dist/admin1/ne.d.ts +4 -0
- package/dist/admin1/ne.js +2 -0
- package/dist/admin1/nf.d.ts +4 -0
- package/dist/admin1/nf.js +2 -0
- package/dist/admin1/ng.d.ts +4 -0
- package/dist/admin1/ng.js +2 -0
- package/dist/admin1/ni.d.ts +4 -0
- package/dist/admin1/ni.js +2 -0
- package/dist/admin1/nl.d.ts +4 -0
- package/dist/admin1/nl.js +2 -0
- package/dist/admin1/no.d.ts +4 -0
- package/dist/admin1/no.js +2 -0
- package/dist/admin1/np.d.ts +4 -0
- package/dist/admin1/np.js +2 -0
- package/dist/admin1/nr.d.ts +4 -0
- package/dist/admin1/nr.js +2 -0
- package/dist/admin1/nu.d.ts +4 -0
- package/dist/admin1/nu.js +2 -0
- package/dist/admin1/nz.d.ts +4 -0
- package/dist/admin1/nz.js +2 -0
- package/dist/admin1/om.d.ts +4 -0
- package/dist/admin1/om.js +2 -0
- package/dist/admin1/pa.d.ts +4 -0
- package/dist/admin1/pa.js +2 -0
- package/dist/admin1/pe.d.ts +4 -0
- package/dist/admin1/pe.js +2 -0
- package/dist/admin1/pf.d.ts +4 -0
- package/dist/admin1/pf.js +2 -0
- package/dist/admin1/pg.d.ts +4 -0
- package/dist/admin1/pg.js +2 -0
- package/dist/admin1/ph.d.ts +4 -0
- package/dist/admin1/ph.js +2 -0
- package/dist/admin1/pk.d.ts +4 -0
- package/dist/admin1/pk.js +2 -0
- package/dist/admin1/pl.d.ts +4 -0
- package/dist/admin1/pl.js +2 -0
- package/dist/admin1/pm.d.ts +4 -0
- package/dist/admin1/pm.js +2 -0
- package/dist/admin1/pn.d.ts +4 -0
- package/dist/admin1/pn.js +2 -0
- package/dist/admin1/ps.d.ts +4 -0
- package/dist/admin1/ps.js +2 -0
- package/dist/admin1/pt.d.ts +4 -0
- package/dist/admin1/pt.js +2 -0
- package/dist/admin1/pw.d.ts +4 -0
- package/dist/admin1/pw.js +2 -0
- package/dist/admin1/py.d.ts +4 -0
- package/dist/admin1/py.js +2 -0
- package/dist/admin1/qa.d.ts +4 -0
- package/dist/admin1/qa.js +2 -0
- package/dist/admin1/ro.d.ts +4 -0
- package/dist/admin1/ro.js +2 -0
- package/dist/admin1/rs.d.ts +4 -0
- package/dist/admin1/rs.js +2 -0
- package/dist/admin1/ru.d.ts +4 -0
- package/dist/admin1/ru.js +2 -0
- package/dist/admin1/rw.d.ts +4 -0
- package/dist/admin1/rw.js +2 -0
- package/dist/admin1/sa.d.ts +4 -0
- package/dist/admin1/sa.js +2 -0
- package/dist/admin1/sb.d.ts +4 -0
- package/dist/admin1/sb.js +2 -0
- package/dist/admin1/sc.d.ts +4 -0
- package/dist/admin1/sc.js +2 -0
- package/dist/admin1/sd.d.ts +4 -0
- package/dist/admin1/sd.js +2 -0
- package/dist/admin1/se.d.ts +4 -0
- package/dist/admin1/se.js +2 -0
- package/dist/admin1/sg.d.ts +4 -0
- package/dist/admin1/sg.js +2 -0
- package/dist/admin1/sh.d.ts +4 -0
- package/dist/admin1/sh.js +2 -0
- package/dist/admin1/si.d.ts +4 -0
- package/dist/admin1/si.js +2 -0
- package/dist/admin1/sk.d.ts +4 -0
- package/dist/admin1/sk.js +2 -0
- package/dist/admin1/sl.d.ts +4 -0
- package/dist/admin1/sl.js +2 -0
- package/dist/admin1/sm.d.ts +4 -0
- package/dist/admin1/sm.js +2 -0
- package/dist/admin1/sn.d.ts +4 -0
- package/dist/admin1/sn.js +2 -0
- package/dist/admin1/so.d.ts +4 -0
- package/dist/admin1/so.js +2 -0
- package/dist/admin1/sr.d.ts +4 -0
- package/dist/admin1/sr.js +2 -0
- package/dist/admin1/ss.d.ts +4 -0
- package/dist/admin1/ss.js +2 -0
- package/dist/admin1/st.d.ts +4 -0
- package/dist/admin1/st.js +2 -0
- package/dist/admin1/sv.d.ts +4 -0
- package/dist/admin1/sv.js +2 -0
- package/dist/admin1/sy.d.ts +4 -0
- package/dist/admin1/sy.js +2 -0
- package/dist/admin1/sz.d.ts +4 -0
- package/dist/admin1/sz.js +2 -0
- package/dist/admin1/tc.d.ts +4 -0
- package/dist/admin1/tc.js +2 -0
- package/dist/admin1/td.d.ts +4 -0
- package/dist/admin1/td.js +2 -0
- package/dist/admin1/tf.d.ts +4 -0
- package/dist/admin1/tf.js +2 -0
- package/dist/admin1/tg.d.ts +4 -0
- package/dist/admin1/tg.js +2 -0
- package/dist/admin1/th.d.ts +4 -0
- package/dist/admin1/th.js +2 -0
- package/dist/admin1/tj.d.ts +4 -0
- package/dist/admin1/tj.js +2 -0
- package/dist/admin1/tk.d.ts +4 -0
- package/dist/admin1/tk.js +2 -0
- package/dist/admin1/tl.d.ts +4 -0
- package/dist/admin1/tl.js +2 -0
- package/dist/admin1/tm.d.ts +4 -0
- package/dist/admin1/tm.js +2 -0
- package/dist/admin1/tn.d.ts +4 -0
- package/dist/admin1/tn.js +2 -0
- package/dist/admin1/to.d.ts +4 -0
- package/dist/admin1/to.js +2 -0
- package/dist/admin1/tr.d.ts +4 -0
- package/dist/admin1/tr.js +2 -0
- package/dist/admin1/tt.d.ts +4 -0
- package/dist/admin1/tt.js +2 -0
- package/dist/admin1/tv.d.ts +4 -0
- package/dist/admin1/tv.js +2 -0
- package/dist/admin1/tw.d.ts +4 -0
- package/dist/admin1/tw.js +2 -0
- package/dist/admin1/tz.d.ts +4 -0
- package/dist/admin1/tz.js +2 -0
- package/dist/admin1/ua.d.ts +4 -0
- package/dist/admin1/ua.js +2 -0
- package/dist/admin1/ug.d.ts +4 -0
- package/dist/admin1/ug.js +2 -0
- package/dist/admin1/um.d.ts +4 -0
- package/dist/admin1/um.js +2 -0
- package/dist/admin1/us.d.ts +4 -0
- package/dist/admin1/us.js +2 -0
- package/dist/admin1/uy.d.ts +4 -0
- package/dist/admin1/uy.js +2 -0
- package/dist/admin1/uz.d.ts +4 -0
- package/dist/admin1/uz.js +2 -0
- package/dist/admin1/va.d.ts +4 -0
- package/dist/admin1/va.js +2 -0
- package/dist/admin1/vc.d.ts +4 -0
- package/dist/admin1/vc.js +2 -0
- package/dist/admin1/ve.d.ts +4 -0
- package/dist/admin1/ve.js +2 -0
- package/dist/admin1/vg.d.ts +4 -0
- package/dist/admin1/vg.js +2 -0
- package/dist/admin1/vi.d.ts +4 -0
- package/dist/admin1/vi.js +2 -0
- package/dist/admin1/vn.d.ts +4 -0
- package/dist/admin1/vn.js +2 -0
- package/dist/admin1/vu.d.ts +4 -0
- package/dist/admin1/vu.js +2 -0
- package/dist/admin1/wf.d.ts +4 -0
- package/dist/admin1/wf.js +2 -0
- package/dist/admin1/ws.d.ts +4 -0
- package/dist/admin1/ws.js +2 -0
- package/dist/admin1/xk.d.ts +4 -0
- package/dist/admin1/xk.js +2 -0
- package/dist/admin1/ye.d.ts +4 -0
- package/dist/admin1/ye.js +2 -0
- package/dist/admin1/za.d.ts +4 -0
- package/dist/admin1/za.js +2 -0
- package/dist/admin1/zm.d.ts +4 -0
- package/dist/admin1/zm.js +2 -0
- package/dist/admin1/zw.d.ts +4 -0
- package/dist/admin1/zw.js +2 -0
- package/dist/{chunk-R3XS6XPP.js → chunk-ZN6SLXL3.js} +123 -7
- package/dist/core.d.ts +52 -2
- package/dist/core.js +7 -1
- package/dist/{drill-chain-DCiuiZKK.d.ts → drill-chain-C8hhHBnd.d.ts} +13 -4
- package/dist/geo.d.ts +55 -1
- package/dist/geo.js +96 -0
- package/dist/index.d.ts +75 -5
- package/dist/index.js +254 -70
- package/dist/styles.d.ts +1 -1
- 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-
|
|
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
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
370
|
-
return
|
|
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 [
|
|
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) ??
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
538
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
873
|
-
const
|
|
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 =
|
|
882
|
-
|
|
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
|
-
|
|
890
|
-
|
|
891
|
-
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 } =
|
|
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 &&
|
|
1108
|
-
const wanted = new Set(
|
|
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 ? [] :
|
|
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((
|
|
1454
|
+
if (drillActive) rememberFills(new Map(regions.map((region2) => [region2.id, region2.fill])));
|
|
1271
1455
|
});
|
|
1272
|
-
const regionsById = new Map(regions.map((
|
|
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
|
|
1283
|
-
if (
|
|
1466
|
+
const region2 = regionsById.get(ref.id);
|
|
1467
|
+
if (region2 === void 0) return void 0;
|
|
1284
1468
|
return {
|
|
1285
1469
|
kind: "region",
|
|
1286
|
-
id:
|
|
1287
|
-
feature:
|
|
1288
|
-
datum:
|
|
1470
|
+
id: region2.id,
|
|
1471
|
+
feature: region2.feature,
|
|
1472
|
+
datum: region2.datum,
|
|
1289
1473
|
level: levelInfo,
|
|
1290
|
-
drillable:
|
|
1291
|
-
value:
|
|
1292
|
-
formattedValue:
|
|
1293
|
-
color:
|
|
1294
|
-
label: nameOf(
|
|
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 =
|
|
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 = (
|
|
1435
|
-
const ref = { kind: "region", id:
|
|
1618
|
+
const getRegionProps = (region2) => {
|
|
1619
|
+
const ref = { kind: "region", id: region2.id };
|
|
1436
1620
|
return {
|
|
1437
|
-
"data-region-id":
|
|
1438
|
-
"data-selected":
|
|
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
|
|
1794
|
+
import { useMemo as useMemo5, useSyncExternalStore as useSyncExternalStore3 } from "react";
|
|
1611
1795
|
var useCamera = (selector) => {
|
|
1612
1796
|
const { store, api } = useChoroplethContext();
|
|
1613
|
-
const getSnapshot =
|
|
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
|
|
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 =
|
|
2696
|
+
const api = useMemo6(() => createHandle(store), [store]);
|
|
2513
2697
|
useImperativeHandle(ref, () => api, [api]);
|
|
2514
|
-
const themeVars =
|
|
2515
|
-
const slots =
|
|
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 { };
|