@undp/data-viz 1.2.8 → 1.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 (496) hide show
  1. package/dist/AreaChart.d.ts +224 -0
  2. package/dist/AreaChart.js +2 -0
  3. package/dist/AreaChart.js.map +1 -0
  4. package/dist/Axis-BlyBRMNw.cjs +2 -0
  5. package/dist/Axis-BlyBRMNw.cjs.map +1 -0
  6. package/dist/Axis-CvK-w3E2.js +44 -0
  7. package/dist/Axis-CvK-w3E2.js.map +1 -0
  8. package/dist/AxisTitle-BY8MI9jC.cjs +2 -0
  9. package/dist/AxisTitle-BY8MI9jC.cjs.map +1 -0
  10. package/dist/AxisTitle-BeMxcw5I.js +21 -0
  11. package/dist/AxisTitle-BeMxcw5I.js.map +1 -0
  12. package/dist/BarGraph.d.ts +460 -0
  13. package/dist/BarGraph.js +2 -0
  14. package/dist/BarGraph.js.map +1 -0
  15. package/dist/BasicStatCard.d.ts +106 -0
  16. package/dist/BasicStatCard.js +2 -0
  17. package/dist/BasicStatCard.js.map +1 -0
  18. package/dist/BeeSwarmChart.d.ts +189 -0
  19. package/dist/BeeSwarmChart.js +2 -0
  20. package/dist/BeeSwarmChart.js.map +1 -0
  21. package/dist/BiVariateChoroplethMap.d.ts +189 -0
  22. package/dist/BiVariateChoroplethMap.js +2 -0
  23. package/dist/BiVariateChoroplethMap.js.map +1 -0
  24. package/dist/BulletChart.d.ts +219 -0
  25. package/dist/BulletChart.js +2 -0
  26. package/dist/BulletChart.js.map +1 -0
  27. package/dist/ButterflyChart.d.ts +201 -0
  28. package/dist/ButterflyChart.js +2 -0
  29. package/dist/ButterflyChart.js.map +1 -0
  30. package/dist/ChoroplethMap.d.ts +190 -0
  31. package/dist/ChoroplethMap.js +2 -0
  32. package/dist/ChoroplethMap.js.map +1 -0
  33. package/dist/CirclePackingGraph.d.ts +161 -0
  34. package/dist/CirclePackingGraph.js +2 -0
  35. package/dist/CirclePackingGraph.js.map +1 -0
  36. package/dist/ColorLegend.d.ts +17 -0
  37. package/dist/ColorLegend.js +2 -0
  38. package/dist/ColorLegend.js.map +1 -0
  39. package/dist/ColorLegendWithMouseOver.d.ts +16 -0
  40. package/dist/ColorLegendWithMouseOver.js +2 -0
  41. package/dist/ColorLegendWithMouseOver.js.map +1 -0
  42. package/dist/Colors.d.ts +174 -0
  43. package/dist/Colors.js +2 -0
  44. package/dist/Colors.js.map +1 -0
  45. package/dist/CopyTextButton.d.ts +13 -0
  46. package/dist/CopyTextButton.js +17 -0
  47. package/dist/CopyTextButton.js.map +1 -0
  48. package/dist/CsvDownloadButton.d.ts +22 -0
  49. package/dist/CsvDownloadButton.js +23 -0
  50. package/dist/CsvDownloadButton.js.map +1 -0
  51. package/dist/DataCards.d.ts +131 -0
  52. package/dist/DataCards.js +2 -0
  53. package/dist/DataCards.js.map +1 -0
  54. package/dist/DataTable.d.ts +122 -0
  55. package/dist/DataTable.js +2 -0
  56. package/dist/DataTable.js.map +1 -0
  57. package/dist/DifferenceLineChart.d.ts +237 -0
  58. package/dist/DifferenceLineChart.js +2 -0
  59. package/dist/DifferenceLineChart.js.map +1 -0
  60. package/dist/DonutChart.d.ts +148 -0
  61. package/dist/DonutChart.js +2 -0
  62. package/dist/DonutChart.js.map +1 -0
  63. package/dist/DotDensityMap.d.ts +191 -0
  64. package/dist/DotDensityMap.js +2 -0
  65. package/dist/DotDensityMap.js.map +1 -0
  66. package/dist/DropdownSelect-CuzV7gdj.cjs +29 -0
  67. package/dist/DropdownSelect-CuzV7gdj.cjs.map +1 -0
  68. package/dist/DropdownSelect-DmZsXrhY.js +2698 -0
  69. package/dist/DropdownSelect-DmZsXrhY.js.map +1 -0
  70. package/dist/DualAxisLineChart.d.ts +180 -0
  71. package/dist/DualAxisLineChart.js +2 -0
  72. package/dist/DualAxisLineChart.js.map +1 -0
  73. package/dist/DumbbellChart.d.ts +224 -0
  74. package/dist/DumbbellChart.js +2 -0
  75. package/dist/DumbbellChart.js.map +1 -0
  76. package/dist/EmptyState-BQguKAp5.cjs +2 -0
  77. package/dist/EmptyState-BQguKAp5.cjs.map +1 -0
  78. package/dist/EmptyState-b2Ln487i.js +22 -0
  79. package/dist/EmptyState-b2Ln487i.js.map +1 -0
  80. package/dist/ExcelDownloadButton.d.ts +22 -0
  81. package/dist/ExcelDownloadButton.js +2 -0
  82. package/dist/ExcelDownloadButton.js.map +1 -0
  83. package/dist/FootNote.d.ts +12 -0
  84. package/dist/FootNote.js +2 -0
  85. package/dist/FootNote.js.map +1 -0
  86. package/dist/GeoHubCompareMaps.d.ts +103 -0
  87. package/dist/GeoHubCompareMaps.js +2 -0
  88. package/dist/GeoHubCompareMaps.js.map +1 -0
  89. package/dist/GeoHubMap.d.ts +118 -0
  90. package/dist/GeoHubMap.js +2 -0
  91. package/dist/GeoHubMap.js.map +1 -0
  92. package/dist/GeoHubMapWithLayerSelection.d.ts +117 -0
  93. package/dist/GeoHubMapWithLayerSelection.js +2 -0
  94. package/dist/GeoHubMapWithLayerSelection.js.map +1 -0
  95. package/dist/GraphDescription.d.ts +12 -0
  96. package/dist/GraphDescription.js +2 -0
  97. package/dist/GraphDescription.js.map +1 -0
  98. package/dist/GraphFooter.d.ts +24 -0
  99. package/dist/GraphFooter.js +2 -0
  100. package/dist/GraphFooter.js.map +1 -0
  101. package/dist/GraphHeader.d.ts +22 -0
  102. package/dist/GraphHeader.js +2 -0
  103. package/dist/GraphHeader.js.map +1 -0
  104. package/dist/GraphTitle.d.ts +13 -0
  105. package/dist/GraphTitle.js +2 -0
  106. package/dist/GraphTitle.js.map +1 -0
  107. package/dist/GriddedGraphs.d.ts +540 -0
  108. package/dist/GriddedGraphs.js +2 -0
  109. package/dist/GriddedGraphs.js.map +1 -0
  110. package/dist/GriddedGraphsFromConfig.d.ts +543 -0
  111. package/dist/GriddedGraphsFromConfig.js +2 -0
  112. package/dist/GriddedGraphsFromConfig.js.map +1 -0
  113. package/dist/HeatMap.d.ts +166 -0
  114. package/dist/HeatMap.js +2 -0
  115. package/dist/HeatMap.js.map +1 -0
  116. package/dist/Histogram.d.ts +165 -0
  117. package/dist/Histogram.js +2 -0
  118. package/dist/Histogram.js.map +1 -0
  119. package/dist/ImageDownloadButton.d.ts +15 -0
  120. package/dist/ImageDownloadButton.js +2 -0
  121. package/dist/ImageDownloadButton.js.map +1 -0
  122. package/dist/LineChartWithConfidenceInterval.d.ts +250 -0
  123. package/dist/LineChartWithConfidenceInterval.js +2 -0
  124. package/dist/LineChartWithConfidenceInterval.js.map +1 -0
  125. package/dist/LinearColorLegend.d.ts +13 -0
  126. package/dist/LinearColorLegend.js +2 -0
  127. package/dist/LinearColorLegend.js.map +1 -0
  128. package/dist/Modal-C9txyGOk.js +723 -0
  129. package/dist/Modal-C9txyGOk.js.map +1 -0
  130. package/dist/Modal-cQF2UQIa.cjs +46 -0
  131. package/dist/Modal-cQF2UQIa.cjs.map +1 -0
  132. package/dist/MultiGraphDashboard.d.ts +558 -0
  133. package/dist/MultiGraphDashboard.js +2 -0
  134. package/dist/MultiGraphDashboard.js.map +1 -0
  135. package/dist/MultiGraphDashboardFromConfig.d.ts +562 -0
  136. package/dist/MultiGraphDashboardFromConfig.js +2 -0
  137. package/dist/MultiGraphDashboardFromConfig.js.map +1 -0
  138. package/dist/MultiGraphDashboardWideToLongFormat.d.ts +128 -0
  139. package/dist/MultiGraphDashboardWideToLongFormat.js +2 -0
  140. package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -0
  141. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.d.ts +133 -0
  142. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +2 -0
  143. package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -0
  144. package/dist/MultiLineAltChart.d.ts +244 -0
  145. package/dist/MultiLineAltChart.js +2 -0
  146. package/dist/MultiLineAltChart.js.map +1 -0
  147. package/dist/MultiLineChart.d.ts +246 -0
  148. package/dist/MultiLineChart.js +2 -0
  149. package/dist/MultiLineChart.js.map +1 -0
  150. package/dist/ParetoChart.d.ts +178 -0
  151. package/dist/ParetoChart.js +2 -0
  152. package/dist/ParetoChart.js.map +1 -0
  153. package/dist/RadarChart.d.ts +176 -0
  154. package/dist/RadarChart.js +2 -0
  155. package/dist/RadarChart.js.map +1 -0
  156. package/dist/ReferenceLine-BgDdQbDI.js +129 -0
  157. package/dist/ReferenceLine-BgDdQbDI.js.map +1 -0
  158. package/dist/ReferenceLine-Bsb5jeE4.cjs +2 -0
  159. package/dist/ReferenceLine-Bsb5jeE4.cjs.map +1 -0
  160. package/dist/RegressionLine-BfpCuD7B.cjs +2 -0
  161. package/dist/RegressionLine-BfpCuD7B.cjs.map +1 -0
  162. package/dist/RegressionLine-cSljpHaE.js +49 -0
  163. package/dist/RegressionLine-cSljpHaE.js.map +1 -0
  164. package/dist/SVGDownloadButton.d.ts +15 -0
  165. package/dist/SVGDownloadButton.js +2 -0
  166. package/dist/SVGDownloadButton.js.map +1 -0
  167. package/dist/SankeyChart.d.ts +178 -0
  168. package/dist/SankeyChart.js +2 -0
  169. package/dist/SankeyChart.js.map +1 -0
  170. package/dist/ScatterPlot.d.ts +266 -0
  171. package/dist/ScatterPlot.js +2 -0
  172. package/dist/ScatterPlot.js.map +1 -0
  173. package/dist/ScrollStory.d.ts +491 -0
  174. package/dist/ScrollStory.js +2 -0
  175. package/dist/ScrollStory.js.map +1 -0
  176. package/dist/SimpleLineChart.d.ts +230 -0
  177. package/dist/SimpleLineChart.js +2 -0
  178. package/dist/SimpleLineChart.js.map +1 -0
  179. package/dist/SingleGraphDashboard.d.ts +545 -0
  180. package/dist/SingleGraphDashboard.js +2 -0
  181. package/dist/SingleGraphDashboard.js.map +1 -0
  182. package/dist/SingleGraphDashboardFromConfig.d.ts +547 -0
  183. package/dist/SingleGraphDashboardFromConfig.js +2 -0
  184. package/dist/SingleGraphDashboardFromConfig.js.map +1 -0
  185. package/dist/SlopeChart.d.ts +167 -0
  186. package/dist/SlopeChart.js +2 -0
  187. package/dist/SlopeChart.js.map +1 -0
  188. package/dist/Source.d.ts +16 -0
  189. package/dist/Source.js +2 -0
  190. package/dist/Source.js.map +1 -0
  191. package/dist/SparkLine.d.ts +139 -0
  192. package/dist/SparkLine.js +2 -0
  193. package/dist/SparkLine.js.map +1 -0
  194. package/dist/Spinner-DN3s4S0H.js +17 -0
  195. package/dist/Spinner-DN3s4S0H.js.map +1 -0
  196. package/dist/Spinner-UmN-KPe9.cjs +2 -0
  197. package/dist/Spinner-UmN-KPe9.cjs.map +1 -0
  198. package/dist/StatCardFromData.d.ts +115 -0
  199. package/dist/StatCardFromData.js +2 -0
  200. package/dist/StatCardFromData.js.map +1 -0
  201. package/dist/StripChart.d.ts +178 -0
  202. package/dist/StripChart.js +2 -0
  203. package/dist/StripChart.js.map +1 -0
  204. package/dist/ThreeDGlobe.d.ts +158 -0
  205. package/dist/ThreeDGlobe.js +2 -0
  206. package/dist/ThreeDGlobe.js.map +1 -0
  207. package/dist/ThresholdColorLegendWithMouseOver.d.ts +16 -0
  208. package/dist/ThresholdColorLegendWithMouseOver.js +2 -0
  209. package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -0
  210. package/dist/Tooltip-BM18N_3l.cjs +2 -0
  211. package/dist/Tooltip-BM18N_3l.cjs.map +1 -0
  212. package/dist/Tooltip-CzZ1wFyF.js +47 -0
  213. package/dist/Tooltip-CzZ1wFyF.js.map +1 -0
  214. package/dist/TreeMapGraph.d.ts +158 -0
  215. package/dist/TreeMapGraph.js +2 -0
  216. package/dist/TreeMapGraph.js.map +1 -0
  217. package/dist/Types.d.ts +883 -0
  218. package/dist/Types.js +2 -0
  219. package/dist/Types.js.map +1 -0
  220. package/dist/Typography-CDR-DAHH.cjs +2 -0
  221. package/dist/Typography-CDR-DAHH.cjs.map +1 -0
  222. package/dist/Typography-XJoSE-By.js +58 -0
  223. package/dist/Typography-XJoSE-By.js.map +1 -0
  224. package/dist/UnitChart.d.ts +132 -0
  225. package/dist/UnitChart.js +2 -0
  226. package/dist/UnitChart.js.map +1 -0
  227. package/dist/XAxesLabels-C9REbQQs.cjs +2 -0
  228. package/dist/XAxesLabels-C9REbQQs.cjs.map +1 -0
  229. package/dist/XAxesLabels-DVw7Lvuz.js +58 -0
  230. package/dist/XAxesLabels-DVw7Lvuz.js.map +1 -0
  231. package/dist/XTicksAndGridLines-CUefTINd.js +57 -0
  232. package/dist/XTicksAndGridLines-CUefTINd.js.map +1 -0
  233. package/dist/XTicksAndGridLines-DuK35ROS.cjs +2 -0
  234. package/dist/XTicksAndGridLines-DuK35ROS.cjs.map +1 -0
  235. package/dist/YAxesLabels-CYVY053X.js +53 -0
  236. package/dist/YAxesLabels-CYVY053X.js.map +1 -0
  237. package/dist/YAxesLabels-DhBdLk3Z.cjs +2 -0
  238. package/dist/YAxesLabels-DhBdLk3Z.cjs.map +1 -0
  239. package/dist/YTicksAndGridLines-BJRXuBdC.js +57 -0
  240. package/dist/YTicksAndGridLines-BJRXuBdC.js.map +1 -0
  241. package/dist/YTicksAndGridLines-CtLvzExe.cjs +2 -0
  242. package/dist/YTicksAndGridLines-CtLvzExe.cjs.map +1 -0
  243. package/dist/_commonjsHelpers-DKOUU3wS.cjs +2 -0
  244. package/dist/_commonjsHelpers-DKOUU3wS.cjs.map +1 -0
  245. package/dist/_commonjsHelpers-DaMA6jEr.js +9 -0
  246. package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
  247. package/dist/area-BE2wo7fv.js +53 -0
  248. package/dist/area-BE2wo7fv.js.map +1 -0
  249. package/dist/area-D3Qx7k7K.cjs +2 -0
  250. package/dist/area-D3Qx7k7K.cjs.map +1 -0
  251. package/dist/array-B7TkkRH0.js +89 -0
  252. package/dist/array-B7TkkRH0.js.map +1 -0
  253. package/dist/array-DKbXV8lR.cjs +2 -0
  254. package/dist/array-DKbXV8lR.cjs.map +1 -0
  255. package/dist/band-BEjh2CHI.js +47 -0
  256. package/dist/band-BEjh2CHI.js.map +1 -0
  257. package/dist/band-CAApY4Pd.cjs +2 -0
  258. package/dist/band-CAApY4Pd.cjs.map +1 -0
  259. package/dist/checkIfMultiple-CaefP4X2.js +2264 -0
  260. package/dist/checkIfMultiple-CaefP4X2.js.map +1 -0
  261. package/dist/checkIfMultiple-D3h8to1T.cjs +12 -0
  262. package/dist/checkIfMultiple-D3h8to1T.cjs.map +1 -0
  263. package/dist/checkIfNullOrUndefined.d.ts +15 -0
  264. package/dist/checkIfNullOrUndefined.js +2 -0
  265. package/dist/checkIfNullOrUndefined.js.map +1 -0
  266. package/dist/customArea-B47Ew5cT.cjs +2 -0
  267. package/dist/customArea-B47Ew5cT.cjs.map +1 -0
  268. package/dist/customArea-I3MsoqIl.js +176 -0
  269. package/dist/customArea-I3MsoqIl.js.map +1 -0
  270. package/dist/defaultLocale-BEa-49Qz.js +172 -0
  271. package/dist/defaultLocale-BEa-49Qz.js.map +1 -0
  272. package/dist/defaultLocale-DIVzfLaQ.cjs +2 -0
  273. package/dist/defaultLocale-DIVzfLaQ.cjs.map +1 -0
  274. package/dist/delaunay-C1uAf38t.js +684 -0
  275. package/dist/delaunay-C1uAf38t.js.map +1 -0
  276. package/dist/delaunay-rcy0HhZi.cjs +2 -0
  277. package/dist/delaunay-rcy0HhZi.cjs.map +1 -0
  278. package/dist/ensureCompleteData-BBDZbDCE.js +102 -0
  279. package/dist/ensureCompleteData-BBDZbDCE.js.map +1 -0
  280. package/dist/ensureCompleteData-DqWQ2Zbi.cjs +2 -0
  281. package/dist/ensureCompleteData-DqWQ2Zbi.cjs.map +1 -0
  282. package/dist/excelDownload.d.ts +31 -0
  283. package/dist/excelDownload.js +2 -0
  284. package/dist/excelDownload.js.map +1 -0
  285. package/dist/fetchAndParseData.d.ts +84 -0
  286. package/dist/fetchAndParseData.js +16 -0
  287. package/dist/fetchAndParseData.js.map +1 -0
  288. package/dist/filterData-B8ocT57s.js +14 -0
  289. package/dist/filterData-B8ocT57s.js.map +1 -0
  290. package/dist/filterData-DN6py7y_.cjs +2 -0
  291. package/dist/filterData-DN6py7y_.cjs.map +1 -0
  292. package/dist/generateCodes.d.ts +25 -0
  293. package/dist/generateCodes.js +2 -0
  294. package/dist/generateCodes.js.map +1 -0
  295. package/dist/generateRandomString-B5zBiJzS.cjs +2 -0
  296. package/dist/generateRandomString-B5zBiJzS.cjs.map +1 -0
  297. package/dist/generateRandomString-za3IQGfQ.js +11 -0
  298. package/dist/generateRandomString-za3IQGfQ.js.map +1 -0
  299. package/dist/getJenks.d.ts +17 -0
  300. package/dist/getJenks.js +2 -0
  301. package/dist/getJenks.js.map +1 -0
  302. package/dist/getPercentileValue.d.ts +13 -0
  303. package/dist/getPercentileValue.js +2 -0
  304. package/dist/getPercentileValue.js.map +1 -0
  305. package/dist/getQueryParamsFromLink.d.ts +18 -0
  306. package/dist/getQueryParamsFromLink.js +2 -0
  307. package/dist/getQueryParamsFromLink.js.map +1 -0
  308. package/dist/getSchema.d.ts +3256 -0
  309. package/dist/getSchema.js +2 -0
  310. package/dist/getSchema.js.map +1 -0
  311. package/dist/getSliderMarks-CWajGCGq.js +719 -0
  312. package/dist/getSliderMarks-CWajGCGq.js.map +1 -0
  313. package/dist/getSliderMarks-DDJ1CdhL.cjs +6 -0
  314. package/dist/getSliderMarks-DDJ1CdhL.cjs.map +1 -0
  315. package/dist/getTextColorBasedOnBgColor.d.ts +13 -0
  316. package/dist/getTextColorBasedOnBgColor.js +2 -0
  317. package/dist/getTextColorBasedOnBgColor.js.map +1 -0
  318. package/dist/getUniqValue.d.ts +18 -0
  319. package/dist/getUniqValue.js +2 -0
  320. package/dist/getUniqValue.js.map +1 -0
  321. package/dist/graphList.d.ts +9 -0
  322. package/dist/graphList.js +2 -0
  323. package/dist/graphList.js.map +1 -0
  324. package/dist/imageDownload.d.ts +16 -0
  325. package/dist/imageDownload.js +3 -0
  326. package/dist/imageDownload.js.map +1 -0
  327. package/dist/index-01r5X3Gr-9jE0ObrK.cjs +2 -0
  328. package/dist/index-01r5X3Gr-9jE0ObrK.cjs.map +1 -0
  329. package/dist/index-01r5X3Gr-kH7FxQ7P.js +451 -0
  330. package/dist/index-01r5X3Gr-kH7FxQ7P.js.map +1 -0
  331. package/dist/index-27yTRcko.js +35 -0
  332. package/dist/index-27yTRcko.js.map +1 -0
  333. package/dist/index-B0rbzOoC.cjs +2 -0
  334. package/dist/index-B0rbzOoC.cjs.map +1 -0
  335. package/dist/index-BGMGC-HN.cjs +22 -0
  336. package/dist/index-BGMGC-HN.cjs.map +1 -0
  337. package/dist/index-BHm2KTjD-2e-Fu8L-.js +702 -0
  338. package/dist/index-BHm2KTjD-2e-Fu8L-.js.map +1 -0
  339. package/dist/index-BHm2KTjD-D8FylaKc.cjs +44 -0
  340. package/dist/index-BHm2KTjD-D8FylaKc.cjs.map +1 -0
  341. package/dist/index-BIPNFFja.js +506 -0
  342. package/dist/index-BIPNFFja.js.map +1 -0
  343. package/dist/index-BLizQDlg.js +658 -0
  344. package/dist/index-BLizQDlg.js.map +1 -0
  345. package/dist/index-BXns0-ng.cjs +2 -0
  346. package/dist/index-BXns0-ng.cjs.map +1 -0
  347. package/dist/index-BYroABPm.cjs +2 -0
  348. package/dist/index-BYroABPm.cjs.map +1 -0
  349. package/dist/index-BczVvEBZ.cjs +2 -0
  350. package/dist/index-BczVvEBZ.cjs.map +1 -0
  351. package/dist/index-BzeLQvXk.cjs +2 -0
  352. package/dist/index-BzeLQvXk.cjs.map +1 -0
  353. package/dist/index-C1rRk_50.js +273 -0
  354. package/dist/index-C1rRk_50.js.map +1 -0
  355. package/dist/index-C21TvELx.cjs +2 -0
  356. package/dist/index-C21TvELx.cjs.map +1 -0
  357. package/dist/index-CEc_9zWy.cjs +2 -0
  358. package/dist/index-CEc_9zWy.cjs.map +1 -0
  359. package/dist/index-CZbIGs8q.cjs +2 -0
  360. package/dist/index-CZbIGs8q.cjs.map +1 -0
  361. package/dist/index-CaAIPGZo.js +631 -0
  362. package/dist/index-CaAIPGZo.js.map +1 -0
  363. package/dist/index-CbVeVrla.cjs +2 -0
  364. package/dist/index-CbVeVrla.cjs.map +1 -0
  365. package/dist/index-CqzhBPuO-CfQywbdq.js +41 -0
  366. package/dist/index-CqzhBPuO-CfQywbdq.js.map +1 -0
  367. package/dist/index-CqzhBPuO-raKZqS7l.cjs +2 -0
  368. package/dist/index-CqzhBPuO-raKZqS7l.cjs.map +1 -0
  369. package/dist/index-D7ltPi18.js +26 -0
  370. package/dist/index-D7ltPi18.js.map +1 -0
  371. package/dist/index-DSnvdkHZ.js +495 -0
  372. package/dist/index-DSnvdkHZ.js.map +1 -0
  373. package/dist/index-DXmF_0ez.js +308 -0
  374. package/dist/index-DXmF_0ez.js.map +1 -0
  375. package/dist/index-Db-Yg_Ud.js +120 -0
  376. package/dist/index-Db-Yg_Ud.js.map +1 -0
  377. package/dist/index-Ds0uHjK9.cjs +2 -0
  378. package/dist/index-Ds0uHjK9.cjs.map +1 -0
  379. package/dist/index-DxagiOHo.js +707 -0
  380. package/dist/index-DxagiOHo.js.map +1 -0
  381. package/dist/index-DzdwZ2OA.js +77 -0
  382. package/dist/index-DzdwZ2OA.js.map +1 -0
  383. package/dist/index-UV9hjG_S.js +53 -0
  384. package/dist/index-UV9hjG_S.js.map +1 -0
  385. package/dist/index-a2C2Bqn2.cjs +10 -0
  386. package/dist/index-a2C2Bqn2.cjs.map +1 -0
  387. package/dist/index.js +1 -52488
  388. package/dist/index.js.map +1 -1
  389. package/dist/init-BhZylTFx.js +63 -0
  390. package/dist/init-BhZylTFx.js.map +1 -0
  391. package/dist/init-DU0ybBc_.cjs +2 -0
  392. package/dist/init-DU0ybBc_.cjs.map +1 -0
  393. package/dist/line-CPfhohvF.js +68 -0
  394. package/dist/line-CPfhohvF.js.map +1 -0
  395. package/dist/line-DHV4JwCR.cjs +2 -0
  396. package/dist/line-DHV4JwCR.cjs.map +1 -0
  397. package/dist/linear-BVckp9RD.cjs +2 -0
  398. package/dist/linear-BVckp9RD.cjs.map +1 -0
  399. package/dist/linear-DUdu7l2G.js +221 -0
  400. package/dist/linear-DUdu7l2G.js.map +1 -0
  401. package/dist/numberFormattingFunction.d.ts +22 -0
  402. package/dist/numberFormattingFunction.js +2 -0
  403. package/dist/numberFormattingFunction.js.map +1 -0
  404. package/dist/ordinal-BOeNbyae.cjs +2 -0
  405. package/dist/ordinal-BOeNbyae.cjs.map +1 -0
  406. package/dist/ordinal-w9Lu4Stb.js +62 -0
  407. package/dist/ordinal-w9Lu4Stb.js.map +1 -0
  408. package/dist/parse-DlCRUFh_.js +2768 -0
  409. package/dist/parse-DlCRUFh_.js.map +1 -0
  410. package/dist/parse-hMnG_lRV.cjs +2 -0
  411. package/dist/parse-hMnG_lRV.cjs.map +1 -0
  412. package/dist/pointer-CWRWOsrb.js +23 -0
  413. package/dist/pointer-CWRWOsrb.js.map +1 -0
  414. package/dist/pointer-Dkq5NV1q.cjs +2 -0
  415. package/dist/pointer-Dkq5NV1q.cjs.map +1 -0
  416. package/dist/pow-B5-jkdHU.cjs +2 -0
  417. package/dist/pow-B5-jkdHU.cjs.map +1 -0
  418. package/dist/pow-e8zx3AQJ.js +35 -0
  419. package/dist/pow-e8zx3AQJ.js.map +1 -0
  420. package/dist/removeOutliers.d.ts +16 -0
  421. package/dist/removeOutliers.js +2 -0
  422. package/dist/removeOutliers.js.map +1 -0
  423. package/dist/select-Bnfk0lJx.cjs +2 -0
  424. package/dist/select-Bnfk0lJx.cjs.map +1 -0
  425. package/dist/select-DKy99ogv.js +584 -0
  426. package/dist/select-DKy99ogv.js.map +1 -0
  427. package/dist/simple-statistics-flVzqVtt.js +65 -0
  428. package/dist/simple-statistics-flVzqVtt.js.map +1 -0
  429. package/dist/simple-statistics-xm8c0LQQ.cjs +2 -0
  430. package/dist/simple-statistics-xm8c0LQQ.cjs.map +1 -0
  431. package/dist/step-BZ3C8QFW.cjs +2 -0
  432. package/dist/step-BZ3C8QFW.cjs.map +1 -0
  433. package/dist/step-BrDul-H4.js +119 -0
  434. package/dist/step-BrDul-H4.js.map +1 -0
  435. package/dist/string-B8KlVSPX.js +364 -0
  436. package/dist/string-B8KlVSPX.js.map +1 -0
  437. package/dist/string-CRoCZCYa.cjs +2 -0
  438. package/dist/string-CRoCZCYa.cjs.map +1 -0
  439. package/dist/string2HTML-BX0oNw83.js +758 -0
  440. package/dist/string2HTML-BX0oNw83.js.map +1 -0
  441. package/dist/string2HTML-X4ZYX5jI.cjs +3 -0
  442. package/dist/string2HTML-X4ZYX5jI.cjs.map +1 -0
  443. package/dist/style.css +1 -1
  444. package/dist/svgDownload.d.ts +16 -0
  445. package/dist/svgDownload.js +2 -0
  446. package/dist/svgDownload.js.map +1 -0
  447. package/dist/threshold-DFfqcDMa.js +23 -0
  448. package/dist/threshold-DFfqcDMa.js.map +1 -0
  449. package/dist/threshold-DNsSUf8Q.cjs +2 -0
  450. package/dist/threshold-DNsSUf8Q.cjs.map +1 -0
  451. package/dist/time-Byw_jYQ7.cjs +2 -0
  452. package/dist/time-Byw_jYQ7.cjs.map +1 -0
  453. package/dist/time-BzJP5SPC.js +715 -0
  454. package/dist/time-BzJP5SPC.js.map +1 -0
  455. package/dist/timer-B39XOBYL.js +124 -0
  456. package/dist/timer-B39XOBYL.js.map +1 -0
  457. package/dist/timer-CKyBCVzT.cjs +2 -0
  458. package/dist/timer-CKyBCVzT.cjs.map +1 -0
  459. package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js +139 -0
  460. package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js.map +1 -0
  461. package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs +4 -0
  462. package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs.map +1 -0
  463. package/dist/transformColumnsToArray.d.ts +38 -0
  464. package/dist/transformColumnsToArray.js +2 -0
  465. package/dist/transformColumnsToArray.js.map +1 -0
  466. package/dist/transformDataForAggregation.d.ts +38 -0
  467. package/dist/transformDataForAggregation.js +2 -0
  468. package/dist/transformDataForAggregation.js.map +1 -0
  469. package/dist/transformDataForGraph.d.ts +47 -0
  470. package/dist/transformDataForGraph.js +2 -0
  471. package/dist/transformDataForGraph.js.map +1 -0
  472. package/dist/transformDataForGraphFromFile.d.ts +66 -0
  473. package/dist/transformDataForGraphFromFile.js +2 -0
  474. package/dist/transformDataForGraphFromFile.js.map +1 -0
  475. package/dist/use-in-view-CZPXmTZM.js +4645 -0
  476. package/dist/use-in-view-CZPXmTZM.js.map +1 -0
  477. package/dist/use-in-view-Dl1CsAIo.cjs +2 -0
  478. package/dist/use-in-view-Dl1CsAIo.cjs.map +1 -0
  479. package/dist/validateSchema.d.ts +68 -0
  480. package/dist/validateSchema.js +2 -0
  481. package/dist/validateSchema.js.map +1 -0
  482. package/dist/x-Dft9NVe_-DcB7wtv5.js +61 -0
  483. package/dist/x-Dft9NVe_-DcB7wtv5.js.map +1 -0
  484. package/dist/x-Dft9NVe_-LeyJu02C.cjs +27 -0
  485. package/dist/x-Dft9NVe_-LeyJu02C.cjs.map +1 -0
  486. package/dist/y-D0sAaVii.js +421 -0
  487. package/dist/y-D0sAaVii.js.map +1 -0
  488. package/dist/y-QcCbqrzx.cjs +2 -0
  489. package/dist/y-QcCbqrzx.cjs.map +1 -0
  490. package/dist/zoom-Lo7IAUfC.cjs +2 -0
  491. package/dist/zoom-Lo7IAUfC.cjs.map +1 -0
  492. package/dist/zoom-_lqdiGoI.js +1983 -0
  493. package/dist/zoom-_lqdiGoI.js.map +1 -0
  494. package/package.json +415 -4
  495. package/dist/index.cjs +0 -68
  496. package/dist/index.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delaunay-C1uAf38t.js","sources":["../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/delaunator/index.js","../node_modules/d3-delaunay/src/path.js","../node_modules/d3-delaunay/src/polygon.js","../node_modules/d3-delaunay/src/voronoi.js","../node_modules/d3-delaunay/src/delaunay.js"],"sourcesContent":["export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0, minDist = Infinity; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n // find the point closest to the seed\n for (let i = 0, minDist = Infinity; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n const d = this._dists[id];\n if (d > d0) {\n hull[j++] = id;\n d0 = d;\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n","export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n let bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the “center” of\n // the diagram <bx, by>, defined as the hull’s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n bx /= hull.length, by /= hull.length;\n }\n const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] === cj[aj]\n && ci[ai + 1] === cj[aj + 1]\n && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return this._simplify(V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points));\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n const flip = c0 < c1;\n if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n _simplify(P) {\n if (P && P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n"],"names":["epsilon","splitter","resulterrbound","sum","elen","e","flen","f","h","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","i","vec","n","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","EPSILON","EDGE_STACK","Delaunator","points","getX","defaultGetX","getY","defaultGetY","coords","p","maxTriangles","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","y","i0","i1","i2","minDist","d","dist","i0x","i0y","i1x","i1y","minRadius","r","circumradius","i2x","i2y","quicksort","hull","j","d0","id","center","circumcenter","hullSize","k","xp","yp","x","start","key","q","t","pseudoAngle","a","triangles","halfedges","ar","b","a0","b0","al","bl","p0","pr","pl","p1","inCircle","hbl","br","c","dx","dy","px","py","ex","ey","fx","fy","ap","bp","cp","cl","ids","dists","left","right","temp","tempDist","median","swap","arr","tmp","Path","x0","y0","w","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","vectors","circumcenters","t2","t3","x1","y1","x2","y2","x3","y3","ab","context","buffer","inedges","ti","tj","xi","yi","xj","yj","h0","h1","v","cell","polygon","S","c0","c1","ci","cj","loop","ai","li","aj","lj","e0","V","P","e1","sx0","sy0","sx1","sy1","flip","vx0","vy0","vxn","vyn","vx","vy","tau","pow","pointX","pointY","collinear","jitter","Delaunay","that","flatArray","flatIterable","_","bounds","hullIndex","_hullIndex","l","dc","dt","array"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
