@diagrammo/dgmo 0.21.0 → 0.22.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 (76) hide show
  1. package/README.md +16 -6
  2. package/dist/advanced.cjs +2521 -623
  3. package/dist/advanced.d.cts +917 -534
  4. package/dist/advanced.d.ts +917 -534
  5. package/dist/advanced.js +2516 -623
  6. package/dist/auto.cjs +2333 -608
  7. package/dist/auto.js +119 -119
  8. package/dist/auto.mjs +2335 -609
  9. package/dist/cli.cjs +168 -168
  10. package/dist/editor.cjs +13 -15
  11. package/dist/editor.js +13 -15
  12. package/dist/highlight.cjs +15 -12
  13. package/dist/highlight.js +15 -12
  14. package/dist/index.cjs +2317 -595
  15. package/dist/index.d.cts +4 -1
  16. package/dist/index.d.ts +4 -1
  17. package/dist/index.js +2319 -596
  18. package/dist/internal.cjs +2521 -623
  19. package/dist/internal.d.cts +917 -534
  20. package/dist/internal.d.ts +917 -534
  21. package/dist/internal.js +2516 -623
  22. package/dist/map-data/PROVENANCE.json +1 -1
  23. package/dist/map-data/mountain-ranges.json +1 -0
  24. package/dist/map-data/water-bodies.json +1 -0
  25. package/docs/language-reference.md +44 -31
  26. package/gallery/fixtures/map-categorical-world.dgmo +16 -0
  27. package/gallery/fixtures/map-categorical.dgmo +0 -1
  28. package/gallery/fixtures/map-choropleth.dgmo +0 -1
  29. package/gallery/fixtures/map-coastline.dgmo +7 -0
  30. package/gallery/fixtures/map-colorize.dgmo +11 -0
  31. package/gallery/fixtures/map-direct-color.dgmo +9 -0
  32. package/gallery/fixtures/map-reference-world.dgmo +11 -0
  33. package/gallery/fixtures/map-region-scope.dgmo +0 -3
  34. package/gallery/fixtures/map-route.dgmo +0 -1
  35. package/package.json +1 -1
  36. package/src/advanced.ts +26 -1
  37. package/src/boxes-and-lines/renderer.ts +39 -12
  38. package/src/cli.ts +1 -1
  39. package/src/completion.ts +32 -24
  40. package/src/cycle/renderer.ts +14 -1
  41. package/src/d3.ts +23 -11
  42. package/src/editor/highlight-api.ts +4 -0
  43. package/src/editor/keywords.ts +13 -15
  44. package/src/infra/renderer.ts +35 -7
  45. package/src/map/colorize.ts +54 -0
  46. package/src/map/context-labels.ts +429 -0
  47. package/src/map/data/PROVENANCE.json +1 -1
  48. package/src/map/data/mountain-ranges.json +1 -0
  49. package/src/map/data/types.ts +34 -0
  50. package/src/map/data/water-bodies.json +1 -0
  51. package/src/map/dimensions.ts +117 -0
  52. package/src/map/geo-query.ts +295 -0
  53. package/src/map/geo.ts +305 -2
  54. package/src/map/invert.ts +111 -0
  55. package/src/map/layout.ts +1504 -335
  56. package/src/map/load-data.ts +16 -2
  57. package/src/map/parser.ts +57 -111
  58. package/src/map/renderer.ts +556 -13
  59. package/src/map/resolved-types.ts +24 -2
  60. package/src/map/resolver.ts +237 -67
  61. package/src/map/types.ts +39 -23
  62. package/src/mindmap/renderer.ts +10 -1
  63. package/src/palettes/atlas.ts +77 -0
  64. package/src/palettes/blueprint.ts +73 -0
  65. package/src/palettes/color-utils.ts +58 -1
  66. package/src/palettes/index.ts +12 -3
  67. package/src/palettes/slate.ts +73 -0
  68. package/src/palettes/tidewater.ts +73 -0
  69. package/src/render.ts +8 -1
  70. package/src/tech-radar/renderer.ts +3 -0
  71. package/src/tech-radar/types.ts +3 -0
  72. package/src/utils/d3-types.ts +5 -0
  73. package/src/utils/legend-layout.ts +21 -4
  74. package/src/utils/legend-types.ts +7 -0
  75. package/src/utils/reserved-key-registry.ts +3 -0
  76. package/src/palettes/bold.ts +0 -67
