@sckyzo/cosmos-charts 0.2.0 → 0.3.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 (166) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +107 -22
  3. package/THIRD_PARTY_NOTICES.md +81 -0
  4. package/dist/BarChart.cjs +137 -0
  5. package/dist/BarChart.cjs.map +1 -0
  6. package/dist/BarChart.js +135 -0
  7. package/dist/BarChart.js.map +1 -0
  8. package/dist/BoxPlotChart.cjs +214 -0
  9. package/dist/BoxPlotChart.cjs.map +1 -0
  10. package/dist/BoxPlotChart.js +212 -0
  11. package/dist/BoxPlotChart.js.map +1 -0
  12. package/dist/BumpChart.cjs +328 -0
  13. package/dist/BumpChart.cjs.map +1 -0
  14. package/dist/BumpChart.js +326 -0
  15. package/dist/BumpChart.js.map +1 -0
  16. package/dist/CalendarChart.cjs +216 -0
  17. package/dist/CalendarChart.cjs.map +1 -0
  18. package/dist/CalendarChart.js +214 -0
  19. package/dist/CalendarChart.js.map +1 -0
  20. package/dist/DonutChart.cjs +122 -0
  21. package/dist/DonutChart.cjs.map +1 -0
  22. package/dist/DonutChart.js +120 -0
  23. package/dist/DonutChart.js.map +1 -0
  24. package/dist/FunnelChart.cjs +422 -0
  25. package/dist/FunnelChart.cjs.map +1 -0
  26. package/dist/FunnelChart.js +420 -0
  27. package/dist/FunnelChart.js.map +1 -0
  28. package/dist/GradientRadial.cjs +51 -0
  29. package/dist/GradientRadial.cjs.map +1 -0
  30. package/dist/GradientRadial.js +49 -0
  31. package/dist/GradientRadial.js.map +1 -0
  32. package/dist/HeatmapChart.cjs +146 -0
  33. package/dist/HeatmapChart.cjs.map +1 -0
  34. package/dist/HeatmapChart.js +144 -0
  35. package/dist/HeatmapChart.js.map +1 -0
  36. package/dist/LineAreaChart.cjs +98 -0
  37. package/dist/LineAreaChart.cjs.map +1 -0
  38. package/dist/LineAreaChart.js +96 -0
  39. package/dist/LineAreaChart.js.map +1 -0
  40. package/dist/MixedChart.cjs +195 -0
  41. package/dist/MixedChart.cjs.map +1 -0
  42. package/dist/MixedChart.js +193 -0
  43. package/dist/MixedChart.js.map +1 -0
  44. package/dist/RadarChart.cjs +109 -0
  45. package/dist/RadarChart.cjs.map +1 -0
  46. package/dist/RadarChart.js +107 -0
  47. package/dist/RadarChart.js.map +1 -0
  48. package/dist/RadialBarChart.cjs +99 -0
  49. package/dist/RadialBarChart.cjs.map +1 -0
  50. package/dist/RadialBarChart.js +97 -0
  51. package/dist/RadialBarChart.js.map +1 -0
  52. package/dist/RangeBarChart.cjs +218 -0
  53. package/dist/RangeBarChart.cjs.map +1 -0
  54. package/dist/RangeBarChart.js +216 -0
  55. package/dist/RangeBarChart.js.map +1 -0
  56. package/dist/RealtimeChart.cjs +173 -0
  57. package/dist/RealtimeChart.cjs.map +1 -0
  58. package/dist/RealtimeChart.js +171 -0
  59. package/dist/RealtimeChart.js.map +1 -0
  60. package/dist/ScatterChart.cjs +134 -0
  61. package/dist/ScatterChart.cjs.map +1 -0
  62. package/dist/ScatterChart.js +131 -0
  63. package/dist/ScatterChart.js.map +1 -0
  64. package/dist/SemiCircleGauge.cjs +142 -0
  65. package/dist/SemiCircleGauge.cjs.map +1 -0
  66. package/dist/SemiCircleGauge.js +140 -0
  67. package/dist/SemiCircleGauge.js.map +1 -0
  68. package/dist/Sparkline.cjs +117 -0
  69. package/dist/Sparkline.cjs.map +1 -0
  70. package/dist/Sparkline.js +115 -0
  71. package/dist/Sparkline.js.map +1 -0
  72. package/dist/StrokedGauge.cjs +94 -0
  73. package/dist/StrokedGauge.cjs.map +1 -0
  74. package/dist/StrokedGauge.js +92 -0
  75. package/dist/StrokedGauge.js.map +1 -0
  76. package/dist/TreemapChart.cjs +263 -0
  77. package/dist/TreemapChart.cjs.map +1 -0
  78. package/dist/TreemapChart.js +261 -0
  79. package/dist/TreemapChart.js.map +1 -0
  80. package/dist/WaterfallChart.cjs +235 -0
  81. package/dist/WaterfallChart.cjs.map +1 -0
  82. package/dist/WaterfallChart.js +233 -0
  83. package/dist/WaterfallChart.js.map +1 -0
  84. package/dist/WorldMap.cjs +2088 -0
  85. package/dist/WorldMap.cjs.map +1 -0
  86. package/dist/WorldMap.js +603 -0
  87. package/dist/WorldMap.js.map +1 -0
  88. package/dist/chunk-3N43QT36.js +60 -0
  89. package/dist/chunk-3N43QT36.js.map +1 -0
  90. package/dist/chunk-5C2RLJYZ.js +11 -0
  91. package/dist/chunk-5C2RLJYZ.js.map +1 -0
  92. package/dist/chunk-6ALKZLN2.js +127 -0
  93. package/dist/chunk-6ALKZLN2.js.map +1 -0
  94. package/dist/chunk-6BKLL7LZ.cjs +30 -0
  95. package/dist/chunk-6BKLL7LZ.cjs.map +1 -0
  96. package/dist/chunk-6NRRABPF.cjs +64 -0
  97. package/dist/chunk-6NRRABPF.cjs.map +1 -0
  98. package/dist/chunk-AAYHG7YK.cjs +30 -0
  99. package/dist/chunk-AAYHG7YK.cjs.map +1 -0
  100. package/dist/chunk-AOSO5QHL.js +19 -0
  101. package/dist/chunk-AOSO5QHL.js.map +1 -0
  102. package/dist/chunk-BFEDLXVW.js +12 -0
  103. package/dist/chunk-BFEDLXVW.js.map +1 -0
  104. package/dist/chunk-DBZQI4HM.cjs +14 -0
  105. package/dist/chunk-DBZQI4HM.cjs.map +1 -0
  106. package/dist/chunk-F2PMFYJ5.cjs +40 -0
  107. package/dist/chunk-F2PMFYJ5.cjs.map +1 -0
  108. package/dist/chunk-FUZW3H5X.js +38 -0
  109. package/dist/chunk-FUZW3H5X.js.map +1 -0
  110. package/dist/chunk-GDZLYYL2.js +27 -0
  111. package/dist/chunk-GDZLYYL2.js.map +1 -0
  112. package/dist/chunk-GVTMZYOM.cjs +30 -0
  113. package/dist/chunk-GVTMZYOM.cjs.map +1 -0
  114. package/dist/chunk-GZRMVE4X.cjs +131 -0
  115. package/dist/chunk-GZRMVE4X.cjs.map +1 -0
  116. package/dist/chunk-HMH6DI7U.js +27 -0
  117. package/dist/chunk-HMH6DI7U.js.map +1 -0
  118. package/dist/chunk-ICL5K2CW.js +280 -0
  119. package/dist/chunk-ICL5K2CW.js.map +1 -0
  120. package/dist/chunk-IW6EWB26.cjs +21 -0
  121. package/dist/chunk-IW6EWB26.cjs.map +1 -0
  122. package/dist/chunk-K3R7JGOW.cjs +18 -0
  123. package/dist/chunk-K3R7JGOW.cjs.map +1 -0
  124. package/dist/chunk-LT3UC65O.cjs +68 -0
  125. package/dist/chunk-LT3UC65O.cjs.map +1 -0
  126. package/dist/chunk-MN4CDVOS.cjs +63 -0
  127. package/dist/chunk-MN4CDVOS.cjs.map +1 -0
  128. package/dist/chunk-OCD6JIIX.js +23 -0
  129. package/dist/chunk-OCD6JIIX.js.map +1 -0
  130. package/dist/chunk-RILUG7JB.js +44 -0
  131. package/dist/chunk-RILUG7JB.js.map +1 -0
  132. package/dist/chunk-RLHGPHC7.cjs +51 -0
  133. package/dist/chunk-RLHGPHC7.cjs.map +1 -0
  134. package/dist/chunk-SGG7XKOY.js +58 -0
  135. package/dist/chunk-SGG7XKOY.js.map +1 -0
  136. package/dist/chunk-T3K6Q34U.cjs +82 -0
  137. package/dist/chunk-T3K6Q34U.cjs.map +1 -0
  138. package/dist/chunk-TPH5T3DA.cjs +282 -0
  139. package/dist/chunk-TPH5T3DA.cjs.map +1 -0
  140. package/dist/chunk-TYQWZR3S.cjs +13 -0
  141. package/dist/chunk-TYQWZR3S.cjs.map +1 -0
  142. package/dist/chunk-UATB2IRY.js +51 -0
  143. package/dist/chunk-UATB2IRY.js.map +1 -0
  144. package/dist/chunk-UJIV5PVI.js +13 -0
  145. package/dist/chunk-UJIV5PVI.js.map +1 -0
  146. package/dist/chunk-URNXLVSK.js +44 -0
  147. package/dist/chunk-URNXLVSK.js.map +1 -0
  148. package/dist/chunk-VIOSQN4Z.js +79 -0
  149. package/dist/chunk-VIOSQN4Z.js.map +1 -0
  150. package/dist/chunk-X3YZP5WF.cjs +46 -0
  151. package/dist/chunk-X3YZP5WF.cjs.map +1 -0
  152. package/dist/chunk-YWYF5CCJ.js +61 -0
  153. package/dist/chunk-YWYF5CCJ.js.map +1 -0
  154. package/dist/chunk-Z4LZFMDH.cjs +60 -0
  155. package/dist/chunk-Z4LZFMDH.cjs.map +1 -0
  156. package/dist/index.cjs +154 -1166
  157. package/dist/index.cjs.map +1 -1
  158. package/dist/index.d.cts +470 -80
  159. package/dist/index.d.ts +470 -80
  160. package/dist/index.js +23 -1144
  161. package/dist/index.js.map +1 -1
  162. package/dist/theme.cjs +88 -0
  163. package/dist/theme.cjs.map +1 -0
  164. package/dist/theme.js +84 -0
  165. package/dist/theme.js.map +1 -0
  166. package/package.json +23 -12
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/fsum.js","../../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/merge.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/math.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/noop.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/stream.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/cartesian.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/compose.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/rotation.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/circle.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/buffer.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/pointEqual.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/rejoin.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/polygonContains.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/index.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/antimeridian.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/circle.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/line.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/clip/rectangle.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/identity.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/area.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/bounds.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/centroid.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/context.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/measure.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/string.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/path/index.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/transform.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/fit.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/resample.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/index.js","../../../node_modules/.pnpm/d3-geo@3.1.1/node_modules/d3-geo/src/projection/naturalEarth1.js","../src/world-map-codes.ts","../src/world-map.ts","../src/WorldMap.tsx"],"names":["cartesian","spherical","compareIntersection","n","sign","point","delta","code","x0","y0","x1","y1","ring","visible","x00","y00","append","projection","feature","useRef","useMemo","useState","TRACK","SEQUENTIAL","jsxs","jsx","PANEL","TEXT","TooltipCard","MUTED","BORDER"],"mappings":"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ACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,EACP,KAAA,EAAO,IAAA;AAAA,E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","file":"WorldMap.cjs","sourcesContent":["// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(2),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 2 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default x => x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","// The ISO 3166-1 numeric code of each country and territory, as the string\n// world-atlas gives as a feature's `id` (zero-padded), to its alpha-2 code,\n// which is what `WorldMap`'s `data` is keyed by. Written from the standard,\n// all 249 officially assigned codes, so `countries-50m.json` is covered as\n// well as `countries-110m.json`. Kosovo has no numeric code (XK is\n// user-assigned) and world-atlas gives it no id: it is drawn and never takes\n// a value, like the other features without an id.\n\nexport const NUMERIC_TO_ALPHA2: Readonly<Record<string, string>> = {\n '004': 'AF',\n '008': 'AL',\n '010': 'AQ',\n '012': 'DZ',\n '016': 'AS',\n '020': 'AD',\n '024': 'AO',\n '028': 'AG',\n '031': 'AZ',\n '032': 'AR',\n '036': 'AU',\n '040': 'AT',\n '044': 'BS',\n '048': 'BH',\n '050': 'BD',\n '051': 'AM',\n '052': 'BB',\n '056': 'BE',\n '060': 'BM',\n '064': 'BT',\n '068': 'BO',\n '070': 'BA',\n '072': 'BW',\n '074': 'BV',\n '076': 'BR',\n '084': 'BZ',\n '086': 'IO',\n '090': 'SB',\n '092': 'VG',\n '096': 'BN',\n '100': 'BG',\n '104': 'MM',\n '108': 'BI',\n '112': 'BY',\n '116': 'KH',\n '120': 'CM',\n '124': 'CA',\n '132': 'CV',\n '136': 'KY',\n '140': 'CF',\n '144': 'LK',\n '148': 'TD',\n '152': 'CL',\n '156': 'CN',\n '158': 'TW',\n '162': 'CX',\n '166': 'CC',\n '170': 'CO',\n '174': 'KM',\n '175': 'YT',\n '178': 'CG',\n '180': 'CD',\n '184': 'CK',\n '188': 'CR',\n '191': 'HR',\n '192': 'CU',\n '196': 'CY',\n '203': 'CZ',\n '204': 'BJ',\n '208': 'DK',\n '212': 'DM',\n '214': 'DO',\n '218': 'EC',\n '222': 'SV',\n '226': 'GQ',\n '231': 'ET',\n '232': 'ER',\n '233': 'EE',\n '234': 'FO',\n '238': 'FK',\n '239': 'GS',\n '242': 'FJ',\n '246': 'FI',\n '248': 'AX',\n '250': 'FR',\n '254': 'GF',\n '258': 'PF',\n '260': 'TF',\n '262': 'DJ',\n '266': 'GA',\n '268': 'GE',\n '270': 'GM',\n '275': 'PS',\n '276': 'DE',\n '288': 'GH',\n '292': 'GI',\n '296': 'KI',\n '300': 'GR',\n '304': 'GL',\n '308': 'GD',\n '312': 'GP',\n '316': 'GU',\n '320': 'GT',\n '324': 'GN',\n '328': 'GY',\n '332': 'HT',\n '334': 'HM',\n '336': 'VA',\n '340': 'HN',\n '344': 'HK',\n '348': 'HU',\n '352': 'IS',\n '356': 'IN',\n '360': 'ID',\n '364': 'IR',\n '368': 'IQ',\n '372': 'IE',\n '376': 'IL',\n '380': 'IT',\n '384': 'CI',\n '388': 'JM',\n '392': 'JP',\n '398': 'KZ',\n '400': 'JO',\n '404': 'KE',\n '408': 'KP',\n '410': 'KR',\n '414': 'KW',\n '417': 'KG',\n '418': 'LA',\n '422': 'LB',\n '426': 'LS',\n '428': 'LV',\n '430': 'LR',\n '434': 'LY',\n '438': 'LI',\n '440': 'LT',\n '442': 'LU',\n '446': 'MO',\n '450': 'MG',\n '454': 'MW',\n '458': 'MY',\n '462': 'MV',\n '466': 'ML',\n '470': 'MT',\n '474': 'MQ',\n '478': 'MR',\n '480': 'MU',\n '484': 'MX',\n '492': 'MC',\n '496': 'MN',\n '498': 'MD',\n '499': 'ME',\n '500': 'MS',\n '504': 'MA',\n '508': 'MZ',\n '512': 'OM',\n '516': 'NA',\n '520': 'NR',\n '524': 'NP',\n '528': 'NL',\n '531': 'CW',\n '533': 'AW',\n '534': 'SX',\n '535': 'BQ',\n '540': 'NC',\n '548': 'VU',\n '554': 'NZ',\n '558': 'NI',\n '562': 'NE',\n '566': 'NG',\n '570': 'NU',\n '574': 'NF',\n '578': 'NO',\n '580': 'MP',\n '581': 'UM',\n '583': 'FM',\n '584': 'MH',\n '585': 'PW',\n '586': 'PK',\n '591': 'PA',\n '598': 'PG',\n '600': 'PY',\n '604': 'PE',\n '608': 'PH',\n '612': 'PN',\n '616': 'PL',\n '620': 'PT',\n '624': 'GW',\n '626': 'TL',\n '630': 'PR',\n '634': 'QA',\n '638': 'RE',\n '642': 'RO',\n '643': 'RU',\n '646': 'RW',\n '652': 'BL',\n '654': 'SH',\n '659': 'KN',\n '660': 'AI',\n '662': 'LC',\n '663': 'MF',\n '666': 'PM',\n '670': 'VC',\n '674': 'SM',\n '678': 'ST',\n '682': 'SA',\n '686': 'SN',\n '688': 'RS',\n '690': 'SC',\n '694': 'SL',\n '702': 'SG',\n '703': 'SK',\n '704': 'VN',\n '705': 'SI',\n '706': 'SO',\n '710': 'ZA',\n '716': 'ZW',\n '724': 'ES',\n '728': 'SS',\n '729': 'SD',\n '732': 'EH',\n '740': 'SR',\n '744': 'SJ',\n '748': 'SZ',\n '752': 'SE',\n '756': 'CH',\n '760': 'SY',\n '762': 'TJ',\n '764': 'TH',\n '768': 'TG',\n '772': 'TK',\n '776': 'TO',\n '780': 'TT',\n '784': 'AE',\n '788': 'TN',\n '792': 'TR',\n '795': 'TM',\n '796': 'TC',\n '798': 'TV',\n '800': 'UG',\n '804': 'UA',\n '807': 'MK',\n '818': 'EG',\n '826': 'GB',\n '831': 'GG',\n '832': 'JE',\n '833': 'IM',\n '834': 'TZ',\n '840': 'US',\n '850': 'VI',\n '854': 'BF',\n '858': 'UY',\n '860': 'UZ',\n '862': 'VE',\n '876': 'WF',\n '882': 'WS',\n '887': 'YE',\n '894': 'ZM',\n};\n","// The maths of WorldMap: the five color steps of a set of values, the step of a\n// value, the bounds the legend prints and the order the keyboard walks the\n// countries in. No DOM and no colors, so it runs in plain Node.\n\n/** How many color steps the scale has. */\nexport const STEPS = 5;\n\nexport type Scale = {\n /** The lower bound of steps 1 to 4: a value at or above `thresholds[i]` is in step `i + 1` at least. */\n thresholds: number[];\n /** The lower bound of each step, step 0 first: what the legend prints. */\n bounds: number[];\n /** The ends values are clamped to, or `undefined` for none. */\n min?: number;\n max?: number;\n};\n\n/** The value kept inside `min` and `max`; an end that is not given leaves that side open. */\nexport const clamp = (value: number, min?: number, max?: number): number =>\n Math.min(Math.max(value, min ?? -Infinity), max ?? Infinity);\n\n/**\n * The scale of a set of values: five steps by quantiles, so each step holds\n * about as many countries. The thresholds are the values a fifth, two fifths…\n * of the way up the sorted list, which a linear scale cannot do: one large\n * country would otherwise wash every other one out. A repeated value can\n * leave a step empty (all values equal: only the top step is used).\n *\n * `min` and `max` clamp every value before the quantiles are taken (a value\n * under `min` counts as `min`, one over `max` as `max`), so an outlier takes\n * the top step without stretching the others. `min` is also the first bound\n * the legend prints. Given the wrong way round they are swapped. `undefined`\n * when there is no finite value.\n */\nexport const scaleOf = (\n values: readonly number[],\n min?: number,\n max?: number\n): Scale | undefined => {\n const [low, high] = min !== undefined && max !== undefined && min > max ? [max, min] : [min, max];\n const sorted = values\n .filter(Number.isFinite)\n .map((value) => clamp(value, low, high))\n .sort((a, b) => a - b);\n if (sorted.length === 0) return undefined;\n const thresholds = [1, 2, 3, 4].map((q) => sorted[Math.floor((sorted.length * q) / STEPS)]);\n return { thresholds, bounds: [low ?? sorted[0], ...thresholds], min: low, max: high };\n};\n\n/** The step, 0 to 4, of a value: the number of thresholds it reaches. */\nexport const stepOf = (value: number, scale: Scale): number => {\n const clamped = clamp(value, scale.min, scale.max);\n return scale.thresholds.filter((threshold) => clamped >= threshold).length;\n};\n\n/** The countries that have a value, largest first and, for equal values, by name: the order of the keyboard walk and of the hidden table. */\nexport const ranked = <T extends { name: string; value?: number }>(\n countries: readonly T[]\n): (T & { value: number })[] =>\n countries\n .filter((country): country is T & { value: number } => country.value !== undefined)\n .sort((a, b) => b.value - a.value || a.name.localeCompare(b.name));\n\n/** The country `delta` places from `current` in `order`, stopping at the ends; the first one when `current` is not in it. */\nexport const walk = <T extends { code: string }>(\n order: readonly T[],\n current: string | undefined,\n delta: number\n): T | undefined => {\n const index = order.findIndex((country) => country.code === current);\n if (index < 0) return order[0];\n return order[Math.min(Math.max(index + delta, 0), order.length - 1)];\n};\n","import { geoNaturalEarth1, geoPath } from 'd3-geo';\nimport {\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react';\nimport { feature } from 'topojson-client';\nimport type { Topology } from 'topojson-specification';\nimport { TooltipCard } from './core/ChartTooltip';\nimport { BORDER, MUTED, PANEL, SEQUENTIAL, TEXT, TRACK } from './core/colors';\nimport { NUMERIC_TO_ALPHA2 } from './world-map-codes';\nimport { ranked, scaleOf, stepOf, walk, type Scale } from './world-map';\nimport type { ChartProps } from './types';\n\nexport type WorldMapProps = Omit<ChartProps, 'children'> & {\n /**\n * The value of each country, keyed by ISO 3166-1 alpha-2 code in upper case\n * (`FR`, `US`). A code the `geography` does not hold is not drawn, and a\n * value that is not a finite number counts as none.\n */\n data: Record<string, number>;\n /**\n * The map: a TopoJSON `Topology` with a `countries` object, such as\n * `world-atlas/countries-110m.json` or `countries-50m.json`. The package\n * ships no map data. A country is a feature whose `id` is its ISO 3166-1\n * numeric code and whose `properties.name` is the name the tooltip and the\n * reading table give; a feature without an id (Kosovo) is drawn and never\n * takes a value. Antarctica is left out.\n */\n geography: Topology;\n /** Format the values, in the tooltip, the legend and the table. Default `String`. */\n formatValue?: (value: number) => string;\n /** Names the value in the tooltip, such as `visitors`. Default `Value`. */\n label?: string;\n /**\n * Clamp the values to this end before the color steps are cut: a value under\n * `min` counts as `min`. The legend starts at `min`. Default: the lowest value.\n */\n min?: number;\n /** Clamp the values to this end before the color steps are cut: a value over `max` counts as `max`. Default: no limit. */\n max?: number;\n /** Show the legend: the lower bound of each step, and a swatch for countries without data. Default true. Never shown without a value to draw. */\n showLegend?: boolean;\n /**\n * Called with the code of a country that has a value when it is clicked, or\n * when Enter or Space is pressed on the one the keyboard is on. Without it,\n * the map only shows.\n */\n onSelect?: (code: string) => void;\n};\n\n// The map is drawn in a box this wide, as tall as the map needs (about 470), and\n// scaled to the width it is given.\nconst VIEW_WIDTH = 960;\n// Room left around the map for the strokes at its edge.\nconst MARGIN = 2;\n// world-atlas gives Antarctica the id 010. It would take a fifth of the box for no data.\nconst ANTARCTICA = '010';\n// Room the tooltip card leaves the pointer or the country.\nconst TIP_GAP = 6;\nconst POINTER_GAP = 14;\n\ntype Shape = {\n /** Alpha-2 code, when the feature has an id the table knows. */\n code?: string;\n name: string;\n /** The SVG path. */\n d: string;\n};\n\ntype Country = Shape & { value?: number; step?: number };\n\ntype Tip = {\n code: string;\n /** Where the card is anchored, in px from the map's corner, and on which side. */\n x: number;\n top: number;\n bottom: number;\n align: 'start' | 'center' | 'end';\n below: boolean;\n};\n\n// Visually hidden, still read by screen readers.\nconst HIDDEN: CSSProperties = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n border: 0,\n};\n\n/**\n * The countries of the topology as SVG paths in the Natural Earth projection,\n * fitted to the width of the box, and the height of the box that holds them.\n */\nconst shapesOf = (geography: Topology): { shapes: Shape[]; viewHeight: number } => {\n const countries = geography.objects.countries;\n if (!countries) {\n throw new Error('WorldMap: `geography` has no `countries` object');\n }\n const collection = feature(geography, countries);\n const features = (\n collection.type === 'FeatureCollection' ? collection.features : [collection]\n ).filter((item) => String(item.id).padStart(3, '0') !== ANTARCTICA);\n const world = { type: 'FeatureCollection' as const, features };\n // `fitWidth` puts the map's top left corner at 0,0: shift it by the margin.\n const projection = geoNaturalEarth1().fitWidth(VIEW_WIDTH - 2 * MARGIN, world);\n const [x, y] = projection.translate();\n projection.translate([x + MARGIN, y + MARGIN]);\n const path = geoPath(projection);\n const [, [, bottom]] = path.bounds(world);\n const shapes = features.flatMap((item): Shape[] => {\n const d = path(item);\n if (!d) return [];\n const name = item.properties?.name;\n return [\n {\n code:\n item.id === undefined ? undefined : NUMERIC_TO_ALPHA2[String(item.id).padStart(3, '0')],\n name: typeof name === 'string' ? name : '',\n d,\n },\n ];\n });\n return { shapes, viewHeight: Math.ceil(bottom) + MARGIN };\n};\n\nexport const WorldMap = ({\n data,\n geography,\n formatValue = String,\n label,\n min,\n max,\n showLegend = true,\n onSelect,\n ariaLabel,\n height,\n width,\n}: WorldMapProps) => {\n const frame = useRef<HTMLDivElement>(null);\n const { shapes, viewHeight } = useMemo(() => shapesOf(geography), [geography]);\n const [hover, setHover] = useState<Tip>();\n const [focus, setFocus] = useState<Tip>();\n // The country the keyboard last stood on, which Tab comes back to.\n const [lastKey, setLastKey] = useState<string>();\n\n const valued = shapes.map((shape): Country => {\n const value = shape.code === undefined ? undefined : data[shape.code];\n return { ...shape, value: Number.isFinite(value) ? value : undefined };\n });\n const order = ranked(\n valued.filter((country): country is Country & { code: string } => country.code !== undefined)\n );\n const scale = scaleOf(\n order.map((country) => country.value),\n min,\n max\n );\n const countries = valued.map((country): Country => ({\n ...country,\n step: scale && country.value !== undefined ? stepOf(country.value, scale) : undefined,\n }));\n const byCode = new Map(\n countries.flatMap((country) => (country.code ? [[country.code, country] as const] : []))\n );\n const interactive = order.length > 0;\n const stepColor = (step: number | undefined) => (step === undefined ? TRACK : SEQUENTIAL[step]);\n\n const name =\n ariaLabel ??\n (interactive\n ? `World map, ${label ?? 'value'} by country, from ${formatValue(order[order.length - 1].value)} to ${formatValue(order[0].value)}`\n : 'World map');\n\n const tip = hover ?? focus;\n const tipCountry = tip && byCode.get(tip.code);\n\n // The card hangs from the side of the anchor nearest the middle of the map,\n // so it never leaves the box.\n const anchor = (code: string, x: number, top: number, bottom: number, gap: number): Tip => {\n const host = (frame.current as HTMLElement).getBoundingClientRect();\n const middle = x - host.left;\n const align =\n middle < host.width / 3 ? 'start' : middle > (2 * host.width) / 3 ? 'end' : 'center';\n return {\n code,\n x: middle,\n top: top - host.top - gap,\n bottom: bottom - host.top + gap,\n align,\n // Not enough room above for the card: it goes under.\n below: top - host.top < 90,\n };\n };\n const tipAtPointer = (code: string, event: { clientX: number; clientY: number }) =>\n anchor(code, event.clientX, event.clientY, event.clientY, POINTER_GAP - TIP_GAP);\n const tipAtCountry = (code: string): Tip | undefined => {\n const element = frame.current?.querySelector<SVGPathElement>(`[data-code=\"${code}\"]`);\n if (!element) return undefined;\n const box = element.getBoundingClientRect();\n const middle = box.top + box.height / 2;\n return anchor(code, box.left + box.width / 2, middle, middle, 0);\n };\n\n const goTo = (country: { code: string } | undefined) => {\n if (!country) return;\n setLastKey(country.code);\n setFocus(tipAtCountry(country.code));\n };\n\n const keyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const current = focus?.code ?? lastKey;\n const targets: Record<string, () => { code: string } | undefined> = {\n ArrowRight: () => walk(order, current, 1),\n ArrowDown: () => walk(order, current, 1),\n ArrowLeft: () => walk(order, current, -1),\n ArrowUp: () => walk(order, current, -1),\n Home: () => order[0],\n End: () => order[order.length - 1],\n };\n if (targets[event.key]) {\n event.preventDefault();\n goTo(targets[event.key]());\n } else if (onSelect && (event.key === 'Enter' || event.key === ' ') && focus) {\n event.preventDefault();\n onSelect(focus.code);\n }\n };\n const focusIn = (event: FocusEvent<HTMLDivElement>) => {\n // A click focuses the map too, and would leave a tooltip up: only the keyboard shows it.\n if (event.target === event.currentTarget && event.currentTarget.matches(':focus-visible')) {\n goTo(order.find((country) => country.code === lastKey) ?? order[0]);\n }\n };\n const focusOut = (event: FocusEvent<HTMLDivElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setFocus(undefined);\n };\n\n const tipStyle: CSSProperties | undefined = tip && {\n position: 'absolute',\n left: tip.x,\n top: tip.below ? tip.bottom : tip.top,\n transform: `translate(${{ start: '0', center: '-50%', end: '-100%' }[tip.align]}, ${tip.below ? '0' : '-100%'})`,\n zIndex: 10,\n pointerEvents: 'none',\n };\n const active = tipCountry?.value === undefined ? undefined : tipCountry;\n\n const legend = showLegend && scale && <Legend scale={scale} format={formatValue} />;\n\n return (\n <div\n data-world-map=\"\"\n style={{\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.75rem',\n width: width ?? '100%',\n height,\n maxWidth: '100%',\n minWidth: 0,\n }}\n >\n <div\n ref={frame}\n role={interactive ? 'application' : undefined}\n aria-label={interactive ? name : undefined}\n tabIndex={interactive ? 0 : undefined}\n onKeyDown={interactive ? keyDown : undefined}\n onFocus={interactive ? focusIn : undefined}\n onBlur={interactive ? focusOut : undefined}\n style={{\n position: 'relative',\n flex: height === undefined ? undefined : '1 1 0',\n minHeight: 0,\n // The country outline and the tooltip show where the keyboard is.\n outline: 'none',\n }}\n >\n <svg\n role=\"img\"\n aria-label={name}\n viewBox={`0 0 ${VIEW_WIDTH} ${viewHeight}`}\n style={{\n display: 'block',\n width: '100%',\n height: height === undefined ? 'auto' : '100%',\n }}\n >\n {countries.map((country, i) => {\n const code = country.code;\n const has = code !== undefined && country.value !== undefined;\n return (\n <path\n key={i}\n d={country.d}\n data-code={has ? code : undefined}\n data-step={country.step}\n fill={stepColor(country.step)}\n stroke={PANEL}\n strokeWidth={0.5}\n strokeLinejoin=\"round\"\n style={has && onSelect ? { cursor: 'pointer' } : undefined}\n onMouseEnter={has ? (event) => setHover(tipAtPointer(code, event)) : undefined}\n onMouseMove={has ? (event) => setHover(tipAtPointer(code, event)) : undefined}\n onMouseLeave={has ? () => setHover(undefined) : undefined}\n onClick={has && onSelect ? () => onSelect(code) : undefined}\n />\n );\n })}\n {active && (\n // The same outline for the pointer and the keyboard, in the text color:\n // an accent one would vanish on the darkest steps. Drawn last to sit\n // above the neighbors' borders.\n <path\n d={active.d}\n data-world-active=\"\"\n fill=\"none\"\n stroke={TEXT}\n strokeWidth={1.6}\n strokeLinejoin=\"round\"\n pointerEvents=\"none\"\n />\n )}\n </svg>\n {tip && tipCountry && tipCountry.value !== undefined && tipStyle && (\n <div data-world-tooltip=\"\" aria-hidden style={tipStyle}>\n <TooltipCard\n title={tipCountry.name}\n rows={[\n {\n name: label ?? 'Value',\n value: formatValue(tipCountry.value),\n color: stepColor(tipCountry.step),\n },\n ]}\n />\n </div>\n )}\n {interactive && (\n <span data-world-status=\"\" role=\"status\" aria-live=\"polite\" style={HIDDEN}>\n {focus && tipCountry && tipCountry.value !== undefined\n ? `${tipCountry.name}, ${label ?? 'Value'}: ${formatValue(tipCountry.value)}`\n : ''}\n </span>\n )}\n </div>\n {interactive && (\n <div style={HIDDEN}>\n <table data-world-table=\"\">\n <caption>{name}</caption>\n <thead>\n <tr>\n <th scope=\"col\">Country</th>\n <th scope=\"col\">{label ?? 'Value'}</th>\n </tr>\n </thead>\n <tbody>\n {order.map((country) => (\n <tr key={country.code}>\n <th scope=\"row\">{country.name}</th>\n <td>{formatValue(country.value)}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n {legend}\n </div>\n );\n};\n\nconst Legend = ({ scale, format }: { scale: Scale; format: (value: number) => string }) => (\n <ul\n data-world-legend=\"\"\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'flex-end',\n columnGap: 2,\n rowGap: '0.5rem',\n margin: 0,\n padding: 0,\n listStyle: 'none',\n fontSize: 'var(--text-2xs, 0.6875rem)',\n color: MUTED,\n }}\n >\n {SEQUENTIAL.map((color, i) => (\n <li key={i} style={{ display: 'flex', flexDirection: 'column', gap: 4, minWidth: '2.75rem' }}>\n <span\n aria-hidden\n data-world-swatch=\"\"\n style={{ height: 10, borderRadius: 2, background: color }}\n />\n <span style={{ fontVariantNumeric: 'tabular-nums', whiteSpace: 'nowrap' }}>\n {format(scale.bounds[i])}+\n </span>\n </li>\n ))}\n <li style={{ display: 'flex', flexDirection: 'column', gap: 4, marginLeft: '0.75rem' }}>\n <span\n aria-hidden\n data-world-swatch=\"\"\n style={{\n width: '1.75rem',\n height: 10,\n borderRadius: 2,\n background: TRACK,\n border: `1px solid ${BORDER}`,\n boxSizing: 'border-box',\n }}\n />\n <span style={{ whiteSpace: 'nowrap' }}>No data</span>\n </li>\n </ul>\n);\n"]}