@@ -0,0 +1,2 @@
1
+ "use strict";const E=11102230246251565e-32,D=134217729,lt=(3+8*E)*E;function V(_,t,n,e,i){let s,l,h,r,a=t[0],f=e[0],o=0,c=0;f>a==f>-a?(s=a,a=t[++o]):(s=f,f=e[++c]);let u=0;if(o<_&&c<n)for(f>a==f>-a?(l=a+s,h=s-(l-a),a=t[++o]):(l=f+s,h=s-(l-f),f=e[++c]),s=l,h!==0&&(i[u++]=h);o<_&&c<n;)f>a==f>-a?(l=s+a,r=l-s,h=s-(l-r)+(a-r),a=t[++o]):(l=s+f,r=l-s,h=s-(l-r)+(f-r),f=e[++c]),s=l,h!==0&&(i[u++]=h);for(;o<_;)l=s+a,r=l-s,h=s-(l-r)+(a-r),a=t[++o],s=l,h!==0&&(i[u++]=h);for(;c<n;)l=s+f,r=l-s,h=s-(l-r)+(f-r),f=e[++c],s=l,h!==0&&(i[u++]=h);return(s!==0||u===0)&&(i[u++]=s),u}function ht(_,t){let n=t[0];for(let e=1;e<_;e++)n+=t[e];return n}function B(_){return new Float64Array(_)}const rt=(3+16*E)*E,ot=(2+12*E)*E,ct=(9+64*E)*E*E,N=B(4),W=B(8),tt=B(12),nt=B(16),K=B(4);function at(_,t,n,e,i,s,l){let h,r,a,f,o,c,u,d,g,b,y,p,A,I,k,S,j,M;const m=_-i,x=n-i,w=t-s,v=e-s;I=m*v,c=D*m,u=c-(c-m),d=m-u,c=D*v,g=c-(c-v),b=v-g,k=d*b-(I-u*g-d*g-u*b),S=w*x,c=D*w,u=c-(c-w),d=w-u,c=D*x,g=c-(c-x),b=x-g,j=d*b-(S-u*g-d*g-u*b),y=k-j,o=k-y,N[0]=k-(y+o)+(o-j),p=I+y,o=p-I,A=I-(p-o)+(y-o),y=A-S,o=A-y,N[1]=A-(y+o)+(o-S),M=p+y,o=M-p,N[2]=p-(M-o)+(y-o),N[3]=M;let $=ht(4,N),z=ot*l;if($>=z||-$>=z||(o=_-m,h=_-(m+o)+(o-i),o=n-x,a=n-(x+o)+(o-i),o=t-w,r=t-(w+o)+(o-s),o=e-v,f=e-(v+o)+(o-s),h===0&&r===0&&a===0&&f===0)||(z=ct*l+lt*Math.abs($),$+=m*f+v*h-(w*a+x*r),$>=z||-$>=z))return $;I=h*v,c=D*h,u=c-(c-h),d=h-u,c=D*v,g=c-(c-v),b=v-g,k=d*b-(I-u*g-d*g-u*b),S=r*x,c=D*r,u=c-(c-r),d=r-u,c=D*x,g=c-(c-x),b=x-g,j=d*b-(S-u*g-d*g-u*b),y=k-j,o=k-y,K[0]=k-(y+o)+(o-j),p=I+y,o=p-I,A=I-(p-o)+(y-o),y=A-S,o=A-y,K[1]=A-(y+o)+(o-S),M=p+y,o=M-p,K[2]=p-(M-o)+(y-o),K[3]=M;const U=V(4,N,4,K,W);I=m*f,c=D*m,u=c-(c-m),d=m-u,c=D*f,g=c-(c-f),b=f-g,k=d*b-(I-u*g-d*g-u*b),S=w*a,c=D*w,u=c-(c-w),d=w-u,c=D*a,g=c-(c-a),b=a-g,j=d*b-(S-u*g-d*g-u*b),y=k-j,o=k-y,K[0]=k-(y+o)+(o-j),p=I+y,o=p-I,A=I-(p-o)+(y-o),y=A-S,o=A-y,K[1]=A-(y+o)+(o-S),M=p+y,o=M-p,K[2]=p-(M-o)+(y-o),K[3]=M;const T=V(U,W,4,K,tt);I=h*f,c=D*h,u=c-(c-h),d=h-u,c=D*f,g=c-(c-f),b=f-g,k=d*b-(I-u*g-d*g-u*b),S=r*a,c=D*r,u=c-(c-r),d=r-u,c=D*a,g=c-(c-a),b=a-g,j=d*b-(S-u*g-d*g-u*b),y=k-j,o=k-y,K[0]=k-(y+o)+(o-j),p=I+y,o=p-I,A=I-(p-o)+(y-o),y=A-S,o=A-y,K[1]=A-(y+o)+(o-S),M=p+y,o=M-p,K[2]=p-(M-o)+(y-o),K[3]=M;const F=V(T,tt,4,K,nt);return nt[F-1]}function G(_,t,n,e,i,s){const l=(t-s)*(n-i),h=(_-i)*(e-s),r=l-h,a=Math.abs(l+h);return Math.abs(r)>=rt*a?r:-at(_,t,n,e,i,s,a)}const it=Math.pow(2,-52),Q=new Uint32Array(512);class O{static from(t,n=dt,e=mt){const i=t.length,s=new Float64Array(i*2);for(let l=0;l<i;l++){const h=t[l];s[2*l]=n(h),s[2*l+1]=e(h)}return new O(s)}constructor(t){const n=t.length>>1;if(n>0&&typeof t[0]!="number")throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(e*3),this._halfedges=new Int32Array(e*3),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:i,_hullHash:s}=this,l=t.length>>1;let h=1/0,r=1/0,a=-1/0,f=-1/0;for(let m=0;m<l;m++){const x=t[2*m],w=t[2*m+1];x<h&&(h=x),w<r&&(r=w),x>a&&(a=x),w>f&&(f=w),this._ids[m]=m}const o=(h+a)/2,c=(r+f)/2;let u,d,g;for(let m=0,x=1/0;m<l;m++){const w=Z(o,c,t[2*m],t[2*m+1]);w<x&&(u=m,x=w)}const b=t[2*u],y=t[2*u+1];for(let m=0,x=1/0;m<l;m++){if(m===u)continue;const w=Z(b,y,t[2*m],t[2*m+1]);w<x&&w>0&&(d=m,x=w)}let p=t[2*d],A=t[2*d+1],I=1/0;for(let m=0;m<l;m++){if(m===u||m===d)continue;const x=_t(b,y,p,A,t[2*m],t[2*m+1]);x<I&&(g=m,I=x)}let k=t[2*g],S=t[2*g+1];if(I===1/0){for(let w=0;w<l;w++)this._dists[w]=t[2*w]-t[0]||t[2*w+1]-t[1];Y(this._ids,this._dists,0,l-1);const m=new Uint32Array(l);let x=0;for(let w=0,v=-1/0;w<l;w++){const $=this._ids[w],z=this._dists[$];z>v&&(m[x++]=$,v=z)}this.hull=m.subarray(0,x),this.triangles=new Uint32Array(0),this.halfedges=new Uint32Array(0);return}if(G(b,y,p,A,k,S)<0){const m=d,x=p,w=A;d=g,p=k,A=S,g=m,k=x,S=w}const j=gt(b,y,p,A,k,S);this._cx=j.x,this._cy=j.y;for(let m=0;m<l;m++)this._dists[m]=Z(t[2*m],t[2*m+1],j.x,j.y);Y(this._ids,this._dists,0,l-1),this._hullStart=u;let M=3;e[u]=n[g]=d,e[d]=n[u]=g,e[g]=n[d]=u,i[u]=0,i[d]=1,i[g]=2,s.fill(-1),s[this._hashKey(b,y)]=u,s[this._hashKey(p,A)]=d,s[this._hashKey(k,S)]=g,this.trianglesLen=0,this._addTriangle(u,d,g,-1,-1,-1);for(let m=0,x,w;m<this._ids.length;m++){const v=this._ids[m],$=t[2*v],z=t[2*v+1];if(m>0&&Math.abs($-x)<=it&&Math.abs(z-w)<=it||(x=$,w=z,v===u||v===d||v===g))continue;let U=0;for(let P=0,st=this._hashKey($,z);P<this._hashSize&&(U=s[(st+P)%this._hashSize],!(U!==-1&&U!==e[U]));P++);U=n[U];let T=U,F;for(;F=e[T],G($,z,t[2*T],t[2*T+1],t[2*F],t[2*F+1])>=0;)if(T=F,T===U){T=-1;break}if(T===-1)continue;let L=this._addTriangle(T,v,e[T],-1,-1,i[T]);i[v]=this._legalize(L+2),i[T]=L,M++;let C=e[T];for(;F=e[C],G($,z,t[2*C],t[2*C+1],t[2*F],t[2*F+1])<0;)L=this._addTriangle(C,v,F,i[v],-1,i[C]),i[v]=this._legalize(L+2),e[C]=C,M--,C=F;if(T===U)for(;F=n[T],G($,z,t[2*F],t[2*F+1],t[2*T],t[2*T+1])<0;)L=this._addTriangle(F,v,T,-1,i[T],i[F]),this._legalize(L+2),i[F]=L,e[T]=T,M--,T=F;this._hullStart=n[v]=T,e[T]=n[C]=v,e[v]=C,s[this._hashKey($,z)]=v,s[this._hashKey(t[2*T],t[2*T+1])]=T}this.hull=new Uint32Array(M);for(let m=0,x=this._hullStart;m<M;m++)this.hull[m]=x,x=e[x];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(ut(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:i}=this;let s=0,l=0;for(;;){const h=e[t],r=t-t%3;if(l=r+(t+2)%3,h===-1){if(s===0)break;t=Q[--s];continue}const a=h-h%3,f=r+(t+1)%3,o=a+(h+2)%3,c=n[l],u=n[t],d=n[f],g=n[o];if(ft(i[2*c],i[2*c+1],i[2*u],i[2*u+1],i[2*d],i[2*d+1],i[2*g],i[2*g+1])){n[t]=g,n[h]=c;const y=e[o];if(y===-1){let A=this._hullStart;do{if(this._hullTri[A]===o){this._hullTri[A]=t;break}A=this._hullPrev[A]}while(A!==this._hullStart)}this._link(t,y),this._link(h,e[l]),this._link(l,o);const p=a+(h+1)%3;s<Q.length&&(Q[s++]=p)}else{if(s===0)break;t=Q[--s]}}return l}_link(t,n){this._halfedges[t]=n,n!==-1&&(this._halfedges[n]=t)}_addTriangle(t,n,e,i,s,l){const h=this.trianglesLen;return this._triangles[h]=t,this._triangles[h+1]=n,this._triangles[h+2]=e,this._link(h,i),this._link(h+1,s),this._link(h+2,l),this.trianglesLen+=3,h}}function ut(_,t){const n=_/(Math.abs(_)+Math.abs(t));return(t>0?3-n:1+n)/4}function Z(_,t,n,e){const i=_-n,s=t-e;return i*i+s*s}function ft(_,t,n,e,i,s,l,h){const r=_-l,a=t-h,f=n-l,o=e-h,c=i-l,u=s-h,d=r*r+a*a,g=f*f+o*o,b=c*c+u*u;return r*(o*b-g*u)-a*(f*b-g*c)+d*(f*u-o*c)<0}function _t(_,t,n,e,i,s){const l=n-_,h=e-t,r=i-_,a=s-t,f=l*l+h*h,o=r*r+a*a,c=.5/(l*a-h*r),u=(a*f-h*o)*c,d=(l*o-r*f)*c;return u*u+d*d}function gt(_,t,n,e,i,s){const l=n-_,h=e-t,r=i-_,a=s-t,f=l*l+h*h,o=r*r+a*a,c=.5/(l*a-h*r),u=_+(a*f-h*o)*c,d=t+(l*o-r*f)*c;return{x:u,y:d}}function Y(_,t,n,e){if(e-n<=20)for(let i=n+1;i<=e;i++){const s=_[i],l=t[s];let h=i-1;for(;h>=n&&t[_[h]]>l;)_[h+1]=_[h--];_[h+1]=s}else{const i=n+e>>1;let s=n+1,l=e;q(_,i,s),t[_[n]]>t[_[e]]&&q(_,n,e),t[_[s]]>t[_[e]]&&q(_,s,e),t[_[n]]>t[_[s]]&&q(_,n,s);const h=_[s],r=t[h];for(;;){do s++;while(t[_[s]]<r);do l--;while(t[_[l]]>r);if(l<s)break;q(_,s,l)}_[n+1]=_[l],_[l]=h,e-s+1>=l-n?(Y(_,t,s,e),Y(_,t,n,l-1)):(Y(_,t,n,l-1),Y(_,t,s,e))}}function q(_,t,n){const e=_[t];_[t]=_[n],_[n]=e}function dt(_){return _[0]}function mt(_){return _[1]}const et=1e-6;class H{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){t=+t,n=+n,e=+e;const i=t+e,s=n;if(e<0)throw new Error("negative radius");this._x1===null?this._+=`M${i},${s}`:(Math.abs(this._x1-i)>et||Math.abs(this._y1-s)>et)&&(this._+="L"+i+","+s),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=i},${this._y1=s}`)}rect(t,n,e,i){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+i}h${-e}Z`}value(){return this._||null}}class R{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class yt{constructor(t,[n,e,i,s]=[0,0,960,500]){if(!((i=+i)>=(n=+n))||!((s=+s)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(t.points.length*2),this.vectors=new Float64Array(t.points.length*2),this.xmax=i,this.xmin=n,this.ymax=s,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:i}=this;let s,l;const h=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let g=0,b=0,y=e.length,p,A;g<y;g+=3,b+=2){const I=e[g]*2,k=e[g+1]*2,S=e[g+2]*2,j=t[I],M=t[I+1],m=t[k],x=t[k+1],w=t[S],v=t[S+1],$=m-j,z=x-M,U=w-j,T=v-M,F=($*T-z*U)*2;if(Math.abs(F)<1e-9){if(s===void 0){s=l=0;for(const C of n)s+=t[C*2],l+=t[C*2+1];s/=n.length,l/=n.length}const L=1e9*Math.sign((s-j)*T-(l-M)*U);p=(j+w)/2-L*T,A=(M+v)/2+L*U}else{const L=1/F,C=$*$+z*z,P=U*U+T*T;p=j+(T*C-z*P)*L,A=M+($*P-U*C)*L}h[b]=p,h[b+1]=A}let r=n[n.length-1],a,f=r*4,o,c=t[2*r],u,d=t[2*r+1];i.fill(0);for(let g=0;g<n.length;++g)r=n[g],a=f,o=c,u=d,f=r*4,c=t[2*r],d=t[2*r+1],i[a+2]=i[f]=u-d,i[a+3]=i[f+1]=c-o}render(t){const n=t==null?t=new H:void 0,{delaunay:{halfedges:e,inedges:i,hull:s},circumcenters:l,vectors:h}=this;if(s.length<=1)return null;for(let f=0,o=e.length;f<o;++f){const c=e[f];if(c<f)continue;const u=Math.floor(f/3)*2,d=Math.floor(c/3)*2,g=l[u],b=l[u+1],y=l[d],p=l[d+1];this._renderSegment(g,b,y,p,t)}let r,a=s[s.length-1];for(let f=0;f<s.length;++f){r=a,a=s[f];const o=Math.floor(i[a]/3)*2,c=l[o],u=l[o+1],d=r*4,g=this._project(c,u,h[d+2],h[d+3]);g&&this._renderSegment(c,u,g[0],g[1],t)}return n&&n.value()}renderBounds(t){const n=t==null?t=new H:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=n==null?n=new H:void 0,i=this._clip(t);if(i===null||!i.length)return;n.moveTo(i[0],i[1]);let s=i.length;for(;i[0]===i[s-2]&&i[1]===i[s-1]&&s>1;)s-=2;for(let l=2;l<s;l+=2)(i[l]!==i[l-2]||i[l+1]!==i[l-1])&&n.lineTo(i[l],i[l+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const i=this.cellPolygon(n);i&&(i.index=n,yield i)}}cellPolygon(t){const n=new R;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,i,s){let l;const h=this._regioncode(t,n),r=this._regioncode(e,i);h===0&&r===0?(s.moveTo(t,n),s.lineTo(e,i)):(l=this._clipSegment(t,n,e,i,h,r))&&(s.moveTo(l[0],l[1]),s.lineTo(l[2],l[3]))}contains(t,n,e){return n=+n,n!==n||(e=+e,e!==e)?!1:this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const i=this._clip(e);if(i){t:for(let s=0,l=n.length;s<l;s+=2)for(let h=0,r=i.length;h<r;h+=2)if(n[s]===i[h]&&n[s+1]===i[h+1]&&n[(s+2)%l]===i[(h+r-2)%r]&&n[(s+3)%l]===i[(h+r-1)%r]){yield e;break t}}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:i,triangles:s}}=this,l=e[t];if(l===-1)return null;const h=[];let r=l;do{const a=Math.floor(r/3);if(h.push(n[a*2],n[a*2+1]),r=r%3===2?r-2:r+1,s[r]!==t)break;r=i[r]}while(r!==l&&r!==-1);return h}_clip(t){if(t===0&&this.delaunay.hull.length===1)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(n===null)return null;const{vectors:e}=this,i=t*4;return this._simplify(e[i]||e[i+1]?this._clipInfinite(t,n,e[i],e[i+1],e[i+2],e[i+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let i=null,s,l,h=n[e-2],r=n[e-1],a,f=this._regioncode(h,r),o,c=0;for(let u=0;u<e;u+=2)if(s=h,l=r,h=n[u],r=n[u+1],a=f,f=this._regioncode(h,r),a===0&&f===0)o=c,c=0,i?i.push(h,r):i=[h,r];else{let d,g,b,y,p;if(a===0){if((d=this._clipSegment(s,l,h,r,a,f))===null)continue;[g,b,y,p]=d}else{if((d=this._clipSegment(h,r,s,l,f,a))===null)continue;[y,p,g,b]=d,o=c,c=this._edgecode(g,b),o&&c&&this._edge(t,o,c,i,i.length),i?i.push(g,b):i=[g,b]}o=c,c=this._edgecode(y,p),o&&c&&this._edge(t,o,c,i,i.length),i?i.push(y,p):i=[y,p]}if(i)o=c,c=this._edgecode(i[0],i[1]),o&&c&&this._edge(t,o,c,i,i.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return i}_clipSegment(t,n,e,i,s,l){const h=s<l;for(h&&([t,n,e,i,s,l]=[e,i,t,n,l,s]);;){if(s===0&&l===0)return h?[e,i,t,n]:[t,n,e,i];if(s&l)return null;let r,a,f=s||l;f&8?(r=t+(e-t)*(this.ymax-n)/(i-n),a=this.ymax):f&4?(r=t+(e-t)*(this.ymin-n)/(i-n),a=this.ymin):f&2?(a=n+(i-n)*(this.xmax-t)/(e-t),r=this.xmax):(a=n+(i-n)*(this.xmin-t)/(e-t),r=this.xmin),s?(t=r,n=a,s=this._regioncode(t,n)):(e=r,i=a,l=this._regioncode(e,i))}}_clipInfinite(t,n,e,i,s,l){let h=Array.from(n),r;if((r=this._project(h[0],h[1],e,i))&&h.unshift(r[0],r[1]),(r=this._project(h[h.length-2],h[h.length-1],s,l))&&h.push(r[0],r[1]),h=this._clipFinite(t,h))for(let a=0,f=h.length,o,c=this._edgecode(h[f-2],h[f-1]);a<f;a+=2)o=c,c=this._edgecode(h[a],h[a+1]),o&&c&&(a=this._edge(t,o,c,h,a),f=h.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(h=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return h}_edge(t,n,e,i,s){for(;n!==e;){let l,h;switch(n){case 5:n=4;continue;case 4:n=6,l=this.xmax,h=this.ymin;break;case 6:n=2;continue;case 2:n=10,l=this.xmax,h=this.ymax;break;case 10:n=8;continue;case 8:n=9,l=this.xmin,h=this.ymax;break;case 9:n=1;continue;case 1:n=5,l=this.xmin,h=this.ymin;break}(i[s]!==l||i[s+1]!==h)&&this.contains(t,l,h)&&(i.splice(s,0,l,h),s+=2)}return s}_project(t,n,e,i){let s=1/0,l,h,r;if(i<0){if(n<=this.ymin)return null;(l=(this.ymin-n)/i)<s&&(r=this.ymin,h=t+(s=l)*e)}else if(i>0){if(n>=this.ymax)return null;(l=(this.ymax-n)/i)<s&&(r=this.ymax,h=t+(s=l)*e)}if(e>0){if(t>=this.xmax)return null;(l=(this.xmax-t)/e)<s&&(h=this.xmax,r=n+(s=l)*i)}else if(e<0){if(t<=this.xmin)return null;(l=(this.xmin-t)/e)<s&&(h=this.xmin,r=n+(s=l)*i)}return[h,r]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,i=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[i]||t[n+1]===t[e+1]&&t[e+1]===t[i+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const bt=2*Math.PI,X=Math.pow;function pt(_){return _[0]}function wt(_){return _[1]}function xt(_){const{triangles:t,coords:n}=_;for(let e=0;e<t.length;e+=3){const i=2*t[e],s=2*t[e+1],l=2*t[e+2];if((n[l]-n[i])*(n[s+1]-n[i+1])-(n[s]-n[i])*(n[l+1]-n[i+1])>1e-10)return!1}return!0}function Tt(_,t,n){return[_+Math.sin(_+t)*n,t+Math.cos(_-t)*n]}class J{static from(t,n=pt,e=wt,i){return new J("length"in t?At(t,n,e,i):Float64Array.from(vt(t,n,e,i)))}constructor(t){this._delaunator=new O(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&xt(t)){this.collinear=Int32Array.from({length:n.length/2},(c,u)=>u).sort((c,u)=>n[2*c]-n[2*u]||n[2*c+1]-n[2*u+1]);const r=this.collinear[0],a=this.collinear[this.collinear.length-1],f=[n[2*r],n[2*r+1],n[2*a],n[2*a+1]],o=1e-8*Math.hypot(f[3]-f[1],f[2]-f[0]);for(let c=0,u=n.length/2;c<u;++c){const d=Tt(n[2*c],n[2*c+1],o);n[2*c]=d[0],n[2*c+1]=d[1]}this._delaunator=new O(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,i=this.hull=this._delaunator.hull,s=this.triangles=this._delaunator.triangles,l=this.inedges.fill(-1),h=this._hullIndex.fill(-1);for(let r=0,a=e.length;r<a;++r){const f=s[r%3===2?r-2:r+1];(e[r]===-1||l[f]===-1)&&(l[f]=r)}for(let r=0,a=i.length;r<a;++r)h[i[r]]=r;i.length<=2&&i.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=i[0],l[i[0]]=1,i.length===2&&(l[i[1]]=0,this.triangles[1]=i[1],this.triangles[2]=i[1]))}voronoi(t){return new yt(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:i,halfedges:s,triangles:l,collinear:h}=this;if(h){const o=h.indexOf(t);o>0&&(yield h[o-1]),o<h.length-1&&(yield h[o+1]);return}const r=n[t];if(r===-1)return;let a=r,f=-1;do{if(yield f=l[a],a=a%3===2?a-2:a+1,l[a]!==t)return;if(a=s[a],a===-1){const o=e[(i[t]+1)%e.length];o!==f&&(yield o);return}}while(a!==r)}find(t,n,e=0){if(t=+t,t!==t||(n=+n,n!==n))return-1;const i=e;let s;for(;(s=this._step(e,t,n))>=0&&s!==e&&s!==i;)e=s;return s}_step(t,n,e){const{inedges:i,hull:s,_hullIndex:l,halfedges:h,triangles:r,points:a}=this;if(i[t]===-1||!a.length)return(t+1)%(a.length>>1);let f=t,o=X(n-a[t*2],2)+X(e-a[t*2+1],2);const c=i[t];let u=c;do{let d=r[u];const g=X(n-a[d*2],2)+X(e-a[d*2+1],2);if(g<o&&(o=g,f=d),u=u%3===2?u-2:u+1,r[u]!==t)break;if(u=h[u],u===-1){if(u=s[(l[t]+1)%s.length],u!==d&&X(n-a[u*2],2)+X(e-a[u*2+1],2)<o)return u;break}}while(u!==c);return f}render(t){const n=t==null?t=new H:void 0,{points:e,halfedges:i,triangles:s}=this;for(let l=0,h=i.length;l<h;++l){const r=i[l];if(r<l)continue;const a=s[l]*2,f=s[r]*2;t.moveTo(e[a],e[a+1]),t.lineTo(e[f],e[f+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){n===void 0&&(!t||typeof t.moveTo!="function")&&(n=t,t=null),n=n==null?2:+n;const e=t==null?t=new H:void 0,{points:i}=this;for(let s=0,l=i.length;s<l;s+=2){const h=i[s],r=i[s+1];t.moveTo(h+n,r),t.arc(h,r,n,0,bt)}return e&&e.value()}renderHull(t){const n=t==null?t=new H:void 0,{hull:e,points:i}=this,s=e[0]*2,l=e.length;t.moveTo(i[s],i[s+1]);for(let h=1;h<l;++h){const r=2*e[h];t.lineTo(i[r],i[r+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new R;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=n==null?n=new H:void 0,{points:i,triangles:s}=this,l=s[t*=3]*2,h=s[t+1]*2,r=s[t+2]*2;return n.moveTo(i[l],i[l+1]),n.lineTo(i[h],i[h+1]),n.lineTo(i[r],i[r+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new R;return this.renderTriangle(t,n),n.value()}}function At(_,t,n,e){const i=_.length,s=new Float64Array(i*2);for(let l=0;l<i;++l){const h=_[l];s[l*2]=t.call(e,h,l,_),s[l*2+1]=n.call(e,h,l,_)}return s}function*vt(_,t,n,e){let i=0;for(const s of _)yield t.call(e,s,i,_),yield n.call(e,s,i,_),++i}exports.Delaunay=J;
2
+ //# sourceMappingURL=delaunay-rcy0HhZi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delaunay-rcy0HhZi.cjs","sources":["../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/delaunator/index.js","../node_modules/d3-delaunay/src/path.js","../node_modules/d3-delaunay/src/polygon.js","../node_modules/d3-delaunay/src/voronoi.js","../node_modules/d3-delaunay/src/delaunay.js"],"sourcesContent":["export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0, minDist = Infinity; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n // find the point closest to the seed\n for (let i = 0, minDist = Infinity; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n const d = this._dists[id];\n if (d > d0) {\n hull[j++] = id;\n d0 = d;\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n","export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n let bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the “center” of\n // the diagram <bx, by>, defined as the hull’s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n bx /= hull.length, by /= hull.length;\n }\n const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] === cj[aj]\n && ci[ai + 1] === cj[aj + 1]\n && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return this._simplify(V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points));\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n const flip = c0 < c1;\n if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n _simplify(P) {\n if (P && P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n"],"names":["epsilon","splitter","resulterrbound","sum","elen","e","flen","f","h","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","i","vec","n","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","det","errbound","C1len","C2len","Dlen","orient2d","detleft","detright","EPSILON","EDGE_STACK","Delaunator","points","getX","defaultGetX","getY","defaultGetY","coords","p","maxTriangles","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","y","i0","i1","i2","minDist","d","dist","i0x","i0y","i1x","i1y","minRadius","r","circumradius","i2x","i2y","quicksort","hull","j","d0","id","center","circumcenter","hullSize","k","xp","yp","x","start","key","q","t","pseudoAngle","a","triangles","halfedges","ar","b","a0","b0","al","bl","p0","pr","pl","p1","inCircle","hbl","br","c","dx","dy","px","py","ex","ey","fx","fy","ap","bp","cp","cl","ids","dists","left","right","temp","tempDist","median","swap","arr","tmp","Path","x0","y0","w","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","vectors","circumcenters","t2","t3","x1","y1","x2","y2","x3","y3","ab","context","buffer","inedges","ti","tj","xi","yi","xj","yj","h0","h1","v","cell","polygon","S","c0","c1","ci","cj","loop","ai","li","aj","lj","e0","V","P","e1","sx0","sy0","sx1","sy1","flip","vx0","vy0","vxn","vyn","vx","vy","tau","pow","pointX","pointY","collinear","jitter","Delaunay","that","flatArray","flatIterable","_","bounds","hullIndex","_hullIndex","l","dc","dt","array"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
@@ -0,0 +1,102 @@
1
+ import { s as m } from "./index-DxagiOHo.js";
2
+ import { p as f } from "./parse-DlCRUFh_.js";
3
+ function h(o, a) {
4
+ const i = Array.from(new Set(o.map((t) => t.label))), n = Array.from(new Set(o.map((t) => t.date))).filter((t) => t !== void 0);
5
+ if (n.length === 0) return o;
6
+ const l = new Set(
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ o.map((t) => `${t.label}-${t.date}`)
9
+ ), s = o.reduce((t, r) => (t[r.label] || (t[r.label] = r.color), t), {}), e = [...o];
10
+ return i.forEach((t) => {
11
+ n.forEach((r) => {
12
+ l.has(`${t}-${r}`) || e.push({
13
+ label: t,
14
+ color: s[t],
15
+ // Keep the same color for the label
16
+ size: void 0,
17
+ date: r
18
+ });
19
+ });
20
+ }), m(e, (t) => f(`${t.date}`, a || "yyyy", /* @__PURE__ */ new Date()));
21
+ }
22
+ function u(o, a) {
23
+ const i = Array.from(new Set(o.map((e) => e.label))), n = Array.from(new Set(o.map((e) => e.date))).filter((e) => e !== void 0);
24
+ if (n.length === 0) return o;
25
+ const l = new Set(
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ o.map((e) => `${e.label}-${e.date}`)
28
+ ), s = [...o];
29
+ return i.forEach((e) => {
30
+ n.forEach((t) => {
31
+ l.has(`${e}-${t}`) || s.push({
32
+ label: e,
33
+ size: o[0].size.map((r) => null),
34
+ date: t
35
+ });
36
+ });
37
+ }), m(s, (e) => f(`${e.date}`, a || "yyyy", /* @__PURE__ */ new Date()));
38
+ }
39
+ function y(o, a) {
40
+ const i = Array.from(new Set(o.map((e) => e.label))), n = Array.from(new Set(o.map((e) => e.date))).filter((e) => e !== void 0);
41
+ if (n.length === 0) return o;
42
+ const l = new Set(
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ o.map((e) => `${e.label}-${e.date}`)
45
+ ), s = [...o];
46
+ return i.forEach((e) => {
47
+ n.forEach((t) => {
48
+ l.has(`${e}-${t}`) || s.push({
49
+ label: e,
50
+ leftBar: void 0,
51
+ rightBar: void 0,
52
+ date: t
53
+ });
54
+ });
55
+ }), m(s, (e) => f(`${e.date}`, a, /* @__PURE__ */ new Date()));
56
+ }
57
+ function $(o, a) {
58
+ const i = Array.from(new Set(o.map((t) => t.label))), n = Array.from(new Set(o.map((t) => t.date))).filter((t) => t !== void 0);
59
+ if (n.length === 0) return o;
60
+ const l = new Set(
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ o.map((t) => `${t.label}-${t.date}`)
63
+ ), s = o.reduce((t, r) => (t[r.label] || (t[r.label] = r.color), t), {}), e = [...o];
64
+ return i.forEach((t) => {
65
+ n.forEach((r) => {
66
+ l.has(`${t}-${r}`) || e.push({
67
+ label: t,
68
+ color: s[t],
69
+ // Keep the same color for the label
70
+ x: void 0,
71
+ y: void 0,
72
+ radius: void 0,
73
+ date: r
74
+ });
75
+ });
76
+ }), m(e, (t) => f(`${t.date}`, a, /* @__PURE__ */ new Date()));
77
+ }
78
+ function b(o, a) {
79
+ const i = Array.from(new Set(o.map((e) => e.label))), n = Array.from(new Set(o.map((e) => e.date))).filter((e) => e !== void 0);
80
+ if (n.length === 0) return o;
81
+ const l = new Set(
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ o.map((e) => `${e.label}-${e.date}`)
84
+ ), s = [...o];
85
+ return i.forEach((e) => {
86
+ n.forEach((t) => {
87
+ l.has(`${e}-${t}`) || s.push({
88
+ label: e,
89
+ x: o[0].x.map((r) => null),
90
+ date: t
91
+ });
92
+ });
93
+ }), m(s, (e) => f(`${e.date}`, a || "yyyy", /* @__PURE__ */ new Date()));
94
+ }
95
+ export {
96
+ y as a,
97
+ b,
98
+ h as c,
99
+ u as d,
100
+ $ as e
101
+ };
102
+ //# sourceMappingURL=ensureCompleteData-BBDZbDCE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureCompleteData-BBDZbDCE.js","sources":["../src/Utils/ensureCompleteData.ts"],"sourcesContent":["import sortBy from 'lodash.sortby';\r\nimport { parse } from 'date-fns/parse';\r\n\r\nimport {\r\n BarGraphDataType,\r\n ButterflyChartDataType,\r\n DumbbellChartDataType,\r\n GroupedBarGraphDataType,\r\n ScatterPlotDataType,\r\n} from '@/Types';\r\n\r\nexport function ensureCompleteDataForBarChart(data: BarGraphDataType[], dateFormat: string) {\r\n // Extract unique labels and dates\r\n const labels = Array.from(new Set(data.map(d => d.label)));\r\n const dates = Array.from(new Set(data.map(d => d.date))).filter(d => d !== undefined);\r\n if (dates.length === 0) return data;\r\n\r\n // Create a set of existing label-date combinations\r\n const existingCombinations = new Set(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data.map((d: any) => `${d.label}-${d.date}`),\r\n );\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const colors = data.reduce((acc: any, curr: any) => {\r\n if (!acc[curr.label]) {\r\n acc[curr.label] = curr.color;\r\n }\r\n return acc;\r\n }, {});\r\n\r\n // Add missing label-date combinations with size as undefined\r\n const completeData = [...data];\r\n\r\n labels.forEach(label => {\r\n dates.forEach(date => {\r\n if (!existingCombinations.has(`${label}-${date}`)) {\r\n completeData.push({\r\n label,\r\n color: colors[label], // Keep the same color for the label\r\n size: undefined,\r\n date,\r\n });\r\n }\r\n });\r\n });\r\n\r\n return sortBy(completeData, d => parse(`${d.date}`, dateFormat || 'yyyy', new Date()));\r\n}\r\n\r\nexport function ensureCompleteDataForStackedBarChart(\r\n data: GroupedBarGraphDataType[],\r\n dateFormat: string,\r\n) {\r\n // Extract unique labels and dates\r\n const labels = Array.from(new Set(data.map(d => d.label)));\r\n const dates = Array.from(new Set(data.map(d => d.date))).filter(d => d !== undefined);\r\n if (dates.length === 0) return data;\r\n // Create a set of existing label-date combinations\r\n const existingCombinations = new Set(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data.map((d: any) => `${d.label}-${d.date}`),\r\n );\r\n\r\n // Add missing label-date combinations with size as undefined\r\n const completeData = [...data];\r\n\r\n labels.forEach(label => {\r\n dates.forEach(date => {\r\n if (!existingCombinations.has(`${label}-${date}`)) {\r\n completeData.push({\r\n label,\r\n size: data[0].size.map(_d => null),\r\n date,\r\n });\r\n }\r\n });\r\n });\r\n\r\n return sortBy(completeData, d => parse(`${d.date}`, dateFormat || 'yyyy', new Date()));\r\n}\r\n\r\nexport function ensureCompleteDataForButterFlyChart(\r\n data: ButterflyChartDataType[],\r\n dateFormat: string,\r\n) {\r\n // Extract unique labels and dates\r\n const labels = Array.from(new Set(data.map(d => d.label)));\r\n const dates = Array.from(new Set(data.map(d => d.date))).filter(d => d !== undefined);\r\n if (dates.length === 0) return data;\r\n\r\n // Create a set of existing label-date combinations\r\n const existingCombinations = new Set(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data.map((d: any) => `${d.label}-${d.date}`),\r\n );\r\n\r\n // Add missing label-date combinations with size as undefined\r\n const completeData = [...data];\r\n\r\n labels.forEach(label => {\r\n dates.forEach(date => {\r\n if (!existingCombinations.has(`${label}-${date}`)) {\r\n completeData.push({\r\n label,\r\n leftBar: undefined,\r\n rightBar: undefined,\r\n date,\r\n });\r\n }\r\n });\r\n });\r\n\r\n return sortBy(completeData, d => parse(`${d.date}`, dateFormat || 'yyyy', new Date()));\r\n}\r\n\r\nexport function ensureCompleteDataForScatterPlot(data: ScatterPlotDataType[], dateFormat: string) {\r\n // Extract unique labels and dates\r\n const labels = Array.from(new Set(data.map(d => d.label)));\r\n const dates = Array.from(new Set(data.map(d => d.date))).filter(d => d !== undefined);\r\n if (dates.length === 0) return data;\r\n\r\n // Create a set of existing label-date combinations\r\n const existingCombinations = new Set(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data.map((d: any) => `${d.label}-${d.date}`),\r\n );\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const colors = data.reduce((acc: any, curr: any) => {\r\n if (!acc[curr.label]) {\r\n acc[curr.label] = curr.color;\r\n }\r\n return acc;\r\n }, {});\r\n\r\n // Add missing label-date combinations with size as undefined\r\n const completeData = [...data];\r\n\r\n labels.forEach(label => {\r\n dates.forEach(date => {\r\n if (!existingCombinations.has(`${label}-${date}`)) {\r\n completeData.push({\r\n label,\r\n color: colors[label], // Keep the same color for the label\r\n x: undefined,\r\n y: undefined,\r\n radius: undefined,\r\n date,\r\n });\r\n }\r\n });\r\n });\r\n\r\n return sortBy(completeData, d => parse(`${d.date}`, dateFormat || 'yyyy', new Date()));\r\n}\r\n\r\nexport function ensureCompleteDataForDumbbellChart(\r\n data: DumbbellChartDataType[],\r\n dateFormat: string,\r\n) {\r\n // Extract unique labels and dates\r\n const labels = Array.from(new Set(data.map(d => d.label)));\r\n const dates = Array.from(new Set(data.map(d => d.date))).filter(d => d !== undefined);\r\n if (dates.length === 0) return data;\r\n\r\n // Create a set of existing label-date combinations\r\n const existingCombinations = new Set(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n data.map((d: any) => `${d.label}-${d.date}`),\r\n );\r\n\r\n // Add missing label-date combinations with size as undefined\r\n const completeData = [...data];\r\n\r\n labels.forEach(label => {\r\n dates.forEach(date => {\r\n if (!existingCombinations.has(`${label}-${date}`)) {\r\n completeData.push({\r\n label,\r\n x: data[0].x.map(_d => null),\r\n date,\r\n });\r\n }\r\n });\r\n });\r\n\r\n return sortBy(completeData, d => parse(`${d.date}`, dateFormat || 'yyyy', new Date()));\r\n}\r\n"],"names":["ensureCompleteDataForBarChart","data","dateFormat","labels","d","dates","existingCombinations","colors","acc","curr","completeData","label","date","sortBy","parse","ensureCompleteDataForStackedBarChart","ensureCompleteDataForButterFlyChart","ensureCompleteDataForScatterPlot","ensureCompleteDataForDumbbellChart"],"mappings":"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"}