@undp/data-viz 1.2.8 → 1.3.1
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.cjs +2 -0
- package/dist/AreaChart.cjs.map +1 -0
- package/dist/AreaChart.d.ts +224 -0
- package/dist/AreaChart.js +531 -0
- package/dist/AreaChart.js.map +1 -0
- package/dist/Axis-DE7dSn1_.cjs +2 -0
- package/dist/Axis-DE7dSn1_.cjs.map +1 -0
- package/dist/Axis-Ddg-seDi.js +43 -0
- package/dist/Axis-Ddg-seDi.js.map +1 -0
- package/dist/AxisTitle-BmHLMRJZ.js +20 -0
- package/dist/AxisTitle-BmHLMRJZ.js.map +1 -0
- package/dist/AxisTitle-CK9YeovX.cjs +2 -0
- package/dist/AxisTitle-CK9YeovX.cjs.map +1 -0
- package/dist/BarGraph.cjs +2 -0
- package/dist/BarGraph.cjs.map +1 -0
- package/dist/BarGraph.d.ts +460 -0
- package/dist/BarGraph.js +4044 -0
- package/dist/BarGraph.js.map +1 -0
- package/dist/BasicStatCard.cjs +2 -0
- package/dist/BasicStatCard.cjs.map +1 -0
- package/dist/BasicStatCard.d.ts +106 -0
- package/dist/BasicStatCard.js +191 -0
- package/dist/BasicStatCard.js.map +1 -0
- package/dist/BeeSwarmChart.cjs +2 -0
- package/dist/BeeSwarmChart.cjs.map +1 -0
- package/dist/BeeSwarmChart.d.ts +181 -0
- package/dist/BeeSwarmChart.js +1043 -0
- package/dist/BeeSwarmChart.js.map +1 -0
- package/dist/BiVariateChoroplethMap.cjs +2 -0
- package/dist/BiVariateChoroplethMap.cjs.map +1 -0
- package/dist/BiVariateChoroplethMap.d.ts +189 -0
- package/dist/BiVariateChoroplethMap.js +721 -0
- package/dist/BiVariateChoroplethMap.js.map +1 -0
- package/dist/BulletChart.cjs +2 -0
- package/dist/BulletChart.cjs.map +1 -0
- package/dist/BulletChart.d.ts +219 -0
- package/dist/BulletChart.js +1432 -0
- package/dist/BulletChart.js.map +1 -0
- package/dist/ButterflyChart.cjs +2 -0
- package/dist/ButterflyChart.cjs.map +1 -0
- package/dist/ButterflyChart.d.ts +201 -0
- package/dist/ButterflyChart.js +693 -0
- package/dist/ButterflyChart.js.map +1 -0
- package/dist/ChoroplethMap.cjs +2 -0
- package/dist/ChoroplethMap.cjs.map +1 -0
- package/dist/ChoroplethMap.d.ts +190 -0
- package/dist/ChoroplethMap.js +746 -0
- package/dist/ChoroplethMap.js.map +1 -0
- package/dist/CirclePackingGraph.cjs +2 -0
- package/dist/CirclePackingGraph.cjs.map +1 -0
- package/dist/CirclePackingGraph.d.ts +153 -0
- package/dist/CirclePackingGraph.js +15 -0
- package/dist/CirclePackingGraph.js.map +1 -0
- package/dist/ColorLegend.cjs +2 -0
- package/dist/ColorLegend.cjs.map +1 -0
- package/dist/ColorLegend.d.ts +17 -0
- package/dist/ColorLegend.js +48 -0
- package/dist/ColorLegend.js.map +1 -0
- package/dist/ColorLegendWithMouseOver.cjs +2 -0
- package/dist/ColorLegendWithMouseOver.cjs.map +1 -0
- package/dist/ColorLegendWithMouseOver.d.ts +16 -0
- package/dist/ColorLegendWithMouseOver.js +71 -0
- package/dist/ColorLegendWithMouseOver.js.map +1 -0
- package/dist/Colors.cjs +2 -0
- package/dist/Colors.cjs.map +1 -0
- package/dist/Colors.d.ts +174 -0
- package/dist/Colors.js +562 -0
- package/dist/Colors.js.map +1 -0
- package/dist/CopyTextButton.cjs +17 -0
- package/dist/CopyTextButton.cjs.map +1 -0
- package/dist/CopyTextButton.d.ts +13 -0
- package/dist/CopyTextButton.js +699 -0
- package/dist/CopyTextButton.js.map +1 -0
- package/dist/CsvDownloadButton.cjs +23 -0
- package/dist/CsvDownloadButton.cjs.map +1 -0
- package/dist/CsvDownloadButton.d.ts +22 -0
- package/dist/CsvDownloadButton.js +868 -0
- package/dist/CsvDownloadButton.js.map +1 -0
- package/dist/DataCards.cjs +2 -0
- package/dist/DataCards.cjs.map +1 -0
- package/dist/DataCards.d.ts +131 -0
- package/dist/DataCards.js +15 -0
- package/dist/DataCards.js.map +1 -0
- package/dist/DataTable.cjs +2 -0
- package/dist/DataTable.cjs.map +1 -0
- package/dist/DataTable.d.ts +122 -0
- package/dist/DataTable.js +332 -0
- package/dist/DataTable.js.map +1 -0
- package/dist/DifferenceLineChart.cjs +2 -0
- package/dist/DifferenceLineChart.cjs.map +1 -0
- package/dist/DifferenceLineChart.d.ts +237 -0
- package/dist/DifferenceLineChart.js +806 -0
- package/dist/DifferenceLineChart.js.map +1 -0
- package/dist/DonutChart.cjs +2 -0
- package/dist/DonutChart.cjs.map +1 -0
- package/dist/DonutChart.d.ts +148 -0
- package/dist/DonutChart.js +479 -0
- package/dist/DonutChart.js.map +1 -0
- package/dist/DotDensityMap.cjs +2 -0
- package/dist/DotDensityMap.cjs.map +1 -0
- package/dist/DotDensityMap.d.ts +191 -0
- package/dist/DotDensityMap.js +601 -0
- package/dist/DotDensityMap.js.map +1 -0
- package/dist/DropdownSelect-0I2QxaVy.cjs +29 -0
- package/dist/DropdownSelect-0I2QxaVy.cjs.map +1 -0
- package/dist/DropdownSelect-CDC9lEqU.js +4193 -0
- package/dist/DropdownSelect-CDC9lEqU.js.map +1 -0
- package/dist/DualAxisLineChart.cjs +2 -0
- package/dist/DualAxisLineChart.cjs.map +1 -0
- package/dist/DualAxisLineChart.d.ts +180 -0
- package/dist/DualAxisLineChart.js +700 -0
- package/dist/DualAxisLineChart.js.map +1 -0
- package/dist/DumbbellChart.cjs +2 -0
- package/dist/DumbbellChart.cjs.map +1 -0
- package/dist/DumbbellChart.d.ts +224 -0
- package/dist/DumbbellChart.js +1511 -0
- package/dist/DumbbellChart.js.map +1 -0
- package/dist/EmptyState-DdTp-Mdn.js +22 -0
- package/dist/EmptyState-DdTp-Mdn.js.map +1 -0
- package/dist/EmptyState-d8_8SxeW.cjs +2 -0
- package/dist/EmptyState-d8_8SxeW.cjs.map +1 -0
- package/dist/ExcelDownloadButton.cjs +2 -0
- package/dist/ExcelDownloadButton.cjs.map +1 -0
- package/dist/ExcelDownloadButton.d.ts +22 -0
- package/dist/ExcelDownloadButton.js +30 -0
- package/dist/ExcelDownloadButton.js.map +1 -0
- package/dist/FootNote.cjs +2 -0
- package/dist/FootNote.cjs.map +1 -0
- package/dist/FootNote.d.ts +12 -0
- package/dist/FootNote.js +21 -0
- package/dist/FootNote.js.map +1 -0
- package/dist/GeoHubCompareMaps.cjs +2 -0
- package/dist/GeoHubCompareMaps.cjs.map +1 -0
- package/dist/GeoHubCompareMaps.d.ts +103 -0
- package/dist/GeoHubCompareMaps.js +371 -0
- package/dist/GeoHubCompareMaps.js.map +1 -0
- package/dist/GeoHubMap.cjs +2 -0
- package/dist/GeoHubMap.cjs.map +1 -0
- package/dist/GeoHubMap.d.ts +118 -0
- package/dist/GeoHubMap.js +430 -0
- package/dist/GeoHubMap.js.map +1 -0
- package/dist/GeoHubMapWithLayerSelection.cjs +2 -0
- package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -0
- package/dist/GeoHubMapWithLayerSelection.d.ts +117 -0
- package/dist/GeoHubMapWithLayerSelection.js +308 -0
- package/dist/GeoHubMapWithLayerSelection.js.map +1 -0
- package/dist/GraphDescription.cjs +2 -0
- package/dist/GraphDescription.cjs.map +1 -0
- package/dist/GraphDescription.d.ts +12 -0
- package/dist/GraphDescription.js +21 -0
- package/dist/GraphDescription.js.map +1 -0
- package/dist/GraphFooter.cjs +2 -0
- package/dist/GraphFooter.cjs.map +1 -0
- package/dist/GraphFooter.d.ts +24 -0
- package/dist/GraphFooter.js +22 -0
- package/dist/GraphFooter.js.map +1 -0
- package/dist/GraphHeader.cjs +2 -0
- package/dist/GraphHeader.cjs.map +1 -0
- package/dist/GraphHeader.d.ts +22 -0
- package/dist/GraphHeader.js +64 -0
- package/dist/GraphHeader.js.map +1 -0
- package/dist/GraphTitle.cjs +2 -0
- package/dist/GraphTitle.cjs.map +1 -0
- package/dist/GraphTitle.d.ts +13 -0
- package/dist/GraphTitle.js +29 -0
- package/dist/GraphTitle.js.map +1 -0
- package/dist/GriddedGraphs.cjs +2 -0
- package/dist/GriddedGraphs.cjs.map +1 -0
- package/dist/GriddedGraphs.d.ts +540 -0
- package/dist/GriddedGraphs.js +483 -0
- package/dist/GriddedGraphs.js.map +1 -0
- package/dist/GriddedGraphsFromConfig.cjs +2 -0
- package/dist/GriddedGraphsFromConfig.cjs.map +1 -0
- package/dist/GriddedGraphsFromConfig.d.ts +543 -0
- package/dist/GriddedGraphsFromConfig.js +43 -0
- package/dist/GriddedGraphsFromConfig.js.map +1 -0
- package/dist/HeatMap.cjs +2 -0
- package/dist/HeatMap.cjs.map +1 -0
- package/dist/HeatMap.d.ts +166 -0
- package/dist/HeatMap.js +452 -0
- package/dist/HeatMap.js.map +1 -0
- package/dist/Histogram.cjs +2 -0
- package/dist/Histogram.cjs.map +1 -0
- package/dist/Histogram.d.ts +165 -0
- package/dist/Histogram.js +288 -0
- package/dist/Histogram.js.map +1 -0
- package/dist/ImageDownloadButton.cjs +2 -0
- package/dist/ImageDownloadButton.cjs.map +1 -0
- package/dist/ImageDownloadButton.d.ts +15 -0
- package/dist/ImageDownloadButton.js +29 -0
- package/dist/ImageDownloadButton.js.map +1 -0
- package/dist/LineChartWithConfidenceInterval.cjs +2 -0
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -0
- package/dist/LineChartWithConfidenceInterval.d.ts +250 -0
- package/dist/LineChartWithConfidenceInterval.js +819 -0
- package/dist/LineChartWithConfidenceInterval.js.map +1 -0
- package/dist/LinearColorLegend.cjs +2 -0
- package/dist/LinearColorLegend.cjs.map +1 -0
- package/dist/LinearColorLegend.d.ts +13 -0
- package/dist/LinearColorLegend.js +34 -0
- package/dist/LinearColorLegend.js.map +1 -0
- package/dist/Modal-CUU6ZK3U.js +1019 -0
- package/dist/Modal-CUU6ZK3U.js.map +1 -0
- package/dist/Modal-C_dl0EtQ.cjs +46 -0
- package/dist/Modal-C_dl0EtQ.cjs.map +1 -0
- package/dist/MultiGraphDashboard.cjs +2 -0
- package/dist/MultiGraphDashboard.cjs.map +1 -0
- package/dist/MultiGraphDashboard.d.ts +558 -0
- package/dist/MultiGraphDashboard.js +304 -0
- package/dist/MultiGraphDashboard.js.map +1 -0
- package/dist/MultiGraphDashboardFromConfig.cjs +2 -0
- package/dist/MultiGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/MultiGraphDashboardFromConfig.d.ts +562 -0
- package/dist/MultiGraphDashboardFromConfig.js +38 -0
- package/dist/MultiGraphDashboardFromConfig.js.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormat.d.ts +128 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js +244 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +2 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.d.ts +133 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +31 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -0
- package/dist/MultiLineAltChart.cjs +2 -0
- package/dist/MultiLineAltChart.cjs.map +1 -0
- package/dist/MultiLineAltChart.d.ts +244 -0
- package/dist/MultiLineAltChart.js +690 -0
- package/dist/MultiLineAltChart.js.map +1 -0
- package/dist/MultiLineChart.cjs +2 -0
- package/dist/MultiLineChart.cjs.map +1 -0
- package/dist/MultiLineChart.d.ts +246 -0
- package/dist/MultiLineChart.js +723 -0
- package/dist/MultiLineChart.js.map +1 -0
- package/dist/ParetoChart.cjs +2 -0
- package/dist/ParetoChart.cjs.map +1 -0
- package/dist/ParetoChart.d.ts +178 -0
- package/dist/ParetoChart.js +637 -0
- package/dist/ParetoChart.js.map +1 -0
- package/dist/RadarChart.cjs +2 -0
- package/dist/RadarChart.cjs.map +1 -0
- package/dist/RadarChart.d.ts +176 -0
- package/dist/RadarChart.js +678 -0
- package/dist/RadarChart.js.map +1 -0
- package/dist/ReferenceLine-C1GpoG9d.js +128 -0
- package/dist/ReferenceLine-C1GpoG9d.js.map +1 -0
- package/dist/ReferenceLine-CuFMk0cI.cjs +2 -0
- package/dist/ReferenceLine-CuFMk0cI.cjs.map +1 -0
- package/dist/RegressionLine-7_rKTHN_.cjs +2 -0
- package/dist/RegressionLine-7_rKTHN_.cjs.map +1 -0
- package/dist/RegressionLine-BFwDCTUU.js +48 -0
- package/dist/RegressionLine-BFwDCTUU.js.map +1 -0
- package/dist/SVGDownloadButton.cjs +2 -0
- package/dist/SVGDownloadButton.cjs.map +1 -0
- package/dist/SVGDownloadButton.d.ts +15 -0
- package/dist/SVGDownloadButton.js +29 -0
- package/dist/SVGDownloadButton.js.map +1 -0
- package/dist/SankeyChart.cjs +2 -0
- package/dist/SankeyChart.cjs.map +1 -0
- package/dist/SankeyChart.d.ts +178 -0
- package/dist/SankeyChart.js +990 -0
- package/dist/SankeyChart.js.map +1 -0
- package/dist/ScatterPlot.cjs +2 -0
- package/dist/ScatterPlot.cjs.map +1 -0
- package/dist/ScatterPlot.d.ts +266 -0
- package/dist/ScatterPlot.js +829 -0
- package/dist/ScatterPlot.js.map +1 -0
- package/dist/ScrollStory.cjs +2 -0
- package/dist/ScrollStory.cjs.map +1 -0
- package/dist/ScrollStory.d.ts +491 -0
- package/dist/ScrollStory.js +106 -0
- package/dist/ScrollStory.js.map +1 -0
- package/dist/SimpleLineChart.cjs +2 -0
- package/dist/SimpleLineChart.cjs.map +1 -0
- package/dist/SimpleLineChart.d.ts +230 -0
- package/dist/SimpleLineChart.js +620 -0
- package/dist/SimpleLineChart.js.map +1 -0
- package/dist/SingleGraphDashboard.cjs +2 -0
- package/dist/SingleGraphDashboard.cjs.map +1 -0
- package/dist/SingleGraphDashboard.d.ts +545 -0
- package/dist/SingleGraphDashboard.js +523 -0
- package/dist/SingleGraphDashboard.js.map +1 -0
- package/dist/SingleGraphDashboardFromConfig.cjs +2 -0
- package/dist/SingleGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/SingleGraphDashboardFromConfig.d.ts +547 -0
- package/dist/SingleGraphDashboardFromConfig.js +35 -0
- package/dist/SingleGraphDashboardFromConfig.js.map +1 -0
- package/dist/SlopeChart.cjs +2 -0
- package/dist/SlopeChart.cjs.map +1 -0
- package/dist/SlopeChart.d.ts +167 -0
- package/dist/SlopeChart.js +583 -0
- package/dist/SlopeChart.js.map +1 -0
- package/dist/Source.cjs +2 -0
- package/dist/Source.cjs.map +1 -0
- package/dist/Source.d.ts +16 -0
- package/dist/Source.js +41 -0
- package/dist/Source.js.map +1 -0
- package/dist/SparkLine.cjs +2 -0
- package/dist/SparkLine.cjs.map +1 -0
- package/dist/SparkLine.d.ts +139 -0
- package/dist/SparkLine.js +321 -0
- package/dist/SparkLine.js.map +1 -0
- package/dist/Spinner-C85UF28E.js +30 -0
- package/dist/Spinner-C85UF28E.js.map +1 -0
- package/dist/Spinner-DA6Z5E4n.cjs +2 -0
- package/dist/Spinner-DA6Z5E4n.cjs.map +1 -0
- package/dist/StatCardFromData.cjs +2 -0
- package/dist/StatCardFromData.cjs.map +1 -0
- package/dist/StatCardFromData.d.ts +115 -0
- package/dist/StatCardFromData.js +250 -0
- package/dist/StatCardFromData.js.map +1 -0
- package/dist/StripChart.cjs +2 -0
- package/dist/StripChart.cjs.map +1 -0
- package/dist/StripChart.d.ts +178 -0
- package/dist/StripChart.js +989 -0
- package/dist/StripChart.js.map +1 -0
- package/dist/ThreeDGlobe.cjs +2 -0
- package/dist/ThreeDGlobe.cjs.map +1 -0
- package/dist/ThreeDGlobe.d.ts +158 -0
- package/dist/ThreeDGlobe.js +452 -0
- package/dist/ThreeDGlobe.js.map +1 -0
- package/dist/ThresholdColorLegendWithMouseOver.cjs +2 -0
- package/dist/ThresholdColorLegendWithMouseOver.cjs.map +1 -0
- package/dist/ThresholdColorLegendWithMouseOver.d.ts +16 -0
- package/dist/ThresholdColorLegendWithMouseOver.js +131 -0
- package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -0
- package/dist/Tooltip-DyM5snqx.js +46 -0
- package/dist/Tooltip-DyM5snqx.js.map +1 -0
- package/dist/Tooltip-n8z5bfav.cjs +2 -0
- package/dist/Tooltip-n8z5bfav.cjs.map +1 -0
- package/dist/TreeMapGraph.cjs +2 -0
- package/dist/TreeMapGraph.cjs.map +1 -0
- package/dist/TreeMapGraph.d.ts +158 -0
- package/dist/TreeMapGraph.js +761 -0
- package/dist/TreeMapGraph.js.map +1 -0
- package/dist/Types.cjs +2 -0
- package/dist/Types.cjs.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-Ctgfl1J5.js +140 -0
- package/dist/Typography-Ctgfl1J5.js.map +1 -0
- package/dist/Typography-k-kOjICQ.cjs +2 -0
- package/dist/Typography-k-kOjICQ.cjs.map +1 -0
- package/dist/UnitChart.cjs +2 -0
- package/dist/UnitChart.cjs.map +1 -0
- package/dist/UnitChart.d.ts +132 -0
- package/dist/UnitChart.js +217 -0
- package/dist/UnitChart.js.map +1 -0
- package/dist/XAxesLabels-CJMQbfVy.cjs +2 -0
- package/dist/XAxesLabels-CJMQbfVy.cjs.map +1 -0
- package/dist/XAxesLabels-DQFo_z2R.js +57 -0
- package/dist/XAxesLabels-DQFo_z2R.js.map +1 -0
- package/dist/XTicksAndGridLines-Bn9u5gOM.js +56 -0
- package/dist/XTicksAndGridLines-Bn9u5gOM.js.map +1 -0
- package/dist/XTicksAndGridLines-CCzXIV8d.cjs +2 -0
- package/dist/XTicksAndGridLines-CCzXIV8d.cjs.map +1 -0
- package/dist/YAxesLabels-BXLTX7AI.cjs +2 -0
- package/dist/YAxesLabels-BXLTX7AI.cjs.map +1 -0
- package/dist/YAxesLabels-H5-002X5.js +52 -0
- package/dist/YAxesLabels-H5-002X5.js.map +1 -0
- package/dist/YTicksAndGridLines-B6ah7CRf.js +56 -0
- package/dist/YTicksAndGridLines-B6ah7CRf.js.map +1 -0
- package/dist/YTicksAndGridLines-DBDuz6vb.cjs +2 -0
- package/dist/YTicksAndGridLines-DBDuz6vb.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-BB7PlCNh.js +2759 -0
- package/dist/checkIfMultiple-BB7PlCNh.js.map +1 -0
- package/dist/checkIfMultiple-D5ysrI7G.cjs +12 -0
- package/dist/checkIfMultiple-D5ysrI7G.cjs.map +1 -0
- package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs +2 -0
- package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs.map +1 -0
- package/dist/checkIfNullOrUndefined-DmfiKkNw.js +7 -0
- package/dist/checkIfNullOrUndefined-DmfiKkNw.js.map +1 -0
- package/dist/customArea-BYNyxAkm.cjs +2 -0
- package/dist/customArea-BYNyxAkm.cjs.map +1 -0
- package/dist/customArea-CaxScFmW.js +175 -0
- package/dist/customArea-CaxScFmW.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-BOA-lskf.js +19 -0
- package/dist/excelDownload-BOA-lskf.js.map +1 -0
- package/dist/excelDownload-BQpsCa62.cjs +2 -0
- package/dist/excelDownload-BQpsCa62.cjs.map +1 -0
- package/dist/fetchAndParseData-Bcmr659B.js +1196 -0
- package/dist/fetchAndParseData-Bcmr659B.js.map +1 -0
- package/dist/fetchAndParseData-DmgQtB9n.cjs +16 -0
- package/dist/fetchAndParseData-DmgQtB9n.cjs.map +1 -0
- package/dist/fetchAndParseData.cjs +2 -0
- package/dist/fetchAndParseData.cjs.map +1 -0
- package/dist/fetchAndParseData.d.ts +84 -0
- package/dist/fetchAndParseData.js +10 -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/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/getGraphList-DuColTJM.js +265 -0
- package/dist/getGraphList-DuColTJM.js.map +1 -0
- package/dist/getGraphList-gf02xgT2.cjs +2 -0
- package/dist/getGraphList-gf02xgT2.cjs.map +1 -0
- package/dist/getJenks-TWQvbuOz.cjs +2 -0
- package/dist/getJenks-TWQvbuOz.cjs.map +1 -0
- package/dist/getJenks-VhM3GIoC.js +23 -0
- package/dist/getJenks-VhM3GIoC.js.map +1 -0
- package/dist/getSchema.cjs +2 -0
- package/dist/getSchema.cjs.map +1 -0
- package/dist/getSchema.d.ts +3256 -0
- package/dist/getSchema.js +911 -0
- package/dist/getSchema.js.map +1 -0
- package/dist/getSliderMarks-C0jptXeP.js +1054 -0
- package/dist/getSliderMarks-C0jptXeP.js.map +1 -0
- package/dist/getSliderMarks-CtsEXiLV.cjs +6 -0
- package/dist/getSliderMarks-CtsEXiLV.cjs.map +1 -0
- package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js +28 -0
- package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js.map +1 -0
- package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs +2 -0
- package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs.map +1 -0
- package/dist/getUniqValue-BtUENB2H.js +20 -0
- package/dist/getUniqValue-BtUENB2H.js.map +1 -0
- package/dist/getUniqValue-CHqgSss5.cjs +2 -0
- package/dist/getUniqValue-CHqgSss5.cjs.map +1 -0
- package/dist/imageDownload-CgDcm1Sj.cjs +3 -0
- package/dist/imageDownload-CgDcm1Sj.cjs.map +1 -0
- package/dist/imageDownload-Dcci2LEy.js +495 -0
- package/dist/imageDownload-Dcci2LEy.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-BLizQDlg.js +658 -0
- package/dist/index-BLizQDlg.js.map +1 -0
- package/dist/index-BVnYktl4.js +435 -0
- package/dist/index-BVnYktl4.js.map +1 -0
- package/dist/index-BW_-wD2k.cjs +2 -0
- package/dist/index-BW_-wD2k.cjs.map +1 -0
- package/dist/index-BXns0-ng.cjs +2 -0
- package/dist/index-BXns0-ng.cjs.map +1 -0
- package/dist/index-BczVvEBZ.cjs +2 -0
- package/dist/index-BczVvEBZ.cjs.map +1 -0
- package/dist/index-BmCqpO1B.js +342 -0
- package/dist/index-BmCqpO1B.js.map +1 -0
- package/dist/index-BxAUvrua.js +120 -0
- package/dist/index-BxAUvrua.js.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-CHPV5EwG-BPSP-7Jg.js +3341 -0
- package/dist/index-CHPV5EwG-BPSP-7Jg.js.map +1 -0
- package/dist/index-CHPV5EwG-DDoeWRVt.cjs +44 -0
- package/dist/index-CHPV5EwG-DDoeWRVt.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-CylX-pWB.cjs +2 -0
- package/dist/index-CylX-pWB.cjs.map +1 -0
- package/dist/index-D7ltPi18.js +26 -0
- package/dist/index-D7ltPi18.js.map +1 -0
- package/dist/index-D9h2WYDS.cjs +22 -0
- package/dist/index-D9h2WYDS.cjs.map +1 -0
- package/dist/index-DG3YrCr5-D3FrrXj8.js +459 -0
- package/dist/index-DG3YrCr5-D3FrrXj8.js.map +1 -0
- package/dist/index-DG3YrCr5-v7rayV3N.cjs +2 -0
- package/dist/index-DG3YrCr5-v7rayV3N.cjs.map +1 -0
- package/dist/index-DVOJ7vxH.cjs +10 -0
- package/dist/index-DVOJ7vxH.cjs.map +1 -0
- package/dist/index-D_n8aamX.cjs +2 -0
- package/dist/index-D_n8aamX.cjs.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-OCoyy1wG.js +635 -0
- package/dist/index-OCoyy1wG.js.map +1 -0
- package/dist/index-UV9hjG_S.js +53 -0
- package/dist/index-UV9hjG_S.js.map +1 -0
- package/dist/index-n_RI8T0n.js +77 -0
- package/dist/index-n_RI8T0n.js.map +1 -0
- package/dist/index-tvAyXPPW-DBlMKnNB.js +47 -0
- package/dist/index-tvAyXPPW-DBlMKnNB.js.map +1 -0
- package/dist/index-tvAyXPPW-DPOG-C2i.cjs +2 -0
- package/dist/index-tvAyXPPW-DPOG-C2i.cjs.map +1 -0
- package/dist/index.cjs +1 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.js +178 -52486
- 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-02t-wJta.cjs +2 -0
- package/dist/numberFormattingFunction-02t-wJta.cjs.map +1 -0
- package/dist/numberFormattingFunction-14YCbkN2.js +13 -0
- package/dist/numberFormattingFunction-14YCbkN2.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/proxy-DJxJg1kD.js +4612 -0
- package/dist/proxy-DJxJg1kD.js.map +1 -0
- package/dist/proxy-PQd2AItT.cjs +2 -0
- package/dist/proxy-PQd2AItT.cjs.map +1 -0
- package/dist/removeOutliers-DR48e-18.js +57 -0
- package/dist/removeOutliers-DR48e-18.js.map +1 -0
- package/dist/removeOutliers-WELHHqiI.cjs +2 -0
- package/dist/removeOutliers-WELHHqiI.cjs.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-CWHGfz_d.js +758 -0
- package/dist/string2HTML-CWHGfz_d.js.map +1 -0
- package/dist/string2HTML-D2Avudmb.cjs +3 -0
- package/dist/string2HTML-D2Avudmb.cjs.map +1 -0
- package/dist/style.css +1 -1
- package/dist/svgDownload-C2-E3yf2.js +9 -0
- package/dist/svgDownload-C2-E3yf2.js.map +1 -0
- package/dist/svgDownload-D9zEGjTF.cjs +2 -0
- package/dist/svgDownload-D9zEGjTF.cjs.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-DiWOvh_d-DcLaZvDq.cjs +4 -0
- package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs.map +1 -0
- package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js +145 -0
- package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js.map +1 -0
- package/dist/transformData.cjs +2 -0
- package/dist/transformData.cjs.map +1 -0
- package/dist/transformData.d.ts +170 -0
- package/dist/transformData.js +10 -0
- package/dist/transformData.js.map +1 -0
- package/dist/transformDataForAggregation-BUGJnson.cjs +2 -0
- package/dist/transformDataForAggregation-BUGJnson.cjs.map +1 -0
- package/dist/transformDataForAggregation-DAQJWGNL.js +759 -0
- package/dist/transformDataForAggregation-DAQJWGNL.js.map +1 -0
- package/dist/transformDataForGraphFromFile-CrntpaMU.cjs +2 -0
- package/dist/transformDataForGraphFromFile-CrntpaMU.cjs.map +1 -0
- package/dist/transformDataForGraphFromFile-DdNiOWeC.js +24 -0
- package/dist/transformDataForGraphFromFile-DdNiOWeC.js.map +1 -0
- package/dist/use-in-view-BAHrBy6b.js +40 -0
- package/dist/use-in-view-BAHrBy6b.js.map +1 -0
- package/dist/use-in-view-BCmzDU2O.cjs +2 -0
- package/dist/use-in-view-BCmzDU2O.cjs.map +1 -0
- package/dist/utils.cjs +2 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.ts +217 -0
- package/dist/utils.js +27 -0
- package/dist/utils.js.map +1 -0
- package/dist/validateSchema.cjs +2 -0
- package/dist/validateSchema.cjs.map +1 -0
- package/dist/validateSchema.d.ts +68 -0
- package/dist/validateSchema.js +105 -0
- package/dist/validateSchema.js.map +1 -0
- package/dist/x-CnsEH4Ox-CGGXQl4M.cjs +27 -0
- package/dist/x-CnsEH4Ox-CGGXQl4M.cjs.map +1 -0
- package/dist/x-CnsEH4Ox-DDvAJndW.js +101 -0
- package/dist/x-CnsEH4Ox-DDvAJndW.js.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 +340 -4
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { JSX } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare interface AxesClassNameObject {
|
|
4
|
+
gridLines?: string;
|
|
5
|
+
labels?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
axis?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare interface AxesStyleObject {
|
|
11
|
+
gridLines?: React.CSSProperties;
|
|
12
|
+
labels?: React.CSSProperties;
|
|
13
|
+
title?: React.CSSProperties;
|
|
14
|
+
axis?: React.CSSProperties;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare interface ClassNameObject {
|
|
18
|
+
title?: string;
|
|
19
|
+
footnote?: string;
|
|
20
|
+
source?: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
tooltip?: string;
|
|
23
|
+
xAxis?: AxesClassNameObject;
|
|
24
|
+
yAxis?: AxesClassNameObject;
|
|
25
|
+
legend?: string;
|
|
26
|
+
graphContainer?: string;
|
|
27
|
+
graphObjectValues?: string;
|
|
28
|
+
dataConnectors?: string;
|
|
29
|
+
mouseOverLine?: string;
|
|
30
|
+
regLine?: string;
|
|
31
|
+
dataCards?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm), [pmtiles](https://www.npmjs.com/package/pmtiles), [dnd-kit/core](https://www.npmjs.com/package/@dnd-kit/core), and [dnd-kit/modifier](https://www.npmjs.com/package/@dnd-kit/modifiers) package to your project */
|
|
35
|
+
export declare function GeoHubCompareMaps(props: Props): JSX.Element;
|
|
36
|
+
|
|
37
|
+
declare type Languages = 'en' | 'ar' | 'az' | 'bn' | 'cy' | 'he' | 'hi' | 'jp' | 'ka' | 'km' | 'ko' | 'my' | 'ne' | 'zh' | 'custom';
|
|
38
|
+
|
|
39
|
+
declare interface Props {
|
|
40
|
+
/** Title of the graph */
|
|
41
|
+
graphTitle?: string | React.ReactNode;
|
|
42
|
+
/** Description of the graph */
|
|
43
|
+
graphDescription?: string | React.ReactNode;
|
|
44
|
+
/** Footnote for the graph */
|
|
45
|
+
footNote?: string | React.ReactNode;
|
|
46
|
+
/** Source data for the graph */
|
|
47
|
+
sources?: SourcesDataType[];
|
|
48
|
+
/** Accessibility label */
|
|
49
|
+
ariaLabel?: string;
|
|
50
|
+
/** Background color of the graph */
|
|
51
|
+
backgroundColor?: string | boolean;
|
|
52
|
+
/** Custom styles for the graph. Each object should be a valid React CSS style object. */
|
|
53
|
+
styles?: StyleObject;
|
|
54
|
+
/** Custom class names */
|
|
55
|
+
classNames?: ClassNameObject;
|
|
56
|
+
/** Width of the graph */
|
|
57
|
+
width?: number;
|
|
58
|
+
/** Height of the graph */
|
|
59
|
+
height?: number;
|
|
60
|
+
/** Minimum height of the graph */
|
|
61
|
+
minHeight?: number;
|
|
62
|
+
/** Relative height scaling factor. This overwrites the height props */
|
|
63
|
+
relativeHeight?: number;
|
|
64
|
+
/** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */
|
|
65
|
+
padding?: string;
|
|
66
|
+
/** URLs for mapStyles JSON user wants to compare */
|
|
67
|
+
mapStyles: [string, string];
|
|
68
|
+
/** Defines the legend for the map. mapLegend with type string is show as innerHTML. */
|
|
69
|
+
mapLegend?: string | React.ReactNode;
|
|
70
|
+
/** Starting center point of the map */
|
|
71
|
+
center?: [number, number];
|
|
72
|
+
/** Starting zoom level of the map */
|
|
73
|
+
zoomLevel?: number;
|
|
74
|
+
/** Language setting */
|
|
75
|
+
language?: Languages;
|
|
76
|
+
/** Color theme */
|
|
77
|
+
theme?: 'light' | 'dark';
|
|
78
|
+
/** Unique ID for the graph */
|
|
79
|
+
graphID?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
declare interface SourcesDataType {
|
|
83
|
+
source: string;
|
|
84
|
+
link?: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
declare interface StyleObject {
|
|
88
|
+
title?: React.CSSProperties;
|
|
89
|
+
footnote?: React.CSSProperties;
|
|
90
|
+
source?: React.CSSProperties;
|
|
91
|
+
description?: React.CSSProperties;
|
|
92
|
+
graphContainer?: React.CSSProperties;
|
|
93
|
+
tooltip?: React.CSSProperties;
|
|
94
|
+
xAxis?: AxesStyleObject;
|
|
95
|
+
yAxis?: AxesStyleObject;
|
|
96
|
+
graphObjectValues?: React.CSSProperties;
|
|
97
|
+
dataConnectors?: React.CSSProperties;
|
|
98
|
+
mouseOverLine?: React.CSSProperties;
|
|
99
|
+
regLine?: React.CSSProperties;
|
|
100
|
+
dataCards?: React.CSSProperties;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { }
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import { j as e, m as A } from "./index-CHPV5EwG-BPSP-7Jg.js";
|
|
2
|
+
import E, { useState as N, useRef as p, useEffect as I } from "react";
|
|
3
|
+
import * as w from "maplibre-gl";
|
|
4
|
+
import * as G from "pmtiles";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { useSensors as W, useSensor as X, PointerSensor as _, DndContext as B, useDraggable as Z } from "@dnd-kit/core";
|
|
7
|
+
import { restrictToHorizontalAxis as F } from "@dnd-kit/modifiers";
|
|
8
|
+
import { X as O, C as V } from "./index-BmCqpO1B.js";
|
|
9
|
+
import { s as q } from "./string2HTML-CWHGfz_d.js";
|
|
10
|
+
import { s as T } from "./select-DKy99ogv.js";
|
|
11
|
+
import { GraphHeader as J } from "./GraphHeader.js";
|
|
12
|
+
import { GraphFooter as K } from "./GraphFooter.js";
|
|
13
|
+
function Q(c, n) {
|
|
14
|
+
let r = !1;
|
|
15
|
+
function t(o, d) {
|
|
16
|
+
if (!r) {
|
|
17
|
+
r = !0;
|
|
18
|
+
const i = o.getCenter(), s = o.getZoom(), h = o.getBearing(), l = o.getPitch();
|
|
19
|
+
d.jumpTo({
|
|
20
|
+
center: i,
|
|
21
|
+
zoom: s,
|
|
22
|
+
bearing: h,
|
|
23
|
+
pitch: l
|
|
24
|
+
}), r = !1;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
c.on("move", () => {
|
|
28
|
+
t(c, n);
|
|
29
|
+
}), n.on("move", () => {
|
|
30
|
+
t(n, c);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function U(c) {
|
|
34
|
+
const { height: n, width: r, mapStyles: t, center: o, zoomLevel: d, mapLegend: i } = c, [s, h] = N(50), [l, D] = N(!1), u = p(null), [k, S] = N(!0), j = p(50), m = p(0), z = W(X(_, { activationConstraint: { distance: 0 } })), P = () => {
|
|
35
|
+
D(!0), j.current = s, u.current && (m.current = u.current.getBoundingClientRect().width);
|
|
36
|
+
}, f = (a) => {
|
|
37
|
+
if (!u.current || m.current === 0) return;
|
|
38
|
+
const g = a.delta.x / m.current * 100, M = Math.max(0, Math.min(100, j.current + g));
|
|
39
|
+
h(M);
|
|
40
|
+
}, x = () => {
|
|
41
|
+
D(!1);
|
|
42
|
+
}, R = (a) => {
|
|
43
|
+
if (l || !u.current) return;
|
|
44
|
+
const g = u.current.getBoundingClientRect(), $ = (a.clientX - g.left) / g.width * 100;
|
|
45
|
+
h(Math.max(0, Math.min(100, $)));
|
|
46
|
+
}, b = p(null), v = p(null), y = p(null), C = p(null);
|
|
47
|
+
return I(() => {
|
|
48
|
+
if (C.current && v.current && y.current && r) {
|
|
49
|
+
T(C.current).selectAll(".maplibregl-compare").remove(), T(v.current).selectAll("div").remove(), T(y.current).selectAll("div").remove();
|
|
50
|
+
const $ = new G.Protocol();
|
|
51
|
+
w.addProtocol("pmtiles", $.tile);
|
|
52
|
+
const H = new w.Map({
|
|
53
|
+
container: v.current,
|
|
54
|
+
style: t[0],
|
|
55
|
+
center: o || [0, 0],
|
|
56
|
+
zoom: d || 4
|
|
57
|
+
}), L = new w.Map({
|
|
58
|
+
container: y.current,
|
|
59
|
+
style: t[1],
|
|
60
|
+
center: o || [0, 0],
|
|
61
|
+
zoom: d || 4
|
|
62
|
+
});
|
|
63
|
+
L.addControl(
|
|
64
|
+
new w.NavigationControl({
|
|
65
|
+
visualizePitch: !0,
|
|
66
|
+
showZoom: !0,
|
|
67
|
+
showCompass: !0
|
|
68
|
+
}),
|
|
69
|
+
"bottom-right"
|
|
70
|
+
), H.addControl(new w.ScaleControl(), "bottom-left"), H.addControl(
|
|
71
|
+
new w.NavigationControl({
|
|
72
|
+
visualizePitch: !0,
|
|
73
|
+
showZoom: !0,
|
|
74
|
+
showCompass: !0
|
|
75
|
+
}),
|
|
76
|
+
"bottom-right"
|
|
77
|
+
), L.addControl(new w.ScaleControl(), "bottom-left"), Q(H, L);
|
|
78
|
+
}
|
|
79
|
+
}, [r, t, o, d]), /* @__PURE__ */ e.jsxs(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
className: "flex flex-col grow justify-center leading-0",
|
|
83
|
+
ref: b,
|
|
84
|
+
"aria-label": "Map area",
|
|
85
|
+
children: [
|
|
86
|
+
/* @__PURE__ */ e.jsx(
|
|
87
|
+
"div",
|
|
88
|
+
{
|
|
89
|
+
style: {
|
|
90
|
+
width: r,
|
|
91
|
+
height: n
|
|
92
|
+
},
|
|
93
|
+
children: /* @__PURE__ */ e.jsx(
|
|
94
|
+
"div",
|
|
95
|
+
{
|
|
96
|
+
ref: C,
|
|
97
|
+
className: "map maplibre-show-control relative w-full h-full",
|
|
98
|
+
style: { inset: 0 },
|
|
99
|
+
children: /* @__PURE__ */ e.jsx(
|
|
100
|
+
B,
|
|
101
|
+
{
|
|
102
|
+
sensors: z,
|
|
103
|
+
modifiers: [F],
|
|
104
|
+
onDragStart: P,
|
|
105
|
+
onDragMove: f,
|
|
106
|
+
onDragEnd: x,
|
|
107
|
+
children: /* @__PURE__ */ e.jsxs(
|
|
108
|
+
"div",
|
|
109
|
+
{
|
|
110
|
+
ref: u,
|
|
111
|
+
style: {
|
|
112
|
+
position: "relative",
|
|
113
|
+
width: r,
|
|
114
|
+
height: n,
|
|
115
|
+
overflow: "hidden",
|
|
116
|
+
cursor: l ? "grabbing" : "col-resize",
|
|
117
|
+
userSelect: "none"
|
|
118
|
+
// Prevent text selection during drag
|
|
119
|
+
},
|
|
120
|
+
onClick: R,
|
|
121
|
+
children: [
|
|
122
|
+
/* @__PURE__ */ e.jsx(
|
|
123
|
+
"div",
|
|
124
|
+
{
|
|
125
|
+
ref: y,
|
|
126
|
+
className: "absolute h-full rightMap w-full",
|
|
127
|
+
style: {
|
|
128
|
+
position: "absolute",
|
|
129
|
+
top: 0,
|
|
130
|
+
left: 0,
|
|
131
|
+
clipPath: `polygon(${s}% 0%, ${s}% 100%, 100% 100%, 100% 0%)`
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
/* @__PURE__ */ e.jsx(
|
|
136
|
+
"div",
|
|
137
|
+
{
|
|
138
|
+
ref: v,
|
|
139
|
+
className: "absolute h-full leftMap w-full",
|
|
140
|
+
style: {
|
|
141
|
+
position: "absolute",
|
|
142
|
+
top: 0,
|
|
143
|
+
left: 0,
|
|
144
|
+
inset: 0,
|
|
145
|
+
clipPath: `polygon(0% 0%, ${s}% 0%, ${s}% 100%, 0% 100%)`
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
/* @__PURE__ */ e.jsx(Y, { position: s })
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
)
|
|
155
|
+
}
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
),
|
|
159
|
+
i ? /* @__PURE__ */ e.jsx("div", { className: "absolute left-[22px] bottom-13", children: k ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
160
|
+
/* @__PURE__ */ e.jsx(
|
|
161
|
+
"div",
|
|
162
|
+
{
|
|
163
|
+
style: {
|
|
164
|
+
backgroundColor: "rgba(240,240,240, 0.7)",
|
|
165
|
+
border: "1px solid var(--gray-400)",
|
|
166
|
+
borderRadius: "999px",
|
|
167
|
+
width: "24px",
|
|
168
|
+
height: "24px",
|
|
169
|
+
padding: "3px",
|
|
170
|
+
cursor: "pointer",
|
|
171
|
+
zIndex: 10,
|
|
172
|
+
position: "absolute",
|
|
173
|
+
right: "-0.75rem",
|
|
174
|
+
top: "-0.75rem"
|
|
175
|
+
},
|
|
176
|
+
onClick: () => {
|
|
177
|
+
S(!1);
|
|
178
|
+
},
|
|
179
|
+
children: /* @__PURE__ */ e.jsx(O, {})
|
|
180
|
+
}
|
|
181
|
+
),
|
|
182
|
+
/* @__PURE__ */ e.jsx(
|
|
183
|
+
"div",
|
|
184
|
+
{
|
|
185
|
+
className: "p-2",
|
|
186
|
+
style: {
|
|
187
|
+
backgroundColor: "rgba(240,240,240, 0.7)"
|
|
188
|
+
},
|
|
189
|
+
dangerouslySetInnerHTML: typeof i == "string" ? { __html: q(i) } : void 0,
|
|
190
|
+
children: E.isValidElement(i) ? i : null
|
|
191
|
+
}
|
|
192
|
+
)
|
|
193
|
+
] }) : /* @__PURE__ */ e.jsx(
|
|
194
|
+
"button",
|
|
195
|
+
{
|
|
196
|
+
type: "button",
|
|
197
|
+
className: "mb-0 border-0 bg-transparent p-0 self-start",
|
|
198
|
+
onClick: () => {
|
|
199
|
+
S(!0);
|
|
200
|
+
},
|
|
201
|
+
children: /* @__PURE__ */ e.jsx("div", { className: "items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500", children: "Show Legend" })
|
|
202
|
+
}
|
|
203
|
+
) }) : null
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
function Y(c) {
|
|
209
|
+
const { position: n } = c, { attributes: r, listeners: t, setNodeRef: o } = Z({ id: "slider-handle" });
|
|
210
|
+
return /* @__PURE__ */ e.jsxs(
|
|
211
|
+
"div",
|
|
212
|
+
{
|
|
213
|
+
ref: o,
|
|
214
|
+
style: {
|
|
215
|
+
position: "absolute",
|
|
216
|
+
left: `${n}%`,
|
|
217
|
+
top: 0,
|
|
218
|
+
bottom: 0,
|
|
219
|
+
width: "40px",
|
|
220
|
+
transform: "translateX(-50%)",
|
|
221
|
+
cursor: "col-resize",
|
|
222
|
+
display: "flex",
|
|
223
|
+
justifyContent: "center",
|
|
224
|
+
alignItems: "center",
|
|
225
|
+
zIndex: 10,
|
|
226
|
+
touchAction: "none"
|
|
227
|
+
},
|
|
228
|
+
...t,
|
|
229
|
+
...r,
|
|
230
|
+
children: [
|
|
231
|
+
/* @__PURE__ */ e.jsx(
|
|
232
|
+
"div",
|
|
233
|
+
{
|
|
234
|
+
className: "h-full bg-primary-blue-600 dark:bg-primary-blue-400",
|
|
235
|
+
style: { width: "2px" }
|
|
236
|
+
}
|
|
237
|
+
),
|
|
238
|
+
/* @__PURE__ */ e.jsx(
|
|
239
|
+
"div",
|
|
240
|
+
{
|
|
241
|
+
className: "flex bg-primary-blue-600 dark:bg-primary-blue-400 rounded-full absolute items-center justify-center text-primary-white font-primary-white",
|
|
242
|
+
style: {
|
|
243
|
+
boxShadow: "inset 0 0 0 1px #fff",
|
|
244
|
+
width: "42px",
|
|
245
|
+
height: "42px",
|
|
246
|
+
top: "calc(50% - 21px)",
|
|
247
|
+
left: "0",
|
|
248
|
+
cursor: "col-resize"
|
|
249
|
+
},
|
|
250
|
+
children: /* @__PURE__ */ e.jsx(V, {})
|
|
251
|
+
}
|
|
252
|
+
)
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
function de(c) {
|
|
258
|
+
const {
|
|
259
|
+
graphTitle: n,
|
|
260
|
+
height: r,
|
|
261
|
+
width: t,
|
|
262
|
+
relativeHeight: o,
|
|
263
|
+
sources: d,
|
|
264
|
+
graphDescription: i,
|
|
265
|
+
footNote: s,
|
|
266
|
+
padding: h,
|
|
267
|
+
backgroundColor: l = !1,
|
|
268
|
+
graphID: D,
|
|
269
|
+
mapStyles: u,
|
|
270
|
+
center: k = [0, 0],
|
|
271
|
+
zoomLevel: S = 3,
|
|
272
|
+
language: j = "en",
|
|
273
|
+
minHeight: m = 0,
|
|
274
|
+
theme: z = "light",
|
|
275
|
+
ariaLabel: P,
|
|
276
|
+
styles: f,
|
|
277
|
+
classNames: x,
|
|
278
|
+
mapLegend: R
|
|
279
|
+
} = c, [b, v] = N(0), [y, C] = N(0), a = p(null);
|
|
280
|
+
return I(() => {
|
|
281
|
+
const g = new ResizeObserver((M) => {
|
|
282
|
+
v(t || M[0].target.clientWidth || 620), C(r || M[0].target.clientHeight || 480);
|
|
283
|
+
});
|
|
284
|
+
return a.current && (C(a.current.clientHeight || 480), v(a.current.clientWidth || 620), t || g.observe(a.current)), () => g.disconnect();
|
|
285
|
+
}, [t, r]), /* @__PURE__ */ e.jsx(
|
|
286
|
+
"div",
|
|
287
|
+
{
|
|
288
|
+
className: `${z || "light"} flex ${t ? "w-fit grow-0" : "w-full grow"}`,
|
|
289
|
+
dir: j === "he" || j === "ar" ? "rtl" : void 0,
|
|
290
|
+
children: /* @__PURE__ */ e.jsx(
|
|
291
|
+
"div",
|
|
292
|
+
{
|
|
293
|
+
className: A(
|
|
294
|
+
`${l ? l === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${j || "en"}`,
|
|
295
|
+
x?.graphContainer
|
|
296
|
+
),
|
|
297
|
+
style: {
|
|
298
|
+
...f?.graphContainer || {},
|
|
299
|
+
...l && l !== !0 ? { backgroundColor: l } : {}
|
|
300
|
+
},
|
|
301
|
+
id: D,
|
|
302
|
+
"aria-label": P || `${n ? `The graph shows ${n}. ` : ""}This is a comparison between two maps.${i ? ` ${i}` : ""}`,
|
|
303
|
+
children: /* @__PURE__ */ e.jsx(
|
|
304
|
+
"div",
|
|
305
|
+
{
|
|
306
|
+
className: "flex grow",
|
|
307
|
+
style: { padding: l ? h || "1rem" : h || 0 },
|
|
308
|
+
children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col w-full gap-4 grow justify-between", children: [
|
|
309
|
+
n || i ? /* @__PURE__ */ e.jsx(
|
|
310
|
+
J,
|
|
311
|
+
{
|
|
312
|
+
styles: {
|
|
313
|
+
title: f?.title,
|
|
314
|
+
description: f?.description
|
|
315
|
+
},
|
|
316
|
+
classNames: {
|
|
317
|
+
title: x?.title,
|
|
318
|
+
description: x?.description
|
|
319
|
+
},
|
|
320
|
+
graphTitle: n,
|
|
321
|
+
graphDescription: i,
|
|
322
|
+
width: t
|
|
323
|
+
}
|
|
324
|
+
) : null,
|
|
325
|
+
/* @__PURE__ */ e.jsx(
|
|
326
|
+
"div",
|
|
327
|
+
{
|
|
328
|
+
className: "flex flex-col grow justify-center leading-0",
|
|
329
|
+
ref: a,
|
|
330
|
+
"aria-label": "map area",
|
|
331
|
+
children: (t || b) && (r || y) ? /* @__PURE__ */ e.jsx(
|
|
332
|
+
U,
|
|
333
|
+
{
|
|
334
|
+
width: t || b,
|
|
335
|
+
height: Math.max(
|
|
336
|
+
m,
|
|
337
|
+
r || (o ? m ? (t || b) * o > m ? (t || b) * o : m : (t || b) * o : y)
|
|
338
|
+
),
|
|
339
|
+
mapStyles: u,
|
|
340
|
+
center: k,
|
|
341
|
+
zoomLevel: S,
|
|
342
|
+
mapLegend: R
|
|
343
|
+
}
|
|
344
|
+
) : null
|
|
345
|
+
}
|
|
346
|
+
),
|
|
347
|
+
d || s ? /* @__PURE__ */ e.jsx(
|
|
348
|
+
K,
|
|
349
|
+
{
|
|
350
|
+
styles: { footnote: f?.footnote, source: f?.source },
|
|
351
|
+
classNames: {
|
|
352
|
+
footnote: x?.footnote,
|
|
353
|
+
source: x?.source
|
|
354
|
+
},
|
|
355
|
+
sources: d,
|
|
356
|
+
footNote: s,
|
|
357
|
+
width: t
|
|
358
|
+
}
|
|
359
|
+
) : null
|
|
360
|
+
] })
|
|
361
|
+
}
|
|
362
|
+
)
|
|
363
|
+
}
|
|
364
|
+
)
|
|
365
|
+
}
|
|
366
|
+
);
|
|
367
|
+
}
|
|
368
|
+
export {
|
|
369
|
+
de as GeoHubCompareMaps
|
|
370
|
+
};
|
|
371
|
+
//# sourceMappingURL=GeoHubCompareMaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeoHubCompareMaps.js","sources":["../src/Components/Graphs/Maps/GeoHubMaps/CompareMaps/Graph.tsx","../src/Components/Graphs/Maps/GeoHubMaps/CompareMaps/index.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\r\nimport * as maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport {\r\n DndContext,\r\n useDraggable,\r\n useSensor,\r\n useSensors,\r\n PointerSensor,\r\n DragMoveEvent,\r\n} from '@dnd-kit/core';\r\nimport { restrictToHorizontalAxis } from '@dnd-kit/modifiers';\r\nimport React from 'react';\r\n\r\nimport { ChevronLeftRight, X } from '@/Components/Icons';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\ninterface Props {\r\n width: number;\r\n height: number;\r\n mapStyles: [string, string];\r\n center: [number, number];\r\n mapLegend?: string | React.ReactNode;\r\n zoomLevel: number;\r\n}\r\n\r\nfunction synchronizeMap(map1: maplibreGl.Map, map2: maplibreGl.Map) {\r\n let isSyncing = false;\r\n function syncMap(sourceMap: maplibreGl.Map, targetMap: maplibreGl.Map) {\r\n if (!isSyncing) {\r\n isSyncing = true;\r\n const center = sourceMap.getCenter();\r\n const zoom = sourceMap.getZoom();\r\n const bearing = sourceMap.getBearing();\r\n const pitch = sourceMap.getPitch();\r\n targetMap.jumpTo({\r\n center,\r\n zoom,\r\n bearing,\r\n pitch,\r\n });\r\n isSyncing = false;\r\n }\r\n }\r\n\r\n // Event listeners for map1\r\n map1.on('move', () => {\r\n syncMap(map1, map2);\r\n });\r\n\r\n // Event listeners for map2\r\n map2.on('move', () => {\r\n syncMap(map2, map1);\r\n });\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const { height, width, mapStyles, center, zoomLevel, mapLegend } = props;\r\n const [position, setPosition] = useState(50);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [showLegend, setShowLegend] = useState(true);\r\n const dragStartPositionRef = useRef(50);\r\n const sliderWidthRef = useRef(0);\r\n\r\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 0 } }));\r\n\r\n const handleDragStart = () => {\r\n setIsDragging(true);\r\n dragStartPositionRef.current = position;\r\n\r\n if (containerRef.current) {\r\n sliderWidthRef.current = containerRef.current.getBoundingClientRect().width;\r\n }\r\n };\r\n\r\n const handleDragMove = (event: DragMoveEvent) => {\r\n if (!containerRef.current || sliderWidthRef.current === 0) return;\r\n\r\n // Calculate position change as percentage of width\r\n const deltaPercentage = (event.delta.x / sliderWidthRef.current) * 100;\r\n const newPosition = Math.max(0, Math.min(100, dragStartPositionRef.current + deltaPercentage));\r\n\r\n setPosition(newPosition);\r\n };\r\n\r\n const handleDragEnd = () => {\r\n setIsDragging(false);\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n if (isDragging || !containerRef.current) return;\r\n\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const clickX = e.clientX - rect.left;\r\n const newPosition = (clickX / rect.width) * 100;\r\n\r\n setPosition(Math.max(0, Math.min(100, newPosition)));\r\n };\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const leftMapRef = useRef<HTMLDivElement>(null);\r\n const rightMapRef = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n if (mapContainer.current && leftMapRef.current && rightMapRef.current && width) {\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('.maplibregl-compare').remove();\r\n const leftMapDiv = select(leftMapRef.current);\r\n leftMapDiv.selectAll('div').remove();\r\n const rightMapDiv = select(rightMapRef.current);\r\n rightMapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n const leftMap = new maplibreGl.Map({\r\n container: leftMapRef.current,\r\n style: mapStyles[0],\r\n center: center || [0, 0],\r\n zoom: zoomLevel || 4,\r\n });\r\n\r\n const rightMap = new maplibreGl.Map({\r\n container: rightMapRef.current,\r\n style: mapStyles[1],\r\n center: center || [0, 0],\r\n zoom: zoomLevel || 4,\r\n });\r\n rightMap.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n leftMap.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n leftMap.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n rightMap.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n synchronizeMap(leftMap, rightMap);\r\n }\r\n }, [width, mapStyles, center, zoomLevel]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n <div\r\n style={{\r\n width,\r\n height,\r\n }}\r\n >\r\n <div\r\n ref={mapContainer}\r\n className='map maplibre-show-control relative w-full h-full'\r\n style={{ inset: 0 }}\r\n >\r\n <DndContext\r\n sensors={sensors}\r\n modifiers={[restrictToHorizontalAxis]}\r\n onDragStart={handleDragStart}\r\n onDragMove={handleDragMove}\r\n onDragEnd={handleDragEnd}\r\n >\r\n <div\r\n ref={containerRef}\r\n style={{\r\n position: 'relative',\r\n width,\r\n height,\r\n overflow: 'hidden',\r\n cursor: isDragging ? 'grabbing' : 'col-resize',\r\n userSelect: 'none', // Prevent text selection during drag\r\n }}\r\n onClick={handleClick}\r\n >\r\n <div\r\n ref={rightMapRef}\r\n className='absolute h-full rightMap w-full'\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n clipPath: `polygon(${position}% 0%, ${position}% 100%, 100% 100%, 100% 0%)`,\r\n }}\r\n />\r\n <div\r\n ref={leftMapRef}\r\n className='absolute h-full leftMap w-full'\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n inset: 0,\r\n clipPath: `polygon(0% 0%, ${position}% 0%, ${position}% 100%, 0% 100%)`,\r\n }}\r\n />\r\n\r\n <SliderHandle position={position} />\r\n </div>\r\n </DndContext>\r\n </div>\r\n </div>\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n border: '1px solid var(--gray-400)',\r\n borderRadius: '999px',\r\n width: '24px',\r\n height: '24px',\r\n padding: '3px',\r\n cursor: 'pointer',\r\n zIndex: 10,\r\n position: 'absolute',\r\n right: '-0.75rem',\r\n top: '-0.75rem',\r\n }}\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='p-2'\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\ninterface HandleProps {\r\n position: number;\r\n}\r\n\r\nfunction SliderHandle(props: HandleProps) {\r\n const { position } = props;\r\n const { attributes, listeners, setNodeRef } = useDraggable({ id: 'slider-handle' });\r\n\r\n return (\r\n <div\r\n ref={setNodeRef}\r\n style={{\r\n position: 'absolute',\r\n left: `${position}%`,\r\n top: 0,\r\n bottom: 0,\r\n width: '40px',\r\n transform: 'translateX(-50%)',\r\n cursor: 'col-resize',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n zIndex: 10,\r\n touchAction: 'none',\r\n }}\r\n {...listeners}\r\n {...attributes}\r\n >\r\n <div\r\n className='h-full bg-primary-blue-600 dark:bg-primary-blue-400'\r\n style={{ width: '2px' }}\r\n />\r\n <div\r\n className='flex bg-primary-blue-600 dark:bg-primary-blue-400 rounded-full absolute items-center justify-center text-primary-white font-primary-white'\r\n style={{\r\n boxShadow: 'inset 0 0 0 1px #fff',\r\n width: '42px',\r\n height: '42px',\r\n top: 'calc(50% - 21px)',\r\n left: '0',\r\n cursor: 'col-resize',\r\n }}\r\n >\r\n <ChevronLeftRight />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useRef, useEffect, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { ClassNameObject, Languages, SourcesDataType, StyleObject } from '@/Types';\r\n\r\ninterface Props {\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n\r\n // Graph Parameters\r\n /** URLs for mapStyles JSON user wants to compare */\r\n mapStyles: [string, string];\r\n /** Defines the legend for the map. mapLegend with type string is show as innerHTML. */\r\n mapLegend?: string | React.ReactNode;\r\n /** Starting center point of the map */\r\n center?: [number, number];\r\n /** Starting zoom level of the map */\r\n zoomLevel?: number;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\n/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm), [pmtiles](https://www.npmjs.com/package/pmtiles), [dnd-kit/core](https://www.npmjs.com/package/@dnd-kit/core), and [dnd-kit/modifier](https://www.npmjs.com/package/@dnd-kit/modifiers) package to your project */\r\nexport function GeoHubCompareMaps(props: Props) {\r\n const {\r\n graphTitle,\r\n height,\r\n width,\r\n relativeHeight,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n graphID,\r\n mapStyles,\r\n center = [0, 0],\r\n zoomLevel = 3,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n styles,\r\n classNames,\r\n mapLegend,\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a comparison between two maps.${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n />\r\n ) : null}\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <Graph\r\n width={width || svgWidth}\r\n height={Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n )}\r\n mapStyles={mapStyles}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n mapLegend={mapLegend}\r\n />\r\n ) : null}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["synchronizeMap","map1","map2","isSyncing","syncMap","sourceMap","targetMap","center","zoom","bearing","pitch","Graph","props","height","width","mapStyles","zoomLevel","mapLegend","position","setPosition","useState","isDragging","setIsDragging","containerRef","useRef","showLegend","setShowLegend","dragStartPositionRef","sliderWidthRef","sensors","useSensors","useSensor","PointerSensor","handleDragStart","handleDragMove","event","deltaPercentage","newPosition","handleDragEnd","handleClick","e","rect","graphDiv","leftMapRef","rightMapRef","mapContainer","useEffect","select","protocol","pmtiles","maplibreGl","leftMap","rightMap","jsxs","jsx","DndContext","restrictToHorizontalAxis","SliderHandle","Fragment","X","string2HTML","React","attributes","listeners","setNodeRef","useDraggable","ChevronLeftRight","GeoHubCompareMaps","graphTitle","relativeHeight","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","minHeight","theme","ariaLabel","styles","classNames","svgWidth","setSvgWidth","svgHeight","setSvgHeight","resizeObserver","entries","cn","GraphHeader","GraphFooter"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CHPV5EwG-DDoeWRVt.cjs"),s=require("react"),O=require("./DropdownSelect-0I2QxaVy.cjs"),R=require("maplibre-gl"),T=require("pmtiles");;/* empty css */const N=require("./fetchAndParseData-DmgQtB9n.cjs"),L=require("./filterData-DN6py7y_.cjs"),D=require("./index-BW_-wD2k.cjs"),z=require("./string2HTML-D2Avudmb.cjs"),P=require("./select-Bnfk0lJx.cjs"),W=require("./GraphHeader.cjs"),$=require("./GraphFooter.cjs");function A(h){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(h){for(const n in h)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(h,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>h[n]})}}return t.default=h,Object.freeze(t)}const q=A(T);function _(h){const{mapStyle:t,height:n,width:r,relativeHeight:a,center:b,zoomLevel:j,minHeight:u,includeLayers:p,excludeLayers:g,mapLegend:i}=h,[o,w]=s.useState(0),[E,f]=s.useState(0),[H,S]=s.useState(!0),d=s.useRef(null),x=s.useRef(null),l=s.useRef(null);return s.useEffect(()=>{const c=new ResizeObserver(m=>{w(r||m[0].target.clientWidth||620),f(n||m[0].target.clientHeight||480)});return d.current&&(f(d.current.clientHeight||480),w(d.current.clientWidth||620),r||c.observe(d.current)),()=>c.disconnect()},[r,n]),s.useEffect(()=>{x.current&&o&&!l.current&&N.fetchAndParseJSON(t).then(c=>{P.select(x.current).selectAll("div").remove();const y=new q.Protocol;R.addProtocol("pmtiles",y.tile);const v={container:x.current,style:p.length===0&&g.length===0?c:{...c,layers:L.filterData(c.layers,[{column:"id",includeValues:p,excludeValues:g}])},attributionControl:!0};b&&(v.center=b),j&&(v.zoom=j),l.current=new R.Map(v),l.current.addControl(new R.NavigationControl({visualizePitch:!0,showZoom:!0,showCompass:!0}),"bottom-right"),l.current.addControl(new R.ScaleControl,"bottom-left")})},[o,b,j,p,g,t]),s.useEffect(()=>{l.current&&N.fetchAndParseJSON(t).then(c=>{const m={...c,layers:L.filterData(c.layers,[{column:"id",includeValues:p,excludeValues:g}])};l.current.setStyle(m)})},[g,p,t]),e.jsxRuntimeExports.jsx("div",{className:"flex flex-col grow justify-center leading-0",ref:d,"aria-label":"Map area",children:(r||o)&&(n||E)?e.jsxRuntimeExports.jsxs("div",{style:{width:r||o,height:Math.max(u,n||(a?u?(r||o)*a>u?(r||o)*a:u:(r||o)*a:E))},children:[e.jsxRuntimeExports.jsx("div",{ref:x,className:"map maplibre-show-control",style:{width:"100%",height:"100%"}}),i?e.jsxRuntimeExports.jsx("div",{className:"absolute left-[22px] bottom-13",children:H?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx("div",{style:{backgroundColor:"rgba(240,240,240, 0.7)",border:"1px solid var(--gray-400)",borderRadius:"999px",width:"24px",height:"24px",padding:"3px",cursor:"pointer",zIndex:10,position:"absolute",right:"-0.75rem",top:"-0.75rem"},onClick:()=>{S(!1)},children:e.jsxRuntimeExports.jsx(D.X,{})}),e.jsxRuntimeExports.jsx("div",{className:"p-2",style:{backgroundColor:"rgba(240,240,240, 0.7)"},dangerouslySetInnerHTML:typeof i=="string"?{__html:z.string2HTML(i)}:void 0,children:s.isValidElement(i)?i:null})]}):e.jsxRuntimeExports.jsx("button",{type:"button",className:"mb-0 border-0 bg-transparent p-0 self-start",onClick:()=>{S(!0)},children:e.jsxRuntimeExports.jsx("div",{className:"items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500",children:"Show Legend"})})}):null]}):null})}function I(h){const{mapStyle:t,height:n,width:r,relativeHeight:a,center:b,zoomLevel:j,minHeight:u,includeLayers:p,excludeLayers:g,mapLegend:i}=h,[o,w]=s.useState(0),[E,f]=s.useState(0),[H,S]=s.useState(!0),d=s.useRef(null),x=s.useRef(null);return s.useEffect(()=>{const l=new ResizeObserver(c=>{w(r||c[0].target.clientWidth||620),f(n||c[0].target.clientHeight||480)});return d.current&&(f(d.current.clientHeight||480),w(d.current.clientWidth||620),r||l.observe(d.current)),()=>l.disconnect()},[r,n]),s.useEffect(()=>{x.current&&o&&N.fetchAndParseJSON(t).then(l=>{P.select(x.current).selectAll("div").remove();const m=new q.Protocol;R.addProtocol("pmtiles",m.tile);const y={container:x.current,style:p.length===0&&g.length===0?l:{...l,layers:L.filterData(l.layers,[{column:"id",includeValues:p,excludeValues:g}])},attributionControl:!0};b&&(y.center=b),j&&(y.zoom=j);const v=new R.Map(y);v.addControl(new R.NavigationControl({visualizePitch:!0,showZoom:!0,showCompass:!0}),"bottom-right"),v.addControl(new R.ScaleControl,"bottom-left")})},[o,t,b,j,p,g]),e.jsxRuntimeExports.jsx("div",{className:"flex flex-col grow justify-center leading-0",ref:d,"aria-label":"Map area",children:(r||o)&&(n||E)?e.jsxRuntimeExports.jsxs("div",{style:{width:r||o,height:Math.max(u,n||(a?u?(r||o)*a>u?(r||o)*a:u:(r||o)*a:E))},children:[e.jsxRuntimeExports.jsx("div",{ref:x,className:"map maplibre-show-control",style:{width:"100%",height:"100%"}}),i?e.jsxRuntimeExports.jsx("div",{className:"absolute left-[22px] bottom-13",children:H?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx("div",{style:{backgroundColor:"rgba(240,240,240, 0.7)",border:"1px solid var(--gray-400)",borderRadius:"999px",width:"24px",height:"24px",padding:"3px",cursor:"pointer",zIndex:10,position:"absolute",right:"-0.75rem",top:"-0.75rem"},onClick:()=>{S(!1)},children:e.jsxRuntimeExports.jsx(D.X,{})}),e.jsxRuntimeExports.jsx("div",{className:"p-2",style:{backgroundColor:"rgba(240,240,240, 0.7)"},dangerouslySetInnerHTML:typeof i=="string"?{__html:z.string2HTML(i)}:void 0,children:s.isValidElement(i)?i:null})]}):e.jsxRuntimeExports.jsx("button",{type:"button",className:"mb-0 border-0 bg-transparent p-0 self-start",onClick:()=>{S(!0)},children:e.jsxRuntimeExports.jsx("div",{className:"items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500",children:"Show Legend"})})}):null]}):null})}function F(h){const{mapStyle:t,graphTitle:n,height:r,width:a,relativeHeight:b,sources:j,graphDescription:u,footNote:p,padding:g,backgroundColor:i=!1,center:o,zoomLevel:w,graphID:E,language:f="en",minHeight:H=0,theme:S="light",includeLayers:d=[],excludeLayers:x=[],ariaLabel:l,uiMode:c="normal",styles:m,classNames:y,mapLegend:v}=h,[M,k]=s.useState(typeof t=="string"?t:t[0].style);s.useEffect(()=>{k(typeof t=="string"?t:t[0].style)},[t]);const V=s.useMemo(()=>({ignoreCase:!0,ignoreAccents:!0,trim:!0}),[]);return e.jsxRuntimeExports.jsx("div",{className:`${S||"light"} flex ${a?"w-fit grow-0":"w-full grow"}`,dir:f==="he"||f==="ar"?"rtl":void 0,children:e.jsxRuntimeExports.jsx("div",{className:e.mo(`${i?i===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${f||"en"}`,y?.graphContainer),style:{...m?.graphContainer||{},...i&&i!==!0?{backgroundColor:i}:{}},id:E,"aria-label":l||`${n?`The graph shows ${n}. `:""}This is a map.${u?` ${u}`:""}`,children:e.jsxRuntimeExports.jsx("div",{className:"flex grow",style:{padding:i?g||"1rem":g||0},children:e.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[n||u?e.jsxRuntimeExports.jsx(W.GraphHeader,{styles:{title:m?.title,description:m?.description},classNames:{title:y?.title,description:y?.description},graphTitle:n,graphDescription:u,width:a}):null,typeof t=="string"?null:e.jsxRuntimeExports.jsx(O.Za,{options:t.map(C=>({label:C.name,value:C.style})),isClearable:!1,size:"sm",variant:c,isRtl:f==="he"||f==="ar",isSearchable:!0,filterOption:O.Hu(V),defaultValue:{label:t[0].name,value:t[0].style},controlShouldRenderValue:!0,onChange:C=>{C&&k(C.value)}}),typeof t=="string"?e.jsxRuntimeExports.jsx(I,{mapStyle:t,center:o,zoomLevel:w,width:a,height:r,relativeHeight:b,minHeight:H,includeLayers:d,excludeLayers:x,mapLegend:v}):e.jsxRuntimeExports.jsx(_,{mapStyle:M,center:o,zoomLevel:w,width:a,height:r,relativeHeight:b,minHeight:H,includeLayers:d,excludeLayers:x,mapLegend:(v||[]).find(C=>C.mapStyleName===t.find(G=>G.style===M)?.name)?.legend}),j||p?e.jsxRuntimeExports.jsx($.GraphFooter,{styles:{footnote:m?.footnote,source:m?.source},classNames:{footnote:y?.footnote,source:y?.source},sources:j,footNote:p,width:a}):null]})})})})}exports.GeoHubMap=F;
|
|
2
|
+
//# sourceMappingURL=GeoHubMap.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeoHubMap.cjs","sources":["../src/Components/Graphs/Maps/GeoHubMaps/SimpleMap/GeoHubMultipleMap.tsx","../src/Components/Graphs/Maps/GeoHubMaps/SimpleMap/GeoHubSingleMap.tsx","../src/Components/Graphs/Maps/GeoHubMaps/SimpleMap/index.tsx"],"sourcesContent":["import { useRef, useEffect, useState } from 'react';\r\nimport maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport React from 'react';\r\n\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { X } from '@/Components/Icons';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\ninterface Props {\r\n mapStyle: string;\r\n center?: [number, number];\r\n zoomLevel?: number;\r\n width?: number;\r\n height?: number;\r\n relativeHeight?: number;\r\n minHeight: number;\r\n includeLayers: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function GeoHubMultipleMap(props: Props) {\r\n const {\r\n mapStyle,\r\n height,\r\n width,\r\n relativeHeight,\r\n center,\r\n zoomLevel,\r\n minHeight,\r\n includeLayers,\r\n excludeLayers,\r\n mapLegend,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [showLegend, setShowLegend] = useState(true);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapRef = useRef<any>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n useEffect(() => {\r\n if (mapContainer.current && svgWidth && !mapRef.current) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapObj: any = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n container: mapContainer.current as any,\r\n style:\r\n includeLayers.length === 0 && excludeLayers.length === 0\r\n ? d\r\n : {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n includeValues: includeLayers,\r\n excludeValues: excludeLayers,\r\n },\r\n ]),\r\n },\r\n attributionControl: true,\r\n };\r\n if (center) {\r\n mapObj.center = center;\r\n }\r\n if (zoomLevel) {\r\n mapObj.zoom = zoomLevel;\r\n }\r\n mapRef.current = new maplibreGl.Map(mapObj);\r\n mapRef.current.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n mapRef.current.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n });\r\n }\r\n }, [svgWidth, center, zoomLevel, includeLayers, excludeLayers, mapStyle]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n includeValues: includeLayers,\r\n excludeValues: excludeLayers,\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, includeLayers, mapStyle]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <div\r\n style={{\r\n width: width || svgWidth,\r\n height: Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n ),\r\n }}\r\n >\r\n <div\r\n ref={mapContainer}\r\n className='map maplibre-show-control'\r\n style={{ width: '100%', height: '100%' }}\r\n />\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n border: '1px solid var(--gray-400)',\r\n borderRadius: '999px',\r\n width: '24px',\r\n height: '24px',\r\n padding: '3px',\r\n cursor: 'pointer',\r\n zIndex: 10,\r\n position: 'absolute',\r\n right: '-0.75rem',\r\n top: '-0.75rem',\r\n }}\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='p-2'\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import { useRef, useEffect, useState } from 'react';\r\nimport maplibreGl from 'maplibre-gl';\r\nimport * as pmtiles from 'pmtiles';\r\nimport 'maplibre-gl/dist/maplibre-gl.css';\r\nimport { select } from 'd3-selection';\r\nimport React from 'react';\r\n\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { X } from '@/Components/Icons';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\ninterface Props {\r\n mapStyle: string;\r\n center?: [number, number];\r\n zoomLevel?: number;\r\n width?: number;\r\n height?: number;\r\n relativeHeight?: number;\r\n minHeight: number;\r\n mapLegend?: string | React.ReactNode;\r\n includeLayers: string[];\r\n excludeLayers: string[];\r\n}\r\n\r\nexport function GeoHubSingleMap(props: Props) {\r\n const {\r\n mapStyle,\r\n height,\r\n width,\r\n relativeHeight,\r\n center,\r\n zoomLevel,\r\n minHeight,\r\n includeLayers,\r\n excludeLayers,\r\n mapLegend,\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [showLegend, setShowLegend] = useState(true);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const mapContainer = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n useEffect(() => {\r\n if (mapContainer.current && svgWidth) {\r\n fetchAndParseJSON(mapStyle).then(d => {\r\n const mapDiv = select(mapContainer.current);\r\n mapDiv.selectAll('div').remove();\r\n const protocol = new pmtiles.Protocol();\r\n maplibreGl.addProtocol('pmtiles', protocol.tile);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapObj: any = {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n container: mapContainer.current as any,\r\n style:\r\n includeLayers.length === 0 && excludeLayers.length === 0\r\n ? d\r\n : {\r\n ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n includeValues: includeLayers,\r\n excludeValues: excludeLayers,\r\n },\r\n ]),\r\n },\r\n attributionControl: true,\r\n };\r\n if (center) {\r\n mapObj.center = center;\r\n }\r\n if (zoomLevel) {\r\n mapObj.zoom = zoomLevel;\r\n }\r\n const map = new maplibreGl.Map(mapObj);\r\n map.addControl(\r\n new maplibreGl.NavigationControl({\r\n visualizePitch: true,\r\n showZoom: true,\r\n showCompass: true,\r\n }),\r\n 'bottom-right',\r\n );\r\n map.addControl(new maplibreGl.ScaleControl(), 'bottom-left');\r\n });\r\n }\r\n }, [svgWidth, mapStyle, center, zoomLevel, includeLayers, excludeLayers]);\r\n return (\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Map area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <div\r\n style={{\r\n width: width || svgWidth,\r\n height: Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n ),\r\n }}\r\n >\r\n <div\r\n ref={mapContainer}\r\n className='map maplibre-show-control'\r\n style={{ width: '100%', height: '100%' }}\r\n />\r\n {mapLegend ? (\r\n <div className='absolute left-[22px] bottom-13'>\r\n {showLegend ? (\r\n <>\r\n <div\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n border: '1px solid var(--gray-400)',\r\n borderRadius: '999px',\r\n width: '24px',\r\n height: '24px',\r\n padding: '3px',\r\n cursor: 'pointer',\r\n zIndex: 10,\r\n position: 'absolute',\r\n right: '-0.75rem',\r\n top: '-0.75rem',\r\n }}\r\n onClick={() => {\r\n setShowLegend(false);\r\n }}\r\n >\r\n <X />\r\n </div>\r\n <div\r\n className='p-2'\r\n style={{\r\n backgroundColor: 'rgba(240,240,240, 0.7)',\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof mapLegend === 'string' ? { __html: string2HTML(mapLegend) } : undefined\r\n }\r\n >\r\n {React.isValidElement(mapLegend) ? mapLegend : null}\r\n </div>\r\n </>\r\n ) : (\r\n <button\r\n type='button'\r\n className='mb-0 border-0 bg-transparent p-0 self-start'\r\n onClick={() => {\r\n setShowLegend(true);\r\n }}\r\n >\r\n <div className='items-start text-sm font-medium cursor-pointer p-2 mb-0 flex text-primary-black dark:text-primary-gray-300 bg-primary-gray-300 dark:bg-primary-gray-550 border-primary-gray-400 dark:border-primary-gray-500'>\r\n Show Legend\r\n </div>\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { DropdownSelect, createFilter } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { GeoHubMultipleMap } from './GeoHubMultipleMap';\r\nimport { GeoHubSingleMap } from './GeoHubSingleMap';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport {\r\n ClassNameObject,\r\n Languages,\r\n MapLegendDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\n\r\ninterface Props {\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n\r\n // Graph Parameters\r\n /** URL for mapStyle JSON. If the type is string, otherwise it creates and dropdown and provide end user to select the map style they would like to */\r\n mapStyle: string | { style: string; name: string }[];\r\n /** Defines the legend for the map. If the mapStyle is string, mapLegend can be string or ReactNode. mapLegend with type string is show as innerHTML. If the mapStyle is not string, mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the mapStyle. */\r\n mapLegend?: string | React.ReactNode | MapLegendDataType[];\r\n /** Starting center point of the map */\r\n center?: [number, number];\r\n /** Starting zoom level of the map */\r\n zoomLevel?: number;\r\n /** List of layer IDs to be included in the visualization. If this is present only these layers are included. */\r\n includeLayers?: string[];\r\n /** List of layer IDs to be excluded from the visualization */\r\n excludeLayers?: string[];\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Theme for the UI elements */\r\n uiMode?: 'light' | 'normal';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\n/** For using these maps you will have to install [`maplibre`](https://maplibre.org/maplibre-gl-js/docs/#npm) and [pmtiles](https://www.npmjs.com/package/pmtiles) package to your project */\r\nexport function GeoHubMap(props: Props) {\r\n const {\r\n mapStyle,\r\n graphTitle,\r\n height,\r\n width,\r\n relativeHeight,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n center,\r\n zoomLevel,\r\n graphID,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n includeLayers = [],\r\n excludeLayers = [],\r\n ariaLabel,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n mapLegend,\r\n } = props;\r\n\r\n const [selectedMapStyle, setSelectedMapStyle] = useState(\r\n typeof mapStyle === 'string' ? mapStyle : mapStyle[0].style,\r\n );\r\n\r\n useEffect(() => {\r\n setSelectedMapStyle(typeof mapStyle === 'string' ? mapStyle : mapStyle[0].style);\r\n }, [mapStyle]);\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a map.${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n />\r\n ) : null}\r\n {typeof mapStyle === 'string' ? null : (\r\n <DropdownSelect\r\n options={mapStyle.map(d => ({ label: d.name, value: d.style }))}\r\n isClearable={false}\r\n size='sm'\r\n variant={uiMode}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n defaultValue={{\r\n label: mapStyle[0].name,\r\n value: mapStyle[0].style,\r\n }}\r\n controlShouldRenderValue\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n if (el) setSelectedMapStyle(el.value);\r\n }}\r\n />\r\n )}\r\n {typeof mapStyle === 'string' ? (\r\n <GeoHubSingleMap\r\n mapStyle={mapStyle}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n minHeight={minHeight}\r\n includeLayers={includeLayers}\r\n excludeLayers={excludeLayers}\r\n mapLegend={mapLegend as string | React.ReactNode | undefined}\r\n />\r\n ) : (\r\n <GeoHubMultipleMap\r\n mapStyle={selectedMapStyle}\r\n center={center}\r\n zoomLevel={zoomLevel}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n minHeight={minHeight}\r\n includeLayers={includeLayers}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n ((mapLegend || []) as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName === mapStyle.find(el => el.style === selectedMapStyle)?.name,\r\n )?.legend\r\n }\r\n />\r\n )}\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["GeoHubMultipleMap","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","includeLayers","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubSingleMap","map","GeoHubMap","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","ariaLabel","uiMode","styles","classNames","selectedMapStyle","setSelectedMapStyle","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","el","GraphFooter"],"mappings":"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"}
|