@undp/data-viz 1.3.0 → 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.js +530 -1
- package/dist/AreaChart.js.map +1 -1
- package/dist/Axis-DE7dSn1_.cjs +2 -0
- package/dist/{Axis-BlyBRMNw.cjs.map → Axis-DE7dSn1_.cjs.map} +1 -1
- package/dist/{Axis-CvK-w3E2.js → Axis-Ddg-seDi.js} +10 -11
- package/dist/{Axis-CvK-w3E2.js.map → Axis-Ddg-seDi.js.map} +1 -1
- package/dist/AxisTitle-BmHLMRJZ.js +20 -0
- package/dist/{AxisTitle-BeMxcw5I.js.map → AxisTitle-BmHLMRJZ.js.map} +1 -1
- package/dist/AxisTitle-CK9YeovX.cjs +2 -0
- package/dist/{AxisTitle-BY8MI9jC.cjs.map → AxisTitle-CK9YeovX.cjs.map} +1 -1
- package/dist/BarGraph.cjs +2 -0
- package/dist/BarGraph.cjs.map +1 -0
- package/dist/BarGraph.js +4043 -1
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +2 -0
- package/dist/BasicStatCard.cjs.map +1 -0
- package/dist/BasicStatCard.js +190 -1
- package/dist/BasicStatCard.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +2 -0
- package/dist/BeeSwarmChart.cjs.map +1 -0
- package/dist/BeeSwarmChart.d.ts +0 -8
- package/dist/BeeSwarmChart.js +1042 -1
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +2 -0
- package/dist/BiVariateChoroplethMap.cjs.map +1 -0
- package/dist/BiVariateChoroplethMap.js +720 -1
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +2 -0
- package/dist/BulletChart.cjs.map +1 -0
- package/dist/BulletChart.js +1431 -1
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +2 -0
- package/dist/ButterflyChart.cjs.map +1 -0
- package/dist/ButterflyChart.js +692 -1
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +2 -0
- package/dist/ChoroplethMap.cjs.map +1 -0
- package/dist/ChoroplethMap.js +745 -1
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +2 -0
- package/dist/CirclePackingGraph.cjs.map +1 -0
- package/dist/CirclePackingGraph.d.ts +0 -8
- package/dist/CirclePackingGraph.js +14 -1
- package/dist/CirclePackingGraph.js.map +1 -1
- package/dist/ColorLegend.cjs +2 -0
- package/dist/ColorLegend.cjs.map +1 -0
- package/dist/ColorLegend.js +47 -1
- package/dist/ColorLegend.js.map +1 -1
- package/dist/ColorLegendWithMouseOver.cjs +2 -0
- package/dist/ColorLegendWithMouseOver.cjs.map +1 -0
- package/dist/ColorLegendWithMouseOver.js +70 -1
- package/dist/ColorLegendWithMouseOver.js.map +1 -1
- package/dist/Colors.cjs +2 -0
- package/dist/Colors.cjs.map +1 -0
- package/dist/Colors.js +561 -1
- package/dist/Colors.js.map +1 -1
- package/dist/CopyTextButton.cjs +17 -0
- package/dist/CopyTextButton.cjs.map +1 -0
- package/dist/CopyTextButton.js +698 -16
- package/dist/CopyTextButton.js.map +1 -1
- package/dist/CsvDownloadButton.cjs +23 -0
- package/dist/CsvDownloadButton.cjs.map +1 -0
- package/dist/CsvDownloadButton.js +852 -7
- package/dist/CsvDownloadButton.js.map +1 -1
- package/dist/DataCards.cjs +2 -0
- package/dist/DataCards.cjs.map +1 -0
- package/dist/DataCards.js +14 -1
- package/dist/DataCards.js.map +1 -1
- package/dist/DataTable.cjs +2 -0
- package/dist/DataTable.cjs.map +1 -0
- package/dist/DataTable.js +331 -1
- package/dist/DataTable.js.map +1 -1
- package/dist/DifferenceLineChart.cjs +2 -0
- package/dist/DifferenceLineChart.cjs.map +1 -0
- package/dist/DifferenceLineChart.js +805 -1
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +2 -0
- package/dist/DonutChart.cjs.map +1 -0
- package/dist/DonutChart.js +478 -1
- package/dist/DonutChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +2 -0
- package/dist/DotDensityMap.cjs.map +1 -0
- package/dist/DotDensityMap.js +600 -1
- package/dist/DotDensityMap.js.map +1 -1
- 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.js +699 -1
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +2 -0
- package/dist/DumbbellChart.cjs.map +1 -0
- package/dist/DumbbellChart.js +1510 -1
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{EmptyState-b2Ln487i.js → EmptyState-DdTp-Mdn.js} +8 -8
- package/dist/{EmptyState-b2Ln487i.js.map → EmptyState-DdTp-Mdn.js.map} +1 -1
- package/dist/EmptyState-d8_8SxeW.cjs +2 -0
- package/dist/{EmptyState-BQguKAp5.cjs.map → EmptyState-d8_8SxeW.cjs.map} +1 -1
- package/dist/ExcelDownloadButton.cjs +2 -0
- package/dist/ExcelDownloadButton.cjs.map +1 -0
- package/dist/ExcelDownloadButton.js +29 -1
- package/dist/ExcelDownloadButton.js.map +1 -1
- package/dist/FootNote.cjs +2 -0
- package/dist/FootNote.cjs.map +1 -0
- package/dist/FootNote.js +20 -1
- package/dist/FootNote.js.map +1 -1
- package/dist/GeoHubCompareMaps.cjs +2 -0
- package/dist/GeoHubCompareMaps.cjs.map +1 -0
- package/dist/GeoHubCompareMaps.js +370 -1
- package/dist/GeoHubCompareMaps.js.map +1 -1
- package/dist/GeoHubMap.cjs +2 -0
- package/dist/GeoHubMap.cjs.map +1 -0
- package/dist/GeoHubMap.js +429 -1
- package/dist/GeoHubMap.js.map +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs +2 -0
- package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -0
- package/dist/GeoHubMapWithLayerSelection.js +307 -1
- package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
- package/dist/GraphDescription.cjs +2 -0
- package/dist/GraphDescription.cjs.map +1 -0
- package/dist/GraphDescription.js +20 -1
- package/dist/GraphDescription.js.map +1 -1
- package/dist/GraphFooter.cjs +2 -0
- package/dist/GraphFooter.cjs.map +1 -0
- package/dist/GraphFooter.js +21 -1
- package/dist/GraphFooter.js.map +1 -1
- package/dist/GraphHeader.cjs +2 -0
- package/dist/GraphHeader.cjs.map +1 -0
- package/dist/GraphHeader.js +63 -1
- package/dist/GraphHeader.js.map +1 -1
- package/dist/GraphTitle.cjs +2 -0
- package/dist/GraphTitle.cjs.map +1 -0
- package/dist/GraphTitle.js +28 -1
- package/dist/GraphTitle.js.map +1 -1
- package/dist/GriddedGraphs.cjs +2 -0
- package/dist/GriddedGraphs.cjs.map +1 -0
- package/dist/GriddedGraphs.js +482 -1
- package/dist/GriddedGraphs.js.map +1 -1
- package/dist/GriddedGraphsFromConfig.cjs +2 -0
- package/dist/GriddedGraphsFromConfig.cjs.map +1 -0
- package/dist/GriddedGraphsFromConfig.js +42 -1
- package/dist/GriddedGraphsFromConfig.js.map +1 -1
- package/dist/HeatMap.cjs +2 -0
- package/dist/HeatMap.cjs.map +1 -0
- package/dist/HeatMap.js +451 -1
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +2 -0
- package/dist/Histogram.cjs.map +1 -0
- package/dist/Histogram.js +287 -1
- package/dist/Histogram.js.map +1 -1
- package/dist/ImageDownloadButton.cjs +2 -0
- package/dist/ImageDownloadButton.cjs.map +1 -0
- package/dist/ImageDownloadButton.js +28 -1
- package/dist/ImageDownloadButton.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +2 -0
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -0
- package/dist/LineChartWithConfidenceInterval.js +818 -1
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/LinearColorLegend.cjs +2 -0
- package/dist/LinearColorLegend.cjs.map +1 -0
- package/dist/LinearColorLegend.js +33 -1
- package/dist/LinearColorLegend.js.map +1 -1
- 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.js +303 -1
- package/dist/MultiGraphDashboard.js.map +1 -1
- package/dist/MultiGraphDashboardFromConfig.cjs +2 -0
- package/dist/MultiGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/MultiGraphDashboardFromConfig.js +37 -1
- package/dist/MultiGraphDashboardFromConfig.js.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js +243 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +2 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +30 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -1
- package/dist/MultiLineAltChart.cjs +2 -0
- package/dist/MultiLineAltChart.cjs.map +1 -0
- package/dist/MultiLineAltChart.js +689 -1
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +2 -0
- package/dist/MultiLineChart.cjs.map +1 -0
- package/dist/MultiLineChart.js +722 -1
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/ParetoChart.cjs +2 -0
- package/dist/ParetoChart.cjs.map +1 -0
- package/dist/ParetoChart.js +636 -1
- package/dist/ParetoChart.js.map +1 -1
- package/dist/RadarChart.cjs +2 -0
- package/dist/RadarChart.cjs.map +1 -0
- package/dist/RadarChart.js +677 -1
- package/dist/RadarChart.js.map +1 -1
- package/dist/{ReferenceLine-BgDdQbDI.js → ReferenceLine-C1GpoG9d.js} +33 -34
- 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-BfpCuD7B.cjs.map → RegressionLine-7_rKTHN_.cjs.map} +1 -1
- package/dist/{RegressionLine-cSljpHaE.js → RegressionLine-BFwDCTUU.js} +17 -18
- package/dist/{RegressionLine-cSljpHaE.js.map → RegressionLine-BFwDCTUU.js.map} +1 -1
- package/dist/SVGDownloadButton.cjs +2 -0
- package/dist/SVGDownloadButton.cjs.map +1 -0
- package/dist/SVGDownloadButton.js +28 -1
- package/dist/SVGDownloadButton.js.map +1 -1
- package/dist/SankeyChart.cjs +2 -0
- package/dist/SankeyChart.cjs.map +1 -0
- package/dist/SankeyChart.js +989 -1
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +2 -0
- package/dist/ScatterPlot.cjs.map +1 -0
- package/dist/ScatterPlot.js +828 -1
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.cjs +2 -0
- package/dist/ScrollStory.cjs.map +1 -0
- package/dist/ScrollStory.js +105 -1
- package/dist/ScrollStory.js.map +1 -1
- package/dist/SimpleLineChart.cjs +2 -0
- package/dist/SimpleLineChart.cjs.map +1 -0
- package/dist/SimpleLineChart.js +619 -1
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +2 -0
- package/dist/SingleGraphDashboard.cjs.map +1 -0
- package/dist/SingleGraphDashboard.js +522 -1
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.cjs +2 -0
- package/dist/SingleGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/SingleGraphDashboardFromConfig.js +34 -1
- package/dist/SingleGraphDashboardFromConfig.js.map +1 -1
- package/dist/SlopeChart.cjs +2 -0
- package/dist/SlopeChart.cjs.map +1 -0
- package/dist/SlopeChart.js +582 -1
- package/dist/SlopeChart.js.map +1 -1
- package/dist/Source.cjs +2 -0
- package/dist/Source.cjs.map +1 -0
- package/dist/Source.js +40 -1
- package/dist/Source.js.map +1 -1
- package/dist/SparkLine.cjs +2 -0
- package/dist/SparkLine.cjs.map +1 -0
- package/dist/SparkLine.js +320 -1
- package/dist/SparkLine.js.map +1 -1
- 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.js +249 -1
- package/dist/StatCardFromData.js.map +1 -1
- package/dist/StripChart.cjs +2 -0
- package/dist/StripChart.cjs.map +1 -0
- package/dist/StripChart.js +988 -1
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +2 -0
- package/dist/ThreeDGlobe.cjs.map +1 -0
- package/dist/ThreeDGlobe.js +451 -1
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs +2 -0
- package/dist/ThresholdColorLegendWithMouseOver.cjs.map +1 -0
- package/dist/ThresholdColorLegendWithMouseOver.js +130 -1
- package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -1
- package/dist/{Tooltip-CzZ1wFyF.js → Tooltip-DyM5snqx.js} +15 -16
- package/dist/{Tooltip-CzZ1wFyF.js.map → Tooltip-DyM5snqx.js.map} +1 -1
- package/dist/Tooltip-n8z5bfav.cjs +2 -0
- package/dist/{Tooltip-BM18N_3l.cjs.map → Tooltip-n8z5bfav.cjs.map} +1 -1
- package/dist/TreeMapGraph.cjs +2 -0
- package/dist/TreeMapGraph.cjs.map +1 -0
- package/dist/TreeMapGraph.js +760 -1
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/Types.cjs +2 -0
- package/dist/Types.cjs.map +1 -0
- package/dist/Types.js +1 -1
- 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.js +216 -1
- package/dist/UnitChart.js.map +1 -1
- package/dist/XAxesLabels-CJMQbfVy.cjs +2 -0
- package/dist/{XAxesLabels-C9REbQQs.cjs.map → XAxesLabels-CJMQbfVy.cjs.map} +1 -1
- package/dist/{XAxesLabels-DVw7Lvuz.js → XAxesLabels-DQFo_z2R.js} +21 -22
- package/dist/{XAxesLabels-DVw7Lvuz.js.map → XAxesLabels-DQFo_z2R.js.map} +1 -1
- package/dist/{XTicksAndGridLines-CUefTINd.js → XTicksAndGridLines-Bn9u5gOM.js} +19 -20
- package/dist/{XTicksAndGridLines-CUefTINd.js.map → XTicksAndGridLines-Bn9u5gOM.js.map} +1 -1
- package/dist/XTicksAndGridLines-CCzXIV8d.cjs +2 -0
- package/dist/{XTicksAndGridLines-DuK35ROS.cjs.map → XTicksAndGridLines-CCzXIV8d.cjs.map} +1 -1
- package/dist/YAxesLabels-BXLTX7AI.cjs +2 -0
- package/dist/{YAxesLabels-DhBdLk3Z.cjs.map → YAxesLabels-BXLTX7AI.cjs.map} +1 -1
- package/dist/{YAxesLabels-CYVY053X.js → YAxesLabels-H5-002X5.js} +11 -12
- package/dist/{YAxesLabels-CYVY053X.js.map → YAxesLabels-H5-002X5.js.map} +1 -1
- package/dist/{YTicksAndGridLines-BJRXuBdC.js → YTicksAndGridLines-B6ah7CRf.js} +14 -15
- package/dist/{YTicksAndGridLines-BJRXuBdC.js.map → YTicksAndGridLines-B6ah7CRf.js.map} +1 -1
- package/dist/YTicksAndGridLines-DBDuz6vb.cjs +2 -0
- package/dist/{YTicksAndGridLines-CtLvzExe.cjs.map → YTicksAndGridLines-DBDuz6vb.cjs.map} +1 -1
- package/dist/{checkIfMultiple-CaefP4X2.js → checkIfMultiple-BB7PlCNh.js} +1013 -518
- 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-B47Ew5cT.cjs.map → customArea-BYNyxAkm.cjs.map} +1 -1
- package/dist/{customArea-I3MsoqIl.js → customArea-CaxScFmW.js} +29 -30
- package/dist/{customArea-I3MsoqIl.js.map → customArea-CaxScFmW.js.map} +1 -1
- 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.js +9 -15
- package/dist/fetchAndParseData.js.map +1 -1
- 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.js +910 -1
- package/dist/getSchema.js.map +1 -1
- 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-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-DXmF_0ez.js → index-BmCqpO1B.js} +74 -40
- package/dist/index-BmCqpO1B.js.map +1 -0
- package/dist/{index-Db-Yg_Ud.js → index-BxAUvrua.js} +19 -19
- package/dist/{index-Db-Yg_Ud.js.map → index-BxAUvrua.js.map} +1 -1
- 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-CylX-pWB.cjs +2 -0
- package/dist/{index-BYroABPm.cjs.map → index-CylX-pWB.cjs.map} +1 -1
- 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-a2C2Bqn2.cjs.map → index-DVOJ7vxH.cjs.map} +1 -1
- package/dist/index-D_n8aamX.cjs +2 -0
- package/dist/index-D_n8aamX.cjs.map +1 -0
- package/dist/index-OCoyy1wG.js +635 -0
- package/dist/index-OCoyy1wG.js.map +1 -0
- package/dist/{index-DzdwZ2OA.js → index-n_RI8T0n.js} +3 -3
- package/dist/{index-DzdwZ2OA.js.map → index-n_RI8T0n.js.map} +1 -1
- 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 +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -5
- package/dist/index.js +180 -1
- package/dist/index.js.map +1 -1
- 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/{use-in-view-CZPXmTZM.js → proxy-DJxJg1kD.js} +699 -732
- package/dist/proxy-DJxJg1kD.js.map +1 -0
- package/dist/{use-in-view-Dl1CsAIo.cjs → proxy-PQd2AItT.cjs} +2 -2
- 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/{string2HTML-BX0oNw83.js → string2HTML-CWHGfz_d.js} +2 -2
- package/dist/{string2HTML-BX0oNw83.js.map → string2HTML-CWHGfz_d.js.map} +1 -1
- package/dist/{string2HTML-X4ZYX5jI.cjs → string2HTML-D2Avudmb.cjs} +2 -2
- package/dist/{string2HTML-X4ZYX5jI.cjs.map → string2HTML-D2Avudmb.cjs.map} +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/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.js +104 -1
- package/dist/validateSchema.js.map +1 -1
- 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/package.json +15 -90
- package/dist/Axis-BlyBRMNw.cjs +0 -2
- package/dist/AxisTitle-BY8MI9jC.cjs +0 -2
- package/dist/AxisTitle-BeMxcw5I.js +0 -21
- package/dist/DropdownSelect-CuzV7gdj.cjs +0 -29
- package/dist/DropdownSelect-CuzV7gdj.cjs.map +0 -1
- package/dist/DropdownSelect-DmZsXrhY.js +0 -2698
- package/dist/DropdownSelect-DmZsXrhY.js.map +0 -1
- package/dist/EmptyState-BQguKAp5.cjs +0 -2
- package/dist/Modal-C9txyGOk.js +0 -723
- package/dist/Modal-C9txyGOk.js.map +0 -1
- package/dist/Modal-cQF2UQIa.cjs +0 -46
- package/dist/Modal-cQF2UQIa.cjs.map +0 -1
- package/dist/ReferenceLine-BgDdQbDI.js.map +0 -1
- package/dist/ReferenceLine-Bsb5jeE4.cjs +0 -2
- package/dist/ReferenceLine-Bsb5jeE4.cjs.map +0 -1
- package/dist/RegressionLine-BfpCuD7B.cjs +0 -2
- package/dist/Spinner-DN3s4S0H.js +0 -17
- package/dist/Spinner-DN3s4S0H.js.map +0 -1
- package/dist/Spinner-UmN-KPe9.cjs +0 -2
- package/dist/Spinner-UmN-KPe9.cjs.map +0 -1
- package/dist/Tooltip-BM18N_3l.cjs +0 -2
- package/dist/Typography-CDR-DAHH.cjs +0 -2
- package/dist/Typography-CDR-DAHH.cjs.map +0 -1
- package/dist/Typography-XJoSE-By.js +0 -58
- package/dist/Typography-XJoSE-By.js.map +0 -1
- package/dist/XAxesLabels-C9REbQQs.cjs +0 -2
- package/dist/XTicksAndGridLines-DuK35ROS.cjs +0 -2
- package/dist/YAxesLabels-DhBdLk3Z.cjs +0 -2
- package/dist/YTicksAndGridLines-CtLvzExe.cjs +0 -2
- package/dist/checkIfMultiple-CaefP4X2.js.map +0 -1
- package/dist/checkIfMultiple-D3h8to1T.cjs +0 -12
- package/dist/checkIfMultiple-D3h8to1T.cjs.map +0 -1
- package/dist/checkIfNullOrUndefined.d.ts +0 -15
- package/dist/checkIfNullOrUndefined.js +0 -2
- package/dist/checkIfNullOrUndefined.js.map +0 -1
- package/dist/customArea-B47Ew5cT.cjs +0 -2
- package/dist/excelDownload.d.ts +0 -31
- package/dist/excelDownload.js +0 -2
- package/dist/excelDownload.js.map +0 -1
- package/dist/generateCodes.d.ts +0 -25
- package/dist/generateCodes.js +0 -2
- package/dist/generateCodes.js.map +0 -1
- package/dist/getJenks.d.ts +0 -17
- package/dist/getJenks.js +0 -2
- package/dist/getJenks.js.map +0 -1
- package/dist/getPercentileValue.d.ts +0 -13
- package/dist/getPercentileValue.js +0 -2
- package/dist/getPercentileValue.js.map +0 -1
- package/dist/getQueryParamsFromLink.d.ts +0 -18
- package/dist/getQueryParamsFromLink.js +0 -2
- package/dist/getQueryParamsFromLink.js.map +0 -1
- package/dist/getSliderMarks-CWajGCGq.js +0 -719
- package/dist/getSliderMarks-CWajGCGq.js.map +0 -1
- package/dist/getSliderMarks-DDJ1CdhL.cjs +0 -6
- package/dist/getSliderMarks-DDJ1CdhL.cjs.map +0 -1
- package/dist/getTextColorBasedOnBgColor.d.ts +0 -13
- package/dist/getTextColorBasedOnBgColor.js +0 -2
- package/dist/getTextColorBasedOnBgColor.js.map +0 -1
- package/dist/getUniqValue.d.ts +0 -18
- package/dist/getUniqValue.js +0 -2
- package/dist/getUniqValue.js.map +0 -1
- package/dist/graphList.d.ts +0 -9
- package/dist/graphList.js +0 -2
- package/dist/graphList.js.map +0 -1
- package/dist/imageDownload.d.ts +0 -16
- package/dist/imageDownload.js +0 -3
- package/dist/imageDownload.js.map +0 -1
- package/dist/index-01r5X3Gr-9jE0ObrK.cjs +0 -2
- package/dist/index-01r5X3Gr-9jE0ObrK.cjs.map +0 -1
- package/dist/index-01r5X3Gr-kH7FxQ7P.js +0 -451
- package/dist/index-01r5X3Gr-kH7FxQ7P.js.map +0 -1
- package/dist/index-BGMGC-HN.cjs +0 -22
- package/dist/index-BGMGC-HN.cjs.map +0 -1
- package/dist/index-BHm2KTjD-2e-Fu8L-.js +0 -702
- package/dist/index-BHm2KTjD-2e-Fu8L-.js.map +0 -1
- package/dist/index-BHm2KTjD-D8FylaKc.cjs +0 -44
- package/dist/index-BHm2KTjD-D8FylaKc.cjs.map +0 -1
- package/dist/index-BIPNFFja.js +0 -506
- package/dist/index-BIPNFFja.js.map +0 -1
- package/dist/index-BYroABPm.cjs +0 -2
- package/dist/index-CEc_9zWy.cjs +0 -2
- package/dist/index-CEc_9zWy.cjs.map +0 -1
- package/dist/index-CbVeVrla.cjs +0 -2
- package/dist/index-CbVeVrla.cjs.map +0 -1
- package/dist/index-CqzhBPuO-CfQywbdq.js +0 -41
- package/dist/index-CqzhBPuO-CfQywbdq.js.map +0 -1
- package/dist/index-CqzhBPuO-raKZqS7l.cjs +0 -2
- package/dist/index-CqzhBPuO-raKZqS7l.cjs.map +0 -1
- package/dist/index-DSnvdkHZ.js +0 -495
- package/dist/index-DSnvdkHZ.js.map +0 -1
- package/dist/index-DXmF_0ez.js.map +0 -1
- package/dist/index-a2C2Bqn2.cjs +0 -10
- package/dist/numberFormattingFunction.d.ts +0 -22
- package/dist/numberFormattingFunction.js +0 -2
- package/dist/numberFormattingFunction.js.map +0 -1
- package/dist/removeOutliers.d.ts +0 -16
- package/dist/removeOutliers.js +0 -2
- package/dist/removeOutliers.js.map +0 -1
- package/dist/svgDownload.d.ts +0 -16
- package/dist/svgDownload.js +0 -2
- package/dist/svgDownload.js.map +0 -1
- package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js +0 -139
- package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js.map +0 -1
- package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs +0 -4
- package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs.map +0 -1
- package/dist/transformColumnsToArray.d.ts +0 -38
- package/dist/transformColumnsToArray.js +0 -2
- package/dist/transformColumnsToArray.js.map +0 -1
- package/dist/transformDataForAggregation.d.ts +0 -38
- package/dist/transformDataForAggregation.js +0 -2
- package/dist/transformDataForAggregation.js.map +0 -1
- package/dist/transformDataForGraph.d.ts +0 -47
- package/dist/transformDataForGraph.js +0 -2
- package/dist/transformDataForGraph.js.map +0 -1
- package/dist/transformDataForGraphFromFile.d.ts +0 -66
- package/dist/transformDataForGraphFromFile.js +0 -2
- package/dist/transformDataForGraphFromFile.js.map +0 -1
- package/dist/use-in-view-CZPXmTZM.js.map +0 -1
- package/dist/use-in-view-Dl1CsAIo.cjs.map +0 -1
- package/dist/x-Dft9NVe_-DcB7wtv5.js +0 -61
- package/dist/x-Dft9NVe_-DcB7wtv5.js.map +0 -1
- package/dist/x-Dft9NVe_-LeyJu02C.cjs +0 -27
- package/dist/x-Dft9NVe_-LeyJu02C.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeoHubMapWithLayerSelection.cjs","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/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 { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\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 selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(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 selectedLayer,\r\n layerIdList,\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\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 setMapStyleData(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 ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\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, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\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 excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\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 ref={mapContainer} className='map maplibre-show-control w-full h-full' />\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 { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\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 */\r\n mapStyle: string;\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 the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\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 GeoHubMapWithLayerSelection(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 layerSelection,\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 [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\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: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\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) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\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 selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\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":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":"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"}
|
|
@@ -1,2 +1,308 @@
|
|
|
1
|
-
|
|
1
|
+
import { j as e, m as V } from "./index-CHPV5EwG-BPSP-7Jg.js";
|
|
2
|
+
import _, { useState as L, useRef as O, useEffect as H, useMemo as T } from "react";
|
|
3
|
+
import { f as W } from "./index-UV9hjG_S.js";
|
|
4
|
+
import { Z as E, H as G } from "./DropdownSelect-CDC9lEqU.js";
|
|
5
|
+
import D from "maplibre-gl";
|
|
6
|
+
import * as P from "pmtiles";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { f as $ } from "./fetchAndParseData-Bcmr659B.js";
|
|
9
|
+
import { f as z } from "./filterData-B8ocT57s.js";
|
|
10
|
+
import { s as A } from "./string2HTML-CWHGfz_d.js";
|
|
11
|
+
import { X as Z } from "./index-BmCqpO1B.js";
|
|
12
|
+
import { s as F } from "./select-DKy99ogv.js";
|
|
13
|
+
import { GraphHeader as J } from "./GraphHeader.js";
|
|
14
|
+
import { GraphFooter as X } from "./GraphFooter.js";
|
|
15
|
+
function q(I) {
|
|
16
|
+
const {
|
|
17
|
+
mapStyle: x,
|
|
18
|
+
height: c,
|
|
19
|
+
width: i,
|
|
20
|
+
relativeHeight: m,
|
|
21
|
+
center: j,
|
|
22
|
+
zoomLevel: b,
|
|
23
|
+
minHeight: d,
|
|
24
|
+
selectedLayer: p,
|
|
25
|
+
layerIdList: f,
|
|
26
|
+
excludeLayers: a,
|
|
27
|
+
mapLegend: h
|
|
28
|
+
} = I, [u, C] = L(0), [g, N] = L(0), [k, l] = L(!0), [v, M] = L(void 0), y = O(null), s = O(null), t = O(null);
|
|
29
|
+
return H(() => {
|
|
30
|
+
const r = new ResizeObserver((n) => {
|
|
31
|
+
C(i || n[0].target.clientWidth || 620), N(c || n[0].target.clientHeight || 480);
|
|
32
|
+
});
|
|
33
|
+
return y.current && (N(y.current.clientHeight || 480), C(y.current.clientWidth || 620), i || r.observe(y.current)), () => r.disconnect();
|
|
34
|
+
}, [i, c]), H(() => {
|
|
35
|
+
s.current && u && !t.current && $(x).then((r) => {
|
|
36
|
+
M(r), F(s.current).selectAll("div").remove();
|
|
37
|
+
const w = new P.Protocol();
|
|
38
|
+
D.addProtocol("pmtiles", w.tile);
|
|
39
|
+
const S = {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
container: s.current,
|
|
42
|
+
style: {
|
|
43
|
+
...r,
|
|
44
|
+
layers: z(r.layers, [
|
|
45
|
+
{
|
|
46
|
+
column: "id",
|
|
47
|
+
excludeValues: [
|
|
48
|
+
...a,
|
|
49
|
+
...f.filter((o) => p.indexOf(o) === -1)
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
])
|
|
53
|
+
},
|
|
54
|
+
attributionControl: !0
|
|
55
|
+
};
|
|
56
|
+
j && (S.center = j), b && (S.zoom = b), t.current = new D.Map(S), t.current.addControl(
|
|
57
|
+
new D.NavigationControl({
|
|
58
|
+
visualizePitch: !0,
|
|
59
|
+
showZoom: !0,
|
|
60
|
+
showCompass: !0
|
|
61
|
+
}),
|
|
62
|
+
"bottom-right"
|
|
63
|
+
), t.current.addControl(new D.ScaleControl(), "bottom-left");
|
|
64
|
+
});
|
|
65
|
+
}, [u, j, b, f, x, a, p]), H(() => {
|
|
66
|
+
if (t.current)
|
|
67
|
+
if (v) {
|
|
68
|
+
const r = {
|
|
69
|
+
...v,
|
|
70
|
+
layers: z(v.layers, [
|
|
71
|
+
{
|
|
72
|
+
column: "id",
|
|
73
|
+
excludeValues: [
|
|
74
|
+
...a,
|
|
75
|
+
...f.filter((n) => p.indexOf(n) === -1)
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
])
|
|
79
|
+
};
|
|
80
|
+
t.current.setStyle(r);
|
|
81
|
+
} else
|
|
82
|
+
$(x).then((r) => {
|
|
83
|
+
const n = {
|
|
84
|
+
...r,
|
|
85
|
+
layers: z(r.layers, [
|
|
86
|
+
{
|
|
87
|
+
column: "id",
|
|
88
|
+
excludeValues: [
|
|
89
|
+
...a,
|
|
90
|
+
...f.filter((w) => p.indexOf(w) === -1)
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
])
|
|
94
|
+
};
|
|
95
|
+
t.current.setStyle(n);
|
|
96
|
+
});
|
|
97
|
+
}, [a, f, x, v, p]), /* @__PURE__ */ e.jsx(
|
|
98
|
+
"div",
|
|
99
|
+
{
|
|
100
|
+
className: "flex flex-col grow justify-center leading-0",
|
|
101
|
+
ref: y,
|
|
102
|
+
"aria-label": "Map area",
|
|
103
|
+
children: (i || u) && (c || g) ? /* @__PURE__ */ e.jsxs(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
style: {
|
|
107
|
+
width: i || u,
|
|
108
|
+
height: Math.max(
|
|
109
|
+
d,
|
|
110
|
+
c || (m ? d ? (i || u) * m > d ? (i || u) * m : d : (i || u) * m : g)
|
|
111
|
+
)
|
|
112
|
+
},
|
|
113
|
+
children: [
|
|
114
|
+
/* @__PURE__ */ e.jsx("div", { ref: s, className: "map maplibre-show-control w-full h-full" }),
|
|
115
|
+
h ? /* @__PURE__ */ e.jsx("div", { className: "absolute left-[22px] bottom-13", children: k ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
|
|
116
|
+
/* @__PURE__ */ e.jsx(
|
|
117
|
+
"div",
|
|
118
|
+
{
|
|
119
|
+
style: {
|
|
120
|
+
backgroundColor: "rgba(240,240,240, 0.7)",
|
|
121
|
+
border: "1px solid var(--gray-400)",
|
|
122
|
+
borderRadius: "999px",
|
|
123
|
+
width: "24px",
|
|
124
|
+
height: "24px",
|
|
125
|
+
padding: "3px",
|
|
126
|
+
cursor: "pointer",
|
|
127
|
+
zIndex: 10,
|
|
128
|
+
position: "absolute",
|
|
129
|
+
right: "-0.75rem",
|
|
130
|
+
top: "-0.75rem"
|
|
131
|
+
},
|
|
132
|
+
onClick: () => {
|
|
133
|
+
l(!1);
|
|
134
|
+
},
|
|
135
|
+
children: /* @__PURE__ */ e.jsx(Z, {})
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
/* @__PURE__ */ e.jsx(
|
|
139
|
+
"div",
|
|
140
|
+
{
|
|
141
|
+
className: "p-2",
|
|
142
|
+
style: {
|
|
143
|
+
backgroundColor: "rgba(240,240,240, 0.7)"
|
|
144
|
+
},
|
|
145
|
+
dangerouslySetInnerHTML: typeof h == "string" ? { __html: A(h) } : void 0,
|
|
146
|
+
children: _.isValidElement(h) ? h : null
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
] }) : /* @__PURE__ */ e.jsx(
|
|
150
|
+
"button",
|
|
151
|
+
{
|
|
152
|
+
type: "button",
|
|
153
|
+
className: "mb-0 border-0 bg-transparent p-0 self-start",
|
|
154
|
+
onClick: () => {
|
|
155
|
+
l(!0);
|
|
156
|
+
},
|
|
157
|
+
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" })
|
|
158
|
+
}
|
|
159
|
+
) }) : null
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
) : null
|
|
163
|
+
}
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
function ne(I) {
|
|
167
|
+
const {
|
|
168
|
+
mapStyle: x,
|
|
169
|
+
graphTitle: c,
|
|
170
|
+
height: i,
|
|
171
|
+
width: m,
|
|
172
|
+
relativeHeight: j,
|
|
173
|
+
sources: b,
|
|
174
|
+
graphDescription: d,
|
|
175
|
+
footNote: p,
|
|
176
|
+
padding: f,
|
|
177
|
+
backgroundColor: a = !1,
|
|
178
|
+
center: h,
|
|
179
|
+
zoomLevel: u,
|
|
180
|
+
graphID: C,
|
|
181
|
+
language: g = "en",
|
|
182
|
+
minHeight: N = 0,
|
|
183
|
+
theme: k = "light",
|
|
184
|
+
layerSelection: l,
|
|
185
|
+
excludeLayers: v = [],
|
|
186
|
+
ariaLabel: M,
|
|
187
|
+
uiMode: y = "normal",
|
|
188
|
+
styles: s,
|
|
189
|
+
classNames: t,
|
|
190
|
+
mapLegend: r = []
|
|
191
|
+
} = I, [n, w] = L(l[0].layerID);
|
|
192
|
+
H(() => {
|
|
193
|
+
w(l[0].layerID);
|
|
194
|
+
}, [l]);
|
|
195
|
+
const S = T(
|
|
196
|
+
() => ({
|
|
197
|
+
ignoreCase: !0,
|
|
198
|
+
ignoreAccents: !0,
|
|
199
|
+
trim: !0
|
|
200
|
+
}),
|
|
201
|
+
[]
|
|
202
|
+
);
|
|
203
|
+
return /* @__PURE__ */ e.jsx(
|
|
204
|
+
"div",
|
|
205
|
+
{
|
|
206
|
+
className: `${k || "light"} flex ${m ? "w-fit grow-0" : "w-full grow"}`,
|
|
207
|
+
dir: g === "he" || g === "ar" ? "rtl" : void 0,
|
|
208
|
+
children: /* @__PURE__ */ e.jsx(
|
|
209
|
+
"div",
|
|
210
|
+
{
|
|
211
|
+
className: V(
|
|
212
|
+
`${a ? a === !0 ? "bg-primary-gray-200 dark:bg-primary-gray-650 " : "" : "bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${g || "en"}`,
|
|
213
|
+
t?.graphContainer
|
|
214
|
+
),
|
|
215
|
+
style: {
|
|
216
|
+
...s?.graphContainer || {},
|
|
217
|
+
...a && a !== !0 ? { backgroundColor: a } : {}
|
|
218
|
+
},
|
|
219
|
+
id: C,
|
|
220
|
+
"aria-label": M || `${c ? `The graph shows ${c}. ` : ""}This is a map.${d ? ` ${d}` : ""}`,
|
|
221
|
+
children: /* @__PURE__ */ e.jsx(
|
|
222
|
+
"div",
|
|
223
|
+
{
|
|
224
|
+
className: "flex grow",
|
|
225
|
+
style: { padding: a ? f || "1rem" : f || 0 },
|
|
226
|
+
children: /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col w-full gap-4 grow justify-between", children: [
|
|
227
|
+
c || d ? /* @__PURE__ */ e.jsx(
|
|
228
|
+
J,
|
|
229
|
+
{
|
|
230
|
+
styles: {
|
|
231
|
+
title: s?.title,
|
|
232
|
+
description: s?.description
|
|
233
|
+
},
|
|
234
|
+
classNames: {
|
|
235
|
+
title: t?.title,
|
|
236
|
+
description: t?.description
|
|
237
|
+
},
|
|
238
|
+
graphTitle: c,
|
|
239
|
+
graphDescription: d,
|
|
240
|
+
width: m
|
|
241
|
+
}
|
|
242
|
+
) : null,
|
|
243
|
+
/* @__PURE__ */ e.jsx(
|
|
244
|
+
E,
|
|
245
|
+
{
|
|
246
|
+
options: l.map((o) => ({
|
|
247
|
+
label: o.name,
|
|
248
|
+
value: o.layerID
|
|
249
|
+
})),
|
|
250
|
+
size: "sm",
|
|
251
|
+
isClearable: !1,
|
|
252
|
+
variant: y,
|
|
253
|
+
isRtl: g === "he" || g === "ar",
|
|
254
|
+
isSearchable: !0,
|
|
255
|
+
filterOption: G(S),
|
|
256
|
+
defaultValue: {
|
|
257
|
+
label: l[0].name,
|
|
258
|
+
value: l[0].layerID
|
|
259
|
+
},
|
|
260
|
+
controlShouldRenderValue: !0,
|
|
261
|
+
onChange: (o) => {
|
|
262
|
+
o && w(o.value);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
),
|
|
266
|
+
/* @__PURE__ */ e.jsx(
|
|
267
|
+
q,
|
|
268
|
+
{
|
|
269
|
+
mapStyle: x,
|
|
270
|
+
center: h,
|
|
271
|
+
zoomLevel: u,
|
|
272
|
+
width: m,
|
|
273
|
+
height: i,
|
|
274
|
+
relativeHeight: j,
|
|
275
|
+
minHeight: N,
|
|
276
|
+
selectedLayer: n,
|
|
277
|
+
layerIdList: W(l.map((o) => o.layerID)),
|
|
278
|
+
excludeLayers: v,
|
|
279
|
+
mapLegend: r.find(
|
|
280
|
+
(o) => o.mapStyleName === l.find((R) => R.layerID === n)?.name
|
|
281
|
+
)?.legend
|
|
282
|
+
}
|
|
283
|
+
),
|
|
284
|
+
b || p ? /* @__PURE__ */ e.jsx(
|
|
285
|
+
X,
|
|
286
|
+
{
|
|
287
|
+
styles: { footnote: s?.footnote, source: s?.source },
|
|
288
|
+
classNames: {
|
|
289
|
+
footnote: t?.footnote,
|
|
290
|
+
source: t?.source
|
|
291
|
+
},
|
|
292
|
+
sources: b,
|
|
293
|
+
footNote: p,
|
|
294
|
+
width: m
|
|
295
|
+
}
|
|
296
|
+
) : null
|
|
297
|
+
] })
|
|
298
|
+
}
|
|
299
|
+
)
|
|
300
|
+
}
|
|
301
|
+
)
|
|
302
|
+
}
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
export {
|
|
306
|
+
ne as GeoHubMapWithLayerSelection
|
|
307
|
+
};
|
|
2
308
|
//# sourceMappingURL=GeoHubMapWithLayerSelection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoHubMapWithLayerSelection.js","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/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 { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\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 selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(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 selectedLayer,\r\n layerIdList,\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\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 setMapStyleData(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 ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\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, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\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 excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\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 ref={mapContainer} className='map maplibre-show-control w-full h-full' />\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 { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\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 */\r\n mapStyle: string;\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 the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\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 GeoHubMapWithLayerSelection(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 layerSelection,\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 [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\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: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\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) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\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 selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\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":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":"g3BA0BO,SAASA,EAAMC,EAAc,CAClC,KAAM,CACJ,SAAAC,EACA,OAAAC,EACA,MAAAC,EACA,eAAAC,EACA,OAAAC,EACA,UAAAC,EACA,UAAAC,EACA,cAAAC,EACA,YAAAC,EACA,cAAAC,EACA,UAAAC,CAAA,EACEX,EAEE,CAACY,EAAUC,CAAW,EAAIC,EAAAA,SAAS,CAAC,EACpC,CAACC,EAAWC,CAAY,EAAIF,EAAAA,SAAS,CAAC,EACtC,CAACG,EAAYC,CAAa,EAAIJ,EAAAA,SAAS,EAAI,EAE3C,CAACK,EAAcC,CAAe,EAAIN,EAAAA,SAAc,MAAS,EACzDO,EAAWC,EAAAA,OAAuB,IAAI,EACtCC,EAAeD,EAAAA,OAAuB,IAAI,EAE1CE,EAASF,EAAAA,OAAY,IAAI,EAC/BG,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAiB,IAAI,eAAeC,GAAW,CACnDd,EAAYV,GAASwB,EAAQ,CAAC,EAAE,OAAO,aAAe,GAAG,EACzDX,EAAad,GAAUyB,EAAQ,CAAC,EAAE,OAAO,cAAgB,GAAG,CAC9D,CAAC,EACD,OAAIN,EAAS,UACXL,EAAaK,EAAS,QAAQ,cAAgB,GAAG,EACjDR,EAAYQ,EAAS,QAAQ,aAAe,GAAG,EAC1ClB,GAAOuB,EAAe,QAAQL,EAAS,OAAO,GAE9C,IAAMK,EAAe,WAAA,CAC9B,EAAG,CAACvB,EAAOD,CAAM,CAAC,EAClBuB,EAAAA,UAAU,IAAM,CACVF,EAAa,SAAWX,GAAY,CAACY,EAAO,SAC9CI,EAAAA,kBAAkB3B,CAAQ,EAAE,KAAK4B,GAAK,CACpCT,EAAgBS,CAAC,EACFC,EAAAA,OAAOP,EAAa,OAAO,EACnC,UAAU,KAAK,EAAE,OAAA,EACxB,MAAMQ,EAAW,IAAIC,EAAQ,SAC7BC,EAAW,YAAY,UAAWF,EAAS,IAAI,EAE/C,MAAMG,EAAc,CAElB,UAAWX,EAAa,QACxB,MAAO,CACL,GAAGM,EACH,OAAQM,EAAAA,WAAWN,EAAE,OAAQ,CAC3B,CACE,OAAQ,KACR,cAAe,CACb,GAAGnB,EACH,GAAGD,EAAY,OAAO2B,GAAM5B,EAAc,QAAQ4B,CAAE,IAAM,EAAE,CAAA,CAC9D,CACF,CACD,CAAA,EAEH,mBAAoB,EAAA,EAElB/B,IACF6B,EAAO,OAAS7B,GAEdC,IACF4B,EAAO,KAAO5B,GAEhBkB,EAAO,QAAU,IAAIS,EAAW,IAAIC,CAAM,EAC1CV,EAAO,QAAQ,WACb,IAAIS,EAAW,kBAAkB,CAC/B,eAAgB,GAChB,SAAU,GACV,YAAa,EAAA,CACd,EACD,cAAA,EAEFT,EAAO,QAAQ,WAAW,IAAIS,EAAW,aAAgB,aAAa,CACxE,CAAC,CAEL,EAAG,CAACrB,EAAUP,EAAQC,EAAWG,EAAaR,EAAUS,EAAeF,CAAa,CAAC,EACrFiB,EAAAA,UAAU,IAAM,CACd,GAAID,EAAO,QACT,GAAIL,EAAc,CAEhB,MAAMkB,EAAmB,CACvB,GAAGlB,EACH,OAAQgB,EAAAA,WAAWhB,EAAa,OAAQ,CACtC,CACE,OAAQ,KACR,cAAe,CACb,GAAGT,EACH,GAAGD,EAAY,OAAO2B,GAAM5B,EAAc,QAAQ4B,CAAE,IAAM,EAAE,CAAA,CAC9D,CACF,CACD,CAAA,EAEHZ,EAAO,QAAQ,SAASa,CAAW,CACrC,MACET,EAAAA,kBAAkB3B,CAAQ,EAAE,KAAK4B,GAAK,CAEpC,MAAMQ,EAAmB,CACvB,GAAGR,EACH,OAAQM,EAAAA,WAAWN,EAAE,OAAQ,CAC3B,CACE,OAAQ,KACR,cAAe,CACb,GAAGnB,EACH,GAAGD,EAAY,OAAO2B,GAAM5B,EAAc,QAAQ4B,CAAE,IAAM,EAAE,CAAA,CAC9D,CACF,CACD,CAAA,EAEHZ,EAAO,QAAQ,SAASa,CAAW,CACrC,CAAC,CAEP,EAAG,CAAC3B,EAAeD,EAAaR,EAAUkB,EAAcX,CAAa,CAAC,EAEpE8B,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,8CACV,IAAKjB,EACL,aAAW,WAET,UAAAlB,GAASS,KAAcV,GAAUa,GACjCwB,EAAAA,kBAAAA,KAAC,MAAA,CACC,MAAO,CACL,MAAOpC,GAASS,EAChB,OAAQ,KAAK,IACXL,EACAL,IACGE,EACGG,GACGJ,GAASS,GAAYR,EAAiBG,GACpCJ,GAASS,GAAYR,EACtBG,GACDJ,GAASS,GAAYR,EACxBW,EAAA,CACR,EAGF,SAAA,CAAAuB,EAAAA,kBAAAA,IAAC,MAAA,CAAI,IAAKf,EAAc,UAAU,0CAA0C,EAE3EZ,EACC2B,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,iCACZ,WACCC,EAAAA,kBAAAA,KAAAC,EAAAA,kBAAAA,SAAA,CACE,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,MAAA,CACC,MAAO,CACL,gBAAiB,yBACjB,OAAQ,4BACR,aAAc,QACd,MAAO,OACP,OAAQ,OACR,QAAS,MACT,OAAQ,UACR,OAAQ,GACR,SAAU,WACV,MAAO,WACP,IAAK,UAAA,EAEP,QAAS,IAAM,CACbpB,EAAc,EAAK,CACrB,EAEA,iCAACuB,EAAAA,EAAA,CAAA,CAAE,CAAA,CAAA,EAELH,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,MACV,MAAO,CACL,gBAAiB,wBAAA,EAEnB,wBACE,OAAO3B,GAAc,SAAW,CAAE,OAAQ+B,cAAY/B,CAAS,CAAA,EAAM,OAGtE,SAAAgC,EAAM,eAAehC,CAAS,EAAIA,EAAY,IAAA,CAAA,CACjD,CAAA,CACF,EAEA2B,EAAAA,kBAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAU,8CACV,QAAS,IAAM,CACbpB,EAAc,EAAI,CACpB,EAEA,SAAAoB,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,+MAA+M,SAAA,aAAA,CAE9N,CAAA,CAAA,EAGN,EACE,IAAA,CAAA,CAAA,EAEJ,IAAA,CAAA,CAGV,CCnJO,SAASM,EAA4B5C,EAAc,CACxD,KAAM,CACJ,SAAAC,EACA,WAAA4C,EACA,OAAA3C,EACA,MAAAC,EACA,eAAAC,EACA,QAAA0C,EACA,iBAAAC,EACA,SAAAC,EACA,QAAAC,EACA,gBAAAC,EAAkB,GAClB,OAAA7C,EACA,UAAAC,EACA,QAAA6C,EACA,SAAAC,EAAW,KACX,UAAA7C,EAAY,EACZ,MAAA8C,EAAQ,QACR,eAAAC,EACA,cAAA5C,EAAgB,CAAA,EAChB,UAAA6C,EACA,OAAAC,EAAS,SACT,OAAAC,EACA,WAAAC,EACA,UAAA/C,EAAY,CAAA,CAAC,EACXX,EAEE,CAACQ,EAAemD,CAAgB,EAAI7C,EAAAA,SAASwC,EAAe,CAAC,EAAE,OAAO,EAE5E7B,EAAAA,UAAU,IAAM,CACdkC,EAAiBL,EAAe,CAAC,EAAE,OAAO,CAC5C,EAAG,CAACA,CAAc,CAAC,EAEnB,MAAMM,EAAeC,EAAAA,QACnB,KAAO,CACL,WAAY,GACZ,cAAe,GACf,KAAM,EAAA,GAER,CAAA,CAAC,EAEH,OACEvB,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAW,GAAGe,GAAS,OAAO,UAAUlD,EAAQ,eAAiB,aAAa,GAC9E,IAAKiD,IAAa,MAAQA,IAAa,KAAO,MAAQ,OAEtD,SAAAd,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAWwB,EAAAA,UAAAA,GACT,GACGZ,EAEGA,IAAoB,GAClB,gDACA,GAHF,iBAIN,gDAAgDE,GAAY,IAAI,GAChEM,GAAY,cAAA,EAEd,MAAO,CACL,GAAID,GAAQ,gBAAkB,CAAA,EAC9B,GAAIP,GAAmBA,IAAoB,GAAO,CAAE,gBAAAA,CAAA,EAAoB,CAAA,CAAC,EAE3E,GAAIC,EACJ,aACEI,GACA,GACEV,EAAa,mBAAmBA,CAAU,KAAO,EACnD,iBAAiBE,EAAmB,IAAIA,CAAgB,GAAK,EAAE,GAGjE,SAAAT,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,YACV,MAAO,CAAE,QAASY,EAAkBD,GAAW,OAASA,GAAW,CAAA,EAEnE,SAAAV,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,kDACZ,SAAA,CAAAM,GAAcE,EACbT,EAAAA,kBAAAA,IAACyB,EAAAA,YAAA,CACC,OAAQ,CACN,MAAON,GAAQ,MACf,YAAaA,GAAQ,WAAA,EAEvB,WAAY,CACV,MAAOC,GAAY,MACnB,YAAaA,GAAY,WAAA,EAE3B,WAAAb,EACA,iBAAAE,EACA,MAAA5C,CAAA,CAAA,EAEA,KACJmC,EAAAA,kBAAAA,IAAC0B,EAAAA,sBAAAA,eAAA,CACC,QAASV,EAAe,IAAIzB,IAAM,CAChC,MAAOA,EAAE,KACT,MAAOA,EAAE,OAAA,EACT,EACF,KAAK,KACL,YAAa,GACb,QAAS2B,EACT,MAAOJ,IAAa,MAAQA,IAAa,KACzC,aAAY,GACZ,aAAca,EAAAA,sBAAAA,aAAaL,CAAY,EACvC,aAAc,CACZ,MAAON,EAAe,CAAC,EAAE,KACzB,MAAOA,EAAe,CAAC,EAAE,OAAA,EAE3B,yBAAwB,GAExB,SAAWlB,GAAY,CACjBA,GAAIuB,EAAiBvB,EAAG,KAAK,CACnC,CAAA,CAAA,EAEFE,EAAAA,kBAAAA,IAACvC,EAAA,CACC,SAAAE,EACA,OAAAI,EACA,UAAAC,EACA,MAAAH,EACA,OAAAD,EACA,eAAAE,EACA,UAAAG,EACA,cAAAC,EACA,YAAa0D,EAAAA,YAAYZ,EAAe,IAAIzB,GAAKA,EAAE,OAAO,CAAC,EAC3D,cAAAnB,EACA,UACGC,EAAkC,KACjCkB,GACEA,EAAE,eACFyB,EAAe,KAAKlB,GAAMA,EAAG,UAAY5B,CAAa,GAAG,IAAA,GAC1D,MAAA,CAAA,EAGNsC,GAAWE,EACVV,EAAAA,kBAAAA,IAAC6B,EAAAA,YAAA,CACC,OAAQ,CAAE,SAAUV,GAAQ,SAAU,OAAQA,GAAQ,MAAA,EACtD,WAAY,CACV,SAAUC,GAAY,SACtB,OAAQA,GAAY,MAAA,EAEtB,QAAAZ,EACA,SAAAE,EACA,MAAA7C,CAAA,CAAA,EAEA,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAGN"}
|
|
1
|
+
{"version":3,"file":"GeoHubMapWithLayerSelection.js","sources":["../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/MapEl.tsx","../src/Components/Graphs/Maps/GeoHubMaps/MapWithLayerSelection/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 { string2HTML } from '@/Utils/string2HTML';\r\nimport { X } from '@/Components/Icons';\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 selectedLayer: string[];\r\n layerIdList: string[];\r\n excludeLayers: string[];\r\n mapLegend?: string | React.ReactNode;\r\n}\r\n\r\nexport function MapEl(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 selectedLayer,\r\n layerIdList,\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mapStyleData, setMapStyleData] = useState<any>(undefined);\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 setMapStyleData(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 ...d,\r\n layers: filterData(d.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\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, layerIdList, mapStyle, excludeLayers, selectedLayer]);\r\n useEffect(() => {\r\n if (mapRef.current) {\r\n if (mapStyleData) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const mapStyleObj: any = {\r\n ...mapStyleData,\r\n layers: filterData(mapStyleData.layers, [\r\n {\r\n column: 'id',\r\n excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n } else\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 excludeValues: [\r\n ...excludeLayers,\r\n ...layerIdList.filter(el => selectedLayer.indexOf(el) === -1),\r\n ],\r\n },\r\n ]),\r\n };\r\n mapRef.current.setStyle(mapStyleObj);\r\n });\r\n }\r\n }, [excludeLayers, layerIdList, mapStyle, mapStyleData, selectedLayer]);\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 ref={mapContainer} className='map maplibre-show-control w-full h-full' />\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 { useEffect, useMemo, useState } from 'react';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { MapEl } from './MapEl';\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 */\r\n mapStyle: string;\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 the layers that the user select and switch between sing a drop down */\r\n layerSelection: { layerID: string[]; name: string }[];\r\n /** Defines the legend for the map. mapLegend is of type { mapStyleName: string; legend: string | React.ReactNode }[] where mapStyleName corresponds to the each name in the layerSelection. */\r\n mapLegend?: MapLegendDataType[];\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 GeoHubMapWithLayerSelection(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 layerSelection,\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 [selectedLayer, setSelectedLayer] = useState(layerSelection[0].layerID);\r\n\r\n useEffect(() => {\r\n setSelectedLayer(layerSelection[0].layerID);\r\n }, [layerSelection]);\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 <DropdownSelect\r\n options={layerSelection.map(d => ({\r\n label: d.name,\r\n value: d.layerID,\r\n }))}\r\n size='sm'\r\n isClearable={false}\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: layerSelection[0].name,\r\n value: layerSelection[0].layerID,\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) setSelectedLayer(el.value);\r\n }}\r\n />\r\n <MapEl\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 selectedLayer={selectedLayer}\r\n layerIdList={flattenDeep(layerSelection.map(d => d.layerID))}\r\n excludeLayers={excludeLayers}\r\n mapLegend={\r\n (mapLegend as MapLegendDataType[]).find(\r\n d =>\r\n d.mapStyleName ===\r\n layerSelection.find(el => el.layerID === selectedLayer)?.name,\r\n )?.legend\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":["MapEl","props","mapStyle","height","width","relativeHeight","center","zoomLevel","minHeight","selectedLayer","layerIdList","excludeLayers","mapLegend","svgWidth","setSvgWidth","useState","svgHeight","setSvgHeight","showLegend","setShowLegend","mapStyleData","setMapStyleData","graphDiv","useRef","mapContainer","mapRef","useEffect","resizeObserver","entries","fetchAndParseJSON","d","select","protocol","pmtiles","maplibreGl","mapObj","filterData","el","mapStyleObj","jsx","jsxs","Fragment","X","string2HTML","React","GeoHubMapWithLayerSelection","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","graphID","language","theme","layerSelection","ariaLabel","uiMode","styles","classNames","setSelectedLayer","filterConfig","useMemo","cn","GraphHeader","DropdownSelect","createFilter","flattenDeep","GraphFooter"],"mappings":";;;;;;;;;;;;;;AA0BO,SAASA,EAAMC,GAAc;AAClC,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,IACEX,GAEE,CAACY,GAAUC,CAAW,IAAIC,EAAS,CAAC,GACpC,CAACC,GAAWC,CAAY,IAAIF,EAAS,CAAC,GACtC,CAACG,GAAYC,CAAa,IAAIJ,EAAS,EAAI,GAE3C,CAACK,GAAcC,CAAe,IAAIN,EAAc,MAAS,GACzDO,IAAWC,EAAuB,IAAI,GACtCC,IAAeD,EAAuB,IAAI,GAE1CE,IAASF,EAAY,IAAI;AAC/B,SAAAG,EAAU,MAAM;AACd,UAAMC,IAAiB,IAAI,eAAe,CAAAC,MAAW;AACnD,MAAAd,EAAYV,KAASwB,EAAQ,CAAC,EAAE,OAAO,eAAe,GAAG,GACzDX,EAAad,KAAUyB,EAAQ,CAAC,EAAE,OAAO,gBAAgB,GAAG;AAAA,IAC9D,CAAC;AACD,WAAIN,EAAS,YACXL,EAAaK,EAAS,QAAQ,gBAAgB,GAAG,GACjDR,EAAYQ,EAAS,QAAQ,eAAe,GAAG,GAC1ClB,KAAOuB,EAAe,QAAQL,EAAS,OAAO,IAE9C,MAAMK,EAAe,WAAA;AAAA,EAC9B,GAAG,CAACvB,GAAOD,CAAM,CAAC,GAClBuB,EAAU,MAAM;AACd,IAAIF,EAAa,WAAWX,KAAY,CAACY,EAAO,WAC9CI,EAAkB3B,CAAQ,EAAE,KAAK,CAAA4B,MAAK;AACpC,MAAAT,EAAgBS,CAAC,GACFC,EAAOP,EAAa,OAAO,EACnC,UAAU,KAAK,EAAE,OAAA;AACxB,YAAMQ,IAAW,IAAIC,EAAQ,SAAA;AAC7BC,MAAAA,EAAW,YAAY,WAAWF,EAAS,IAAI;AAE/C,YAAMG,IAAc;AAAA;AAAA,QAElB,WAAWX,EAAa;AAAA,QACxB,OAAO;AAAA,UACL,GAAGM;AAAA,UACH,QAAQM,EAAWN,EAAE,QAAQ;AAAA,YAC3B;AAAA,cACE,QAAQ;AAAA,cACR,eAAe;AAAA,gBACb,GAAGnB;AAAA,gBACH,GAAGD,EAAY,OAAO,CAAA2B,MAAM5B,EAAc,QAAQ4B,CAAE,MAAM,EAAE;AAAA,cAAA;AAAA,YAC9D;AAAA,UACF,CACD;AAAA,QAAA;AAAA,QAEH,oBAAoB;AAAA,MAAA;AAEtB,MAAI/B,MACF6B,EAAO,SAAS7B,IAEdC,MACF4B,EAAO,OAAO5B,IAEhBkB,EAAO,UAAU,IAAIS,EAAW,IAAIC,CAAM,GAC1CV,EAAO,QAAQ;AAAA,QACb,IAAIS,EAAW,kBAAkB;AAAA,UAC/B,gBAAgB;AAAA,UAChB,UAAU;AAAA,UACV,aAAa;AAAA,QAAA,CACd;AAAA,QACD;AAAA,MAAA,GAEFT,EAAO,QAAQ,WAAW,IAAIS,EAAW,aAAA,GAAgB,aAAa;AAAA,IACxE,CAAC;AAAA,EAEL,GAAG,CAACrB,GAAUP,GAAQC,GAAWG,GAAaR,GAAUS,GAAeF,CAAa,CAAC,GACrFiB,EAAU,MAAM;AACd,QAAID,EAAO;AACT,UAAIL,GAAc;AAEhB,cAAMkB,IAAmB;AAAA,UACvB,GAAGlB;AAAA,UACH,QAAQgB,EAAWhB,EAAa,QAAQ;AAAA,YACtC;AAAA,cACE,QAAQ;AAAA,cACR,eAAe;AAAA,gBACb,GAAGT;AAAA,gBACH,GAAGD,EAAY,OAAO,CAAA2B,MAAM5B,EAAc,QAAQ4B,CAAE,MAAM,EAAE;AAAA,cAAA;AAAA,YAC9D;AAAA,UACF,CACD;AAAA,QAAA;AAEH,QAAAZ,EAAO,QAAQ,SAASa,CAAW;AAAA,MACrC;AACE,QAAAT,EAAkB3B,CAAQ,EAAE,KAAK,CAAA4B,MAAK;AAEpC,gBAAMQ,IAAmB;AAAA,YACvB,GAAGR;AAAA,YACH,QAAQM,EAAWN,EAAE,QAAQ;AAAA,cAC3B;AAAA,gBACE,QAAQ;AAAA,gBACR,eAAe;AAAA,kBACb,GAAGnB;AAAA,kBACH,GAAGD,EAAY,OAAO,CAAA2B,MAAM5B,EAAc,QAAQ4B,CAAE,MAAM,EAAE;AAAA,gBAAA;AAAA,cAC9D;AAAA,YACF,CACD;AAAA,UAAA;AAEH,UAAAZ,EAAO,QAAQ,SAASa,CAAW;AAAA,QACrC,CAAC;AAAA,EAEP,GAAG,CAAC3B,GAAeD,GAAaR,GAAUkB,GAAcX,CAAa,CAAC,GAEpE8B,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAKjB;AAAA,MACL,cAAW;AAAA,MAET,WAAAlB,KAASS,OAAcV,KAAUa,KACjCwB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAOpC,KAASS;AAAA,YAChB,QAAQ,KAAK;AAAA,cACXL;AAAA,cACAL,MACGE,IACGG,KACGJ,KAASS,KAAYR,IAAiBG,KACpCJ,KAASS,KAAYR,IACtBG,KACDJ,KAASS,KAAYR,IACxBW;AAAA,YAAA;AAAA,UACR;AAAA,UAGF,UAAA;AAAA,YAAAuB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,KAAKf,GAAc,WAAU,2CAA0C;AAAA,YAE3EZ,IACC2B,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,kCACZ,cACCC,gBAAAA,EAAAA,KAAAC,EAAAA,UAAA,EACE,UAAA;AAAA,cAAAF,gBAAAA,EAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,iBAAiB;AAAA,oBACjB,QAAQ;AAAA,oBACR,cAAc;AAAA,oBACd,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,UAAU;AAAA,oBACV,OAAO;AAAA,oBACP,KAAK;AAAA,kBAAA;AAAA,kBAEP,SAAS,MAAM;AACb,oBAAApB,EAAc,EAAK;AAAA,kBACrB;AAAA,kBAEA,gCAACuB,GAAA,CAAA,CAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,cAELH,gBAAAA,EAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,iBAAiB;AAAA,kBAAA;AAAA,kBAEnB,yBACE,OAAO3B,KAAc,WAAW,EAAE,QAAQ+B,EAAY/B,CAAS,EAAA,IAAM;AAAA,kBAGtE,UAAAgC,EAAM,eAAehC,CAAS,IAAIA,IAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,YACjD,EAAA,CACF,IAEA2B,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS,MAAM;AACb,kBAAApB,EAAc,EAAI;AAAA,gBACpB;AAAA,gBAEA,UAAAoB,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,gNAA+M,UAAA,cAAA,CAE9N;AAAA,cAAA;AAAA,YAAA,GAGN,IACE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,IAEJ;AAAA,IAAA;AAAA,EAAA;AAGV;ACnJO,SAASM,GAA4B5C,GAAc;AACxD,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,YAAA4C;AAAA,IACA,QAAA3C;AAAA,IACA,OAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,SAAA0C;AAAA,IACA,kBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,QAAA7C;AAAA,IACA,WAAAC;AAAA,IACA,SAAA6C;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,WAAA7C,IAAY;AAAA,IACZ,OAAA8C,IAAQ;AAAA,IACR,gBAAAC;AAAA,IACA,eAAA5C,IAAgB,CAAA;AAAA,IAChB,WAAA6C;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAA/C,IAAY,CAAA;AAAA,EAAC,IACXX,GAEE,CAACQ,GAAemD,CAAgB,IAAI7C,EAASwC,EAAe,CAAC,EAAE,OAAO;AAE5E,EAAA7B,EAAU,MAAM;AACd,IAAAkC,EAAiBL,EAAe,CAAC,EAAE,OAAO;AAAA,EAC5C,GAAG,CAACA,CAAc,CAAC;AAEnB,QAAMM,IAAeC;AAAA,IACnB,OAAO;AAAA,MACL,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,IAER,CAAA;AAAA,EAAC;AAEH,SACEvB,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAGe,KAAS,OAAO,UAAUlD,IAAQ,iBAAiB,aAAa;AAAA,MAC9E,KAAKiD,MAAa,QAAQA,MAAa,OAAO,QAAQ;AAAA,MAEtD,UAAAd,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWwB;AAAAA,YACT,GACGZ,IAEGA,MAAoB,KAClB,kDACA,KAHF,iBAIN,gDAAgDE,KAAY,IAAI;AAAA,YAChEM,GAAY;AAAA,UAAA;AAAA,UAEd,OAAO;AAAA,YACL,GAAID,GAAQ,kBAAkB,CAAA;AAAA,YAC9B,GAAIP,KAAmBA,MAAoB,KAAO,EAAE,iBAAAA,EAAA,IAAoB,CAAA;AAAA,UAAC;AAAA,UAE3E,IAAIC;AAAA,UACJ,cACEI,KACA,GACEV,IAAa,mBAAmBA,CAAU,OAAO,EACnD,iBAAiBE,IAAmB,IAAIA,CAAgB,KAAK,EAAE;AAAA,UAGjE,UAAAT,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,SAASY,IAAkBD,KAAW,SAASA,KAAW,EAAA;AAAA,cAEnE,UAAAV,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,mDACZ,UAAA;AAAA,gBAAAM,KAAcE,IACbT,gBAAAA,EAAAA;AAAAA,kBAACyB;AAAA,kBAAA;AAAA,oBACC,QAAQ;AAAA,sBACN,OAAON,GAAQ;AAAA,sBACf,aAAaA,GAAQ;AAAA,oBAAA;AAAA,oBAEvB,YAAY;AAAA,sBACV,OAAOC,GAAY;AAAA,sBACnB,aAAaA,GAAY;AAAA,oBAAA;AAAA,oBAE3B,YAAAb;AAAA,oBACA,kBAAAE;AAAA,oBACA,OAAA5C;AAAA,kBAAA;AAAA,gBAAA,IAEA;AAAA,gBACJmC,gBAAAA,EAAAA;AAAAA,kBAAC0B;AAAAA,kBAAA;AAAA,oBACC,SAASV,EAAe,IAAI,CAAAzB,OAAM;AAAA,sBAChC,OAAOA,EAAE;AAAA,sBACT,OAAOA,EAAE;AAAA,oBAAA,EACT;AAAA,oBACF,MAAK;AAAA,oBACL,aAAa;AAAA,oBACb,SAAS2B;AAAA,oBACT,OAAOJ,MAAa,QAAQA,MAAa;AAAA,oBACzC,cAAY;AAAA,oBACZ,cAAca,EAAaL,CAAY;AAAA,oBACvC,cAAc;AAAA,sBACZ,OAAON,EAAe,CAAC,EAAE;AAAA,sBACzB,OAAOA,EAAe,CAAC,EAAE;AAAA,oBAAA;AAAA,oBAE3B,0BAAwB;AAAA,oBAExB,UAAU,CAAClB,MAAY;AACrB,sBAAIA,KAAIuB,EAAiBvB,EAAG,KAAK;AAAA,oBACnC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEFE,gBAAAA,EAAAA;AAAAA,kBAACvC;AAAA,kBAAA;AAAA,oBACC,UAAAE;AAAA,oBACA,QAAAI;AAAA,oBACA,WAAAC;AAAA,oBACA,OAAAH;AAAA,oBACA,QAAAD;AAAA,oBACA,gBAAAE;AAAA,oBACA,WAAAG;AAAA,oBACA,eAAAC;AAAA,oBACA,aAAa0D,EAAYZ,EAAe,IAAI,CAAAzB,MAAKA,EAAE,OAAO,CAAC;AAAA,oBAC3D,eAAAnB;AAAA,oBACA,WACGC,EAAkC;AAAA,sBACjC,CAAAkB,MACEA,EAAE,iBACFyB,EAAe,KAAK,CAAAlB,MAAMA,EAAG,YAAY5B,CAAa,GAAG;AAAA,oBAAA,GAC1D;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGNsC,KAAWE,IACVV,gBAAAA,EAAAA;AAAAA,kBAAC6B;AAAA,kBAAA;AAAA,oBACC,QAAQ,EAAE,UAAUV,GAAQ,UAAU,QAAQA,GAAQ,OAAA;AAAA,oBACtD,YAAY;AAAA,sBACV,UAAUC,GAAY;AAAA,sBACtB,QAAQA,GAAY;AAAA,oBAAA;AAAA,oBAEtB,SAAAZ;AAAA,oBACA,UAAAE;AAAA,oBACA,OAAA7C;AAAA,kBAAA;AAAA,gBAAA,IAEA;AAAA,cAAA,EAAA,CACN;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index-CHPV5EwG-DDoeWRVt.cjs"),s=require("./Typography-k-kOjICQ.cjs"),o=require("react");function a(n){const{text:e,style:t,className:i}=n;return typeof e=="string"?e.trim()===""?null:r.jsxRuntimeExports.jsx(s.u,{size:"sm",marginBottom:"none",className:r.mo("text-primary-gray-550 dark:text-primary-gray-400",i),"aria-label":"Graph description",style:t,children:e}):o.isValidElement(e)?r.jsxRuntimeExports.jsx("div",{className:i,style:t,children:e}):(console.error("GraphDescription: Invalid text type. Expected string or React element."),null)}exports.GraphDescription=a;
|
|
2
|
+
//# sourceMappingURL=GraphDescription.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphDescription.cjs","sources":["../src/Components/Typography/GraphDescription.tsx"],"sourcesContent":["import { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n text: string | React.ReactNode;\r\n style?: React.CSSProperties;\r\n className?: string;\r\n}\r\n\r\nexport function GraphDescription(props: Props) {\r\n const { text, style, className } = props;\r\n if (typeof text === 'string') {\r\n if (text.trim() === '') return null;\r\n return (\r\n <P\r\n size='sm'\r\n marginBottom='none'\r\n className={cn('text-primary-gray-550 dark:text-primary-gray-400', className)}\r\n aria-label='Graph description'\r\n style={style}\r\n >\r\n {text}\r\n </P>\r\n );\r\n }\r\n\r\n if (React.isValidElement(text))\r\n return (\r\n <div className={className} style={style}>\r\n {text}\r\n </div>\r\n );\r\n console.error('GraphDescription: Invalid text type. Expected string or React element.');\r\n return null;\r\n}\r\n"],"names":["GraphDescription","props","text","style","className","jsx","P","cn","React"],"mappings":"2LAUO,SAASA,EAAiBC,EAAc,CAC7C,KAAM,CAAE,KAAAC,EAAM,MAAAC,EAAO,UAAAC,CAAA,EAAcH,EACnC,OAAI,OAAOC,GAAS,SACdA,EAAK,SAAW,GAAW,KAE7BG,EAAAA,kBAAAA,IAACC,EAAAA,EAAA,CACC,KAAK,KACL,aAAa,OACb,UAAWC,EAAAA,GAAG,mDAAoDH,CAAS,EAC3E,aAAW,oBACX,MAAAD,EAEC,SAAAD,CAAA,CAAA,EAKHM,EAAM,eAAeN,CAAI,EAEzBG,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAAD,EAAsB,MAAAD,EACxB,SAAAD,EACH,GAEJ,QAAQ,MAAM,wEAAwE,EAC/E,KACT"}
|
package/dist/GraphDescription.js
CHANGED
|
@@ -1,2 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import { j as i, m as a } from "./index-CHPV5EwG-BPSP-7Jg.js";
|
|
2
|
+
import { u as o } from "./Typography-Ctgfl1J5.js";
|
|
3
|
+
import s from "react";
|
|
4
|
+
function c(n) {
|
|
5
|
+
const { text: r, style: t, className: e } = n;
|
|
6
|
+
return typeof r == "string" ? r.trim() === "" ? null : /* @__PURE__ */ i.jsx(
|
|
7
|
+
o,
|
|
8
|
+
{
|
|
9
|
+
size: "sm",
|
|
10
|
+
marginBottom: "none",
|
|
11
|
+
className: a("text-primary-gray-550 dark:text-primary-gray-400", e),
|
|
12
|
+
"aria-label": "Graph description",
|
|
13
|
+
style: t,
|
|
14
|
+
children: r
|
|
15
|
+
}
|
|
16
|
+
) : s.isValidElement(r) ? /* @__PURE__ */ i.jsx("div", { className: e, style: t, children: r }) : (console.error("GraphDescription: Invalid text type. Expected string or React element."), null);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
c as GraphDescription
|
|
20
|
+
};
|
|
2
21
|
//# sourceMappingURL=GraphDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphDescription.js","sources":["../src/Components/Typography/GraphDescription.tsx"],"sourcesContent":["import { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n text: string | React.ReactNode;\r\n style?: React.CSSProperties;\r\n className?: string;\r\n}\r\n\r\nexport function GraphDescription(props: Props) {\r\n const { text, style, className } = props;\r\n if (typeof text === 'string') {\r\n if (text.trim() === '') return null;\r\n return (\r\n <P\r\n size='sm'\r\n marginBottom='none'\r\n className={cn('text-primary-gray-550 dark:text-primary-gray-400', className)}\r\n aria-label='Graph description'\r\n style={style}\r\n >\r\n {text}\r\n </P>\r\n );\r\n }\r\n\r\n if (React.isValidElement(text))\r\n return (\r\n <div className={className} style={style}>\r\n {text}\r\n </div>\r\n );\r\n console.error('GraphDescription: Invalid text type. Expected string or React element.');\r\n return null;\r\n}\r\n"],"names":["GraphDescription","props","text","style","className","jsx","P","cn","React"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphDescription.js","sources":["../src/Components/Typography/GraphDescription.tsx"],"sourcesContent":["import { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n text: string | React.ReactNode;\r\n style?: React.CSSProperties;\r\n className?: string;\r\n}\r\n\r\nexport function GraphDescription(props: Props) {\r\n const { text, style, className } = props;\r\n if (typeof text === 'string') {\r\n if (text.trim() === '') return null;\r\n return (\r\n <P\r\n size='sm'\r\n marginBottom='none'\r\n className={cn('text-primary-gray-550 dark:text-primary-gray-400', className)}\r\n aria-label='Graph description'\r\n style={style}\r\n >\r\n {text}\r\n </P>\r\n );\r\n }\r\n\r\n if (React.isValidElement(text))\r\n return (\r\n <div className={className} style={style}>\r\n {text}\r\n </div>\r\n );\r\n console.error('GraphDescription: Invalid text type. Expected string or React element.');\r\n return null;\r\n}\r\n"],"names":["GraphDescription","props","text","style","className","jsx","P","cn","React"],"mappings":";;;AAUO,SAASA,EAAiBC,GAAc;AAC7C,QAAM,EAAE,MAAAC,GAAM,OAAAC,GAAO,WAAAC,EAAA,IAAcH;AACnC,SAAI,OAAOC,KAAS,WACdA,EAAK,WAAW,KAAW,OAE7BG,gBAAAA,EAAAA;AAAAA,IAACC;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAa;AAAA,MACb,WAAWC,EAAG,oDAAoDH,CAAS;AAAA,MAC3E,cAAW;AAAA,MACX,OAAAD;AAAA,MAEC,UAAAD;AAAA,IAAA;AAAA,EAAA,IAKHM,EAAM,eAAeN,CAAI,IAEzBG,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAAD,GAAsB,OAAAD,GACxB,UAAAD,GACH,KAEJ,QAAQ,MAAM,wEAAwE,GAC/E;AACT;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./index-CHPV5EwG-DDoeWRVt.cjs"),u=require("./FootNote.cjs"),i=require("./Source.cjs");function a(n){const{sources:e,footNote:o,width:s,styles:r,classNames:l}=n;return(e===void 0||(e||[]).length===0)&&o===void 0?null:t.jsxRuntimeExports.jsxs("div",{className:"flex gap-2 flex-col",style:{maxWidth:s?`${s}px`:"none"},"aria-label":"Graph footer",children:[e?t.jsxRuntimeExports.jsx(i.Source,{sources:e,style:r?.source,className:l?.source}):null,o?t.jsxRuntimeExports.jsx(u.FootNote,{text:o,style:r?.footnote,className:l?.footnote}):null]})}exports.GraphFooter=a;
|
|
2
|
+
//# sourceMappingURL=GraphFooter.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphFooter.cjs","sources":["../src/Components/Elements/GraphFooter.tsx"],"sourcesContent":["import { SourcesDataType } from '@/Types';\r\nimport { FootNote } from '@/Components/Typography/FootNote';\r\nimport { Source } from '@/Components/Typography/Source';\r\n\r\ninterface Props {\r\n footNote?: string | React.ReactNode;\r\n sources?: SourcesDataType[];\r\n width?: number;\r\n styles?: { footnote?: React.CSSProperties; source?: React.CSSProperties };\r\n classNames?: { footnote?: string; source?: string };\r\n}\r\n\r\nexport function GraphFooter(props: Props) {\r\n const { sources, footNote, width, styles, classNames } = props;\r\n if ((sources === undefined || (sources || []).length === 0) && footNote === undefined)\r\n return null;\r\n return (\r\n <div\r\n className='flex gap-2 flex-col'\r\n style={{ maxWidth: width ? `${width}px` : 'none' }}\r\n aria-label='Graph footer'\r\n >\r\n {sources ? (\r\n <Source sources={sources} style={styles?.source} className={classNames?.source} />\r\n ) : null}\r\n {footNote ? (\r\n <FootNote text={footNote} style={styles?.footnote} className={classNames?.footnote} />\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n"],"names":["GraphFooter","props","sources","footNote","width","styles","classNames","jsxs","jsx","Source","FootNote"],"mappings":"uLAYO,SAASA,EAAYC,EAAc,CACxC,KAAM,CAAE,QAAAC,EAAS,SAAAC,EAAU,MAAAC,EAAO,OAAAC,EAAQ,WAAAC,GAAeL,EACzD,OAAKC,IAAY,SAAcA,GAAW,CAAA,GAAI,SAAW,IAAMC,IAAa,OACnE,KAEPI,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAU,sBACV,MAAO,CAAE,SAAUH,EAAQ,GAAGA,CAAK,KAAO,MAAA,EAC1C,aAAW,eAEV,SAAA,CAAAF,EACCM,EAAAA,kBAAAA,IAACC,UAAO,QAAAP,EAAkB,MAAOG,GAAQ,OAAQ,UAAWC,GAAY,MAAA,CAAQ,EAC9E,KACHH,EACCK,EAAAA,kBAAAA,IAACE,EAAAA,SAAA,CAAS,KAAMP,EAAU,MAAOE,GAAQ,SAAU,UAAWC,GAAY,QAAA,CAAU,EAClF,IAAA,CAAA,CAAA,CAGV"}
|
package/dist/GraphFooter.js
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { j as t } from "./index-CHPV5EwG-BPSP-7Jg.js";
|
|
2
|
+
import { FootNote as n } from "./FootNote.js";
|
|
3
|
+
import { Source as i } from "./Source.js";
|
|
4
|
+
function u(a) {
|
|
5
|
+
const { sources: o, footNote: e, width: s, styles: r, classNames: l } = a;
|
|
6
|
+
return (o === void 0 || (o || []).length === 0) && e === void 0 ? null : /* @__PURE__ */ t.jsxs(
|
|
7
|
+
"div",
|
|
8
|
+
{
|
|
9
|
+
className: "flex gap-2 flex-col",
|
|
10
|
+
style: { maxWidth: s ? `${s}px` : "none" },
|
|
11
|
+
"aria-label": "Graph footer",
|
|
12
|
+
children: [
|
|
13
|
+
o ? /* @__PURE__ */ t.jsx(i, { sources: o, style: r?.source, className: l?.source }) : null,
|
|
14
|
+
e ? /* @__PURE__ */ t.jsx(n, { text: e, style: r?.footnote, className: l?.footnote }) : null
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
u as GraphFooter
|
|
21
|
+
};
|
|
2
22
|
//# sourceMappingURL=GraphFooter.js.map
|
package/dist/GraphFooter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphFooter.js","sources":["../src/Components/Elements/GraphFooter.tsx"],"sourcesContent":["import { SourcesDataType } from '@/Types';\r\nimport { FootNote } from '@/Components/Typography/FootNote';\r\nimport { Source } from '@/Components/Typography/Source';\r\n\r\ninterface Props {\r\n footNote?: string | React.ReactNode;\r\n sources?: SourcesDataType[];\r\n width?: number;\r\n styles?: { footnote?: React.CSSProperties; source?: React.CSSProperties };\r\n classNames?: { footnote?: string; source?: string };\r\n}\r\n\r\nexport function GraphFooter(props: Props) {\r\n const { sources, footNote, width, styles, classNames } = props;\r\n if ((sources === undefined || (sources || []).length === 0) && footNote === undefined)\r\n return null;\r\n return (\r\n <div\r\n className='flex gap-2 flex-col'\r\n style={{ maxWidth: width ? `${width}px` : 'none' }}\r\n aria-label='Graph footer'\r\n >\r\n {sources ? (\r\n <Source sources={sources} style={styles?.source} className={classNames?.source} />\r\n ) : null}\r\n {footNote ? (\r\n <FootNote text={footNote} style={styles?.footnote} className={classNames?.footnote} />\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n"],"names":["GraphFooter","props","sources","footNote","width","styles","classNames","jsxs","jsx","Source","FootNote"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphFooter.js","sources":["../src/Components/Elements/GraphFooter.tsx"],"sourcesContent":["import { SourcesDataType } from '@/Types';\r\nimport { FootNote } from '@/Components/Typography/FootNote';\r\nimport { Source } from '@/Components/Typography/Source';\r\n\r\ninterface Props {\r\n footNote?: string | React.ReactNode;\r\n sources?: SourcesDataType[];\r\n width?: number;\r\n styles?: { footnote?: React.CSSProperties; source?: React.CSSProperties };\r\n classNames?: { footnote?: string; source?: string };\r\n}\r\n\r\nexport function GraphFooter(props: Props) {\r\n const { sources, footNote, width, styles, classNames } = props;\r\n if ((sources === undefined || (sources || []).length === 0) && footNote === undefined)\r\n return null;\r\n return (\r\n <div\r\n className='flex gap-2 flex-col'\r\n style={{ maxWidth: width ? `${width}px` : 'none' }}\r\n aria-label='Graph footer'\r\n >\r\n {sources ? (\r\n <Source sources={sources} style={styles?.source} className={classNames?.source} />\r\n ) : null}\r\n {footNote ? (\r\n <FootNote text={footNote} style={styles?.footnote} className={classNames?.footnote} />\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n"],"names":["GraphFooter","props","sources","footNote","width","styles","classNames","jsxs","jsx","Source","FootNote"],"mappings":";;;AAYO,SAASA,EAAYC,GAAc;AACxC,QAAM,EAAE,SAAAC,GAAS,UAAAC,GAAU,OAAAC,GAAO,QAAAC,GAAQ,YAAAC,MAAeL;AACzD,UAAKC,MAAY,WAAcA,KAAW,CAAA,GAAI,WAAW,MAAMC,MAAa,SACnE,OAEPI,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,UAAUH,IAAQ,GAAGA,CAAK,OAAO,OAAA;AAAA,MAC1C,cAAW;AAAA,MAEV,UAAA;AAAA,QAAAF,IACCM,gBAAAA,EAAAA,IAACC,KAAO,SAAAP,GAAkB,OAAOG,GAAQ,QAAQ,WAAWC,GAAY,OAAA,CAAQ,IAC9E;AAAA,QACHH,IACCK,gBAAAA,EAAAA,IAACE,GAAA,EAAS,MAAMP,GAAU,OAAOE,GAAQ,UAAU,WAAWC,GAAY,SAAA,CAAU,IAClF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CHPV5EwG-DDoeWRVt.cjs"),p=require("./CsvDownloadButton.cjs"),c=require("./ImageDownloadButton.cjs"),d=require("./GraphDescription.cjs"),m=require("./GraphTitle.cjs");function h(u){const{graphTitle:s,graphDescription:a,width:r,graphDownload:l,dataDownload:t,isDashboard:x,styles:n,classNames:i}=u;return e.jsxRuntimeExports.jsxs("div",{className:`flex gap-2 justify-between ${a&&s?"items-start":"items-center"}`,style:{maxWidth:r?`${r}px`:"none"},"aria-label":"Graph header",children:[e.jsxRuntimeExports.jsxs("div",{className:"flex-col flex gap-1",children:[s?e.jsxRuntimeExports.jsx(m.GraphTitle,{text:s,isDashboard:x,style:n?.title,className:i?.title}):null,a?e.jsxRuntimeExports.jsx(d.GraphDescription,{text:a,style:n?.description,className:i?.description}):null]}),l||t?e.jsxRuntimeExports.jsxs("div",{className:"flex gap-3",children:[l?e.jsxRuntimeExports.jsx(c.ImageDownloadButton,{nodeID:l,buttonSmall:!0}):null,t&&t.length>0?e.jsxRuntimeExports.jsx(p.CsvDownloadButton,{csvData:t,buttonSmall:!0,headers:Object.keys(t[0]).map(o=>({label:o,key:o}))}):null]}):null]})}exports.GraphHeader=h;
|
|
2
|
+
//# sourceMappingURL=GraphHeader.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphHeader.cjs","sources":["../src/Components/Elements/GraphHeader.tsx"],"sourcesContent":["import { CsvDownloadButton } from '@/Components/Actions/CsvDownloadButton';\r\nimport { ImageDownloadButton } from '@/Components/Actions/ImageDownloadButton';\r\nimport { GraphDescription } from '@/Components/Typography/GraphDescription';\r\nimport { GraphTitle } from '@/Components/Typography/GraphTitle';\r\n\r\ninterface Props {\r\n graphTitle?: string | React.ReactNode;\r\n graphDescription?: string | React.ReactNode;\r\n width?: number;\r\n graphDownload?: HTMLDivElement | null;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataDownload?: any;\r\n isDashboard?: boolean;\r\n styles?: { title?: React.CSSProperties; description?: React.CSSProperties };\r\n classNames?: { title?: string; description?: string };\r\n}\r\n\r\nexport function GraphHeader(props: Props) {\r\n const {\r\n graphTitle,\r\n graphDescription,\r\n width,\r\n graphDownload,\r\n dataDownload,\r\n isDashboard,\r\n styles,\r\n classNames,\r\n } = props;\r\n return (\r\n <div\r\n className={`flex gap-2 justify-between ${\r\n graphDescription && graphTitle ? 'items-start' : 'items-center'\r\n }`}\r\n style={{ maxWidth: width ? `${width}px` : 'none' }}\r\n aria-label='Graph header'\r\n >\r\n <div className='flex-col flex gap-1'>\r\n {graphTitle ? (\r\n <GraphTitle\r\n text={graphTitle}\r\n isDashboard={isDashboard}\r\n style={styles?.title}\r\n className={classNames?.title}\r\n />\r\n ) : null}\r\n {graphDescription ? (\r\n <GraphDescription\r\n text={graphDescription}\r\n style={styles?.description}\r\n className={classNames?.description}\r\n />\r\n ) : null}\r\n </div>\r\n {graphDownload || dataDownload ? (\r\n <div className='flex gap-3'>\r\n {graphDownload ? <ImageDownloadButton nodeID={graphDownload} buttonSmall /> : null}\r\n {dataDownload && dataDownload.length > 0 ? (\r\n <CsvDownloadButton\r\n csvData={dataDownload}\r\n buttonSmall\r\n headers={Object.keys(dataDownload[0]).map(d => ({\r\n label: d,\r\n key: d,\r\n }))}\r\n />\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n"],"names":["GraphHeader","props","graphTitle","graphDescription","width","graphDownload","dataDownload","isDashboard","styles","classNames","jsxs","jsx","GraphTitle","GraphDescription","ImageDownloadButton","CsvDownloadButton","d"],"mappings":"+QAiBO,SAASA,EAAYC,EAAc,CACxC,KAAM,CACJ,WAAAC,EACA,iBAAAC,EACA,MAAAC,EACA,cAAAC,EACA,aAAAC,EACA,YAAAC,EACA,OAAAC,EACA,WAAAC,CAAA,EACER,EACJ,OACES,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAW,8BACTP,GAAoBD,EAAa,cAAgB,cACnD,GACA,MAAO,CAAE,SAAUE,EAAQ,GAAGA,CAAK,KAAO,MAAA,EAC1C,aAAW,eAEX,SAAA,CAAAM,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,sBACZ,SAAA,CAAAR,EACCS,EAAAA,kBAAAA,IAACC,EAAAA,WAAA,CACC,KAAMV,EACN,YAAAK,EACA,MAAOC,GAAQ,MACf,UAAWC,GAAY,KAAA,CAAA,EAEvB,KACHN,EACCQ,EAAAA,kBAAAA,IAACE,EAAAA,iBAAA,CACC,KAAMV,EACN,MAAOK,GAAQ,YACf,UAAWC,GAAY,WAAA,CAAA,EAEvB,IAAA,EACN,EACCJ,GAAiBC,EAChBI,yBAAC,MAAA,CAAI,UAAU,aACZ,SAAA,CAAAL,0BAAiBS,EAAAA,oBAAA,CAAoB,OAAQT,EAAe,YAAW,GAAC,EAAK,KAC7EC,GAAgBA,EAAa,OAAS,EACrCK,EAAAA,kBAAAA,IAACI,EAAAA,kBAAA,CACC,QAAST,EACT,YAAW,GACX,QAAS,OAAO,KAAKA,EAAa,CAAC,CAAC,EAAE,IAAIU,IAAM,CAC9C,MAAOA,EACP,IAAKA,CAAA,EACL,CAAA,CAAA,EAEF,IAAA,CAAA,CACN,EACE,IAAA,CAAA,CAAA,CAGV"}
|