@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.
- package/dist/AreaChart.d.ts +224 -0
- package/dist/AreaChart.js +2 -0
- package/dist/AreaChart.js.map +1 -0
- package/dist/Axis-BlyBRMNw.cjs +2 -0
- package/dist/Axis-BlyBRMNw.cjs.map +1 -0
- package/dist/Axis-CvK-w3E2.js +44 -0
- package/dist/Axis-CvK-w3E2.js.map +1 -0
- package/dist/AxisTitle-BY8MI9jC.cjs +2 -0
- package/dist/AxisTitle-BY8MI9jC.cjs.map +1 -0
- package/dist/AxisTitle-BeMxcw5I.js +21 -0
- package/dist/AxisTitle-BeMxcw5I.js.map +1 -0
- package/dist/BarGraph.d.ts +460 -0
- package/dist/BarGraph.js +2 -0
- package/dist/BarGraph.js.map +1 -0
- package/dist/BasicStatCard.d.ts +106 -0
- package/dist/BasicStatCard.js +2 -0
- package/dist/BasicStatCard.js.map +1 -0
- package/dist/BeeSwarmChart.d.ts +189 -0
- package/dist/BeeSwarmChart.js +2 -0
- package/dist/BeeSwarmChart.js.map +1 -0
- package/dist/BiVariateChoroplethMap.d.ts +189 -0
- package/dist/BiVariateChoroplethMap.js +2 -0
- package/dist/BiVariateChoroplethMap.js.map +1 -0
- package/dist/BulletChart.d.ts +219 -0
- package/dist/BulletChart.js +2 -0
- package/dist/BulletChart.js.map +1 -0
- package/dist/ButterflyChart.d.ts +201 -0
- package/dist/ButterflyChart.js +2 -0
- package/dist/ButterflyChart.js.map +1 -0
- package/dist/ChoroplethMap.d.ts +190 -0
- package/dist/ChoroplethMap.js +2 -0
- package/dist/ChoroplethMap.js.map +1 -0
- package/dist/CirclePackingGraph.d.ts +161 -0
- package/dist/CirclePackingGraph.js +2 -0
- package/dist/CirclePackingGraph.js.map +1 -0
- package/dist/ColorLegend.d.ts +17 -0
- package/dist/ColorLegend.js +2 -0
- package/dist/ColorLegend.js.map +1 -0
- package/dist/ColorLegendWithMouseOver.d.ts +16 -0
- package/dist/ColorLegendWithMouseOver.js +2 -0
- package/dist/ColorLegendWithMouseOver.js.map +1 -0
- package/dist/Colors.d.ts +174 -0
- package/dist/Colors.js +2 -0
- package/dist/Colors.js.map +1 -0
- package/dist/CopyTextButton.d.ts +13 -0
- package/dist/CopyTextButton.js +17 -0
- package/dist/CopyTextButton.js.map +1 -0
- package/dist/CsvDownloadButton.d.ts +22 -0
- package/dist/CsvDownloadButton.js +23 -0
- package/dist/CsvDownloadButton.js.map +1 -0
- package/dist/DataCards.d.ts +131 -0
- package/dist/DataCards.js +2 -0
- package/dist/DataCards.js.map +1 -0
- package/dist/DataTable.d.ts +122 -0
- package/dist/DataTable.js +2 -0
- package/dist/DataTable.js.map +1 -0
- package/dist/DifferenceLineChart.d.ts +237 -0
- package/dist/DifferenceLineChart.js +2 -0
- package/dist/DifferenceLineChart.js.map +1 -0
- package/dist/DonutChart.d.ts +148 -0
- package/dist/DonutChart.js +2 -0
- package/dist/DonutChart.js.map +1 -0
- package/dist/DotDensityMap.d.ts +191 -0
- package/dist/DotDensityMap.js +2 -0
- package/dist/DotDensityMap.js.map +1 -0
- package/dist/DropdownSelect-CuzV7gdj.cjs +29 -0
- package/dist/DropdownSelect-CuzV7gdj.cjs.map +1 -0
- package/dist/DropdownSelect-DmZsXrhY.js +2698 -0
- package/dist/DropdownSelect-DmZsXrhY.js.map +1 -0
- package/dist/DualAxisLineChart.d.ts +180 -0
- package/dist/DualAxisLineChart.js +2 -0
- package/dist/DualAxisLineChart.js.map +1 -0
- package/dist/DumbbellChart.d.ts +224 -0
- package/dist/DumbbellChart.js +2 -0
- package/dist/DumbbellChart.js.map +1 -0
- package/dist/EmptyState-BQguKAp5.cjs +2 -0
- package/dist/EmptyState-BQguKAp5.cjs.map +1 -0
- package/dist/EmptyState-b2Ln487i.js +22 -0
- package/dist/EmptyState-b2Ln487i.js.map +1 -0
- package/dist/ExcelDownloadButton.d.ts +22 -0
- package/dist/ExcelDownloadButton.js +2 -0
- package/dist/ExcelDownloadButton.js.map +1 -0
- package/dist/FootNote.d.ts +12 -0
- package/dist/FootNote.js +2 -0
- package/dist/FootNote.js.map +1 -0
- package/dist/GeoHubCompareMaps.d.ts +103 -0
- package/dist/GeoHubCompareMaps.js +2 -0
- package/dist/GeoHubCompareMaps.js.map +1 -0
- package/dist/GeoHubMap.d.ts +118 -0
- package/dist/GeoHubMap.js +2 -0
- package/dist/GeoHubMap.js.map +1 -0
- package/dist/GeoHubMapWithLayerSelection.d.ts +117 -0
- package/dist/GeoHubMapWithLayerSelection.js +2 -0
- package/dist/GeoHubMapWithLayerSelection.js.map +1 -0
- package/dist/GraphDescription.d.ts +12 -0
- package/dist/GraphDescription.js +2 -0
- package/dist/GraphDescription.js.map +1 -0
- package/dist/GraphFooter.d.ts +24 -0
- package/dist/GraphFooter.js +2 -0
- package/dist/GraphFooter.js.map +1 -0
- package/dist/GraphHeader.d.ts +22 -0
- package/dist/GraphHeader.js +2 -0
- package/dist/GraphHeader.js.map +1 -0
- package/dist/GraphTitle.d.ts +13 -0
- package/dist/GraphTitle.js +2 -0
- package/dist/GraphTitle.js.map +1 -0
- package/dist/GriddedGraphs.d.ts +540 -0
- package/dist/GriddedGraphs.js +2 -0
- package/dist/GriddedGraphs.js.map +1 -0
- package/dist/GriddedGraphsFromConfig.d.ts +543 -0
- package/dist/GriddedGraphsFromConfig.js +2 -0
- package/dist/GriddedGraphsFromConfig.js.map +1 -0
- package/dist/HeatMap.d.ts +166 -0
- package/dist/HeatMap.js +2 -0
- package/dist/HeatMap.js.map +1 -0
- package/dist/Histogram.d.ts +165 -0
- package/dist/Histogram.js +2 -0
- package/dist/Histogram.js.map +1 -0
- package/dist/ImageDownloadButton.d.ts +15 -0
- package/dist/ImageDownloadButton.js +2 -0
- package/dist/ImageDownloadButton.js.map +1 -0
- package/dist/LineChartWithConfidenceInterval.d.ts +250 -0
- package/dist/LineChartWithConfidenceInterval.js +2 -0
- package/dist/LineChartWithConfidenceInterval.js.map +1 -0
- package/dist/LinearColorLegend.d.ts +13 -0
- package/dist/LinearColorLegend.js +2 -0
- package/dist/LinearColorLegend.js.map +1 -0
- package/dist/Modal-C9txyGOk.js +723 -0
- package/dist/Modal-C9txyGOk.js.map +1 -0
- package/dist/Modal-cQF2UQIa.cjs +46 -0
- package/dist/Modal-cQF2UQIa.cjs.map +1 -0
- package/dist/MultiGraphDashboard.d.ts +558 -0
- package/dist/MultiGraphDashboard.js +2 -0
- package/dist/MultiGraphDashboard.js.map +1 -0
- package/dist/MultiGraphDashboardFromConfig.d.ts +562 -0
- package/dist/MultiGraphDashboardFromConfig.js +2 -0
- package/dist/MultiGraphDashboardFromConfig.js.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormat.d.ts +128 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.d.ts +133 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +2 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -0
- package/dist/MultiLineAltChart.d.ts +244 -0
- package/dist/MultiLineAltChart.js +2 -0
- package/dist/MultiLineAltChart.js.map +1 -0
- package/dist/MultiLineChart.d.ts +246 -0
- package/dist/MultiLineChart.js +2 -0
- package/dist/MultiLineChart.js.map +1 -0
- package/dist/ParetoChart.d.ts +178 -0
- package/dist/ParetoChart.js +2 -0
- package/dist/ParetoChart.js.map +1 -0
- package/dist/RadarChart.d.ts +176 -0
- package/dist/RadarChart.js +2 -0
- package/dist/RadarChart.js.map +1 -0
- package/dist/ReferenceLine-BgDdQbDI.js +129 -0
- package/dist/ReferenceLine-BgDdQbDI.js.map +1 -0
- package/dist/ReferenceLine-Bsb5jeE4.cjs +2 -0
- package/dist/ReferenceLine-Bsb5jeE4.cjs.map +1 -0
- package/dist/RegressionLine-BfpCuD7B.cjs +2 -0
- package/dist/RegressionLine-BfpCuD7B.cjs.map +1 -0
- package/dist/RegressionLine-cSljpHaE.js +49 -0
- package/dist/RegressionLine-cSljpHaE.js.map +1 -0
- package/dist/SVGDownloadButton.d.ts +15 -0
- package/dist/SVGDownloadButton.js +2 -0
- package/dist/SVGDownloadButton.js.map +1 -0
- package/dist/SankeyChart.d.ts +178 -0
- package/dist/SankeyChart.js +2 -0
- package/dist/SankeyChart.js.map +1 -0
- package/dist/ScatterPlot.d.ts +266 -0
- package/dist/ScatterPlot.js +2 -0
- package/dist/ScatterPlot.js.map +1 -0
- package/dist/ScrollStory.d.ts +491 -0
- package/dist/ScrollStory.js +2 -0
- package/dist/ScrollStory.js.map +1 -0
- package/dist/SimpleLineChart.d.ts +230 -0
- package/dist/SimpleLineChart.js +2 -0
- package/dist/SimpleLineChart.js.map +1 -0
- package/dist/SingleGraphDashboard.d.ts +545 -0
- package/dist/SingleGraphDashboard.js +2 -0
- package/dist/SingleGraphDashboard.js.map +1 -0
- package/dist/SingleGraphDashboardFromConfig.d.ts +547 -0
- package/dist/SingleGraphDashboardFromConfig.js +2 -0
- package/dist/SingleGraphDashboardFromConfig.js.map +1 -0
- package/dist/SlopeChart.d.ts +167 -0
- package/dist/SlopeChart.js +2 -0
- package/dist/SlopeChart.js.map +1 -0
- package/dist/Source.d.ts +16 -0
- package/dist/Source.js +2 -0
- package/dist/Source.js.map +1 -0
- package/dist/SparkLine.d.ts +139 -0
- package/dist/SparkLine.js +2 -0
- package/dist/SparkLine.js.map +1 -0
- package/dist/Spinner-DN3s4S0H.js +17 -0
- package/dist/Spinner-DN3s4S0H.js.map +1 -0
- package/dist/Spinner-UmN-KPe9.cjs +2 -0
- package/dist/Spinner-UmN-KPe9.cjs.map +1 -0
- package/dist/StatCardFromData.d.ts +115 -0
- package/dist/StatCardFromData.js +2 -0
- package/dist/StatCardFromData.js.map +1 -0
- package/dist/StripChart.d.ts +178 -0
- package/dist/StripChart.js +2 -0
- package/dist/StripChart.js.map +1 -0
- package/dist/ThreeDGlobe.d.ts +158 -0
- package/dist/ThreeDGlobe.js +2 -0
- package/dist/ThreeDGlobe.js.map +1 -0
- package/dist/ThresholdColorLegendWithMouseOver.d.ts +16 -0
- package/dist/ThresholdColorLegendWithMouseOver.js +2 -0
- package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -0
- package/dist/Tooltip-BM18N_3l.cjs +2 -0
- package/dist/Tooltip-BM18N_3l.cjs.map +1 -0
- package/dist/Tooltip-CzZ1wFyF.js +47 -0
- package/dist/Tooltip-CzZ1wFyF.js.map +1 -0
- package/dist/TreeMapGraph.d.ts +158 -0
- package/dist/TreeMapGraph.js +2 -0
- package/dist/TreeMapGraph.js.map +1 -0
- package/dist/Types.d.ts +883 -0
- package/dist/Types.js +2 -0
- package/dist/Types.js.map +1 -0
- package/dist/Typography-CDR-DAHH.cjs +2 -0
- package/dist/Typography-CDR-DAHH.cjs.map +1 -0
- package/dist/Typography-XJoSE-By.js +58 -0
- package/dist/Typography-XJoSE-By.js.map +1 -0
- package/dist/UnitChart.d.ts +132 -0
- package/dist/UnitChart.js +2 -0
- package/dist/UnitChart.js.map +1 -0
- package/dist/XAxesLabels-C9REbQQs.cjs +2 -0
- package/dist/XAxesLabels-C9REbQQs.cjs.map +1 -0
- package/dist/XAxesLabels-DVw7Lvuz.js +58 -0
- package/dist/XAxesLabels-DVw7Lvuz.js.map +1 -0
- package/dist/XTicksAndGridLines-CUefTINd.js +57 -0
- package/dist/XTicksAndGridLines-CUefTINd.js.map +1 -0
- package/dist/XTicksAndGridLines-DuK35ROS.cjs +2 -0
- package/dist/XTicksAndGridLines-DuK35ROS.cjs.map +1 -0
- package/dist/YAxesLabels-CYVY053X.js +53 -0
- package/dist/YAxesLabels-CYVY053X.js.map +1 -0
- package/dist/YAxesLabels-DhBdLk3Z.cjs +2 -0
- package/dist/YAxesLabels-DhBdLk3Z.cjs.map +1 -0
- package/dist/YTicksAndGridLines-BJRXuBdC.js +57 -0
- package/dist/YTicksAndGridLines-BJRXuBdC.js.map +1 -0
- package/dist/YTicksAndGridLines-CtLvzExe.cjs +2 -0
- package/dist/YTicksAndGridLines-CtLvzExe.cjs.map +1 -0
- package/dist/_commonjsHelpers-DKOUU3wS.cjs +2 -0
- package/dist/_commonjsHelpers-DKOUU3wS.cjs.map +1 -0
- package/dist/_commonjsHelpers-DaMA6jEr.js +9 -0
- package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
- package/dist/area-BE2wo7fv.js +53 -0
- package/dist/area-BE2wo7fv.js.map +1 -0
- package/dist/area-D3Qx7k7K.cjs +2 -0
- package/dist/area-D3Qx7k7K.cjs.map +1 -0
- package/dist/array-B7TkkRH0.js +89 -0
- package/dist/array-B7TkkRH0.js.map +1 -0
- package/dist/array-DKbXV8lR.cjs +2 -0
- package/dist/array-DKbXV8lR.cjs.map +1 -0
- package/dist/band-BEjh2CHI.js +47 -0
- package/dist/band-BEjh2CHI.js.map +1 -0
- package/dist/band-CAApY4Pd.cjs +2 -0
- package/dist/band-CAApY4Pd.cjs.map +1 -0
- package/dist/checkIfMultiple-CaefP4X2.js +2264 -0
- package/dist/checkIfMultiple-CaefP4X2.js.map +1 -0
- package/dist/checkIfMultiple-D3h8to1T.cjs +12 -0
- package/dist/checkIfMultiple-D3h8to1T.cjs.map +1 -0
- package/dist/checkIfNullOrUndefined.d.ts +15 -0
- package/dist/checkIfNullOrUndefined.js +2 -0
- package/dist/checkIfNullOrUndefined.js.map +1 -0
- package/dist/customArea-B47Ew5cT.cjs +2 -0
- package/dist/customArea-B47Ew5cT.cjs.map +1 -0
- package/dist/customArea-I3MsoqIl.js +176 -0
- package/dist/customArea-I3MsoqIl.js.map +1 -0
- package/dist/defaultLocale-BEa-49Qz.js +172 -0
- package/dist/defaultLocale-BEa-49Qz.js.map +1 -0
- package/dist/defaultLocale-DIVzfLaQ.cjs +2 -0
- package/dist/defaultLocale-DIVzfLaQ.cjs.map +1 -0
- package/dist/delaunay-C1uAf38t.js +684 -0
- package/dist/delaunay-C1uAf38t.js.map +1 -0
- package/dist/delaunay-rcy0HhZi.cjs +2 -0
- package/dist/delaunay-rcy0HhZi.cjs.map +1 -0
- package/dist/ensureCompleteData-BBDZbDCE.js +102 -0
- package/dist/ensureCompleteData-BBDZbDCE.js.map +1 -0
- package/dist/ensureCompleteData-DqWQ2Zbi.cjs +2 -0
- package/dist/ensureCompleteData-DqWQ2Zbi.cjs.map +1 -0
- package/dist/excelDownload.d.ts +31 -0
- package/dist/excelDownload.js +2 -0
- package/dist/excelDownload.js.map +1 -0
- package/dist/fetchAndParseData.d.ts +84 -0
- package/dist/fetchAndParseData.js +16 -0
- package/dist/fetchAndParseData.js.map +1 -0
- package/dist/filterData-B8ocT57s.js +14 -0
- package/dist/filterData-B8ocT57s.js.map +1 -0
- package/dist/filterData-DN6py7y_.cjs +2 -0
- package/dist/filterData-DN6py7y_.cjs.map +1 -0
- package/dist/generateCodes.d.ts +25 -0
- package/dist/generateCodes.js +2 -0
- package/dist/generateCodes.js.map +1 -0
- package/dist/generateRandomString-B5zBiJzS.cjs +2 -0
- package/dist/generateRandomString-B5zBiJzS.cjs.map +1 -0
- package/dist/generateRandomString-za3IQGfQ.js +11 -0
- package/dist/generateRandomString-za3IQGfQ.js.map +1 -0
- package/dist/getJenks.d.ts +17 -0
- package/dist/getJenks.js +2 -0
- package/dist/getJenks.js.map +1 -0
- package/dist/getPercentileValue.d.ts +13 -0
- package/dist/getPercentileValue.js +2 -0
- package/dist/getPercentileValue.js.map +1 -0
- package/dist/getQueryParamsFromLink.d.ts +18 -0
- package/dist/getQueryParamsFromLink.js +2 -0
- package/dist/getQueryParamsFromLink.js.map +1 -0
- package/dist/getSchema.d.ts +3256 -0
- package/dist/getSchema.js +2 -0
- package/dist/getSchema.js.map +1 -0
- package/dist/getSliderMarks-CWajGCGq.js +719 -0
- package/dist/getSliderMarks-CWajGCGq.js.map +1 -0
- package/dist/getSliderMarks-DDJ1CdhL.cjs +6 -0
- package/dist/getSliderMarks-DDJ1CdhL.cjs.map +1 -0
- package/dist/getTextColorBasedOnBgColor.d.ts +13 -0
- package/dist/getTextColorBasedOnBgColor.js +2 -0
- package/dist/getTextColorBasedOnBgColor.js.map +1 -0
- package/dist/getUniqValue.d.ts +18 -0
- package/dist/getUniqValue.js +2 -0
- package/dist/getUniqValue.js.map +1 -0
- package/dist/graphList.d.ts +9 -0
- package/dist/graphList.js +2 -0
- package/dist/graphList.js.map +1 -0
- package/dist/imageDownload.d.ts +16 -0
- package/dist/imageDownload.js +3 -0
- package/dist/imageDownload.js.map +1 -0
- package/dist/index-01r5X3Gr-9jE0ObrK.cjs +2 -0
- package/dist/index-01r5X3Gr-9jE0ObrK.cjs.map +1 -0
- package/dist/index-01r5X3Gr-kH7FxQ7P.js +451 -0
- package/dist/index-01r5X3Gr-kH7FxQ7P.js.map +1 -0
- package/dist/index-27yTRcko.js +35 -0
- package/dist/index-27yTRcko.js.map +1 -0
- package/dist/index-B0rbzOoC.cjs +2 -0
- package/dist/index-B0rbzOoC.cjs.map +1 -0
- package/dist/index-BGMGC-HN.cjs +22 -0
- package/dist/index-BGMGC-HN.cjs.map +1 -0
- package/dist/index-BHm2KTjD-2e-Fu8L-.js +702 -0
- package/dist/index-BHm2KTjD-2e-Fu8L-.js.map +1 -0
- package/dist/index-BHm2KTjD-D8FylaKc.cjs +44 -0
- package/dist/index-BHm2KTjD-D8FylaKc.cjs.map +1 -0
- package/dist/index-BIPNFFja.js +506 -0
- package/dist/index-BIPNFFja.js.map +1 -0
- package/dist/index-BLizQDlg.js +658 -0
- package/dist/index-BLizQDlg.js.map +1 -0
- package/dist/index-BXns0-ng.cjs +2 -0
- package/dist/index-BXns0-ng.cjs.map +1 -0
- package/dist/index-BYroABPm.cjs +2 -0
- package/dist/index-BYroABPm.cjs.map +1 -0
- package/dist/index-BczVvEBZ.cjs +2 -0
- package/dist/index-BczVvEBZ.cjs.map +1 -0
- package/dist/index-BzeLQvXk.cjs +2 -0
- package/dist/index-BzeLQvXk.cjs.map +1 -0
- package/dist/index-C1rRk_50.js +273 -0
- package/dist/index-C1rRk_50.js.map +1 -0
- package/dist/index-C21TvELx.cjs +2 -0
- package/dist/index-C21TvELx.cjs.map +1 -0
- package/dist/index-CEc_9zWy.cjs +2 -0
- package/dist/index-CEc_9zWy.cjs.map +1 -0
- package/dist/index-CZbIGs8q.cjs +2 -0
- package/dist/index-CZbIGs8q.cjs.map +1 -0
- package/dist/index-CaAIPGZo.js +631 -0
- package/dist/index-CaAIPGZo.js.map +1 -0
- package/dist/index-CbVeVrla.cjs +2 -0
- package/dist/index-CbVeVrla.cjs.map +1 -0
- package/dist/index-CqzhBPuO-CfQywbdq.js +41 -0
- package/dist/index-CqzhBPuO-CfQywbdq.js.map +1 -0
- package/dist/index-CqzhBPuO-raKZqS7l.cjs +2 -0
- package/dist/index-CqzhBPuO-raKZqS7l.cjs.map +1 -0
- package/dist/index-D7ltPi18.js +26 -0
- package/dist/index-D7ltPi18.js.map +1 -0
- package/dist/index-DSnvdkHZ.js +495 -0
- package/dist/index-DSnvdkHZ.js.map +1 -0
- package/dist/index-DXmF_0ez.js +308 -0
- package/dist/index-DXmF_0ez.js.map +1 -0
- package/dist/index-Db-Yg_Ud.js +120 -0
- package/dist/index-Db-Yg_Ud.js.map +1 -0
- package/dist/index-Ds0uHjK9.cjs +2 -0
- package/dist/index-Ds0uHjK9.cjs.map +1 -0
- package/dist/index-DxagiOHo.js +707 -0
- package/dist/index-DxagiOHo.js.map +1 -0
- package/dist/index-DzdwZ2OA.js +77 -0
- package/dist/index-DzdwZ2OA.js.map +1 -0
- package/dist/index-UV9hjG_S.js +53 -0
- package/dist/index-UV9hjG_S.js.map +1 -0
- package/dist/index-a2C2Bqn2.cjs +10 -0
- package/dist/index-a2C2Bqn2.cjs.map +1 -0
- package/dist/index.js +1 -52488
- package/dist/index.js.map +1 -1
- package/dist/init-BhZylTFx.js +63 -0
- package/dist/init-BhZylTFx.js.map +1 -0
- package/dist/init-DU0ybBc_.cjs +2 -0
- package/dist/init-DU0ybBc_.cjs.map +1 -0
- package/dist/line-CPfhohvF.js +68 -0
- package/dist/line-CPfhohvF.js.map +1 -0
- package/dist/line-DHV4JwCR.cjs +2 -0
- package/dist/line-DHV4JwCR.cjs.map +1 -0
- package/dist/linear-BVckp9RD.cjs +2 -0
- package/dist/linear-BVckp9RD.cjs.map +1 -0
- package/dist/linear-DUdu7l2G.js +221 -0
- package/dist/linear-DUdu7l2G.js.map +1 -0
- package/dist/numberFormattingFunction.d.ts +22 -0
- package/dist/numberFormattingFunction.js +2 -0
- package/dist/numberFormattingFunction.js.map +1 -0
- package/dist/ordinal-BOeNbyae.cjs +2 -0
- package/dist/ordinal-BOeNbyae.cjs.map +1 -0
- package/dist/ordinal-w9Lu4Stb.js +62 -0
- package/dist/ordinal-w9Lu4Stb.js.map +1 -0
- package/dist/parse-DlCRUFh_.js +2768 -0
- package/dist/parse-DlCRUFh_.js.map +1 -0
- package/dist/parse-hMnG_lRV.cjs +2 -0
- package/dist/parse-hMnG_lRV.cjs.map +1 -0
- package/dist/pointer-CWRWOsrb.js +23 -0
- package/dist/pointer-CWRWOsrb.js.map +1 -0
- package/dist/pointer-Dkq5NV1q.cjs +2 -0
- package/dist/pointer-Dkq5NV1q.cjs.map +1 -0
- package/dist/pow-B5-jkdHU.cjs +2 -0
- package/dist/pow-B5-jkdHU.cjs.map +1 -0
- package/dist/pow-e8zx3AQJ.js +35 -0
- package/dist/pow-e8zx3AQJ.js.map +1 -0
- package/dist/removeOutliers.d.ts +16 -0
- package/dist/removeOutliers.js +2 -0
- package/dist/removeOutliers.js.map +1 -0
- package/dist/select-Bnfk0lJx.cjs +2 -0
- package/dist/select-Bnfk0lJx.cjs.map +1 -0
- package/dist/select-DKy99ogv.js +584 -0
- package/dist/select-DKy99ogv.js.map +1 -0
- package/dist/simple-statistics-flVzqVtt.js +65 -0
- package/dist/simple-statistics-flVzqVtt.js.map +1 -0
- package/dist/simple-statistics-xm8c0LQQ.cjs +2 -0
- package/dist/simple-statistics-xm8c0LQQ.cjs.map +1 -0
- package/dist/step-BZ3C8QFW.cjs +2 -0
- package/dist/step-BZ3C8QFW.cjs.map +1 -0
- package/dist/step-BrDul-H4.js +119 -0
- package/dist/step-BrDul-H4.js.map +1 -0
- package/dist/string-B8KlVSPX.js +364 -0
- package/dist/string-B8KlVSPX.js.map +1 -0
- package/dist/string-CRoCZCYa.cjs +2 -0
- package/dist/string-CRoCZCYa.cjs.map +1 -0
- package/dist/string2HTML-BX0oNw83.js +758 -0
- package/dist/string2HTML-BX0oNw83.js.map +1 -0
- package/dist/string2HTML-X4ZYX5jI.cjs +3 -0
- package/dist/string2HTML-X4ZYX5jI.cjs.map +1 -0
- package/dist/style.css +1 -1
- package/dist/svgDownload.d.ts +16 -0
- package/dist/svgDownload.js +2 -0
- package/dist/svgDownload.js.map +1 -0
- package/dist/threshold-DFfqcDMa.js +23 -0
- package/dist/threshold-DFfqcDMa.js.map +1 -0
- package/dist/threshold-DNsSUf8Q.cjs +2 -0
- package/dist/threshold-DNsSUf8Q.cjs.map +1 -0
- package/dist/time-Byw_jYQ7.cjs +2 -0
- package/dist/time-Byw_jYQ7.cjs.map +1 -0
- package/dist/time-BzJP5SPC.js +715 -0
- package/dist/time-BzJP5SPC.js.map +1 -0
- package/dist/timer-B39XOBYL.js +124 -0
- package/dist/timer-B39XOBYL.js.map +1 -0
- package/dist/timer-CKyBCVzT.cjs +2 -0
- package/dist/timer-CKyBCVzT.cjs.map +1 -0
- package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js +139 -0
- package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js.map +1 -0
- package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs +4 -0
- package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs.map +1 -0
- package/dist/transformColumnsToArray.d.ts +38 -0
- package/dist/transformColumnsToArray.js +2 -0
- package/dist/transformColumnsToArray.js.map +1 -0
- package/dist/transformDataForAggregation.d.ts +38 -0
- package/dist/transformDataForAggregation.js +2 -0
- package/dist/transformDataForAggregation.js.map +1 -0
- package/dist/transformDataForGraph.d.ts +47 -0
- package/dist/transformDataForGraph.js +2 -0
- package/dist/transformDataForGraph.js.map +1 -0
- package/dist/transformDataForGraphFromFile.d.ts +66 -0
- package/dist/transformDataForGraphFromFile.js +2 -0
- package/dist/transformDataForGraphFromFile.js.map +1 -0
- package/dist/use-in-view-CZPXmTZM.js +4645 -0
- package/dist/use-in-view-CZPXmTZM.js.map +1 -0
- package/dist/use-in-view-Dl1CsAIo.cjs +2 -0
- package/dist/use-in-view-Dl1CsAIo.cjs.map +1 -0
- package/dist/validateSchema.d.ts +68 -0
- package/dist/validateSchema.js +2 -0
- package/dist/validateSchema.js.map +1 -0
- package/dist/x-Dft9NVe_-DcB7wtv5.js +61 -0
- package/dist/x-Dft9NVe_-DcB7wtv5.js.map +1 -0
- package/dist/x-Dft9NVe_-LeyJu02C.cjs +27 -0
- package/dist/x-Dft9NVe_-LeyJu02C.cjs.map +1 -0
- package/dist/y-D0sAaVii.js +421 -0
- package/dist/y-D0sAaVii.js.map +1 -0
- package/dist/y-QcCbqrzx.cjs +2 -0
- package/dist/y-QcCbqrzx.cjs.map +1 -0
- package/dist/zoom-Lo7IAUfC.cjs +2 -0
- package/dist/zoom-Lo7IAUfC.cjs.map +1 -0
- package/dist/zoom-_lqdiGoI.js +1983 -0
- package/dist/zoom-_lqdiGoI.js.map +1 -0
- package/package.json +415 -4
- package/dist/index.cjs +0 -68
- package/dist/index.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoom-_lqdiGoI.js","sources":["../node_modules/d3-array/src/fsum.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-timer/src/timeout.js","../node_modules/@turf/helpers/dist/esm/index.js","../node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/bbox/dist/esm/index.js","../node_modules/@turf/centroid/dist/esm/index.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 180) {\n return angle - 360;\n } else if (angle < -180) {\n return angle + 360;\n }\n return angle;\n}\nfunction radiansToDegrees(radians) {\n const normalisedRadians = radians % (2 * Math.PI);\n return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const normalisedDegrees = degrees % 360;\n return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { point } from \"@turf/helpers\";\nimport { coordEach } from \"@turf/meta\";\nfunction centroid(geojson, options = {}) {\n let xSum = 0;\n let ySum = 0;\n let len = 0;\n coordEach(\n geojson,\n function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n },\n true\n );\n return point([xSum / len, ySum / len], options.properties);\n}\nvar turf_centroid_default = centroid;\nexport {\n centroid,\n turf_centroid_default as default\n};\n//# sourceMappingURL=index.js.map","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(2),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 2 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default x => x;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n"],"names":["Adder","x","p","j","y","hi","lo","n","flatten","arrays","array","merge","degrees","identity","decompose","a","b","c","d","e","f","scaleX","scaleY","skewX","svgNode","parseCss","value","m","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","s","translate","xa","ya","xb","yb","q","i","number","rotate","scale","t","o","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom","p0","p1","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","S","d1","b0","b1","r0","r1","coshr0","u","_","_1","_2","_4","timeout","callback","delay","time","Timer","elapsed","feature","geom","properties","options","feat","point","coordinates","isNumber","num","coordEach","geojson","excludeWrapCoord","k","l","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","type","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","bbox","result","coord","turf_bbox_default","centroid","xSum","ySum","len","turf_centroid_default","epsilon","pi","halfPi","quarterPi","tau","radians","abs","atan","atan2","cos","exp","log","sin","sign","sqrt","tan","acos","asin","noop","streamGeometry","stream","streamGeometryType","streamObjectType","object","features","streamLine","streamPolygon","geometries","closed","coordinate","geoStream","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","z","forward","circleStream","radius","delta","direction","t0","t1","cosRadius","sinRadius","step","circleRadius","clipBuffer","lines","line","pointEqual","Intersection","points","other","entry","clipRejoin","segments","compareIntersection","startInside","interpolate","subject","clip","segment","link","start","current","isSubject","longitude","polygonContains","polygon","sinPhi","normal","angle","winding","sum","ring","point0","lambda0","phi0","sinPhi0","cosPhi0","lambda1","sinPhi1","cosPhi1","point1","phi1","absDelta","antimeridian","arc","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","lineStart","lineEnd","pointRing","ringStart","ringEnd","pointLine","clean","ringSegments","validSegment","clipAntimeridian","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","to","clipCircle","cr","smallRadius","notHemisphere","visible","c0","v0","v00","point2","v","code","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","A","B","w","uu","t2","polar","meridian","q1","r","x0","y0","x1","y1","ax","ay","bx","by","clipMax","clipMin","clipRectangle","a1","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","first","clipStream","polygonStart","polygonEnd","polygonInside","a0","cleanInside","linePoint","identity$1","boundsStream","boundsPoint","bounds","transformer","methods","TransformStream","key","fit","projection","fitBounds","fitExtent","extent","h","fitSize","size","fitWidth","width","fitHeight","height","maxDepth","cosMinDistance","resample","project","delta2","resampleNone","resampleLineTo","depth","phi2","lambda2","x2","y2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","sx","sy","transform","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","bi","ci","fi","projectionMutator","projectAt","theta","preclip","postclip","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","invert","reset","recenter","center","conicProjection","cylindricalEqualAreaRaw","conicEqualAreaRaw","sy0","r0y","conicEqualArea","albers","multiplex","streams","geoAlbersUsa","lower48","lower48Point","alaska","alaskaPoint","hawaii","hawaiiPoint","pointStream","albersUsa","azimuthalInvert","sc","cc","mercatorRaw","geoMercator","mercatorProjection","clipExtent","reclip","A1","A2","A3","A4","M","iterations","equalEarthRaw","l2","l6","fy","fpy","geoEqualEarth","naturalEarth1Raw","phi4","geoNaturalEarth1","orthographicRaw","geoOrthographic","nonpassivecapture","noevent$1","event","dragDisable","view","root","selection","select","noevent","yesdrag","noclick","emptyOn","dispatch","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","node","name","id","index","group","timing","schedules","create","init","get","set","self","tween","timer","tick","interrupt","active","empty","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolateNumber","color","interpolateRgb","interpolateString","attrRemove","attrRemoveNS","fullname","attrConstant","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","string10","attrFunctionNS","transition_attr","namespace","attrInterpolate","attrInterpolateNS","attrTweenNS","i0","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","match","matcher","groups","subgroups","subgroup","Transition","transition_merge","groups0","groups1","m0","m1","merges","group0","group1","onFunction","listener","on0","on1","sit","on","transition_on","removeFunction","parent","transition_remove","transition_select","selector","subnode","transition_selectAll","selectorAll","parents","children","child","inherit","Selection","transition_selection","styleNull","style","styleRemove","styleConstant","styleFunction","styleMaybeRemove","listener0","remove","transition_style","priority","styleInterpolate","styleTween","transition_styleTween","textConstant","textFunction","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","that","resolve","reject","cancel","end","selection_prototype","cubicInOut","defaultTiming","easeCubicInOut","selection_transition","now","constant","ZoomEvent","sourceEvent","target","Transform","location","nopropagation","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","translateExtent","dx0","dx1","dy0","dy1","filter","constrain","wheelDelta","touchable","scaleExtent","duration","listeners","touchstarting","touchfirst","touchending","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","collection","gesture","k0","k1","args","g","Gesture","pointer","wheelidled","currentTarget","mousemoved","mouseupped","dragEnable","touches","started","l0","l1","dp","dl"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77]}
|