@@ -1 +1 @@
1
- {"assets":{"gazetteer.json":{"bytes":130706,"gzBytes":56251,"sha256":"8cefc36db73c9337429e66c94339a385656de3ec22a67487b0a146aa37dd632a"},"lakes.json":{"bytes":6315,"gzBytes":1487,"sha256":"5840ffd49b8dbf30183a9534a72adf80b6e77ceec224665393fa94e956220323"},"region-names.json":{"bytes":11667,"gzBytes":2235,"sha256":"059662d30b6ee8572c5943096905e05218e5f337e6973a9d43d6b41b7313a9ac"},"rivers.json":{"bytes":6707,"gzBytes":2158,"sha256":"3912508469099b1c37360c5505ea033c4ffa30ce95f7428e668e9d824cb81407"},"us-states.json":{"bytes":23313,"gzBytes":7413,"sha256":"0fe3a8937bc7566192662439f29a7866e8823d687290bcb003433ad5edd86567"},"world-coarse.json":{"bytes":55426,"gzBytes":18390,"sha256":"9ed5a15d775c0a303003dcf096a209dd433383ea52e18014885d482c38bc01a4"},"world-detail.json":{"bytes":163555,"gzBytes":46762,"sha256":"e99dddc3fccd96465ad4e5cd7bcca839095672e9c595d78276d510c44db84fd7"}},"counts":{"countries":175,"gazetteerAliases":8,"gazetteerCities":2118,"usStates":56},"generatedBy":"scripts/build-map-data.mjs","sourceHashes":{"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_lakes.json":{"bytes":27711,"sha256":"6f315b60488e0cf5da9c360e3ce593babf64c2f44cc21e2820c536f7a2aff606"},"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_rivers_lake_centerlines.json":{"bytes":54146,"sha256":"959e13128e4eb5a6ee530b8270c5017bcee9149ce48a97f6fe7fee1fce600b5d"},"https://cdn.jsdelivr.net/npm/us-atlas@3.0.1/states-10m.json":{"bytes":114554,"sha256":"d76b391ccfa8bff601d51e3e3da5d43a89fa46cd5caca72ce731b383be5596d0"},"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-110m.json":{"bytes":107761,"sha256":"2516c915867c7baf18ddec727aec46c315541a07cfb3d79a6559b05d5e94eee8"},"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-50m.json":{"bytes":756420,"sha256":"04342cdc1e3016bcd7db1630de95684d67b79fe3c8c460321e87aef469502394"},"https://download.geonames.org/export/dump/cities5000.zip":{"bytes":5546862,"sha256":"e898c1399b05bd521540c5fa56ac3db44b4b2029d432b5f40a1e45f66d5a0929"}},"sources":{"geonames":{"citiesUrl":"https://download.geonames.org/export/dump/cities5000.zip","license":"CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/","modificationDateRange":"2006-01-17..2026-05-25 (filtered subset)"},"lakes":{"url":"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_lakes.json","version":"natural-earth 110m (martynafford snapshot)"},"rivers":{"url":"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_rivers_lake_centerlines.json","version":"natural-earth 110m (martynafford snapshot)"},"usAtlas":{"url":"https://cdn.jsdelivr.net/npm/us-atlas@3.0.1/states-10m.json","version":"3.0.1"},"worldCoarse":{"url":"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-110m.json","version":"2.0.2"},"worldDetail":{"url":"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-50m.json","version":"2.0.2"}},"tooling":{"mapshaper":"0.7.22"}}
1
+ {"assets":{"gazetteer.json":{"bytes":130706,"gzBytes":56251,"sha256":"8cefc36db73c9337429e66c94339a385656de3ec22a67487b0a146aa37dd632a"},"lakes.json":{"bytes":6315,"gzBytes":1487,"sha256":"5840ffd49b8dbf30183a9534a72adf80b6e77ceec224665393fa94e956220323"},"mountain-ranges.json":{"bytes":30081,"gzBytes":8971,"sha256":"b0eb87e6b3c514b882245299fbe698b3caaa3f40494e3d220f973caf6a12a16c"},"region-names.json":{"bytes":11667,"gzBytes":2235,"sha256":"059662d30b6ee8572c5943096905e05218e5f337e6973a9d43d6b41b7313a9ac"},"rivers.json":{"bytes":6707,"gzBytes":2158,"sha256":"3912508469099b1c37360c5505ea033c4ffa30ce95f7428e668e9d824cb81407"},"us-states.json":{"bytes":23313,"gzBytes":7413,"sha256":"0fe3a8937bc7566192662439f29a7866e8823d687290bcb003433ad5edd86567"},"world-coarse.json":{"bytes":55426,"gzBytes":18390,"sha256":"9ed5a15d775c0a303003dcf096a209dd433383ea52e18014885d482c38bc01a4"},"world-detail.json":{"bytes":163555,"gzBytes":46762,"sha256":"e99dddc3fccd96465ad4e5cd7bcca839095672e9c595d78276d510c44db84fd7"}},"counts":{"countries":175,"gazetteerAliases":8,"gazetteerCities":2118,"mountainRanges":114,"usStates":56},"generatedBy":"scripts/build-map-data.mjs","sourceHashes":{"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_lakes.json":{"bytes":27711,"sha256":"6f315b60488e0cf5da9c360e3ce593babf64c2f44cc21e2820c536f7a2aff606"},"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_rivers_lake_centerlines.json":{"bytes":54146,"sha256":"959e13128e4eb5a6ee530b8270c5017bcee9149ce48a97f6fe7fee1fce600b5d"},"https://cdn.jsdelivr.net/gh/nvkelso/natural-earth-vector@master/geojson/ne_50m_geography_regions_polys.geojson":{"bytes":4305815,"sha256":"33396643d8f0eed408e80bf5ca43dcdb7993f790fdc4eadae311660f8b91fe76"},"https://cdn.jsdelivr.net/npm/us-atlas@3.0.1/states-10m.json":{"bytes":114554,"sha256":"d76b391ccfa8bff601d51e3e3da5d43a89fa46cd5caca72ce731b383be5596d0"},"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-110m.json":{"bytes":107761,"sha256":"2516c915867c7baf18ddec727aec46c315541a07cfb3d79a6559b05d5e94eee8"},"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-50m.json":{"bytes":756420,"sha256":"04342cdc1e3016bcd7db1630de95684d67b79fe3c8c460321e87aef469502394"},"https://download.geonames.org/export/dump/cities5000.zip":{"bytes":5546862,"sha256":"e898c1399b05bd521540c5fa56ac3db44b4b2029d432b5f40a1e45f66d5a0929"}},"sources":{"geonames":{"citiesUrl":"https://download.geonames.org/export/dump/cities5000.zip","license":"CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/","modificationDateRange":"2006-01-17..2026-05-25 (filtered subset)"},"lakes":{"url":"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_lakes.json","version":"natural-earth 110m (martynafford snapshot)"},"mountainRanges":{"license":"public domain (Natural Earth)","url":"https://cdn.jsdelivr.net/gh/nvkelso/natural-earth-vector@master/geojson/ne_50m_geography_regions_polys.geojson","version":"natural-earth 50m (nvkelso vector snapshot)"},"rivers":{"url":"https://cdn.jsdelivr.net/gh/martynafford/natural-earth-geojson@master/110m/physical/ne_110m_rivers_lake_centerlines.json","version":"natural-earth 110m (martynafford snapshot)"},"usAtlas":{"url":"https://cdn.jsdelivr.net/npm/us-atlas@3.0.1/states-10m.json","version":"3.0.1"},"worldCoarse":{"url":"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-110m.json","version":"2.0.2"},"worldDetail":{"url":"https://cdn.jsdelivr.net/npm/world-atlas@2.0.2/countries-50m.json","version":"2.0.2"}},"tooling":{"mapshaper":"0.7.22"}}
@@ -0,0 +1 @@
1
+ {"arcs":[[[9125,1356],[-84,39],[66,69],[57,117],[30,184],[-6,121],[67,162],[10,156],[-22,75],[-77,32],[-62,132],[-60,290],[-23,404],[47,8],[24,-123],[10,-137],[87,-200],[16,-104],[86,-264],[21,-272],[-34,-242],[-32,-97],[-57,-301],[-64,-49]],[[5293,8032],[-56,-7],[-67,-62],[-81,19],[-55,-169],[-36,51],[6,80],[76,154],[91,55],[116,10],[6,-131]],[[7024,7736],[-4,0]],[[7020,7736],[-6,1]],[[7014,7737],[10,-1]],[[7014,7737],[6,-1]],[[7020,7736],[4,0]],[[7024,7736],[47,41],[211,31]],[[7282,7808],[61,36]],[[7343,7844],[135,-14],[52,23],[83,-22],[-29,-106],[-36,47],[-112,-15],[-46,-87],[-82,11],[-67,-26],[-146,-141],[-120,-10],[14,238],[25,-5]],[[6530,8448],[-45,111],[26,169],[16,326],[26,229],[2,146],[52,35],[-26,-374],[26,-289],[-49,-171],[-28,-182]],[[5954,7918],[69,3],[144,-139],[54,-13],[42,-205],[-61,83],[-139,72],[-55,81],[-54,118]],[[7382,6498],[-132,78],[-93,154]],[[7157,6730],[-104,194],[19,109],[48,-22]],[[7120,7011],[6,-10]],[[7126,7001],[183,-322],[103,0],[197,-31],[15,-62],[-43,-80],[-63,-21],[-81,23],[-55,-10]],[[2856,5203],[3,-9]],[[2859,5194],[11,-5]],[[2870,5189],[10,4]],[[2880,5193],[42,-3]],[[2922,5190],[-79,-56]],[[2843,5134],[-58,-119]],[[2785,5015],[-18,-43]],[[2767,4972],[-10,-113]],[[2757,4859],[-51,-167]],[[2706,4692],[-7,-116]],[[2699,4576],[-5,-37]],[[2694,4539],[-81,-127],[-23,-155],[5,-255],[52,-138],[6,-217]],[[2653,3647],[38,-110]],[[2691,3537],[50,-106]],[[2741,3431],[20,-32]],[[2761,3399],[83,-110]],[[2844,3289],[61,-146]],[[2905,3143],[57,-142]],[[2962,3001],[35,-43]],[[2997,2958],[3,-22]],[[3000,2936],[8,-152]],[[3008,2784],[-42,-476],[-29,-104],[14,-84],[-45,-84],[-28,-184],[-29,-63],[-23,-234],[20,-46],[-62,-443],[3,-226],[-48,-402],[11,-192],[34,-58],[-40,-66],[-42,63],[-20,169],[-2,212],[50,440],[0,135],[22,218],[14,255],[-7,350],[35,346],[-2,129],[13,224],[-6,241],[-38,94],[-69,96],[-58,116],[-31,190],[-62,326],[-25,172],[-6,100],[14,160],[-24,13],[10,166],[55,134],[24,140]],[[2589,4611],[9,56]],[[2598,4667],[15,135]],[[2613,4802],[-3,236],[13,12]],[[2623,5050],[12,-46]],[[2635,5004],[12,-35]],[[2647,4969],[8,6]],[[2655,4975],[47,119],[-9,79]],[[2693,5173],[-4,78]],[[2689,5251],[6,1]],[[2695,5252],[35,2]],[[2730,5254],[13,-10]],[[2743,5244],[5,-7]],[[2748,5237],[62,22]],[[2810,5259],[29,2]],[[2839,5261],[17,-58]],[[1218,9081],[36,-49],[46,-96],[6,-99],[189,-417],[82,-303],[63,-30],[14,-80],[53,-27],[78,-243],[19,-167],[10,-328],[-30,-79],[-42,-11],[-29,242],[-40,71],[-39,-19],[-44,-102],[5,222],[-26,111],[-109,148],[-1,147],[-18,168]],[[1441,8140],[12,38]],[[1453,8178],[0,2]],[[1453,8180],[-66,278],[-60,87],[-52,169]],[[1275,8714],[-16,33]],[[1259,8747],[-15,22]],[[1244,8769],[-64,147],[-20,155]],[[1160,9071],[35,-18]],[[1195,9053],[18,16]],[[1213,9069],[5,12]],[[6011,5282],[6,-200],[35,-29],[-12,-233],[-71,-82],[-37,8],[-28,98],[-29,-14],[-12,179],[-27,123],[18,106],[30,22],[19,152],[42,77],[8,131],[-15,91],[33,29],[11,-108],[35,-121],[-6,-229]],[[6447,6479],[-62,54],[-38,97],[-71,265],[-63,103],[-22,159],[24,40],[121,-311],[70,-208],[78,-74],[0,-75],[-37,-50]],[[7426,8356],[1,-23]],[[7427,8333],[5,-7]],[[7432,8326],[97,-162],[83,-94],[119,-98],[42,-65],[-3,-64],[-67,4],[-34,-65],[-58,87],[-110,24],[-30,59],[-49,169],[-118,59],[-34,135],[-36,61],[41,120],[98,-22],[53,-118]],[[8477,8408],[-5,-26]],[[8472,8382],[-26,-80],[10,-83],[-30,-81],[9,-114],[-36,-111],[-75,-129],[-57,1],[16,235],[50,258],[26,262],[75,52],[47,-29],[-4,-155]],[[8522,8890],[66,-43],[96,27],[83,-19],[83,24],[18,-59],[-112,-150],[-85,-15],[-27,35],[-162,10],[-49,144],[89,46]],[[7929,5816],[81,-237],[22,-177],[-11,-134],[-31,-55],[-26,45],[-14,218],[-21,73],[-12,143],[-42,132],[-28,-11],[-13,92],[13,94],[36,79],[56,-93],[-22,-95],[12,-74]],[[7382,6498],[10,-52],[-153,118],[-83,121],[1,45]],[[7157,6730],[33,-37],[192,-195]],[[7074,7357],[-13,-8]],[[7061,7349],[-48,-22]],[[7013,7327],[-36,-7]],[[6977,7320],[-9,-5]],[[6968,7315],[-9,-9]],[[6959,7306],[-11,-11]],[[6948,7295],[-13,5]],[[6935,7300],[-13,150],[30,34],[100,-24],[22,-103]],[[7037,7286],[9,-29]],[[7046,7257],[5,-107],[-36,-93]],[[7015,7057],[-13,4]],[[7002,7061],[-2,0]],[[7000,7061],[-3,0]],[[6997,7061],[-2,0]],[[6995,7061],[-5,-2]],[[6990,7059],[-52,36],[-61,-21],[-77,26],[-10,98],[20,56],[107,65],[18,-19]],[[6935,7300],[13,-5]],[[6948,7295],[11,11]],[[6959,7306],[9,9]],[[6968,7315],[9,5]],[[6977,7320],[36,7]],[[7013,7327],[24,-41]],[[7126,7001],[-6,10]],[[7120,7011],[-48,94],[-26,152]],[[7046,7257],[-9,29]],[[7037,7286],[24,63]],[[7061,7349],[13,8]],[[7074,7357],[53,-135]],[[7127,7222],[21,-21]],[[7148,7201],[25,-138],[-47,-62]],[[7399,7326],[47,2]],[[7446,7328],[9,0]],[[7455,7328],[49,2],[53,-74],[80,-14],[53,-85],[-299,26],[-17,-16],[-180,-21],[-46,55]],[[7148,7201],[-21,21]],[[7127,7222],[43,63],[47,-45],[62,33],[75,70],[45,-17]],[[4955,7070],[-28,-32]],[[4927,7038],[-60,-68]],[[4867,6970],[-34,-47]],[[4833,6923],[-52,-76],[-51,-24],[-40,-79],[-65,-80],[-71,-62],[-24,38],[37,135],[20,143],[48,60],[14,74],[72,89],[67,-6],[96,113],[148,42],[46,-15],[51,36],[9,-249],[-39,-2],[-62,62],[-82,-52]],[[2949,8161],[-48,-135],[-54,-32],[-73,-219],[-13,-77],[-167,-236],[-87,-256],[-104,-166],[-87,-97],[-30,-2],[-18,106],[16,184],[-15,82],[31,48],[97,66],[55,-15],[78,174],[-19,124],[44,101],[55,0],[90,-67],[11,181],[157,287],[75,43],[6,-94]],[[574,9673],[-252,-33],[-245,33],[-77,97],[131,151],[149,78],[141,-69],[254,-26],[174,-91],[-37,-53],[-238,-87]],[[1305,8333],[-44,-88]],[[1261,8245],[-57,102],[-67,51],[-34,164],[-41,55],[-35,171],[-65,105],[-101,243],[48,36],[55,-140],[77,-124],[42,-136],[41,-31],[19,-142],[67,-147],[95,-119]],[[1369,8341],[-9,-48]],[[1360,8293],[0,-8]],[[1360,8285],[-1,-103]],[[1359,8182],[-1,-20]],[[1358,8162],[-24,-82],[-34,-349],[24,-161]],[[1324,7570],[-4,-15]],[[1320,7555],[-14,-10]],[[1306,7545],[-6,-13]],[[1300,7532],[-16,90],[-8,159],[-13,73],[11,122]],[[1274,7976],[-3,74]],[[1271,8050],[21,95],[-31,100]],[[1305,8333],[67,58]],[[1372,8391],[-3,-50]],[[556,9438],[65,-12],[41,-107],[-50,-35],[-123,47],[-49,-144],[-96,13],[4,95],[154,153],[54,-10]],[[4927,7038],[-60,-68]],[[4867,6970],[-34,-47]],[[4833,6923],[-43,9],[138,181],[27,-43]],[[4955,7070],[-28,-32]],[[4754,6948],[-75,-100],[2,102],[73,-2]],[[5724,1936],[-87,-206],[-58,7],[-47,90],[45,85],[63,19],[-6,64],[30,116],[32,17],[36,158],[-22,172],[58,-91],[0,-132],[21,-63],[-65,-236]],[[5234,4146],[0,-137],[17,-174],[33,-81],[-19,-79],[-27,122],[-10,133],[-79,228],[-8,98],[13,119],[51,-44],[29,-185]],[[5418,6143],[-8,-211],[-27,-30],[-59,53],[-12,82],[69,121],[8,85],[37,2],[-8,-102]],[[4987,6493],[12,-112],[55,-80],[48,-15],[-5,-129],[-30,-3],[-28,-80],[-59,78],[-9,125],[-50,-3],[38,206],[28,13]],[[5107,5734],[-47,176],[25,57],[49,-139],[-27,-94]],[[5693,3969],[-30,96],[35,36],[-5,-132]],[[8472,8382],[5,26]],[[8477,8408],[50,33],[47,-154],[63,-44],[25,-149],[-69,-55],[-48,184],[-56,39],[-17,120]],[[8726,7747],[-16,63],[67,181],[74,227],[64,207],[27,-6],[-11,-181],[-106,-321],[-52,-121],[-47,-49]],[[8903,9320],[-305,114],[-69,149],[24,304],[87,7],[-5,-211],[48,-164],[208,-103],[12,-96]],[[8009,5289],[-33,21],[-18,297],[35,-19],[23,-212],[-7,-87]],[[7846,7322],[-14,-80],[-49,-19],[-79,65],[-102,114],[-3,96],[34,37],[117,-56],[96,-157]],[[7642,8501],[-57,60]],[[7585,8561],[-63,117],[25,101],[68,-55],[50,23],[195,-247],[-7,-47],[-140,-3],[-71,51]],[[8276,8452],[-75,-85],[-45,-103],[-68,45],[19,116],[46,118],[41,155],[55,275],[61,36],[65,-79],[-1,-168],[-33,-130],[-65,-180]],[[8261,6828],[-34,-89],[-32,72],[-49,20],[-12,83],[82,-16],[45,-70]],[[8142,6231],[-36,-31],[-54,47],[-16,85],[25,75],[93,-38],[18,-39],[-30,-99]],[[7083,5196],[-11,5]],[[7072,5201],[-16,37],[-64,391],[-22,287],[30,84],[5,-174],[52,-422],[45,-111],[-19,-97]],[[7140,5257],[-30,38],[29,185],[5,148],[69,203],[4,54],[52,104],[60,-31],[-60,-196],[-51,-29],[-48,-127],[3,-189],[-33,-160]],[[7087,6157],[-87,-69],[-2,69],[65,38],[68,102],[23,-97],[-67,-43]],[[8253,6367],[-33,74],[18,120],[56,21],[-13,-179],[-28,-36]],[[7345,8093],[-6,-47],[-153,50],[-23,126],[67,-22],[60,-77],[55,-30]],[[7455,7328],[-9,0]],[[7446,7328],[-47,-2]],[[7399,7326],[-21,62],[76,71],[127,26],[-64,-144],[-62,-13]],[[6010,6161],[-17,4],[-97,335],[-15,135],[38,-17],[45,-154],[36,-168],[10,-135]],[[6125,5668],[-12,4],[-55,221],[-25,134],[29,19],[50,-205],[13,-173]],[[6362,7252],[80,30],[4,-50],[-67,-74],[-122,138],[10,57],[95,-101]],[[5059,8987],[-40,46],[4,220],[103,122],[78,147],[80,181],[168,175],[11,-82],[-87,-113],[-154,-342],[-119,-222],[-44,-132]],[[5451,8309],[42,0],[113,-142],[25,-82],[-6,-149],[-105,-45],[-44,34],[16,168],[-10,113],[-50,-53],[-76,91],[24,64],[71,1]],[[5314,7516],[-91,153],[27,42],[68,-147],[-4,-48]],[[4790,7759],[-9,23]],[[4781,7782],[20,15],[129,-53],[1,-66],[-118,53],[-23,28]],[[1789,6016],[9,-1]],[[1798,6015],[47,-56],[76,-22],[50,-75],[41,26],[46,-140],[16,-109],[-31,-37],[-42,23],[-168,189],[-37,69],[-7,133]],[[1271,8050],[3,-74]],[[1274,7976],[-16,-105],[-1,-123],[25,-103],[-11,-79],[22,-191],[-28,-4],[-40,174],[-4,195],[17,310],[33,0]],[[1299,7366],[64,-209],[-31,-18],[-53,188],[20,39]],[[1988,5958],[-39,37],[-18,204],[-17,91],[-46,62],[-33,120],[6,181],[54,59],[5,-142],[55,-253],[33,-359]],[[1306,7545],[14,10]],[[1324,7570],[60,-203],[1,-152],[-59,159],[-26,158]],[[1798,6015],[-9,1]],[[1789,6016],[-17,143],[-117,357],[-33,176],[4,131],[52,-4],[29,-169],[53,-180],[48,-217],[50,-86],[9,-76],[-22,-65],[-47,-11]],[[638,9235],[101,-57],[-13,-73],[-75,2],[-83,77],[70,51]],[[1251,9187],[-3,-23]],[[1248,9164],[0,-19]],[[1248,9145],[-5,-27]],[[1243,9118],[-8,-26]],[[1235,9092],[-17,-11]],[[1218,9081],[-5,-12]],[[1213,9069],[-18,-16]],[[1195,9053],[-35,18]],[[1160,9071],[-73,50],[-12,67],[-103,87],[-17,85]],[[955,9360],[-16,27]],[[939,9387],[-93,11],[34,155],[79,21],[160,-28],[85,-69],[53,-136],[-6,-154]],[[2574,3667],[15,-70]],[[2589,3597],[5,-30],[49,-192],[31,-81],[122,-225],[39,-102],[-45,-26],[-27,80],[-79,108],[-64,220],[-41,192],[-5,126]],[[2891,3047],[34,-104]],[[2925,2943],[1,-4]],[[2926,2939],[15,-103]],[[2941,2836],[-2,-196],[-30,81],[-18,326]],[[2653,3647],[19,8],[19,-118]],[[2691,3537],[16,-79],[34,-27]],[[2741,3431],[20,-32]],[[2761,3399],[83,-110]],[[2844,3289],[23,-23],[38,-123]],[[2905,3143],[36,-126],[21,-16]],[[2962,3001],[35,-43]],[[2997,2958],[3,-22]],[[3000,2936],[8,-152]],[[3008,2784],[-25,-225],[-35,80],[-7,197]],[[2941,2836],[-15,103]],[[2926,2939],[-1,4]],[[2925,2943],[-34,104]],[[2891,3047],[-55,146],[-96,87]],[[2740,3280],[-22,22]],[[2718,3302],[-9,18]],[[2709,3320],[-49,195]],[[2660,3515],[-11,35]],[[2649,3550],[-38,191]],[[2611,3741],[-11,127],[-31,70]],[[2569,3938],[-1,5]],[[2568,3943],[-10,58]],[[2558,4001],[1,78]],[[2559,4079],[7,59]],[[2566,4138],[4,76]],[[2570,4214],[29,-263],[41,-100],[13,-204]],[[2611,3741],[38,-191]],[[2649,3550],[11,-35]],[[2660,3515],[49,-195]],[[2709,3320],[9,-18]],[[2718,3302],[22,-22]],[[2740,3280],[24,-22],[-2,-118],[-86,153],[-39,107],[-48,197]],[[2589,3597],[-15,70]],[[2574,3667],[-16,11],[-34,171],[-9,155],[22,57]],[[2537,4061],[17,32]],[[2554,4093],[5,-14]],[[2559,4079],[-1,-78]],[[2558,4001],[10,-58]],[[2568,3943],[1,-5]],[[2569,3938],[42,-197]],[[2598,4667],[15,135]],[[2613,4802],[0,235],[10,13]],[[2623,5050],[12,-46]],[[2635,5004],[12,-35]],[[2647,4969],[-7,-52]],[[2640,4917],[-2,-80]],[[2638,4837],[2,-10]],[[2640,4827],[4,-18]],[[2644,4809],[0,-6]],[[2644,4803],[-2,-27]],[[2642,4776],[-3,-18]],[[2639,4758],[-19,-128]],[[2620,4630],[-8,-41]],[[2612,4589],[-11,-66]],[[2601,4523],[-18,-103]],[[2583,4420],[-21,-76]],[[2562,4344],[-3,-34]],[[2559,4310],[-10,-101]],[[2549,4209],[-8,121],[30,160],[18,121]],[[2554,4093],[-17,-32]],[[2537,4061],[12,148]],[[2549,4209],[10,101]],[[2559,4310],[3,34]],[[2562,4344],[21,76]],[[2583,4420],[18,103]],[[2612,4589],[8,41]],[[2620,4630],[19,128]],[[2639,4758],[3,18]],[[2642,4776],[2,27]],[[2644,4803],[0,6]],[[2644,4809],[-4,18]],[[2640,4827],[-2,10]],[[2638,4837],[2,80]],[[2640,4917],[15,58]],[[2655,4975],[35,2],[-25,-245],[-44,-216]],[[2621,4516],[-18,-77]],[[2603,4439],[-33,-225]],[[2570,4214],[-4,-76]],[[2566,4138],[-12,-45]],[[2870,5189],[10,4]],[[2880,5193],[42,-3]],[[2922,5190],[-50,-73],[-29,17]],[[2843,5134],[-58,-119]],[[2785,5015],[-18,-43]],[[2767,4972],[-10,-113]],[[2757,4859],[-51,-167]],[[2706,4692],[-7,-116]],[[2699,4576],[-5,-37]],[[2694,4539],[-91,-100]],[[2603,4439],[18,77]],[[2621,4516],[30,51],[33,274],[33,120],[-16,116],[14,84],[-22,12]],[[2693,5173],[-4,78]],[[2689,5251],[6,1]],[[2695,5252],[35,2]],[[2730,5254],[13,-10]],[[2743,5244],[5,-7]],[[2748,5237],[-22,-112],[9,-125],[51,109],[-11,71],[35,79]],[[2810,5259],[29,2]],[[2839,5261],[17,-58]],[[2856,5203],[3,-9]],[[2859,5194],[11,-5]],[[9713,724],[0,71],[41,85],[67,85],[53,36],[-114,-190],[-47,-87]],[[4568,6620],[11,125],[57,74],[77,48],[-24,-121],[-78,-52],[-43,-74]],[[5647,3002],[43,219],[39,-58],[-68,-108],[-14,-53]],[[3383,2072],[2,23]],[[3385,2095],[6,29]],[[3391,2124],[5,22]],[[3396,2146],[5,27]],[[3401,2173],[-16,39]],[[3385,2212],[8,52]],[[3393,2264],[10,13]],[[3403,2277],[-6,99]],[[3397,2376],[0,1]],[[3397,2377],[29,37]],[[3426,2414],[25,0]],[[3451,2414],[-18,-93],[-8,-209],[-42,-40]],[[3397,2377],[0,-1]],[[3397,2376],[6,-99]],[[3403,2277],[-10,-13]],[[3393,2264],[-8,-52]],[[3385,2212],[16,-39]],[[3401,2173],[-5,-27]],[[3396,2146],[-5,-22]],[[3391,2124],[-6,-29]],[[3385,2095],[-2,-23]],[[3383,2072],[-95,-67],[15,221],[-27,187],[30,117],[47,-34],[32,34],[24,-92],[-12,-61]],[[3451,2414],[-25,0]],[[3426,2414],[68,162],[92,121],[52,-67],[-187,-216]],[[3014,4913],[84,11],[35,-70],[13,-117],[-37,-75],[-23,13],[-46,-58],[-43,22],[-32,-61],[-51,37],[-37,80],[-5,76],[22,153],[38,58],[82,-69]],[[2160,5765],[38,-73],[-10,-122],[-20,-26],[-81,145],[24,70],[49,6]],[[1251,9187],[-3,-23]],[[1248,9164],[0,-19]],[[1248,9145],[-5,-27]],[[1243,9118],[-8,-26]],[[1235,9092],[-16,5],[-25,-36],[-110,77],[0,79],[-28,61],[-66,1],[-35,81]],[[955,9360],[-16,27]],[[939,9387],[87,80],[49,-130],[176,-150]],[[1453,8180],[0,-2]],[[1453,8178],[-12,-38]],[[1441,8140],[-83,22]],[[1358,8162],[1,20]],[[1359,8182],[1,103]],[[1360,8285],[0,8]],[[1360,8293],[9,48]],[[1369,8341],[3,50]],[[1372,8391],[-69,154],[-60,167],[1,57]],[[1244,8769],[15,-22]],[[1259,8747],[16,-33]],[[1275,8714],[119,-224],[62,-104],[36,-130],[-39,-76]],[[2989,9065],[20,-76],[-27,-1],[-21,75],[28,2]],[[9003,4010],[48,-31],[62,-132],[37,-148],[-113,134],[-97,136],[-55,37],[-88,27],[20,85],[80,-14],[106,-94]],[[7861,7990],[-80,-13],[-118,89],[-24,94],[37,55],[51,-3],[109,-95],[25,-127]],[[8625,7649],[-2,-61],[-74,-92],[-9,134],[42,81],[43,-62]],[[9428,8579],[11,190],[121,321],[62,39],[-112,-310],[-82,-240]],[[9687,9153],[-24,68],[152,132],[136,39],[48,-46],[-312,-193]],[[9368,9164],[-18,41],[119,168],[139,129],[13,-78],[-207,-190],[-46,-70]],[[9122,9427],[-208,156],[85,22],[102,-63],[21,-115]],[[7573,6060],[-34,71],[8,113],[32,-103],[-6,-81]],[[8097,7656],[-22,-67],[-149,56],[58,68],[113,-57]],[[7494,8436],[2,25]],[[7496,8461],[1,45]],[[7497,8506],[3,27]],[[7500,8533],[85,28]],[[7585,8561],[57,-60]],[[7642,8501],[-5,-58],[-143,-7]],[[7432,8326],[-5,7]],[[7427,8333],[-1,23]],[[7426,8356],[1,201],[64,84],[9,-108]],[[7500,8533],[-3,-27]],[[7497,8506],[-1,-45]],[[7496,8461],[-2,-25]],[[7494,8436],[-9,-57]],[[7485,8379],[13,-74]],[[7498,8305],[-66,21]],[[7498,8305],[-13,74]],[[7485,8379],[52,54],[56,7],[65,-69],[-116,-3],[-44,-63]],[[8164,7166],[-20,47],[-9,169],[14,72],[1,183],[44,-36],[-14,-170],[0,-205],[-16,-60]],[[8125,7111],[-36,48],[-3,262],[34,159],[18,-267],[-4,-197]],[[8134,7116],[-9,-5]],[[8125,7111],[9,5]],[[8134,7116],[15,-78],[-52,-95],[-76,3],[-39,46],[-50,-6],[-4,114],[101,-23],[96,34]],[[7989,6673],[7,-113],[-45,-43],[-21,-69],[-31,30],[-15,145],[105,50]],[[7809,5555],[93,-14],[-16,-52],[-54,-30],[-23,96]],[[7588,6207],[-23,81],[16,128],[58,36],[-51,-245]],[[7612,5723],[-48,302],[21,22],[29,-141],[-2,-183]],[[7072,5201],[11,-5]],[[7083,5196],[50,14],[-1,-64],[-55,-24],[-5,79]],[[7158,6075],[-49,-36],[-68,-12],[-2,74],[103,72],[16,-98]],[[6990,7059],[5,2]],[[6995,7061],[2,0]],[[6997,7061],[3,0]],[[7000,7061],[2,0]],[[7002,7061],[13,-4]],[[7015,7057],[-25,2]],[[7343,7844],[-61,-36]],[[7282,7808],[-68,40],[11,68],[118,-72]],[[7237,7972],[-33,-98],[-92,-39],[13,121],[81,63],[31,-47]],[[7584,6455],[-28,-110],[-68,16],[-5,53],[101,41]],[[6071,7633],[-4,28]],[[6067,7661],[76,13],[79,-156],[-25,-69],[-73,161],[-53,23]],[[6067,7661],[4,-28]],[[6071,7633],[-55,-93],[-82,11],[-89,63],[16,61],[104,-78],[82,19],[20,45]],[[6476,6647],[-42,42],[-1,94],[49,-86],[-6,-50]],[[5534,7801],[93,-1],[-18,-77],[-68,8],[-7,70]],[[5330,7932],[123,-62],[24,-113],[-57,-70],[-106,115],[-63,157],[79,-27]],[[4781,7782],[9,-23]],[[4790,7759],[-129,-24],[-16,54],[136,-7]],[[4761,7274],[-41,7],[1,50],[61,17],[-21,-74]],[[4762,7423],[-116,-108],[-2,43],[61,63],[57,2]],[[6264,5472],[-46,-32],[-12,97],[24,69],[54,64],[69,20],[2,-108],[-72,-61],[-19,-49]]],"objects":{"ranges":{"geometries":[{"arcs":[[0]],"id":"mtn-0","properties":{"cla":"Range/mtn","name":"GREAT DIVIDING RANGE"},"type":"Polygon"},{"arcs":[[1]],"id":"mtn-1","properties":{"cla":"Range/mtn","name":"ALPS"},"type":"Polygon"},{"arcs":[[[2,3,4]],[[5,6,7,8,9]]],"id":"mtn-2","properties":{"cla":"Range/mtn","name":"TIAN SHAN"},"type":"MultiPolygon"},{"arcs":[[10]],"id":"mtn-3","properties":{"cla":"Range/mtn","name":"URAL MOUNTAINS"},"type":"Polygon"},{"arcs":[[11]],"id":"mtn-4","properties":{"cla":"Range/mtn","name":"CAUCASUS MTS."},"type":"Polygon"},{"arcs":[[12,13,14,15]],"id":"mtn-5","properties":{"cla":"Range/mtn","name":"HIMALAYAS"},"type":"Polygon"},{"arcs":[[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]],"id":"mtn-6","properties":{"cla":"Range/mtn","name":"ANDES"},"type":"Polygon"},{"arcs":[[53,54,55,56,57,58,59,60,61,62]],"id":"mtn-7","properties":{"cla":"Range/mtn","name":"ROCKY MOUNTAINS"},"type":"Polygon"},{"arcs":[[63]],"id":"mtn-8","properties":{"cla":"Range/mtn","name":"ETHIOPIAN HIGHLANDS"},"type":"Polygon"},{"arcs":[[64]],"id":"mtn-9","properties":{"cla":"Range/mtn","name":"ZAGROS MOUNTAINS"},"type":"Polygon"},{"arcs":[[65,66,67]],"id":"mtn-10","properties":{"cla":"Range/mtn","name":"ALTAY MOUNTAINS"},"type":"Polygon"},{"arcs":[[68,69]],"id":"mtn-11","properties":{"cla":"Range/mtn","name":"GREATER KHINGAN RANGE"},"type":"Polygon"},{"arcs":[[70]],"id":"mtn-12","properties":{"cla":"Range/mtn","name":"STANOVOY RANGE"},"type":"Polygon"},{"arcs":[[71]],"id":"mtn-13","properties":{"cla":"Range/mtn","name":"CHAÎNE ANNAMITIQUE"},"type":"Polygon"},{"arcs":[[72,73]],"id":"mtn-14","properties":{"cla":"Range/mtn","name":"Siwalik Hills"},"type":"Polygon"},{"arcs":[[74,75,76,77,78,79,80,81]],"id":"mtn-15","properties":{"cla":"Range/mtn","name":"PAMIRS"},"type":"Polygon"},{"arcs":[[82,83,84,85,86,87,88,89,90,91,92,93,94,95]],"id":"mtn-16","properties":{"cla":"Range/mtn","name":"HINDU KUSH"},"type":"Polygon"},{"arcs":[[96,97,98,99,100,101,102,103]],"id":"mtn-17","properties":{"cla":"Range/mtn","name":"KARAKORAM RA."},"type":"Polygon"},{"arcs":[[104,105,106,107,108]],"id":"mtn-18","properties":{"cla":"Range/mtn","name":"KUNLUN MOUNTAINS"},"type":"Polygon"},{"arcs":[[109,110,111,112]],"id":"mtn-19","properties":{"cla":"Range/mtn","name":"ATLAS MOUNTAINS"},"type":"Polygon"},{"arcs":[[113]],"id":"mtn-20","properties":{"cla":"Range/mtn","name":"APPALACHIAN MTS."},"type":"Polygon"},{"arcs":[[114]],"id":"mtn-21","properties":{"cla":"Range/mtn","name":"BROOKS RANGE"},"type":"Polygon"},{"arcs":[[115,116]],"id":"mtn-22","properties":{"cla":"Range/mtn","name":"COAST MOUNTAINS"},"type":"Polygon"},{"arcs":[[117,118,119,120,121,122,123,124,125,126,127,-116,128,129]],"id":"mtn-23","properties":{"cla":"Range/mtn","name":"CASCADE RANGE"},"type":"Polygon"},{"arcs":[[130]],"id":"mtn-24","properties":{"cla":"Range/mtn","name":"ALASKA RANGE"},"type":"Polygon"},{"arcs":[[131,132,133,134]],"id":"mtn-25","properties":{"cla":"Range/mtn","name":"ATLAS SAHARIEN"},"type":"Polygon"},{"arcs":[[135]],"id":"mtn-26","properties":{"cla":"Range/mtn","name":"HAUT ATLAS"},"type":"Polygon"},{"arcs":[[136]],"id":"mtn-27","properties":{"cla":"Range/mtn","name":"DRAKENSBERG"},"type":"Polygon"},{"arcs":[[137]],"id":"mtn-28","properties":{"cla":"Range/mtn","name":"CRYSTAL MOUNTAINS"},"type":"Polygon"},{"arcs":[[138]],"id":"mtn-29","properties":{"cla":"Range/mtn","name":"TIBESTI MTS."},"type":"Polygon"},{"arcs":[[139]],"id":"mtn-30","properties":{"cla":"Range/mtn","name":"AHAGGAR MTS."},"type":"Polygon"},{"arcs":[[140]],"id":"mtn-31","properties":{"cla":"Range/mtn","name":"AÏR MTS."},"type":"Polygon"},{"arcs":[[141]],"id":"mtn-32","properties":{"cla":"Range/mtn","name":"MITUMBA MTS."},"type":"Polygon"},{"arcs":[[142,143]],"id":"mtn-33","properties":{"cla":"Range/mtn","name":"Lesser Khingan Range"},"type":"Polygon"},{"arcs":[[144]],"id":"mtn-34","properties":{"cla":"Range/mtn","name":"SIKHOTE-ALIN’ RANGE"},"type":"Polygon"},{"arcs":[[145]],"id":"mtn-35","properties":{"cla":"Range/mtn","name":"VERKHOYANSK RANGE"},"type":"Polygon"},{"arcs":[[146]],"id":"mtn-36","properties":{"cla":"Range/mtn","name":"Central Highlands"},"type":"Polygon"},{"arcs":[[147]],"id":"mtn-37","properties":{"cla":"Range/mtn","name":"QUILIAN MOUNTAINS"},"type":"Polygon"},{"arcs":[[148,149]],"id":"mtn-38","properties":{"cla":"Range/mtn","name":"EASTERN SAYAN MTS."},"type":"Polygon"},{"arcs":[[150]],"id":"mtn-39","properties":{"cla":"Range/mtn","name":"YABLONOVYY RANGE"},"type":"Polygon"},{"arcs":[[151]],"id":"mtn-40","properties":{"cla":"Range/mtn","name":"Dabie Mts."},"type":"Polygon"},{"arcs":[[152]],"id":"mtn-41","properties":{"cla":"Range/mtn","name":"Nan Ling Mts."},"type":"Polygon"},{"arcs":[[153,154]],"id":"mtn-42","properties":{"cla":"Range/mtn","name":"WESTERN GHATS"},"type":"Polygon"},{"arcs":[[155]],"id":"mtn-43","properties":{"cla":"Range/mtn","name":"EASTERN GHATS"},"type":"Polygon"},{"arcs":[[156]],"id":"mtn-44","properties":{"cla":"Range/mtn","name":"Vindhya Range"},"type":"Polygon"},{"arcs":[[157]],"id":"mtn-45","properties":{"cla":"Range/mtn","name":"Wuyi Mts."},"type":"Polygon"},{"arcs":[[158]],"id":"mtn-46","properties":{"cla":"Range/mtn","name":"Tarbagatay Ra."},"type":"Polygon"},{"arcs":[[159,160,161]],"id":"mtn-47","properties":{"cla":"Range/mtn","name":"ALTUN MTS."},"type":"Polygon"},{"arcs":[[162]],"id":"mtn-48","properties":{"cla":"Range/mtn","name":"HEJAZ MTS."},"type":"Polygon"},{"arcs":[[163]],"id":"mtn-49","properties":{"cla":"Range/mtn","name":"ASIR MTS."},"type":"Polygon"},{"arcs":[[164]],"id":"mtn-50","properties":{"cla":"Range/mtn","name":"ELBURZ MTS."},"type":"Polygon"},{"arcs":[[165]],"id":"mtn-51","properties":{"cla":"Range/mtn","name":"KJØLEN MOUNTAINS"},"type":"Polygon"},{"arcs":[[166]],"id":"mtn-52","properties":{"cla":"Range/mtn","name":"CARPATHIAN MOUNTAINS"},"type":"Polygon"},{"arcs":[[167]],"id":"mtn-53","properties":{"cla":"Range/mtn","name":"APPENNINI"},"type":"Polygon"},{"arcs":[[168,169]],"id":"mtn-54","properties":{"cla":"Range/mtn","name":"PYRENEES"},"type":"Polygon"},{"arcs":[[170,171]],"id":"mtn-55","properties":{"cla":"Range/mtn","name":"Sierra Madre del Sur"},"type":"Polygon"},{"arcs":[[[172,173]],[[174]]],"id":"mtn-56","properties":{"cla":"Range/mtn","name":"COAST RANGES"},"type":"MultiPolygon"},{"arcs":[[175]],"id":"mtn-57","properties":{"cla":"Range/mtn","name":"SIERRA MADRE ORIENTAL"},"type":"Polygon"},{"arcs":[[-125,176,-123,177]],"id":"mtn-58","properties":{"cla":"Range/mtn","name":"SIERRA NEVADA"},"type":"Polygon"},{"arcs":[[178,179]],"id":"mtn-59","properties":{"cla":"Range/mtn","name":"SIERRA MADRE OCCIDENTAL"},"type":"Polygon"},{"arcs":[[180]],"id":"mtn-60","properties":{"cla":"Range/mtn","name":"CHUGACH MTS."},"type":"Polygon"},{"arcs":[[181,182,183,184,185,186,187,188,189,190,191]],"id":"mtn-61","properties":{"cla":"Range/mtn","name":"MACKENZIE MTS."},"type":"Polygon"},{"arcs":[[192,193]],"id":"mtn-62","properties":{"cla":"Range/mtn","name":"CORDILLERA OCCIDENTAL"},"type":"Polygon"},{"arcs":[[194,195,196,197]],"id":"mtn-63","properties":{"cla":"Range/mtn","name":"CORDILLERA REAL"},"type":"Polygon"},{"arcs":[[198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223]],"id":"mtn-64","properties":{"cla":"Range/mtn","name":"CORDILLERA ORIENTAL"},"type":"Polygon"},{"arcs":[[224,225,226,227,228,229,230,231,232,233,234,235,236,237]],"id":"mtn-65","properties":{"cla":"Range/mtn","name":"CORD. CENTRAL"},"type":"Polygon"},{"arcs":[[38,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256]],"id":"mtn-66","properties":{"cla":"Range/mtn","name":"CORD. OCCIDENTAL"},"type":"Polygon"},{"arcs":[[257,258,259,260,261,262,-252,263,264,265,266,267,268,269,270,271,272,273,274,275,276]],"id":"mtn-67","properties":{"cla":"Range/mtn","name":"CORD. CENTRAL"},"type":"Polygon"},{"arcs":[[277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298]],"id":"mtn-68","properties":{"cla":"Range/mtn","name":"CORDILLERA ORIENTAL"},"type":"Polygon"},{"arcs":[[299]],"id":"mtn-69","properties":{"cla":"Range/mtn","name":"SOUTHERN ALPS"},"type":"Polygon"},{"arcs":[[300]],"id":"mtn-70","properties":{"cla":"Range/mtn","name":"Anti Atlas"},"type":"Polygon"},{"arcs":[[301]],"id":"mtn-71","properties":{"cla":"Range/mtn","name":"Muchinga Mts."},"type":"Polygon"},{"arcs":[[302,303,304,305,306,307,308,309,310,311,312,313]],"id":"mtn-72","properties":{"cla":"Range/mtn","name":"Serra do Mar"},"type":"Polygon"},{"arcs":[[314,315,316,317,318,319,320,321,322,323]],"id":"mtn-73","properties":{"cla":"Range/mtn","name":"Serra Geral"},"type":"Polygon"},{"arcs":[[324,325]],"id":"mtn-74","properties":{"cla":"Range/mtn","name":"Serra da Mantiqueira"},"type":"Polygon"},{"arcs":[[326]],"id":"mtn-75","properties":{"cla":"Range/mtn","name":"GUIANA HIGHLANDS"},"type":"Polygon"},{"arcs":[[327]],"id":"mtn-76","properties":{"cla":"Range/mtn","name":"Sierra Chiapas"},"type":"Polygon"},{"arcs":[[328,329,330,331,332,333,334]],"id":"mtn-77","properties":{"cla":"Range/mtn","name":"SELWYN MTS."},"type":"Polygon"},{"arcs":[[335,336,337,338,339,340,341,342,343,344,345,346]],"id":"mtn-78","properties":{"cla":"Range/mtn","name":"COLUMBIA MTS."},"type":"Polygon"},{"arcs":[[347]],"id":"mtn-79","properties":{"cla":"Range/mtn","name":"TORNGAT MTS."},"type":"Polygon"},{"arcs":[[348]],"id":"mtn-80","properties":{"cla":"Range/mtn","name":"NEW GUINEA HIGHLANDS"},"type":"Polygon"},{"arcs":[[349]],"id":"mtn-81","properties":{"cla":"Range/mtn","name":"Hangayn Mts."},"type":"Polygon"},{"arcs":[[350]],"id":"mtn-82","properties":{"cla":"Range/mtn","name":"Hamgyong Mts."},"type":"Polygon"},{"arcs":[[351]],"id":"mtn-83","properties":{"cla":"Range/mtn","name":"SREDINNYY RANGE"},"type":"Polygon"},{"arcs":[[352]],"id":"mtn-84","properties":{"cla":"Range/mtn","name":"Koryak Range"},"type":"Polygon"},{"arcs":[[353]],"id":"mtn-85","properties":{"cla":"Range/mtn","name":"KOLYMA RANGE"},"type":"Polygon"},{"arcs":[[354]],"id":"mtn-86","properties":{"cla":"Range/mtn","name":"CHERSKIY RANGE"},"type":"Polygon"},{"arcs":[[355]],"id":"mtn-87","properties":{"cla":"Range/mtn","name":"Chin Hills"},"type":"Polygon"},{"arcs":[[356]],"id":"mtn-88","properties":{"cla":"Range/mtn","name":"Yin Mts."},"type":"Polygon"},{"arcs":[[357,358,359,360,361,362]],"id":"mtn-89","properties":{"cla":"Range/mtn","name":"Western Sayan Mts."},"type":"Polygon"},{"arcs":[[363,364,365,366,367,368,369,370,371]],"id":"mtn-90","properties":{"cla":"Range/mtn","name":"Abakanskiy Ra."},"type":"Polygon"},{"arcs":[[372,373]],"id":"mtn-91","properties":{"cla":"Range/mtn","name":"Tannu-Ola Ra."},"type":"Polygon"},{"arcs":[[374]],"id":"mtn-92","properties":{"cla":"Range/mtn","name":"Taihang Mts."},"type":"Polygon"},{"arcs":[[375,376]],"id":"mtn-93","properties":{"cla":"Range/mtn","name":"Lüliang Mts."},"type":"Polygon"},{"arcs":[[377,378]],"id":"mtn-94","properties":{"cla":"Range/mtn","name":"Qinling Mountains"},"type":"Polygon"},{"arcs":[[379]],"id":"mtn-95","properties":{"cla":"Range/mtn","name":"Dalou Mts."},"type":"Polygon"},{"arcs":[[380]],"id":"mtn-96","properties":{"cla":"Range/mtn","name":"Dângrêk Ra."},"type":"Polygon"},{"arcs":[[381]],"id":"mtn-97","properties":{"cla":"Range/mtn","name":"Naga Hills"},"type":"Polygon"},{"arcs":[[382]],"id":"mtn-98","properties":{"cla":"Range/mtn","name":"Arakan Yoma"},"type":"Polygon"},{"arcs":[[383,384]],"id":"mtn-99","properties":{"cla":"Range/mtn","name":"Southern Ghats"},"type":"Polygon"},{"arcs":[[385]],"id":"mtn-100","properties":{"cla":"Range/mtn","name":"Satpura Range"},"type":"Polygon"},{"arcs":[[386,387,388,389,390,391]],"id":"mtn-101","properties":{"cla":"Range/mtn","name":"Salt Ra."},"type":"Polygon"},{"arcs":[[392,393]],"id":"mtn-102","properties":{"cla":"Range/mtn","name":"Borohoro Mts."},"type":"Polygon"},{"arcs":[[394]],"id":"mtn-103","properties":{"cla":"Range/mtn","name":"Alataw Mts."},"type":"Polygon"},{"arcs":[[395]],"id":"mtn-104","properties":{"cla":"Range/mtn","name":"Khasi Hills"},"type":"Polygon"},{"arcs":[[396,397]],"id":"mtn-105","properties":{"cla":"Range/mtn","name":"Lesser Caucasus"},"type":"Polygon"},{"arcs":[[398,399]],"id":"mtn-106","properties":{"cla":"Range/mtn","name":"PONTIC MOUNTAINS"},"type":"Polygon"},{"arcs":[[400]],"id":"mtn-107","properties":{"cla":"Range/mtn","name":"KUH RUD MOUNTAINS"},"type":"Polygon"},{"arcs":[[401]],"id":"mtn-108","properties":{"cla":"Range/mtn","name":"Balkan Mts."},"type":"Polygon"},{"arcs":[[402]],"id":"mtn-109","properties":{"cla":"Range/mtn","name":"Dinaric Alps"},"type":"Polygon"},{"arcs":[[403,404]],"id":"mtn-110","properties":{"cla":"Range/mtn","name":"Cord. Cantábrica"},"type":"Polygon"},{"arcs":[[405]],"id":"mtn-111","properties":{"cla":"Range/mtn","name":"S. Nevada"},"type":"Polygon"},{"arcs":[[406]],"id":"mtn-112","properties":{"cla":"Range/mtn","name":"Sierra Morena"},"type":"Polygon"},{"arcs":[[407]],"id":"mtn-113","properties":{"cla":"Range/mtn","name":"Hadhramaut"},"type":"Polygon"}],"type":"GeometryCollection"}},"transform":{"scale":[0.03432598249824983,0.012651238423842383],"translate":[-166.380518,-55.18078800000001]},"type":"Topology"}
@@ -0,0 +1 @@
1
+ {"entries":[[85.078,21.558,"Arctic Ocean",0,"ocean"],[-26.746,83.424,"Indian Ocean",0,"ocean"],[39.898,-30.68,"North Atlantic Ocean",0,"ocean",[[40,-55],[30,-45],[50,-25],[15,-45]]],[24.49,-136.445,"North Pacific Ocean",0,"ocean",[[36,-126],[47,-131],[55,-143],[35,160],[15,165]]],[-34.311,-18.311,"South Atlantic Ocean",0,"ocean",[[-25,-35],[-40,-15],[-10,-20]]],[-30.137,-126.822,"South Pacific Ocean",0,"ocean",[[-20,-110],[-40,-95],[-15,170],[-35,170]]],[-65.892,-18.447,"Southern Ocean",0,"ocean"],[13.692,63.675,"Arabian Sea",1,"sea"],[72.951,-66.643,"Baffin Bay",1,"bay"],[13.118,86.757,"Bay of Bengal",1,"bay"],[71.997,-136.388,"Beaufort Sea",1,"sea"],[43.547,31.292,"Black Sea",1,"sea"],[13.754,-78.235,"Caribbean Sea",1,"sea"],[41.954,50.61,"Caspian Sea",1,"sea"],[-18.886,157.126,"Coral Sea",1,"sea"],[58.108,-149.198,"Gulf of Alaska",1,"gulf"],[25.319,-90.053,"Gulf of America",1,"gulf"],[59.246,-85.292,"Hudson Bay",1,"bay"],[55.979,-52.602,"Labrador Sea",1,"sea"],[34.341,17.988,"Mediterranean Sea",1,"sea"],[25.683,52.866,"Persian Gulf",1,"gulf"],[17.263,133.481,"Philippine Sea",1,"sea"],[19.579,38.751,"Red Sea",1,"sea"],[-77.493,-169.96,"Ross Sea",1,"sea"],[40.613,136.423,"Sea of Japan",1,"sea"],[52.851,149.205,"Sea of Okhotsk",1,"sea"],[13.781,114.703,"South China Sea",1,"sea"],[-40.358,160.682,"Tasman Sea",1,"sea"],[-75.66,-53.473,"Weddell Sea",1,"sea"],[-73.979,-106.379,"Amundsen Sea",2,"sea"],[10.878,95.492,"Andaman Sea",2,"sea"],[-9.347,135.278,"Arafura Sea",2,"sea"],[19.67,-93.559,"Bahía de Campeche",2,"bay"],[56.024,19.234,"Baltic Sea",2,"sea"],[-5.658,126.23,"Banda Sea",2,"sea"],[74.604,43.063,"Barents Sea",2,"sea"],[45.627,-4.33,"Bay of Biscay",2,"bay"],[-72.084,-82.745,"Bellingshausen Sea",2,"sea"],[56.349,-171.512,"Bering Sea",2,"sea"],[3.571,122.574,"Celebes Sea",2,"sea"],[68.633,-169.418,"Chukchi Sea",2,"sea"],[64.549,-57.848,"Davis Strait",2,"strait"],[-66.686,-68.017,"Drake Passage",2,"channel"],[28.854,125.37,"East China Sea",2,"sea"],[76.558,-8.516,"Greenland Sea",2,"sea"],[3.294,2.903,"Gulf of Guinea",2,"gulf"],[9.545,101.832,"Gulf of Thailand",2,"gulf"],[53.543,-5.35,"Irish Sea",2,"sea"],[-5.2,112.569,"Java Sea",2,"sea"],[76.92,73.103,"Kara Sea",2,"sea"],[5.871,75.234,"Laccadive Sea",2,"sea"],[75.961,120.379,"Laptev Sea",2,"sea"],[22.073,120.87,"Luzon Strait",2,"strait"],[-20.03,40.414,"Mozambique Channel",2,"channel"],[56.502,2.655,"North Sea",2,"sea"],[66.883,1.329,"Norwegian Sea",2,"sea"],[27.646,-59.716,"Sargasso Sea",2,"sea"],[-61.149,-54.893,"Scotia Sea",2,"sea"],[8.392,120.208,"Sulu Sea",2,"sea"],[-10.978,127.712,"Timor Sea",2,"sea"],[35.164,123.956,"Yellow Sea",2,"sea"],[42.81,15.327,"Adriatic Sea",3,"sea"],[49.707,-2.894,"English Channel",3,"channel"],[26.35,-110.53,"Golfo de California",3,"gulf"],[-35.41,131.682,"Great Australian Bight",3,"gulf"],[12.621,48.305,"Gulf of Aden",3,"gulf"],[61.904,19.763,"Gulf of Bothnia",3,"gulf"],[-14.387,139.215,"Gulf of Carpentaria",3,"gulf"],[16.3,-88.001,"Gulf of Honduras",3,"gulf"],[24.54,58.766,"Gulf of Oman",3,"gulf"],[63.3,-73.224,"Hudson Strait",3,"strait"],[53.746,-80.255,"James Bay",3,"bay"],[39.863,12.144,"Tyrrhenian Sea",3,"sea"],[65.418,38.854,"White Sea",3,"sea"],[38.899,24.994,"Aegean Sea",4,"sea"],[70.531,-120.687,"Amundsen Gulf",4,"gulf"],[40.132,1.619,"Balearic Sea",4,"sea"],[44.909,-66.051,"Bay of Fundy",4,"bay"],[-37.489,176.808,"Bay of Plenty",4,"bay"],[-3.776,147.903,"Bismarck Sea",4,"sea"],[38.756,120.053,"Bo Hai",4,"sea"],[57.651,-160.179,"Bristol Bay",4,"bay"],[51.086,-5.339,"Bristol Channel",4,"channel"],[-2.412,131.169,"Ceram Sea",4,"sea"],[37.829,-76.031,"Chesapeake Bay",4,"bay"],[59.657,-152.312,"Cook Inlet",4,"bay"],[42.981,3.976,"Golfe du Lion",4,"gulf"],[-46.117,-66.587,"Golfo San Jorge",4,"gulf"],[8.18,-79.211,"Golfo de Panamá",4,"gulf"],[59.969,26.987,"Gulf of Finland",4,"gulf"],[22.57,69.333,"Gulf of Kutch",4,"gulf"],[43.368,-68.504,"Gulf of Maine",4,"gulf"],[8.43,78.962,"Gulf of Mannar",4,"gulf"],[48.615,-60.525,"Gulf of Saint Lawrence",4,"gulf"],[19.791,107.611,"Gulf of Tonkin",4,"gulf"],[33.956,132.471,"Inner Sea",4,"sea"],[56.267,-7.03,"Inner Seas",4,"sea"],[38.178,18.626,"Ionian Sea",4,"sea"],[33.799,128.392,"Korea Strait",4,"strait"],[-1.86,118.021,"Makassar Strait",4,"strait"],[75.523,-61.147,"Melville Bay",4,"bay"],[0.591,126.128,"Molucca Sea",4,"sea"],[-35.469,-56.554,"Río de la Plata",4,"gulf"],[59.897,157.821,"Shelikhova Gulf",4,"gulf"],[-9.247,155.069,"Solomon Sea",4,"sea"],[35.783,-5.919,"Strait of Gibraltar",4,"strait"],[5.586,99.038,"Strait of Malacca",4,"strait"],[1.193,103.68,"Strait of Singapore",4,"strait"],[25.571,-79.276,"Straits of Florida",4,"strait"],[24.166,119.387,"Taiwan Strait",4,"strait"],[70.288,-99.272,"The North Western Passages",4,"channel"],[59.341,-67.41,"Ungava Bay",4,"bay"],[73.851,-109.102,"Viscount Melville Sound",4,"sound"]]}
@@ -2642,9 +2642,11 @@ Markers in cells are always **rendered in canonical alphabet order** (`R A C I`,
2642
2642
 
2643
2643
  ## 25. Map Diagrams
2644
2644
 
2645
- Geographic concept maps: highlight/score political subdivisions, drop points of interest (POIs), and connect them with routes or edges. For "share a concept" business maps, not cartography. Renders at a fixed, auto-fit position — no pan/zoom. Basemap and viewport are **inferred from the content you reference** — most maps need no directives. v1 boundaries: world countries + US states.
2645
+ Geographic concept maps: highlight/shade political subdivisions, drop points of interest (POIs), and connect them with routes or edges. For "share a concept" business maps, not cartography. Renders at a fixed, auto-fit position — no pan/zoom. Basemap and viewport are **inferred from the content you reference** — most maps need no directives. v1 boundaries: world countries + US states.
2646
2646
 
2647
- **How the map type is decided (inference):** the resolver takes the bounding box of everything referenced (scored/tagged regions + POIs + edge endpoints), pads it, and measures its span. Projection: `albers-usa` (US conic + AK/HI insets) when the map is US-only; else `equirectangular` snapped to the full Greenwich world when the span is world-scale (≥ ~90°); else `mercator` for a tight regional cluster; else `equirectangular`. The US-state mesh is added whenever you name a US state. Directives only matter to *override* this: `region us-states` forces the state mesh + US scoping (useful on a POI-only US map, redundant once you name a state); `projection …` forces the projection; **`region world` is currently inert** — world is already the default, so it changes nothing (the frame widens from a world-scale longitude span, not this directive).
2647
+ **The zero-config map is the good-looking map.** Type `map`, name some places, and you're done coastlines, mountain relief (on reference maps), region/POI labels, and orientation labels all render by default. There is no projection, scale, or label directive; the only knobs are the bare `no-*` opt-outs.
2648
+
2649
+ **How the map type is decided (inference):** the resolver takes the bounding box of everything referenced (valued/tagged regions + POIs + edge endpoints), pads it, and measures its span. Projection is **always inferred — never configured**: `albers-usa` (US conic + AK/HI insets) when the map is US-oriented; at world/multi-continent scale a **data** map (any region/POI carries `value:` or a tag) gets **Equal Earth** (equal-area — honest for thematic comparison) while a **dataless reference** map gets **natural-earth** (the prettier curved compromise); `mercator` for a tight regional or single-continent cluster. The US-state mesh is added whenever you name a US state (or the map is US-oriented).
2648
2650
 
2649
2651
  ### Declaration
2650
2652
 
@@ -2654,30 +2656,29 @@ map [Title]
2654
2656
 
2655
2657
  Requires the explicit first line `map` — no content inference.
2656
2658
 
2657
- ### Region fill — score (choropleth)
2659
+ ### Region fill — value (choropleth)
2658
2660
 
2659
- A subdivision name on its own line with a `score:` fills with a single-hue tint ramp (auto min→max, ~15% floor):
2661
+ A subdivision name on its own line with a `value:` fills with a single-hue tint ramp (auto min→max, ~15% floor). `value:` is the single numeric channel — region shade, POI marker size, or edge/leg thickness depending on the element:
2660
2662
 
2661
2663
  ```
2662
2664
  map US Sales
2663
- region us-states
2664
- metric Sales ($M)
2665
+ region-metric Sales ($M)
2665
2666
 
2666
- California score: 92
2667
- Texas score: 78
2668
- Florida score: 51
2667
+ California value: 92
2668
+ Texas value: 78
2669
+ Florida value: 51
2669
2670
  ```
2670
2671
 
2671
- - `metric <label>` labels the ramp in the legend; `scale <min> <max>` overrides the auto anchors.
2672
- - A subdivision with no `score:`/tag renders as the neutral base.
2672
+ - `region-metric <label>` labels the ramp in the legend; a trailing color on it sets the ramp hue (`region-metric Sales ($M) blue` → blue ramp, default red).
2673
+ - The ramp **auto-fits**: all-non-negative data anchors the low end at **0** (shared baseline); mixed-sign data fits data-min→data-max. There is no `scale` directive.
2674
+ - A subdivision with no `value:`/tag renders as the neutral base.
2673
2675
 
2674
2676
  ### Region fill — categorical (tags)
2675
2677
 
2676
- Uses the universal tag model (§1.3): declare a `tag` group and apply its alias as a key. The first declared group colors regions by default; `active-tag` only selects a different dimension (another group, or the `score` ramp).
2678
+ Uses the universal tag model (§1.3): declare a `tag` group and apply its alias as a key. The first declared group colors regions by default; `active-tag` only selects a different dimension (another group, or the value ramp).
2677
2679
 
2678
2680
  ```
2679
2681
  map Global Presence
2680
- region world
2681
2682
 
2682
2683
  tag Market as m
2683
2684
  HQ blue
@@ -2689,7 +2690,9 @@ Germany m: Region
2689
2690
  Japan m: Region
2690
2691
  ```
2691
2692
 
2692
- `score:` + a tag on the same region (bivariate): both are kept as **two selectable colouring dimensions**. The top legend shows the score ramp and each tag group as mutually-exclusive, collapsible groups; the active one fills the map. Default is the score ramp (when any `score:` exists). `active-tag <GroupName>` colours by that tag; `active-tag score` colours by the ramp. In the app, clicking a legend group flips the active dimension (live preview only — no source edit); hovering a tag entry highlights the regions with that value, and scrubbing across the score gradient highlights the regions whose score is near the cursor (non-matching regions dim). No warning.
2693
+ `value:` + a tag on the same region (bivariate): both are kept as **two selectable colouring dimensions**. The top legend shows the value ramp and each tag group as mutually-exclusive, collapsible groups; the active one fills the map. Default is the value ramp (whenever any `value:` exists). `active-tag <GroupName>` colours by that tag; `active-tag <ValueLabel>` (the `region-metric` label, or `Value`) re-selects the ramp. In the app, clicking a legend group flips the active dimension (live preview only — no source edit); hovering a tag entry highlights the regions with that value, and scrubbing across the value gradient highlights the regions whose value is near the cursor (non-matching regions dim). No warning.
2694
+
2695
+ A **trailing color** on a region line (§1.5) is the lightweight highlight: `Texas red` (or `Texas red value: 90`, color before metadata) paints a flat fill with no tag group, ignoring the active dimension and adding no legend entry. It wins over the ramp and any tag on that region.
2693
2696
 
2694
2697
  ### Points of interest (`poi`)
2695
2698
 
@@ -2701,60 +2704,70 @@ poi <name | <lat> <lon>> [as <alias>] [<key>: <value>, …]
2701
2704
  poi Austin # label defaults to "Austin"
2702
2705
  poi Austin label: West HQ # anchored at Austin; shows "West HQ"
2703
2706
  poi 39.74 -104.99 as dcw # positional coords (lat lon), signed
2704
- poi Dallas size: 320 # size: value-scales the marker radius (a data channel)
2707
+ poi Dallas value: 320 # value: scales the marker radius (a data channel)
2705
2708
  poi Chicago m: Office # categorical color via a tag alias
2709
+ poi Austin red # direct marker color (trailing token, §1.5)
2706
2710
  ```
2707
2711
 
2708
2712
  - **Coordinates are positional** — two leading signed numbers (lat then lon); cities never start with a number.
2709
- - `size:` scales marker area (use `size-metric <label>` for the legend key). POI properties: `label`, `size`, `description`, applied tag alias, `as`. No `icon` in v1.
2713
+ - `value:` scales marker area (use `poi-metric <label>` for the legend key). A trailing color (`poi Austin red`) sets the marker fill directly — winning over a tag color and the default orange. POI properties: `label`, `value`, `style`, applied tag alias, `as`. No `icon` in v1.
2710
2714
  - Coord-positioned or relabeled POIs take `as <alias>` for route/edge references; named POIs are referenced by name.
2711
2715
 
2712
2716
  ### Routes & connectors
2713
2717
 
2714
- `route` — an ordered, auto-numbered stop list; the origin gets a distinct marker. Repeat the first stop as the last to close a loop. `style: arc` curves the legs:
2718
+ `route <origin> [style: arc]` — an ordered, auto-numbered voyage; the origin gets a distinct marker. Each indented line is a `[-label->] destination` leg that continues from the previous stop a leg is an edge (in-arrow label, `value:` thickness, `->`/`~>` or header `style: arc` shape). A tag/`label:` on a leg decorates its destination stop. Repeat the origin as a leg's destination to close a loop (no second marker):
2715
2719
 
2716
2720
  ```
2717
- route style: arc
2718
- Miami label: Embark
2719
- Havana
2720
- Kingston
2721
- Miami # repeats origin → closed loop
2721
+ route Miami style: arc
2722
+ -weigh anchor-> Havana value: 40
2723
+ -> Kingston
2724
+ -> Miami # destination == origin → closed loop
2722
2725
  ```
2723
2726
 
2724
2727
  Native `->` edges handle any other connection (no `link`/`leg` keyword):
2725
2728
 
2726
2729
  ```
2727
2730
  A -> B # one-off
2728
- A -ships-> B weight: 22 # labeled; weight = thickness
2731
+ A -ships-> B value: 22 # labeled; value = line thickness
2729
2732
  A -> B -> C # inline chain
2730
2733
  dcw # hub/star — indented edges share the source
2731
2734
  -> office-east
2732
2735
  -> office-west
2733
2736
  ```
2734
2737
 
2735
- `~>` curves a single edge. No geographic path-finding — legs are straight or arced.
2738
+ `~>` curves a single edge. There is no geographic path-finding and no `surface:` — legs are plain straight or arced geometry (`style: arc` to bow one) and may cross land.
2739
+
2740
+ ```
2741
+ map Caribbean Cruise
2742
+
2743
+ route Miami style: arc
2744
+ -weigh anchor-> Havana
2745
+ -> Kingston
2746
+ -> Cartagena
2747
+ ```
2736
2748
 
2737
2749
  ### Labels, legend & chrome
2738
2750
 
2739
- - Title is the declaration line; `subtitle` / `caption` are directives.
2740
- - Legend auto-composes below the title: the score ramp + `metric` and each tag group are **selectable colouring groups** (collapse/activate to flip the fill); the POI size key (`size-metric`) and edge-weight key sit in a separate lower-corner block. `no-legend` suppresses all of it.
2741
- - `region-labels full | abbrev | off` (default `off`); `poi-labels off | auto | all` (default `auto`). Labels render **on the map** (export-safe), escalating inline → leader line → numbered pin in dense clusters; markers never move.
2751
+ - Title is the declaration line; `caption` (data-source attribution, travels with the exported PNG) is the only chrome directive. There is no `subtitle`.
2752
+ - Legend auto-composes below the title: the value ramp + `region-metric` and each tag group are **selectable colouring groups** (collapse/activate to flip the fill); POI size (`poi-metric`) and edge thickness (`flow-metric`) are self-evident from scale and carry no legend key in v1. `no-legend` suppresses all of it.
2753
+ - **Region and POI labels are on by default.** Region labels auto-fit **full abbrev hide** (a US-state 2-letter abbreviation is tried when the full name doesn't fit; other regions degrade full → hide); POI labels are collision-managed. Labels render **on the map** (export-safe), escalating inline → leader line → numbered pin in dense clusters; markers never move. A wide map in a narrow column (< ~480px) prefers abbreviations and drops reference relief, as if zoomed out.
2754
+ - **Cosmetic features are on by default**; the only switches are bare `no-*` opt-outs (no positive opt-in flag): `no-coastline`, `no-relief`, `no-context-labels`, `no-region-labels`, `no-poi-labels`, `no-legend`. A plain look = the four basemap flags together.
2742
2755
 
2743
2756
  ### Name resolution
2744
2757
 
2745
2758
  - Admin units use **ISO 3166** (geometry keyed by code, so "United States" / "USA" / "US" resolve alike); cities use **GeoNames** (alias/accent matching, population ranking, did-you-mean).
2746
- - `default-country` / `default-state <ISO>` scopes bare city resolution (inferred from content if unset).
2759
+ - `locale <ISO>` scopes bare city resolution to a country (`locale US`) or subdivision (`locale US-GA`) — inferred from content if unset.
2747
2760
  - A bare ambiguous, undeclared name → most-populous in scope (info note).
2748
2761
  - **Disambiguate once:** trailing ISO code at first declaration — `San Jose CR` (country) or `Portland US-OR` (subdivision). Thereafter reference the bare name. Two same-named cities → `as <alias>` each.
2749
2762
  - **Region fills disambiguate the country-vs-state collision** (`Georgia` = country `GE` or US state `US-GA`) by ISO code or name + scope — pick whichever reads best:
2750
- - **Bare ISO code** (terse): `US-GA score: 5` → the state, `GE score: 5` → the country. Codes resolve directly and never warn.
2751
- - **Name + scope** (readable): `Georgia US score: 5` → the state, `Georgia GE score: 5` → the country.
2763
+ - **Bare ISO code** (terse): `US-GA value: 5` → the state, `GE value: 5` → the country. Codes resolve directly and never warn.
2764
+ - **Name + scope** (readable): `Georgia US value: 5` → the state, `Georgia GE value: 5` → the country.
2752
2765
  - The redundant `Georgia US-GA` still works but isn't needed (a mismatched code like `Georgia US-CA` is rejected). A bare ambiguous `Georgia` follows the inferred US-scope signal and warns with both fixes named.
2753
2766
  - Positional coordinates are the escape hatch for anything missing/ambiguous.
2754
2767
 
2755
2768
  ### Directives & reserved keys
2756
2769
 
2757
- Directives (no colon): `region` (world | us-states), `projection` (equirectangular | natural-earth | albers-usa | mercator), `metric`, `size-metric`, `scale`, `region-labels`, `poi-labels`, `default-country`, `default-state`, `active-tag`, `no-legend`, `subtitle`, `caption`. Reserved metadata keys (need colons): `score`, `label`, `size`, `description`, `weight`, `style`. Coordinates are positional (no `at:` key). Projection is auto-picked by extent span (world equirectangular, full Greenwich frame; US → albers-usa with Alaska/Hawaii insets; tight regional → mercator) unless overridden.
2770
+ The directive set is **12, all colon-free**: six naming intent the renderer can't infer — `region-metric`, `poi-metric`, `flow-metric`, `locale`, `active-tag`, `caption` and six `no-*` cosmetic opt-outs `no-legend`, `no-coastline`, `no-relief`, `no-context-labels`, `no-region-labels`, `no-poi-labels`. There is **no** `projection`, `scale`, `subtitle`, `surface`, `region`, or label-enum directive, and cosmetics have no positive opt-in form. Reserved metadata keys (need colons): `value`, `label`, `style` (`value` = the one numeric channel: region shade / POI size / edge thickness); `surface:` is no longer recognized. A bare US state postal code resolves to that state (`poi Portland OR` → Oregon; `CA` = California). Coordinates are positional (no `at:` key). Projection is inferred from extent + whether the map carries data (US → albers-usa; world data → Equal Earth; world reference → natural-earth; regional → mercator) and cannot be overridden.
2758
2771
 
2759
2772
  ---
2760
2773
 
@@ -0,0 +1,16 @@
1
+ map Global Market Presence
2
+
3
+ tag Market as m
4
+ HQ blue
5
+ Region teal
6
+ Prospect orange
7
+ active-tag Market
8
+
9
+ United States m: HQ
10
+ Germany m: Region
11
+ Japan m: Region
12
+ Brazil m: Prospect
13
+ India m: Region
14
+ Australia m: Prospect
15
+ South Africa m: Prospect
16
+ Indonesia m: Prospect
@@ -1,5 +1,4 @@
1
1
  map Global Market Presence
2
- region world
3
2
 
4
3
  tag Market as m
5
4
  HQ blue
@@ -1,5 +1,4 @@
1
1
  map US Sales by State
2
- region us-states
3
2
  region-metric Sales ($M)
4
3
 
5
4
  California value: 92
@@ -0,0 +1,7 @@
1
+ map Smuggler's Run
2
+
3
+ poi Havana value: 90
4
+ poi Kingston value: 120
5
+
6
+ route Havana style: arc
7
+ -run the blockade-> Kingston
@@ -0,0 +1,11 @@
1
+ map Privateer's Atlas
2
+
3
+ // Regions named, no value: or tags → colorize is the inferred dress: every
4
+ // state/country gets a distinct pastel and no two neighbours share a hue
5
+ // (4-colour political look). The named states aren't special — the whole drawn
6
+ // mesh colours, so it reads as one chart. `no-colorize` would force green-land.
7
+ California
8
+ Texas
9
+ Florida
10
+ New York
11
+ Washington
@@ -0,0 +1,9 @@
1
+ map Regional Focus
2
+ region-metric Sales ($M) blue
3
+
4
+ California value: 92
5
+ Oregon value: 40
6
+ Texas red
7
+
8
+ poi Portland US-OR green
9
+ poi Denver
@@ -0,0 +1,11 @@
1
+ map World Reference
2
+
3
+ // A dataless reference map (regions named, no value: or tags) — so the
4
+ // zero-config basemap shows its full dress: coastline water-lines, mountain
5
+ // relief, and orientation labels, on a natural-earth projection.
6
+ United States
7
+ Brazil
8
+ Egypt
9
+ India
10
+ Japan
11
+ Australia
@@ -1,8 +1,5 @@
1
1
  map Region Scope Disambiguation
2
- region us-states
3
2
  region-metric Sales ($M)
4
- region-labels abbrev
5
- subtitle Pin a country/state name clash by ISO code (US-GA) or name + scope (Georgia US)
6
3
 
7
4
  California value: 92
8
5
  Texas value: 78
@@ -1,5 +1,4 @@
1
1
  map Caribbean Cruise
2
- projection mercator
3
2
 
4
3
  route Miami style: arc
5
4
  -weigh anchor-> Havana
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diagrammo/dgmo",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "DGMO diagram markup language — parser, renderer, and color system",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/advanced.ts CHANGED
@@ -540,6 +540,28 @@ export type {
540
540
  MapLayoutLegend,
541
541
  } from './map/layout';
542
542
  export { renderMap, renderMapForExport } from './map/renderer';
543
+ // Content-aware export dimensions — derive the canvas height from a map's intrinsic
544
+ // projected aspect so exports/embeds match the content's natural shape (no vertical
545
+ // stretch). Used by the CLI/MCP/SSG export path and by Obsidian's DI render.
546
+ export {
547
+ mapContentAspect,
548
+ mapExportDimensions,
549
+ type MapExportDimensions,
550
+ } from './map/dimensions';
551
+ // Map geo-query (step-5 coordinate/location inspector) — a SEPARATE entry from
552
+ // the renderer; takes `MapData` by DI so it's browser-safe (never calls the
553
+ // Node-only `loadMapData`).
554
+ export { createMapGeoQuery } from './map/geo-query';
555
+ export type {
556
+ MapGeoQuery,
557
+ CreateMapGeoQueryOptions,
558
+ ResultCard,
559
+ ResultTokens,
560
+ RegionToken,
561
+ NearestCity,
562
+ ProjectedCity,
563
+ } from './map/geo-query';
564
+ export type { MapLayoutInset, MapLayoutStretch } from './map/layout';
543
565
  export type {
544
566
  ParsedMap,
545
567
  MapDirectives,
@@ -720,7 +742,10 @@ export {
720
742
  gruvboxPalette,
721
743
  tokyoNightPalette,
722
744
  oneDarkPalette,
723
- boldPalette,
745
+ atlasPalette,
746
+ blueprintPalette,
747
+ slatePalette,
748
+ tidewaterPalette,
724
749
  draculaPalette,
725
750
  monokaiPalette,
726
751
  } from './palettes';
@@ -324,6 +324,9 @@ interface BLRenderOptions {
324
324
  onToggleDescriptions?: (active: boolean) => void;
325
325
  onToggleControlsExpand?: () => void;
326
326
  exportMode?: boolean;
327
+ /** When 'app', the description toggle is hosted by the app overlay strip
328
+ * (inline gear suppressed, controls row + anchor reserved). */
329
+ controlsHost?: 'app' | 'inline';
327
330
  }
328
331
 
329
332
  export function renderBoxesAndLines(
@@ -344,6 +347,7 @@ export function renderBoxesAndLines(
344
347
  onToggleDescriptions,
345
348
  onToggleControlsExpand,
346
349
  exportMode = false,
350
+ controlsHost,
347
351
  } = options ?? {};
348
352
  d3Selection.select(container).selectAll(':not([data-d3-tooltip])').remove();
349
353
 
@@ -364,16 +368,27 @@ export function renderBoxesAndLines(
364
368
  const sGroupLabelZone = sctx.structural(GROUP_LABEL_ZONE);
365
369
  const sTitleFontSize = sctx.text(TITLE_FONT_SIZE);
366
370
  const sTitleY = sctx.structural(TITLE_Y);
367
- const sLegendHeight = sctx.structural(
368
- getMaxLegendReservedHeight(
369
- {
370
- groups: parsed.tagGroups,
371
- position: { placement: 'top-center', titleRelation: 'below-title' },
372
- mode: exportMode ? 'export' : 'preview',
373
- },
374
- width
375
- )
371
+ // Reserve legend height only when a legend will actually render. App-hosted
372
+ // controls move the Descriptions toggle to the app overlay, so a
373
+ // descriptions-only chart (no tag groups) reserves nothing.
374
+ const reserveHasDescriptions = parsed.nodes.some(
375
+ (n) => n.description && n.description.length > 0
376
376
  );
377
+ const willRenderLegend =
378
+ parsed.tagGroups.length > 0 ||
379
+ (reserveHasDescriptions && controlsHost !== 'app');
380
+ const sLegendHeight = willRenderLegend
381
+ ? sctx.structural(
382
+ getMaxLegendReservedHeight(
383
+ {
384
+ groups: parsed.tagGroups,
385
+ position: { placement: 'top-center', titleRelation: 'below-title' },
386
+ mode: exportMode ? 'export' : 'preview',
387
+ },
388
+ width
389
+ )
390
+ )
391
+ : 0;
377
392
 
378
393
  const activeGroup = resolveActiveTagGroup(
379
394
  parsed.tagGroups,
@@ -995,12 +1010,17 @@ export function renderBoxesAndLines(
995
1010
  const hasDescriptions = parsed.nodes.some(
996
1011
  (n) => n.description && n.description.length > 0
997
1012
  );
998
- const hasLegend = parsed.tagGroups.length > 0 || hasDescriptions;
1013
+ // App-hosted: the Descriptions control moves to the app overlay, so a
1014
+ // descriptions-only legend (no tag groups) has nothing left to render.
1015
+ const hasLegend =
1016
+ parsed.tagGroups.length > 0 || (hasDescriptions && controlsHost !== 'app');
999
1017
 
1000
1018
  if (hasLegend) {
1001
- // Build controls group for description toggle
1019
+ // Build controls group for description toggle. App-hosted controls own the
1020
+ // toggling, so the group is built (to gate + size the row) even without the
1021
+ // inline-gear callback.
1002
1022
  let controlsGroup: { toggles: ControlsGroupToggle[] } | undefined;
1003
- if (hasDescriptions && onToggleDescriptions) {
1023
+ if (hasDescriptions && (onToggleDescriptions || controlsHost === 'app')) {
1004
1024
  controlsGroup = {
1005
1025
  toggles: [
1006
1026
  {
@@ -1018,7 +1038,14 @@ export function renderBoxesAndLines(
1018
1038
  groups: parsed.tagGroups,
1019
1039
  position: { placement: 'top-center', titleRelation: 'below-title' },
1020
1040
  mode: exportMode ? 'export' : 'preview',
1041
+ // Keep inactive sibling tag groups visible as collapsed pills so the user
1042
+ // can click one to flip the active colouring dimension (preview only —
1043
+ // export shows just the active group). Without this, declaring a second
1044
+ // tag group (e.g. Team) leaves it invisible whenever another group is
1045
+ // active. The app's BoxesAndLinesPreview already wires pill clicks.
1046
+ showInactivePills: true,
1021
1047
  ...(controlsGroup !== undefined && { controlsGroup }),
1048
+ ...(controlsHost !== undefined && { controlsHost }),
1022
1049
  };
1023
1050
  const legendState: LegendState = {
1024
1051
  activeGroup,
package/src/cli.ts CHANGED
@@ -136,7 +136,7 @@ Key options:
136
136
  - \`-o <file>\` — output file; format inferred from extension (\`.svg\` → SVG, else PNG)
137
137
  - \`-o url\` — output a shareable diagrammo.app URL
138
138
  - \`--theme <theme>\` — \`light\` (default), \`dark\`, \`transparent\`
139
- - \`--palette <name>\` — \`nord\` (default), \`solarized\`, \`catppuccin\`, \`rose-pine\`, \`gruvbox\`, \`tokyo-night\`, \`one-dark\`, \`bold\`
139
+ - \`--palette <name>\` — \`nord\` (default), \`atlas\`, \`blueprint\`, \`slate\`, \`tidewater\`, \`solarized\`, \`catppuccin\`, \`rose-pine\`, \`gruvbox\`, \`tokyo-night\`, \`one-dark\`, \`dracula\`, \`monokai\`
140
140
  - \`--copy\` — copy the URL to clipboard (use with \`-o url\`)
141
141
  - \`--chart-types\` — list all supported chart types
142
142