@undp/data-viz 1.5.7 → 1.5.9
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 +1 -1
- package/dist/AreaChart.js +13 -13
- package/dist/{Axis-Ddg-seDi.js → Axis-4gUOL8B7.js} +2 -2
- package/dist/{Axis-Ddg-seDi.js.map → Axis-4gUOL8B7.js.map} +1 -1
- package/dist/{Axis-DE7dSn1_.cjs → Axis-CkNn1wit.cjs} +2 -2
- package/dist/{Axis-DE7dSn1_.cjs.map → Axis-CkNn1wit.cjs.map} +1 -1
- package/dist/{AxisTitle-CK9YeovX.cjs → AxisTitle-Wkz-xeQL.cjs} +2 -2
- package/dist/{AxisTitle-CK9YeovX.cjs.map → AxisTitle-Wkz-xeQL.cjs.map} +1 -1
- package/dist/{AxisTitle-BmHLMRJZ.js → AxisTitle-v6_xcXZ-.js} +2 -2
- package/dist/{AxisTitle-BmHLMRJZ.js.map → AxisTitle-v6_xcXZ-.js.map} +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.js +666 -664
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +1 -1
- package/dist/BasicStatCard.js +2 -2
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.js +42 -42
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.d.ts +2 -0
- package/dist/BiVariateChoroplethMap.js +257 -264
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.js +223 -221
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.js +84 -82
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.d.ts +2 -0
- package/dist/ChoroplethMap.js +296 -304
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +3 -3
- package/dist/ColorLegend.cjs +1 -1
- package/dist/ColorLegend.js +2 -2
- package/dist/ColorLegendWithMouseOver.cjs +1 -1
- package/dist/ColorLegendWithMouseOver.js +2 -2
- package/dist/CopyTextButton.cjs +4 -4
- package/dist/CopyTextButton.cjs.map +1 -1
- package/dist/CopyTextButton.js +27 -27
- package/dist/CopyTextButton.js.map +1 -1
- package/dist/CsvDownloadButton.cjs +1 -1
- package/dist/CsvDownloadButton.js +2 -2
- package/dist/DataCards.cjs +3 -3
- package/dist/DataCards.cjs.map +1 -1
- package/dist/DataCards.js +16 -16
- package/dist/DataCards.js.map +1 -1
- package/dist/DataTable.cjs +1 -1
- package/dist/DataTable.js +3 -3
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.cjs.map +1 -1
- package/dist/DifferenceLineChart.js +133 -131
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.js +20 -20
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.d.ts +2 -0
- package/dist/DotDensityMap.js +282 -289
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/{DropdownSelect-CtOKZHD0.js → DropdownSelect-6kjXM6oW.js} +2 -2
- package/dist/DropdownSelect-6kjXM6oW.js.map +1 -0
- package/dist/{DropdownSelect-DBDM64B5.cjs → DropdownSelect-vt8yiB-g.cjs} +5 -5
- package/dist/DropdownSelect-vt8yiB-g.cjs.map +1 -0
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.cjs.map +1 -1
- package/dist/DualAxisLineChart.js +141 -121
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.js +307 -307
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{EmptyState-DdTp-Mdn.js → EmptyState-36lXXyui.js} +4 -4
- package/dist/{EmptyState-DdTp-Mdn.js.map → EmptyState-36lXXyui.js.map} +1 -1
- package/dist/{EmptyState-d8_8SxeW.cjs → EmptyState-B8IpKGcL.cjs} +2 -2
- package/dist/{EmptyState-d8_8SxeW.cjs.map → EmptyState-B8IpKGcL.cjs.map} +1 -1
- package/dist/ExcelDownloadButton.cjs +1 -1
- package/dist/ExcelDownloadButton.js +2 -2
- package/dist/FootNote.cjs +1 -1
- package/dist/FootNote.js +2 -2
- package/dist/GeoHubCompareMaps.cjs +1 -1
- package/dist/GeoHubCompareMaps.cjs.map +1 -1
- package/dist/GeoHubCompareMaps.js +65 -80
- package/dist/GeoHubCompareMaps.js.map +1 -1
- package/dist/GeoHubMap.cjs +1 -1
- package/dist/GeoHubMap.cjs.map +1 -1
- package/dist/GeoHubMap.js +95 -125
- package/dist/GeoHubMap.js.map +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -1
- package/dist/GeoHubMapWithLayerSelection.js +73 -88
- package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
- package/dist/GraphDescription.cjs +1 -1
- package/dist/GraphDescription.js +2 -2
- package/dist/{GraphEl-CqWzvOyr.js → GraphEl-2IiUDxjR.js} +15 -12
- package/dist/GraphEl-2IiUDxjR.js.map +1 -0
- package/dist/GraphEl-qrlfGPe3.cjs +2 -0
- package/dist/GraphEl-qrlfGPe3.cjs.map +1 -0
- package/dist/GraphFooter.cjs +1 -1
- package/dist/GraphFooter.js +1 -1
- package/dist/GraphHeader.cjs +1 -1
- package/dist/GraphHeader.js +1 -1
- package/dist/GraphTitle.cjs +1 -1
- package/dist/GraphTitle.js +2 -2
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.d.ts +1 -0
- package/dist/GriddedGraphs.js +5 -5
- package/dist/GriddedGraphsFromConfig.cjs +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +1 -0
- package/dist/GriddedGraphsFromConfig.js +2 -2
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.js +19 -19
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.js +3 -3
- package/dist/ImageDownloadButton.cjs +1 -1
- package/dist/ImageDownloadButton.js +2 -2
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
- package/dist/LineChartWithConfidenceInterval.js +204 -184
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/LinearColorLegend.cjs +1 -1
- package/dist/LinearColorLegend.js +2 -2
- package/dist/{Modal-DVVwpKhP.js → Modal-Cg8daIlV.js} +198 -187
- package/dist/Modal-Cg8daIlV.js.map +1 -0
- package/dist/Modal-CuuJdWkD.cjs +46 -0
- package/dist/Modal-CuuJdWkD.cjs.map +1 -0
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.d.ts +1 -0
- package/dist/MultiGraphDashboard.js +3 -3
- package/dist/MultiGraphDashboardFromConfig.cjs +1 -1
- package/dist/MultiGraphDashboardFromConfig.d.ts +1 -0
- package/dist/MultiGraphDashboardFromConfig.js +2 -2
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js +4 -4
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +2 -2
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.js +172 -173
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.js +89 -78
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.cjs.map +1 -1
- package/dist/ParetoChart.js +186 -181
- package/dist/ParetoChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +3 -3
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +2 -2
- package/dist/PerformanceIntensiveScrollStory.cjs +1 -1
- package/dist/PerformanceIntensiveScrollStory.d.ts +1 -0
- package/dist/PerformanceIntensiveScrollStory.js +3 -3
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.js +256 -244
- package/dist/RadarChart.js.map +1 -1
- package/dist/{ReferenceLine-CfAW3vKJ.js → ReferenceLine-CPMaAX0r.js} +3 -3
- package/dist/{ReferenceLine-CfAW3vKJ.js.map → ReferenceLine-CPMaAX0r.js.map} +1 -1
- package/dist/{ReferenceLine-CFVBBN__.cjs → ReferenceLine-D04j-zeV.cjs} +2 -2
- package/dist/{ReferenceLine-CFVBBN__.cjs.map → ReferenceLine-D04j-zeV.cjs.map} +1 -1
- package/dist/{RegressionLine-mH7UKOPi.js → RegressionLine-CW7iViH2.js} +13 -12
- package/dist/RegressionLine-CW7iViH2.js.map +1 -0
- package/dist/RegressionLine-D-49RaHa.cjs +2 -0
- package/dist/RegressionLine-D-49RaHa.cjs.map +1 -0
- package/dist/SVGDownloadButton.cjs +1 -1
- package/dist/SVGDownloadButton.js +2 -2
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.js +27 -27
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.js +145 -144
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.cjs +1 -1
- package/dist/ScrollStory.d.ts +1 -0
- package/dist/ScrollStory.js +3 -3
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.cjs.map +1 -1
- package/dist/SimpleLineChart.js +53 -48
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.d.ts +1 -0
- package/dist/SingleGraphDashboard.js +6 -6
- package/dist/SingleGraphDashboardFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +1 -0
- package/dist/SingleGraphDashboardFromConfig.js +2 -2
- package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +1 -0
- package/dist/SingleGraphDashboardGeoHubMaps.js +2 -2
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +1 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +2 -2
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -0
- package/dist/SingleGraphDashboardThreeDGraphs.js +14 -13
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +2 -2
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.js +137 -133
- package/dist/SlopeChart.js.map +1 -1
- package/dist/Source.cjs +1 -1
- package/dist/Source.js +2 -2
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.js +2 -2
- package/dist/{Spinner-C85UF28E.js → Spinner-Bpz70q_g.js} +2 -2
- package/dist/{Spinner-C85UF28E.js.map → Spinner-Bpz70q_g.js.map} +1 -1
- package/dist/{Spinner-DA6Z5E4n.cjs → Spinner-C6wLp85s.cjs} +2 -2
- package/dist/{Spinner-DA6Z5E4n.cjs.map → Spinner-C6wLp85s.cjs.map} +1 -1
- package/dist/StatCardFromData.cjs +1 -1
- package/dist/StatCardFromData.js +2 -2
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.js +307 -295
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.d.ts +2 -0
- package/dist/ThreeDGlobe.js +220 -228
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.js +2 -2
- package/dist/{Tooltip-CVCGWyzw.js → Tooltip-6LIdPQGC.js} +2 -2
- package/dist/{Tooltip-CVCGWyzw.js.map → Tooltip-6LIdPQGC.js.map} +1 -1
- package/dist/{Tooltip-De16GWhY.cjs → Tooltip-Cpv0QohJ.cjs} +2 -2
- package/dist/{Tooltip-De16GWhY.cjs.map → Tooltip-Cpv0QohJ.cjs.map} +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.js +24 -24
- package/dist/Types.d.ts +1 -0
- package/dist/{Typography-k-kOjICQ.cjs → Typography-BDULiwlF.cjs} +2 -2
- package/dist/{Typography-k-kOjICQ.cjs.map → Typography-BDULiwlF.cjs.map} +1 -1
- package/dist/{Typography-Ctgfl1J5.js → Typography-LmZ9LEpe.js} +2 -2
- package/dist/{Typography-Ctgfl1J5.js.map → Typography-LmZ9LEpe.js.map} +1 -1
- package/dist/UnitChart.cjs +1 -1
- package/dist/UnitChart.cjs.map +1 -1
- package/dist/UnitChart.js +25 -26
- package/dist/UnitChart.js.map +1 -1
- package/dist/{XAxesLabels-Drf7M3YK.cjs → XAxesLabels-CLZnBgSr.cjs} +2 -2
- package/dist/{XAxesLabels-Drf7M3YK.cjs.map → XAxesLabels-CLZnBgSr.cjs.map} +1 -1
- package/dist/{XAxesLabels-loO78vUO.js → XAxesLabels-SOSmso5J.js} +3 -3
- package/dist/{XAxesLabels-loO78vUO.js.map → XAxesLabels-SOSmso5J.js.map} +1 -1
- package/dist/{XTicksAndGridLines-Bn9u5gOM.js → XTicksAndGridLines-DuydSnZ_.js} +2 -2
- package/dist/{XTicksAndGridLines-Bn9u5gOM.js.map → XTicksAndGridLines-DuydSnZ_.js.map} +1 -1
- package/dist/{XTicksAndGridLines-CCzXIV8d.cjs → XTicksAndGridLines-RKy7BVCO.cjs} +2 -2
- package/dist/{XTicksAndGridLines-CCzXIV8d.cjs.map → XTicksAndGridLines-RKy7BVCO.cjs.map} +1 -1
- package/dist/{YAxesLabels-DECkMgq8.js → YAxesLabels-DlDyLvhi.js} +3 -3
- package/dist/{YAxesLabels-DECkMgq8.js.map → YAxesLabels-DlDyLvhi.js.map} +1 -1
- package/dist/{YAxesLabels-yRFFdx1s.cjs → YAxesLabels-Dqd259-t.cjs} +2 -2
- package/dist/{YAxesLabels-yRFFdx1s.cjs.map → YAxesLabels-Dqd259-t.cjs.map} +1 -1
- package/dist/{YTicksAndGridLines-B6ah7CRf.js → YTicksAndGridLines-7t4MKtGw.js} +2 -2
- package/dist/{YTicksAndGridLines-B6ah7CRf.js.map → YTicksAndGridLines-7t4MKtGw.js.map} +1 -1
- package/dist/{YTicksAndGridLines-DBDuz6vb.cjs → YTicksAndGridLines-qGpRo_t1.cjs} +2 -2
- package/dist/{YTicksAndGridLines-DBDuz6vb.cjs.map → YTicksAndGridLines-qGpRo_t1.cjs.map} +1 -1
- package/dist/checkIfMultiple-Dko_cBvE.cjs +12 -0
- package/dist/checkIfMultiple-Dko_cBvE.cjs.map +1 -0
- package/dist/{checkIfMultiple-ChTJk2Tk.js → checkIfMultiple-u2SmbiCf.js} +11 -11
- package/dist/checkIfMultiple-u2SmbiCf.js.map +1 -0
- package/dist/{customArea-CK768gCn.cjs → customArea-1G1S78s_.cjs} +2 -2
- package/dist/{customArea-CK768gCn.cjs.map → customArea-1G1S78s_.cjs.map} +1 -1
- package/dist/{customArea-B-dWU0zZ.js → customArea-x4L4xwLl.js} +3 -3
- package/dist/{customArea-B-dWU0zZ.js.map → customArea-x4L4xwLl.js.map} +1 -1
- package/dist/getCentroidCoordinates-Dfk6IqEG.js.map +1 -1
- package/dist/getCentroidCoordinates-DxTBqzp2.cjs.map +1 -1
- package/dist/getSliderMarks-CUxPy36E.cjs +6 -0
- package/dist/getSliderMarks-CUxPy36E.cjs.map +1 -0
- package/dist/{getSliderMarks-9cNoRkDx.js → getSliderMarks-_pYOWEtO.js} +3 -3
- package/dist/getSliderMarks-_pYOWEtO.js.map +1 -0
- package/dist/{index-BYzIB5V6.cjs → index-BHe3wsWF.cjs} +2 -2
- package/dist/{index-BYzIB5V6.cjs.map → index-BHe3wsWF.cjs.map} +1 -1
- package/dist/{index-DKCxu1Gh.js → index-Bw_eHBVN.js} +3 -3
- package/dist/{index-DKCxu1Gh.js.map → index-Bw_eHBVN.js.map} +1 -1
- package/dist/{index-BW_-wD2k.cjs → index-C0bpbS4F.cjs} +2 -2
- package/dist/{index-BW_-wD2k.cjs.map → index-C0bpbS4F.cjs.map} +1 -1
- package/dist/{index-37q0ULNQ.js → index-CE9pmfxt.js} +17 -17
- package/dist/{index-37q0ULNQ.js.map → index-CE9pmfxt.js.map} +1 -1
- package/dist/{index-CVlCtJbC.cjs → index-CEJwW3lL.cjs} +2 -2
- package/dist/{index-CVlCtJbC.cjs.map → index-CEJwW3lL.cjs.map} +1 -1
- package/dist/{index-CHPV5EwG-BPSP-7Jg.js → index-CHPV5EwG-DBWUSD9b.js} +539 -543
- package/dist/index-CHPV5EwG-DBWUSD9b.js.map +1 -0
- package/dist/index-CHPV5EwG-DjM48pIC.cjs +44 -0
- package/dist/index-CHPV5EwG-DjM48pIC.cjs.map +1 -0
- package/dist/{index-BW8iNx7E.cjs → index-Cm8NIdOO.cjs} +2 -2
- package/dist/{index-BW8iNx7E.cjs.map → index-Cm8NIdOO.cjs.map} +1 -1
- package/dist/{index-tvAyXPPW-DBlMKnNB.js → index-Cw8sCyo_-BuI_jX5Z.js} +3 -3
- package/dist/{index-tvAyXPPW-DBlMKnNB.js.map → index-Cw8sCyo_-BuI_jX5Z.js.map} +1 -1
- package/dist/index-Cw8sCyo_-gxT8ADyn.cjs +2 -0
- package/dist/index-Cw8sCyo_-gxT8ADyn.cjs.map +1 -0
- package/dist/{index-CNvov0eg.js → index-Cwgh7i7X.js} +3 -3
- package/dist/{index-CNvov0eg.js.map → index-Cwgh7i7X.js.map} +1 -1
- package/dist/{index-DG3YrCr5-D3FrrXj8.js → index-Dzc_aaI9-BKklH89r.js} +2 -2
- package/dist/{index-DG3YrCr5-D3FrrXj8.js.map → index-Dzc_aaI9-BKklH89r.js.map} +1 -1
- package/dist/{index-DG3YrCr5-v7rayV3N.cjs → index-Dzc_aaI9-RIk2GRHD.cjs} +2 -2
- package/dist/{index-DG3YrCr5-v7rayV3N.cjs.map → index-Dzc_aaI9-RIk2GRHD.cjs.map} +1 -1
- package/dist/{index-BmCqpO1B.js → index-zZjQEHlm.js} +2 -2
- package/dist/{index-BmCqpO1B.js.map → index-zZjQEHlm.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -1
- package/dist/{proxy-CkpFesk1.js → proxy-BYIC9BuT.js} +2 -2
- package/dist/{proxy-CkpFesk1.js.map → proxy-BYIC9BuT.js.map} +1 -1
- package/dist/{proxy-BHRoeZgd.cjs → proxy-CKadx4lC.cjs} +2 -2
- package/dist/{proxy-BHRoeZgd.cjs.map → proxy-CKadx4lC.cjs.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{use-in-view-sQJZ_xDO.cjs → use-in-view-CEwlc_dd.cjs} +2 -2
- package/dist/{use-in-view-sQJZ_xDO.cjs.map → use-in-view-CEwlc_dd.cjs.map} +1 -1
- package/dist/{use-in-view-yS6jzJAp.js → use-in-view-DR-UTB96.js} +2 -2
- package/dist/{use-in-view-yS6jzJAp.js.map → use-in-view-DR-UTB96.js.map} +1 -1
- package/package.json +4 -4
- package/dist/DropdownSelect-CtOKZHD0.js.map +0 -1
- package/dist/DropdownSelect-DBDM64B5.cjs.map +0 -1
- package/dist/GraphEl-C6yjl1VM.cjs +0 -2
- package/dist/GraphEl-C6yjl1VM.cjs.map +0 -1
- package/dist/GraphEl-CqWzvOyr.js.map +0 -1
- package/dist/Modal-DVVwpKhP.js.map +0 -1
- package/dist/Modal-tXZlLE5s.cjs +0 -46
- package/dist/Modal-tXZlLE5s.cjs.map +0 -1
- package/dist/RegressionLine-mH7UKOPi.js.map +0 -1
- package/dist/RegressionLine-xKdiJ8sw.cjs +0 -2
- package/dist/RegressionLine-xKdiJ8sw.cjs.map +0 -1
- package/dist/checkIfMultiple-BXbHUCWM.cjs +0 -12
- package/dist/checkIfMultiple-BXbHUCWM.cjs.map +0 -1
- package/dist/checkIfMultiple-ChTJk2Tk.js.map +0 -1
- package/dist/getSliderMarks-9cNoRkDx.js.map +0 -1
- package/dist/getSliderMarks-CRIbTGYV.cjs +0 -6
- package/dist/getSliderMarks-CRIbTGYV.cjs.map +0 -1
- package/dist/index-CHPV5EwG-BPSP-7Jg.js.map +0 -1
- package/dist/index-CHPV5EwG-DDoeWRVt.cjs +0 -44
- package/dist/index-CHPV5EwG-DDoeWRVt.cjs.map +0 -1
- package/dist/index-tvAyXPPW-DPOG-C2i.cjs +0 -2
- package/dist/index-tvAyXPPW-DPOG-C2i.cjs.map +0 -1
package/dist/DataCards.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCards.cjs","sources":["../node_modules/@undp/design-system-react/dist/chevron-left-DXTpJnX4.js","../node_modules/@undp/design-system-react/dist/ellipsis-CihzP6fh.js","../node_modules/@undp/design-system-react/dist/chevron-right-BcRtuL9I.js","../node_modules/@undp/design-system-react/dist/Pagination.js","../node_modules/@undp/design-system-react/dist/Input.js","../node_modules/@undp/design-system-react/dist/Search.js","../src/Components/Graphs/DataCards/Graph.tsx","../src/Components/Graphs/DataCards/index.tsx"],"sourcesContent":["import { c as e } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst o = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]], t = e(\"chevron-left\", o);\nexport {\n t as C\n};\n//# sourceMappingURL=chevron-left-DXTpJnX4.js.map\n","import { c } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst e = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"19\", cy: \"12\", r: \"1\", key: \"1wjl8i\" }],\n [\"circle\", { cx: \"5\", cy: \"12\", r: \"1\", key: \"1pcz8c\" }]\n], r = c(\"ellipsis\", e);\nexport {\n r as E\n};\n//# sourceMappingURL=ellipsis-CihzP6fh.js.map\n","import { c as o } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst t = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]], e = o(\"chevron-right\", t);\nexport {\n e as C\n};\n//# sourceMappingURL=chevron-right-BcRtuL9I.js.map\n","import { j as e } from \"./jsx-runtime-OVHDjVDe.js\";\nimport x, { useState as u, useEffect as P } from \"react\";\nimport { c as n } from \"./utils-D_Pof5Gy.js\";\nimport { C } from \"./chevron-left-DXTpJnX4.js\";\nimport { E } from \"./ellipsis-CihzP6fh.js\";\nimport { C as R } from \"./chevron-right-BcRtuL9I.js\";\nfunction d({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n \"nav\",\n {\n ...r,\n role: \"navigation\",\n \"aria-label\": \"pagination\",\n className: n(\"mx-auto flex w-full justify-center\", a)\n }\n );\n}\nd.displayName = \"PaginationUnit\";\nconst f = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\n \"ul\",\n {\n ...r,\n ref: i,\n className: n(\"flex flex-row items-center gap-1 list-none\", a)\n }\n )\n);\nf.displayName = \"PaginationContent\";\nconst m = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\"li\", { ...r, ref: i, className: n(\"mr-2 last:mr-0\", a) })\n);\nm.displayName = \"PaginationItem\";\nfunction p({\n className: a,\n children: r,\n ...i\n}) {\n return /* @__PURE__ */ e.jsx(\n \"button\",\n {\n ...i,\n type: \"button\",\n className: n(\n \"p-4 text-base text-primary-black dark:text-primary-gray-100 dark:hover:bg-primary-gray-600\",\n a\n ),\n children: r\n }\n );\n}\np.displayName = \"PaginationLink\";\nfunction h({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to previous page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(C, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nh.displayName = \"PaginationPrevious\";\nfunction b({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to next page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(R, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nb.displayName = \"PaginationNext\";\nfunction j({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsxs(\n \"span\",\n {\n ...r,\n \"aria-hidden\": !0,\n className: n(\"flex h-9 w-9 items-center justify-center\", a),\n children: [\n /* @__PURE__ */ e.jsx(E, { className: \"h-4 w-4 text-primary-gray-700 dark:text-primary-gray-100\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"sr-only\", children: \"More pages\" })\n ]\n }\n );\n}\nj.displayName = \"PaginationEllipsis\";\nconst g = (a, r) => {\n const i = [];\n return r <= 7 ? Array.from({ length: r }, (y, t) => t + 1) : (i.push(1), a <= 3 ? i.push(2, 3, 4, \"ellipsis\") : a >= r - 2 ? i.push(\"ellipsis\", r - 3, r - 2, r - 1) : i.push(\"ellipsis\", a - 1, a, a + 1, \"ellipsis\"), i.push(r), i);\n};\nfunction U(a) {\n const { defaultPage: r = 1, total: i, pageSize: y, onChange: t, className: N } = a, o = Math.ceil(i / y), [s, c] = u(r), [k, v] = u(\n g(r, o)\n );\n return P(() => {\n v(g(s, o));\n }, [s, o]), /* @__PURE__ */ e.jsx(d, { className: n(\"select-none\", N), children: /* @__PURE__ */ e.jsxs(f, { children: [\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n h,\n {\n onClick: () => {\n s > 1 && (t(s - 1), c(s - 1));\n },\n className: n(\n \"cursor-pointer\",\n s <= 1 && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) }),\n k.map((l, w) => /* @__PURE__ */ e.jsx(m, { children: l === \"ellipsis\" ? /* @__PURE__ */ e.jsx(j, {}) : /* @__PURE__ */ e.jsx(\n p,\n {\n onClick: () => {\n c(l), t(l);\n },\n className: n(\n \"cursor-pointer w-[32px] h-[32px] flex items-center justify-center rounded-full hover:bg-primary-gray-300\",\n l === s && \"bg-primary-blue-600 hover:bg-primary-blue-700 dark:bg-primary-blue-500 dark:hover:bg-primary-blue-400 hover:text-primary-wite text-primary-white\"\n ),\n children: l\n }\n ) }, w)),\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n b,\n {\n onClick: () => {\n s < o && (t(s + 1), c(s + 1));\n },\n className: n(\n \"cursor-pointer\",\n s >= o && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) })\n ] }) });\n}\nexport {\n U as Pagination\n};\n//# sourceMappingURL=Pagination.js.map\n","import { j as o } from \"./jsx-runtime-OVHDjVDe.js\";\nimport p from \"react\";\nimport { c as l } from \"./index-CHPV5EwG.js\";\nimport { c as m } from \"./utils-D_Pof5Gy.js\";\nconst s = l(\n \"w-full h-auto bg-primary-white dark:bg-primary-gray-650 text-primary-black dark:text-primary-white text-base transition-colors file:border-0 file:bg-transparent file:font-medium file:text-primary-gray-700 dark:file:text-primary-white focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 placeholder:text-primary-gray-550 dark:placeholder:text-primary-gray-400\",\n {\n variants: {\n variant: {\n light: \"border border-primary-gray-400 dark:border-primary-gray-500\",\n normal: \"border-2 border-primary-black dark:border-primary-gray-300\"\n },\n inputSize: {\n sm: \"px-2.5 py-1\",\n base: \"p-2.5\"\n }\n },\n defaultVariants: {\n inputSize: \"base\",\n variant: \"normal\"\n }\n }\n), d = p.forwardRef(({ className: r, inputSize: a, variant: i, ...t }, e) => /* @__PURE__ */ o.jsx(\"input\", { ...t, ref: e, className: m(s({ inputSize: a, variant: i }), r) }));\nd.displayName = \"Input\";\nexport {\n d as Input\n};\n//# sourceMappingURL=Input.js.map\n","import { j as e } from \"./jsx-runtime-OVHDjVDe.js\";\nimport t from \"react\";\nimport { Button as g } from \"./Button.js\";\nimport { Input as k } from \"./Input.js\";\nimport { c as w } from \"./utils-D_Pof5Gy.js\";\nimport { c as _ } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst F = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n], i = _(\"search\", F), I = t.forwardRef(\n ({\n className: n,\n inputClassName: m,\n buttonClassName: p,\n onSearch: s,\n searchOnlyOnClick: u,\n buttonVariant: d,\n buttonChildren: c,\n showSearchButton: x,\n inputVariant: f,\n inputSize: o,\n placeholder: y,\n ...j\n }, h) => {\n const [a, v] = t.useState(void 0), [N, l] = t.useState(!1);\n return /* @__PURE__ */ e.jsxs(\"div\", { className: w(\"flex gap-0\", n), ref: h, children: [\n /* @__PURE__ */ e.jsxs(\"div\", { className: \"relative w-full\", children: [\n /* @__PURE__ */ e.jsx(\n k,\n {\n ...j,\n variant: f,\n type: \"text\",\n className: m,\n onChange: (r) => {\n v(r.target.value), u || s?.(r.target.value);\n },\n inputSize: o,\n onKeyDown: (r) => {\n r.key === \"Enter\" && s?.(a);\n },\n onFocus: () => l(!0),\n onBlur: () => l(!1)\n }\n ),\n !N && (a === \"\" || !a) && /* @__PURE__ */ e.jsxs(\"div\", { className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\", children: [\n c ? null : /* @__PURE__ */ e.jsx(i, { className: \"h-4 w-4 text-primary-gray-500 dark:text-primary-gray-400 mr-2\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"text-primary-gray-500 dark:text-primary-gray-400\", children: y || \"Search...\" })\n ] })\n ] }),\n x === !1 ? null : /* @__PURE__ */ e.jsx(\n g,\n {\n variant: d || \"icon\",\n className: p,\n padding: o,\n onClick: () => {\n s?.(a);\n },\n children: c || /* @__PURE__ */ e.jsx(i, { className: \"stroke-2\" })\n }\n )\n ] });\n }\n);\nI.displayName = \"Search\";\nexport {\n I as Search\n};\n//# sourceMappingURL=Search.js.map\n","import { Modal } from '@undp/design-system-react/Modal';\r\nimport { useState } from 'react';\r\n\r\nimport { CsvDownloadButton } from '@/Components/Actions/CsvDownloadButton';\r\nimport { FileDown } from '@/Components/Icons';\r\nimport { StyleObject, ClassNameObject } from '@/Types';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n data: object[];\r\n cardBackgroundColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n width?: number;\r\n height?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n cardMinWidth: number;\r\n noOfItemsInAPage?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n allowDataDownloadOnDetail: boolean | string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n page: number;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst csvData = (data: any) => {\r\n if (!data) return {};\r\n const dataForCsv = Object.entries(data).map(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n return {\r\n ' ': key,\r\n value: `\"${value.join('; ')}\"`,\r\n };\r\n }\r\n return {\r\n ' ': key,\r\n value: `\"${value}\"`,\r\n };\r\n });\r\n return dataForCsv;\r\n};\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n width,\r\n height,\r\n data,\r\n onSeriesMouseClick,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardMinWidth = 320,\r\n detailsOnClick,\r\n noOfItemsInAPage,\r\n styles,\r\n classNames,\r\n page,\r\n allowDataDownloadOnDetail,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [selectedData, setSelectedData] = useState<any>(undefined);\r\n return (\r\n <>\r\n <div\r\n className='undp-scrollbar w-full my-0 mx-auto grid gap-4 undp-viz-data-cards-container'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height ? `${height}px` : 'auto',\r\n gridTemplateColumns: `repeat(auto-fill, minmax(${cardMinWidth}px, 1fr))`,\r\n }}\r\n >\r\n {data\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((_d: any, i: number) =>\r\n noOfItemsInAPage\r\n ? i < page * noOfItemsInAPage && i >= (page - 1) * noOfItemsInAPage\r\n : true,\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map((d: any, i: number) => (\r\n <div\r\n key={i}\r\n style={{\r\n ...(styles?.dataCards || {}),\r\n ...(cardBackgroundColor && { backgroundColor: cardBackgroundColor }),\r\n }}\r\n className={`w-full flex flex-col ${\r\n onSeriesMouseClick || detailsOnClick ? 'cursor-pointer' : 'cursor-auto'\r\n }${\r\n !cardBackgroundColor ? 'bg-primary-gray-200 dark:bg-primary-gray-600' : ''\r\n } ${classNames?.dataCards || ''}`}\r\n onClick={() => {\r\n onSeriesMouseClick?.(d);\r\n setSelectedData(d);\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof cardTemplate === 'string'\r\n ? { __html: string2HTML(cardTemplate, d) }\r\n : undefined\r\n }\r\n >\r\n {typeof cardTemplate === 'function' ? cardTemplate(d) : null}\r\n </div>\r\n ))}\r\n </div>\r\n {detailsOnClick && selectedData !== undefined ? (\r\n <Modal\r\n open={selectedData !== undefined}\r\n onClose={() => {\r\n setSelectedData(undefined);\r\n }}\r\n >\r\n <div\r\n className='graph-modal-content m-0'\r\n dangerouslySetInnerHTML={\r\n typeof detailsOnClick === 'string'\r\n ? { __html: string2HTML(detailsOnClick, selectedData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(selectedData) : null}\r\n </div>\r\n {allowDataDownloadOnDetail ? (\r\n <div className='flex'>\r\n <CsvDownloadButton\r\n csvData={csvData(selectedData)}\r\n headers={[\r\n {\r\n label: ' ',\r\n key: ' ',\r\n },\r\n {\r\n label: 'value',\r\n key: 'value',\r\n },\r\n ]}\r\n buttonContent={\r\n <div className='flex items-center gap-4'>\r\n {typeof allowDataDownloadOnDetail === 'string'\r\n ? allowDataDownloadOnDetail\r\n : null}\r\n <FileDown />\r\n </div>\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\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\nimport { P } from '@undp/design-system-react/Typography';\r\nimport { Pagination } from '@undp/design-system-react/Pagination';\r\nimport { Search } from '@undp/design-system-react/Search';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Languages, SourcesDataType, StyleObject, ClassNameObject } from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: object[];\r\n\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 each of the card */\r\n cardBackgroundColor?: string;\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 /** 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 /** Html for each card. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data. */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n /** Allows users to add a dropdown menus, that can be used as filters in the graph. Each filter is an object that specifies the column to filter by, and the default value. All the filters are single select only. */\r\n cardFilters?: FilterDataType[];\r\n /** Allows users to add a dropdown menus, that can be used to sort the cards based on different columns. */\r\n cardSortingOptions?: {\r\n defaultValue?: string;\r\n options: {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }[];\r\n width?: string;\r\n };\r\n /** Adds a search bar to search the cards list. The array defines all the columns from the data where text is used to search from. */\r\n cardSearchColumns?: string[];\r\n /** Min width of the cards for responsiveness. */\r\n cardMinWidth?: number;\r\n /** Add a button to download data object when viewing details. If true, data can be downloaded; if a string is provided, it specifies the button label. */\r\n allowDataDownloadOnDetail?: string | boolean;\r\n /** Defines the number of items displayed per page. */\r\n noOfItemsInAPage?: number;\r\n\r\n // Interactions and Callbacks\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst filterByKeys = (jsonArray: any, keys: string[], substring: string) => {\r\n if (keys.length === 0) return jsonArray;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return jsonArray.filter((item: any) =>\r\n keys.some(key => item[key]?.toLowerCase().includes(substring.toLowerCase())),\r\n );\r\n};\r\n\r\nexport function DataCards(props: Props) {\r\n const {\r\n width,\r\n height,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n graphID,\r\n data,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n theme = 'light',\r\n ariaLabel,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardFilters,\r\n cardSortingOptions,\r\n cardSearchColumns,\r\n cardMinWidth = 320,\r\n backgroundColor = false,\r\n padding,\r\n detailsOnClick,\r\n allowDataDownloadOnDetail = false,\r\n noOfItemsInAPage,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n } = props;\r\n\r\n const [cardData, setCardData] = useState(data);\r\n\r\n const [page, setPage] = useState(1);\r\n\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const filterSettings = useMemo(\r\n () =>\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: true,\r\n clearable: true,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n width: el.width,\r\n })),\r\n [cardFilters, data],\r\n );\r\n\r\n const [selectedFilters, setSelectedFilters] = useState(\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n value: transformDefaultValue(el.defaultValue),\r\n })),\r\n );\r\n const [sortedBy, setSortedBy] = useState<\r\n | {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }\r\n | undefined\r\n >(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue) ===\r\n -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue)\r\n ]\r\n : undefined,\r\n );\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\r\n useEffect(() => {\r\n setSortedBy(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n : undefined,\r\n );\r\n }, [cardSortingOptions]);\r\n\r\n useEffect(() => {\r\n const filteredData = filterByKeys(data, cardSearchColumns || [], searchQuery).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) =>\r\n selectedFilters.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n if (sortedBy) {\r\n setCardData(orderBy(filteredData, [sortedBy.value], [sortedBy.type]));\r\n } else {\r\n setCardData(filteredData);\r\n }\r\n }, [data, cardSearchColumns, searchQuery, selectedFilters, sortedBy]);\r\n\r\n useEffect(() => {\r\n setPage(1);\r\n }, [cardData]);\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 width ? 'w-fit' : 'w-full',\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 `${graphTitle ? `The graph shows ${graphTitle}. ` : ''}This is an list of cards. ${\r\n graphDescription ? ` ${graphDescription}` : ''\r\n }`\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 grow gap-3 w-full 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 {cardSortingOptions || filterSettings.length > 0 ? (\r\n <div className='flex gap-4 flex-wrap items-start w-full'>\r\n {cardSortingOptions ? (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: cardSortingOptions.width || 'calc(25% - 0.75rem)' }}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n Sort by\r\n </P>\r\n <DropdownSelect\r\n options={cardSortingOptions.options}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setSortedBy(el || undefined);\r\n }}\r\n variant={uiMode}\r\n size='sm'\r\n defaultValue={\r\n !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: d.width || 'calc(25% - 0.75rem)' }}\r\n key={i}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n {d.label}\r\n </P>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n variant={uiMode}\r\n size='sm'\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n setSelectedFilters(prev =>\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prev.map(f => (f.filter === d.filter ? { ...f, value: el as any } : f)),\r\n );\r\n }}\r\n defaultValue={d.defaultValue}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n {(cardSearchColumns || []).length > 0 ? (\r\n <div style={{ paddingTop: '1px' }}>\r\n <Search\r\n placeholder='Search...'\r\n onSearch={e => {\r\n setSearchQuery(e || '');\r\n }}\r\n buttonVariant='icon'\r\n inputVariant={uiMode}\r\n showSearchButton={false}\r\n inputSize='sm'\r\n />\r\n </div>\r\n ) : null}\r\n <Graph\r\n data={cardData}\r\n width={width}\r\n height={height}\r\n cardTemplate={cardTemplate}\r\n cardMinWidth={cardMinWidth}\r\n page={page}\r\n cardBackgroundColor={cardBackgroundColor}\r\n styles={styles}\r\n classNames={classNames}\r\n noOfItemsInAPage={noOfItemsInAPage}\r\n detailsOnClick={detailsOnClick}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n allowDataDownloadOnDetail={allowDataDownloadOnDetail}\r\n />\r\n {noOfItemsInAPage ? (\r\n <Pagination\r\n total={cardData.length}\r\n defaultPage={0}\r\n pageSize={noOfItemsInAPage}\r\n onChange={setPage}\r\n />\r\n ) : null}\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":["o","t","e","r","c","d","a","n","f","x","m","p","h","C","b","R","j","E","g","y","U","N","s","u","k","v","P","l","w","F","i","_","I","csvData","data","key","value","Graph","props","width","height","onSeriesMouseClick","cardTemplate","cardBackgroundColor","cardMinWidth","detailsOnClick","noOfItemsInAPage","styles","classNames","page","allowDataDownloadOnDetail","selectedData","setSelectedData","useState","jsxs","Fragment","jsx","_d","string2HTML","Modal","CsvDownloadButton","FileDown","filterByKeys","jsonArray","keys","substring","item","DataCards","graphTitle","sources","graphDescription","footNote","graphID","language","theme","ariaLabel","cardFilters","cardSortingOptions","cardSearchColumns","backgroundColor","padding","uiMode","cardData","setCardData","setPage","searchQuery","setSearchQuery","filterSettings","useMemo","el","transformDefaultValue","getUniqValue","selectedFilters","setSelectedFilters","sortedBy","setSortedBy","filterConfig","useEffect","filteredData","filter","flattenDeep","intersection","orderBy","cn","GraphHeader","DropdownSelect","createFilter","prev","Search","Pagination","GraphFooter"],"mappings":"qqBACA;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,MAAMA,GAAI,CAAC,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CAAC,EAAGC,GAAIC,EAAAA,EAAE,eAAgBF,EAAC,ECNrF;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,MAAME,GAAI,CACR,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,SAAU,EACxD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,SAAU,EACxD,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,KAAM,EAAG,IAAK,IAAK,QAAQ,CAAE,CACzD,EAAGC,GAAIC,EAAAA,EAAE,WAAYF,EAAC,ECVtB;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,MAAMD,GAAI,CAAC,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,CAAC,EAAGC,GAAIF,EAAAA,EAAE,gBAAiBC,EAAC,ECDrF,SAASI,EAAE,CAAE,UAAWC,EAAG,GAAGH,CAAC,EAAI,CACjC,OAAuBD,EAAAA,GAAE,IACvB,MACA,CACE,GAAGC,EACH,KAAM,aACN,aAAc,aACd,UAAWI,EAAAA,GAAE,qCAAsCD,CAAC,CAC1D,CACA,CACA,CACAD,EAAE,YAAc,iBAChB,MAAMG,EAAIC,EAAE,WACV,CAAC,CAAE,UAAWH,EAAG,GAAGH,CAAC,EAAI,IAAsBD,EAAAA,GAAE,IAC/C,KACA,CACE,GAAGC,EACH,IAAK,EACL,UAAWI,EAAAA,GAAE,6CAA8CD,CAAC,CAClE,CACA,CACA,EACAE,EAAE,YAAc,oBAChB,MAAME,EAAID,EAAE,WACV,CAAC,CAAE,UAAWH,EAAG,GAAGH,CAAC,EAAI,IAAsBD,EAAAA,GAAE,IAAI,KAAM,CAAE,GAAGC,EAAG,IAAK,EAAG,UAAWI,KAAE,iBAAkBD,CAAC,CAAC,CAAE,CAChH,EACAI,EAAE,YAAc,iBAChB,SAASC,EAAE,CACT,UAAWL,EACX,SAAUH,EACV,GAAG,CACL,EAAG,CACD,OAAuBD,EAAAA,GAAE,IACvB,SACA,CACE,GAAG,EACH,KAAM,SACN,UAAWK,EAAAA,GACT,6FACAD,CACR,EACM,SAAUH,CAChB,CACA,CACA,CACAQ,EAAE,YAAc,iBAChB,SAASC,EAAE,CAAE,UAAWN,EAAG,GAAGH,CAAC,EAAI,CACjC,OAAuBD,EAAAA,GAAE,IACvBS,EACA,CACE,GAAGR,EACH,aAAc,sBACd,UAAWI,EAAAA,GACT,0IACAD,CACR,EACM,SAA0BJ,EAAAA,GAAE,IAAIW,GAAG,CAAE,UAAW,8DAA8D,CAAE,CACtH,CACA,CACA,CACAD,EAAE,YAAc,qBAChB,SAASE,GAAE,CAAE,UAAWR,EAAG,GAAGH,CAAC,EAAI,CACjC,OAAuBD,EAAAA,GAAE,IACvBS,EACA,CACE,GAAGR,EACH,aAAc,kBACd,UAAWI,EAAAA,GACT,0IACAD,CACR,EACM,SAA0BJ,EAAAA,GAAE,IAAIa,GAAG,CAAE,UAAW,8DAA8D,CAAE,CACtH,CACA,CACA,CACAD,GAAE,YAAc,iBAChB,SAASE,GAAE,CAAE,UAAWV,EAAG,GAAGH,CAAC,EAAI,CACjC,OAAuBD,EAAAA,GAAE,KACvB,OACA,CACE,GAAGC,EACH,cAAe,GACf,UAAWI,EAAAA,GAAE,2CAA4CD,CAAC,EAC1D,SAAU,CACQJ,EAAAA,GAAE,IAAIe,GAAG,CAAE,UAAW,0DAA0D,CAAE,EAClFf,EAAAA,GAAE,IAAI,OAAQ,CAAE,UAAW,UAAW,SAAU,YAAY,CAAE,CACtF,CACA,CACA,CACA,CACAc,GAAE,YAAc,qBAChB,MAAME,EAAI,CAACZ,EAAGH,IAAM,CAClB,MAAM,EAAI,CAAA,EACV,OAAOA,GAAK,EAAI,MAAM,KAAK,CAAE,OAAQA,CAAC,EAAI,CAACgB,EAAGlB,IAAMA,EAAI,CAAC,GAAK,EAAE,KAAK,CAAC,EAAGK,GAAK,EAAI,EAAE,KAAK,EAAG,EAAG,EAAG,UAAU,EAAIA,GAAKH,EAAI,EAAI,EAAE,KAAK,WAAYA,EAAI,EAAGA,EAAI,EAAGA,EAAI,CAAC,EAAI,EAAE,KAAK,WAAYG,EAAI,EAAGA,EAAGA,EAAI,EAAG,UAAU,EAAG,EAAE,KAAKH,CAAC,EAAG,EACrO,EACA,SAASiB,GAAEd,EAAG,CACZ,KAAM,CAAE,YAAaH,EAAI,EAAG,MAAO,EAAG,SAAUgB,EAAG,SAAUlB,EAAG,UAAWoB,CAAC,EAAKf,EAAGN,EAAI,KAAK,KAAK,EAAImB,CAAC,EAAG,CAACG,EAAGlB,CAAC,EAAImB,EAAAA,SAAEpB,CAAC,EAAG,CAACqB,EAAGC,CAAC,EAAIF,EAAAA,SAChIL,EAAEf,EAAGH,CAAC,CACV,EACE,OAAO0B,EAAAA,UAAE,IAAM,CACbD,EAAEP,EAAEI,EAAGtB,CAAC,CAAC,CACX,EAAG,CAACsB,EAAGtB,CAAC,CAAC,EAAmBE,KAAE,IAAIG,EAAG,CAAE,UAAWE,EAAAA,GAAE,cAAec,CAAC,EAAG,SAA0BnB,EAAAA,GAAE,KAAKM,EAAG,CAAE,SAAU,CACrGN,EAAAA,GAAE,IAAIQ,EAAG,CAAE,SAA0BR,EAAAA,GAAE,IACrDU,EACA,CACE,QAAS,IAAM,CACbU,EAAI,IAAMrB,EAAEqB,EAAI,CAAC,EAAGlB,EAAEkB,EAAI,CAAC,EAC7B,EACA,UAAWf,EAAAA,GACT,iBACAe,GAAK,GAAK,mDACpB,CACA,CACA,EAAO,EACHE,EAAE,IAAI,CAACG,EAAGC,IAAsB1B,EAAAA,GAAE,IAAIQ,EAAG,CAAE,SAAUiB,IAAM,WAA6BzB,KAAE,IAAIc,GAAG,CAAA,CAAE,EAAoBd,EAAAA,GAAE,IACvHS,EACA,CACE,QAAS,IAAM,CACbP,EAAEuB,CAAC,EAAG1B,EAAE0B,CAAC,CACX,EACA,UAAWpB,EAAAA,GACT,2GACAoB,IAAML,GAAK,kJACrB,EACQ,SAAUK,CAClB,CACA,CAAK,EAAIC,CAAC,CAAC,EACS1B,EAAAA,GAAE,IAAIQ,EAAG,CAAE,SAA0BR,EAAAA,GAAE,IACrDY,GACA,CACE,QAAS,IAAM,CACbQ,EAAItB,IAAMC,EAAEqB,EAAI,CAAC,EAAGlB,EAAEkB,EAAI,CAAC,EAC7B,EACA,UAAWf,EAAAA,GACT,iBACAe,GAAKtB,GAAK,mDACpB,CACA,CACA,CAAK,CAAE,CACP,CAAG,CAAE,CAAC,CAAE,CACR,CC9IA,MAAMsB,GAAIK,EAAAA,EACR,uZACA,CACE,SAAU,CACR,QAAS,CACP,MAAO,8DACP,OAAQ,4DAChB,EACM,UAAW,CACT,GAAI,cACJ,KAAM,OACd,CACA,EACI,gBAAiB,CACf,UAAW,OACX,QAAS,QACf,CACA,CACA,EAAGtB,GAAIM,EAAE,WAAW,CAAC,CAAE,UAAWR,EAAG,UAAW,EAAG,QAAS,EAAG,GAAGF,CAAC,EAAIC,IAAsBF,EAAAA,GAAE,IAAI,QAAS,CAAE,GAAGC,EAAG,IAAKC,EAAG,UAAWQ,EAAAA,GAAEY,GAAE,CAAE,UAAW,EAAG,QAAS,CAAC,CAAE,EAAGnB,CAAC,CAAC,CAAE,CAAC,EAC/KE,GAAE,YAAc,QCjBhB;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,MAAMwB,GAAI,CACR,CAAC,OAAQ,CAAE,EAAG,mBAAoB,IAAK,QAAQ,CAAE,EACjD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,QAAQ,CAAE,CAC1D,EAAGC,EAAIC,EAAAA,EAAE,SAAUF,EAAC,EAAGG,GAAI/B,EAAE,WAC3B,CAAC,CACC,UAAWM,EACX,eAAgBG,EAChB,gBAAiBC,EACjB,SAAUW,EACV,kBAAmBC,EACnB,cAAelB,EACf,eAAgBD,EAChB,iBAAkBK,EAClB,aAAcD,EACd,UAAWR,EACX,YAAamB,EACb,GAAGH,CACP,EAAKJ,IAAM,CACP,KAAM,CAACN,EAAGmB,CAAC,EAAIxB,EAAE,SAAS,MAAM,EAAG,CAACoB,EAAGM,CAAC,EAAI1B,EAAE,SAAS,EAAE,EACzD,OAAuBC,KAAE,KAAK,MAAO,CAAE,UAAW0B,EAAAA,GAAE,aAAcrB,CAAC,EAAG,IAAKK,EAAG,SAAU,CACtEV,EAAAA,GAAE,KAAK,MAAO,CAAE,UAAW,kBAAmB,SAAU,CACtDA,EAAAA,GAAE,IAChBsB,GACA,CACE,GAAGR,EACH,QAASR,EACT,KAAM,OACN,UAAWE,EACX,SAAWP,GAAM,CACfsB,EAAEtB,EAAE,OAAO,KAAK,EAAGoB,GAAKD,IAAInB,EAAE,OAAO,KAAK,CAC5C,EACA,UAAWH,EACX,UAAYG,GAAM,CAChBA,EAAE,MAAQ,SAAWmB,IAAIhB,CAAC,CAC5B,EACA,QAAS,IAAMqB,EAAE,EAAE,EACnB,OAAQ,IAAMA,EAAE,EAAE,CAC9B,CACA,EACQ,CAACN,IAAMf,IAAM,IAAM,CAACA,IAAsBJ,KAAE,KAAK,MAAO,CAAE,UAAW,uEAAwE,SAAU,CACrJE,EAAI,KAAuBF,KAAE,IAAI4B,EAAG,CAAE,UAAW,gEAAiE,EAClG5B,KAAE,IAAI,OAAQ,CAAE,UAAW,mDAAoD,SAAUiB,GAAK,WAAW,CAAE,CACrI,CAAS,CAAE,CACX,EAAS,EACHV,IAAM,GAAK,KAAuBP,EAAAA,GAAE,IAClCgB,EAAAA,EACA,CACE,QAASb,GAAK,OACd,UAAWM,EACX,QAASX,EACT,QAAS,IAAM,CACbsB,IAAIhB,CAAC,CACP,EACA,SAAUF,GAAqBF,KAAE,IAAI4B,EAAG,CAAE,UAAW,UAAU,CAAE,CAC3E,CACA,CACA,EAAO,CACL,CACF,EACAE,GAAE,YAAc,SCnChB,MAAMC,GAAWC,GACVA,EACc,OAAO,QAAQA,CAAI,EAAE,IAAI,CAAC,CAACC,EAAKC,CAAK,IAClD,MAAM,QAAQA,CAAK,EACd,CACL,IAAKD,EACL,MAAO,IAAIC,EAAM,KAAK,IAAI,CAAC,GAAA,EAGxB,CACL,IAAKD,EACL,MAAO,IAAIC,CAAK,GAAA,CAEnB,EAZiB,CAAA,EAgBb,SAASC,GAAMC,EAAc,CAClC,KAAM,CACJ,MAAAC,EACA,OAAAC,EACA,KAAAN,EACA,mBAAAO,EACA,aAAAC,EACA,oBAAAC,EACA,aAAAC,EAAe,IACf,eAAAC,EACA,iBAAAC,EACA,OAAAC,EACA,WAAAC,EACA,KAAAC,EACA,0BAAAC,CAAA,EACEZ,EAEE,CAACa,EAAcC,CAAe,EAAIC,EAAAA,SAAc,MAAS,EAC/D,OACEC,EAAAA,kBAAAA,KAAAC,6BAAA,CACE,SAAA,CAAAC,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,8EACV,MAAO,CACL,MAAOjB,EAAQ,GAAGA,CAAK,KAAO,OAC9B,OAAQC,EAAS,GAAGA,CAAM,KAAO,OACjC,oBAAqB,4BAA4BI,CAAY,WAAA,EAG9D,SAAAV,EAEE,OAAO,CAACuB,EAAS3B,IAChBgB,EACIhB,EAAImB,EAAOH,GAAoBhB,IAAMmB,EAAO,GAAKH,EACjD,EAAA,EAGL,IAAI,CAACzC,EAAQyB,IACZ0B,EAAAA,kBAAAA,IAAC,MAAA,CAEC,MAAO,CACL,GAAIT,GAAQ,WAAa,CAAA,EACzB,GAAIJ,GAAuB,CAAE,gBAAiBA,CAAA,CAAoB,EAEpE,UAAW,wBACTF,GAAsBI,EAAiB,iBAAmB,aAC5D,GACGF,EAAuE,GAAjD,8CACzB,IAAIK,GAAY,WAAa,EAAE,GAC/B,QAAS,IAAM,CACbP,IAAqBpC,CAAC,EACtB+C,EAAgB/C,CAAC,CACnB,EACA,wBACE,OAAOqC,GAAiB,SACpB,CAAE,OAAQgB,EAAAA,YAAYhB,EAAcrC,CAAC,CAAA,EACrC,OAGL,SAAA,OAAOqC,GAAiB,WAAaA,EAAarC,CAAC,EAAI,IAAA,EApBnDyB,CAAA,CAsBR,CAAA,CAAA,EAEJe,GAAkBM,IAAiB,OAClCG,EAAAA,kBAAAA,KAACK,GAAAA,EAAA,CACC,KAAMR,IAAiB,OACvB,QAAS,IAAM,CACbC,EAAgB,MAAS,CAC3B,EAEA,SAAA,CAAAI,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,0BACV,wBACE,OAAOX,GAAmB,SACtB,CAAE,OAAQa,EAAAA,YAAYb,EAAgBM,CAAY,CAAA,EAClD,OAGL,SAAA,OAAON,GAAmB,WAAaA,EAAeM,CAAY,EAAI,IAAA,CAAA,EAExED,EACCM,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,OACb,SAAAA,EAAAA,kBAAAA,IAACI,GAAAA,kBAAA,CACC,QAAS3B,GAAQkB,CAAY,EAC7B,QAAS,CACP,CACE,MAAO,IACP,IAAK,GAAA,EAEP,CACE,MAAO,QACP,IAAK,OAAA,CACP,EAEF,cACEG,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAA,OAAOJ,GAA8B,SAClCA,EACA,6BACHW,EAAAA,SAAA,CAAA,CAAS,CAAA,CAAA,CACZ,CAAA,CAAA,EAGN,EACE,IAAA,CAAA,CAAA,EAEJ,IAAA,EACN,CAEJ,CCvDA,MAAMC,GAAe,CAACC,EAAgBC,EAAgBC,IAChDD,EAAK,SAAW,EAAUD,EAEvBA,EAAU,OAAQG,GACvBF,EAAK,QAAYE,EAAK/B,CAAG,GAAG,YAAA,EAAc,SAAS8B,EAAU,YAAA,CAAa,CAAC,CAAA,EAIxE,SAASE,GAAU7B,EAAc,CACtC,KAAM,CACJ,MAAAC,EACA,OAAAC,EACA,WAAA4B,EACA,QAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,QAAAC,EACA,KAAAtC,EACA,mBAAAO,EACA,SAAAgC,EAAW,KACX,MAAAC,EAAQ,QACR,UAAAC,EACA,aAAAjC,EACA,oBAAAC,EACA,YAAAiC,EACA,mBAAAC,EACA,kBAAAC,EACA,aAAAlC,GAAe,IACf,gBAAAmC,EAAkB,GAClB,QAAAC,EACA,eAAAnC,GACA,0BAAAK,GAA4B,GAC5B,iBAAAJ,EACA,OAAAmC,EAAS,SACT,OAAAlC,EACA,WAAAC,CAAA,EACEV,EAEE,CAAC4C,EAAUC,CAAW,EAAI9B,EAAAA,SAASnB,CAAI,EAEvC,CAACe,GAAMmC,CAAO,EAAI/B,EAAAA,SAAS,CAAC,EAE5B,CAACgC,EAAaC,EAAc,EAAIjC,EAAAA,SAAS,EAAE,EAC3CkC,EAAiBC,EAAAA,QACrB,KACGZ,GAAe,CAAA,GAAI,IAAIa,IAAO,CAC7B,OAAQA,EAAG,OACX,MAAOA,EAAG,OAAS,aAAaA,EAAG,MAAM,GACzC,aAAc,GACd,UAAW,GACX,aAAcC,EAAAA,sBAAsBD,EAAG,YAAY,EACnD,gBAAiBE,GAAAA,aAAazD,EAAMuD,EAAG,MAAM,EAC1C,OAAO,GAAK,CAACA,EAAG,eAAe,SAAS,GAAG,CAAC,EAAE,CAAC,EAC/C,IAAI,IAAM,CAAE,MAAO,EAAG,MAAO,CAAA,EAAI,EACpC,MAAOA,EAAG,KAAA,EACV,EACJ,CAACb,EAAa1C,CAAI,CAAA,EAGd,CAAC0D,EAAiBC,EAAkB,EAAIxC,EAAAA,UAC3CuB,GAAe,CAAA,GAAI,IAAIa,IAAO,CAC7B,OAAQA,EAAG,OACX,MAAOC,EAAAA,sBAAsBD,EAAG,YAAY,CAAA,EAC5C,CAAA,EAEE,CAACK,EAAUC,CAAW,EAAI1C,EAAAA,SAQ9BwB,EACI,CAACA,EAAmB,cACpBA,EAAmB,QAAQ,UAAUY,GAAMA,EAAG,QAAUZ,EAAmB,YAAY,IACrF,GACAA,EAAmB,QAAQ,CAAC,EAC5BA,EAAmB,QACjBA,EAAmB,QAAQ,UAAUY,GAAMA,EAAG,QAAUZ,EAAmB,YAAY,CACzF,EACF,MAAA,EAGAmB,EAAeR,EAAAA,QACnB,KAAO,CACL,WAAY,GACZ,cAAe,GACf,KAAM,EAAA,GAER,CAAA,CAAC,EAGHS,OAAAA,EAAAA,UAAU,IAAM,CACdF,EACElB,EACI,CAACA,EAAmB,cACpBA,EAAmB,QAAQ,UACzBY,GAAMA,EAAG,QAAUZ,EAAmB,YAAA,IAClC,GACJA,EAAmB,QAAQ,CAAC,EAC5BA,EAAmB,QACjBA,EAAmB,QAAQ,UACzBY,GAAMA,EAAG,QAAUZ,EAAmB,YAAA,CAE1C,EACF,MAAA,CAER,EAAG,CAACA,CAAkB,CAAC,EAEvBoB,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAepC,GAAa5B,EAAM4C,GAAqB,CAAA,EAAIO,CAAW,EAAE,OAE3EnB,GACC0B,EAAgB,MAAMO,GACpBA,EAAO,OAASC,cAAY,CAACD,EAAO,KAAK,CAAC,EAAE,OAAS,EACjDE,GAAAA,aACED,EAAAA,YAAY,CAAClC,EAAKiC,EAAO,MAAM,CAAC,CAAC,EACjCC,cAAY,CAACD,EAAO,KAAK,CAAC,EAAE,IAAIV,GAAMA,EAAG,KAAK,CAAA,EAC9C,OAAS,EACX,EAAA,CACN,EAGFN,EADEW,EACUQ,GAAAA,QAAQJ,EAAc,CAACJ,EAAS,KAAK,EAAG,CAACA,EAAS,IAAI,CAAC,EAEvDI,CAFwD,CAIxE,EAAG,CAAChE,EAAM4C,EAAmBO,EAAaO,EAAiBE,CAAQ,CAAC,EAEpEG,EAAAA,UAAU,IAAM,CACdb,EAAQ,CAAC,CACX,EAAG,CAACF,CAAQ,CAAC,EAGX1B,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAW,GAAGkB,GAAS,OAAO,UAAUnC,EAAQ,eAAiB,aAAa,GAC9E,IAAKkC,IAAa,MAAQA,IAAa,KAAO,MAAQ,OAEtD,SAAAjB,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAW+C,EAAAA,GACT,GACGxB,EAEGA,IAAoB,GAClB,gDACA,GAHF,iBAIN,gDAAgDN,GAAY,IAAI,GAChElC,EAAQ,QAAU,SAClBS,GAAY,cAAA,EAEd,MAAO,CACL,GAAID,GAAQ,gBAAkB,CAAA,EAC9B,GAAIgC,GAAmBA,IAAoB,GAAO,CAAE,gBAAAA,CAAA,EAAoB,CAAA,CAAC,EAE3E,GAAIP,EACJ,aACEG,GACA,GAAGP,EAAa,mBAAmBA,CAAU,KAAO,EAAE,6BACpDE,EAAmB,IAAIA,CAAgB,GAAK,EAC9C,GAGF,SAAAd,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,YACV,MAAO,CAAE,QAASuB,EAAkBC,GAAW,OAASA,GAAW,CAAA,EAEnE,SAAA1B,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,kDACZ,SAAA,CAAAc,GAAcE,EACbd,EAAAA,kBAAAA,IAACgD,GAAAA,YAAA,CACC,OAAQ,CACN,MAAOzD,GAAQ,MACf,YAAaA,GAAQ,WAAA,EAEvB,WAAY,CACV,MAAOC,GAAY,MACnB,YAAaA,GAAY,WAAA,EAE3B,WAAAoB,EACA,iBAAAE,EACA,MAAA/B,CAAA,CAAA,EAEA,KACHsC,GAAsBU,EAAe,OAAS,EAC7CjC,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,0CACZ,SAAA,CAAAuB,EACCvB,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAU,8BACV,MAAO,CAAE,MAAOuB,EAAmB,OAAS,qBAAA,EAE5C,SAAA,CAAArB,EAAAA,kBAAAA,IAAC9B,EAAAA,EAAA,CACC,aAAa,KACb,KAAK,KACL,UAAU,mDACX,SAAA,SAAA,CAAA,EAGD8B,EAAAA,kBAAAA,IAACiD,EAAAA,GAAA,CACC,QAAS5B,EAAmB,QAC5B,MAAOJ,IAAa,MAAQA,IAAa,KACzC,aAAY,GACZ,aAAciC,EAAAA,GAAaV,CAAY,EAEvC,SAAWP,GAAY,CACrBM,EAAYN,GAAM,MAAS,CAC7B,EACA,QAASR,EACT,KAAK,KACL,aACE,CAACJ,EAAmB,cACpBA,EAAmB,QAAQ,UACzBY,GAAMA,EAAG,QAAUZ,EAAmB,YAAA,IAClC,GACFA,EAAmB,QAAQ,CAAC,EAC5BA,EAAmB,QACjBA,EAAmB,QAAQ,UACzBY,GAAMA,EAAG,QAAUZ,EAAmB,YAAA,CAE1C,CAAA,CAAA,CAER,CAAA,CAAA,EAEA,KACHU,GAAgB,IAAI,CAAClF,EAAGyB,IACvBwB,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAU,8BACV,MAAO,CAAE,MAAOjD,EAAE,OAAS,qBAAA,EAG3B,SAAA,CAAAmD,EAAAA,kBAAAA,IAAC9B,EAAAA,EAAA,CACC,aAAa,KACb,KAAK,KACL,UAAU,mDAET,SAAArB,EAAE,KAAA,CAAA,EAELmD,EAAAA,kBAAAA,IAACiD,EAAAA,GAAA,CACC,QAASpG,EAAE,gBACX,YAAaA,EAAE,YAAc,OAAY,GAAOA,EAAE,UAClD,MAAOoE,IAAa,MAAQA,IAAa,KACzC,aAAY,GACZ,QAASQ,EACT,KAAK,KACL,yBAAwB,GACxB,aAAcyB,EAAAA,GAAaV,CAAY,EACvC,SAAUP,GAAM,CACdI,GAAmBc,GAEjBA,EAAK,IAAInG,GAAMA,EAAE,SAAWH,EAAE,OAAS,CAAE,GAAGG,EAAG,MAAOiF,CAAA,EAAcjF,CAAE,CAAA,CAE1E,EACA,aAAcH,EAAE,YAAA,CAAA,CAClB,CAAA,EAzBKyB,CAAA,CA2BR,CAAA,CAAA,CACH,EACE,MACFgD,GAAqB,CAAA,GAAI,OAAS,EAClCtB,EAAAA,kBAAAA,IAAC,MAAA,CAAI,MAAO,CAAE,WAAY,KAAA,EACxB,SAAAA,EAAAA,kBAAAA,IAACoD,GAAA,CACC,YAAY,YACZ,SAAU1G,GAAK,CACboF,GAAepF,GAAK,EAAE,CACxB,EACA,cAAc,OACd,aAAc+E,EACd,iBAAkB,GAClB,UAAU,IAAA,CAAA,EAEd,EACE,KACJzB,EAAAA,kBAAAA,IAACnB,GAAA,CACC,KAAM6C,EACN,MAAA3C,EACA,OAAAC,EACA,aAAAE,EACA,aAAAE,GACA,KAAAK,GACA,oBAAAN,EACA,OAAAI,EACA,WAAAC,EACA,iBAAAF,EACA,eAAAD,GACA,mBAAAJ,EACA,0BAAAS,EAAA,CAAA,EAEDJ,EACCU,EAAAA,kBAAAA,IAACqD,GAAA,CACC,MAAO3B,EAAS,OAChB,YAAa,EACb,SAAUpC,EACV,SAAUsC,CAAA,CAAA,EAEV,KACHf,GAAWE,EACVf,EAAAA,kBAAAA,IAACsD,GAAAA,YAAA,CACC,OAAQ,CAAE,SAAU/D,GAAQ,SAAU,OAAQA,GAAQ,MAAA,EACtD,WAAY,CACV,SAAUC,GAAY,SACtB,OAAQA,GAAY,MAAA,EAEtB,QAAAqB,EACA,SAAAE,EACA,MAAAhC,CAAA,CAAA,EAEA,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAGN","x_google_ignoreList":[0,1,2,3,4,5]}
|
|
1
|
+
{"version":3,"file":"DataCards.cjs","sources":["../node_modules/@undp/design-system-react/dist/chevron-left-DXTpJnX4.js","../node_modules/@undp/design-system-react/dist/ellipsis-CihzP6fh.js","../node_modules/@undp/design-system-react/dist/chevron-right-BcRtuL9I.js","../node_modules/@undp/design-system-react/dist/Pagination.js","../node_modules/@undp/design-system-react/dist/Input.js","../node_modules/@undp/design-system-react/dist/Search.js","../src/Components/Graphs/DataCards/Graph.tsx","../src/Components/Graphs/DataCards/index.tsx"],"sourcesContent":["import { c as e } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst o = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]], t = e(\"chevron-left\", o);\nexport {\n t as C\n};\n//# sourceMappingURL=chevron-left-DXTpJnX4.js.map\n","import { c } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst e = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"19\", cy: \"12\", r: \"1\", key: \"1wjl8i\" }],\n [\"circle\", { cx: \"5\", cy: \"12\", r: \"1\", key: \"1pcz8c\" }]\n], r = c(\"ellipsis\", e);\nexport {\n r as E\n};\n//# sourceMappingURL=ellipsis-CihzP6fh.js.map\n","import { c as o } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst t = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]], e = o(\"chevron-right\", t);\nexport {\n e as C\n};\n//# sourceMappingURL=chevron-right-BcRtuL9I.js.map\n","import { j as e } from \"./jsx-runtime-BzflLqGi.js\";\nimport x, { useState as u, useEffect as P } from \"react\";\nimport { c as n } from \"./utils-D_Pof5Gy.js\";\nimport { C } from \"./chevron-left-DXTpJnX4.js\";\nimport { E } from \"./ellipsis-CihzP6fh.js\";\nimport { C as R } from \"./chevron-right-BcRtuL9I.js\";\nfunction d({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n \"nav\",\n {\n ...r,\n role: \"navigation\",\n \"aria-label\": \"pagination\",\n className: n(\"mx-auto flex w-full justify-center\", a)\n }\n );\n}\nd.displayName = \"PaginationUnit\";\nconst f = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\n \"ul\",\n {\n ...r,\n ref: i,\n className: n(\"flex flex-row items-center gap-1 list-none\", a)\n }\n )\n);\nf.displayName = \"PaginationContent\";\nconst m = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\"li\", { ...r, ref: i, className: n(\"mr-2 last:mr-0\", a) })\n);\nm.displayName = \"PaginationItem\";\nfunction p({\n className: a,\n children: r,\n ...i\n}) {\n return /* @__PURE__ */ e.jsx(\n \"button\",\n {\n ...i,\n type: \"button\",\n className: n(\n \"p-4 text-base text-primary-black dark:text-primary-gray-100 dark:hover:bg-primary-gray-600\",\n a\n ),\n children: r\n }\n );\n}\np.displayName = \"PaginationLink\";\nfunction h({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to previous page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(C, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nh.displayName = \"PaginationPrevious\";\nfunction b({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to next page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(R, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nb.displayName = \"PaginationNext\";\nfunction j({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsxs(\n \"span\",\n {\n ...r,\n \"aria-hidden\": !0,\n className: n(\"flex h-9 w-9 items-center justify-center\", a),\n children: [\n /* @__PURE__ */ e.jsx(E, { className: \"h-4 w-4 text-primary-gray-700 dark:text-primary-gray-100\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"sr-only\", children: \"More pages\" })\n ]\n }\n );\n}\nj.displayName = \"PaginationEllipsis\";\nconst g = (a, r) => {\n const i = [];\n return r <= 7 ? Array.from({ length: r }, (y, t) => t + 1) : (i.push(1), a <= 3 ? i.push(2, 3, 4, \"ellipsis\") : a >= r - 2 ? i.push(\"ellipsis\", r - 3, r - 2, r - 1) : i.push(\"ellipsis\", a - 1, a, a + 1, \"ellipsis\"), i.push(r), i);\n};\nfunction U(a) {\n const { defaultPage: r = 1, total: i, pageSize: y, onChange: t, className: N } = a, o = Math.ceil(i / y), [s, c] = u(r), [k, v] = u(\n g(r, o)\n );\n return P(() => {\n v(g(s, o));\n }, [s, o]), /* @__PURE__ */ e.jsx(d, { className: n(\"select-none\", N), children: /* @__PURE__ */ e.jsxs(f, { children: [\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n h,\n {\n onClick: () => {\n s > 1 && (t(s - 1), c(s - 1));\n },\n className: n(\n \"cursor-pointer\",\n s <= 1 && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) }),\n k.map((l, w) => /* @__PURE__ */ e.jsx(m, { children: l === \"ellipsis\" ? /* @__PURE__ */ e.jsx(j, {}) : /* @__PURE__ */ e.jsx(\n p,\n {\n onClick: () => {\n c(l), t(l);\n },\n className: n(\n \"cursor-pointer w-[32px] h-[32px] flex items-center justify-center rounded-full hover:bg-primary-gray-300\",\n l === s && \"bg-primary-blue-600 hover:bg-primary-blue-700 dark:bg-primary-blue-500 dark:hover:bg-primary-blue-400 hover:text-primary-wite text-primary-white\"\n ),\n children: l\n }\n ) }, w)),\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n b,\n {\n onClick: () => {\n s < o && (t(s + 1), c(s + 1));\n },\n className: n(\n \"cursor-pointer\",\n s >= o && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) })\n ] }) });\n}\nexport {\n U as Pagination\n};\n//# sourceMappingURL=Pagination.js.map\n","import { j as o } from \"./jsx-runtime-BzflLqGi.js\";\nimport p from \"react\";\nimport { c as l } from \"./index-CHPV5EwG.js\";\nimport { c as m } from \"./utils-D_Pof5Gy.js\";\nconst s = l(\n \"w-full h-auto bg-primary-white dark:bg-primary-gray-650 text-primary-black dark:text-primary-white text-base transition-colors file:border-0 file:bg-transparent file:font-medium file:text-primary-gray-700 dark:file:text-primary-white focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 placeholder:text-primary-gray-550 dark:placeholder:text-primary-gray-400\",\n {\n variants: {\n variant: {\n light: \"border border-primary-gray-400 dark:border-primary-gray-500\",\n normal: \"border-2 border-primary-black dark:border-primary-gray-300\"\n },\n inputSize: {\n sm: \"px-2.5 py-1\",\n base: \"p-2.5\"\n }\n },\n defaultVariants: {\n inputSize: \"base\",\n variant: \"normal\"\n }\n }\n), d = p.forwardRef(({ className: r, inputSize: a, variant: i, ...t }, e) => /* @__PURE__ */ o.jsx(\"input\", { ...t, ref: e, className: m(s({ inputSize: a, variant: i }), r) }));\nd.displayName = \"Input\";\nexport {\n d as Input\n};\n//# sourceMappingURL=Input.js.map\n","import { j as e } from \"./jsx-runtime-BzflLqGi.js\";\nimport t from \"react\";\nimport { Button as g } from \"./Button.js\";\nimport { Input as k } from \"./Input.js\";\nimport { c as w } from \"./utils-D_Pof5Gy.js\";\nimport { c as _ } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst F = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n], i = _(\"search\", F), I = t.forwardRef(\n ({\n className: n,\n inputClassName: m,\n buttonClassName: p,\n onSearch: s,\n searchOnlyOnClick: u,\n buttonVariant: d,\n buttonChildren: c,\n showSearchButton: x,\n inputVariant: f,\n inputSize: o,\n placeholder: y,\n ...j\n }, h) => {\n const [a, v] = t.useState(void 0), [N, l] = t.useState(!1);\n return /* @__PURE__ */ e.jsxs(\"div\", { className: w(\"flex gap-0\", n), ref: h, children: [\n /* @__PURE__ */ e.jsxs(\"div\", { className: \"relative w-full\", children: [\n /* @__PURE__ */ e.jsx(\n k,\n {\n ...j,\n variant: f,\n type: \"text\",\n className: m,\n onChange: (r) => {\n v(r.target.value), u || s?.(r.target.value);\n },\n inputSize: o,\n onKeyDown: (r) => {\n r.key === \"Enter\" && s?.(a);\n },\n onFocus: () => l(!0),\n onBlur: () => l(!1)\n }\n ),\n !N && (a === \"\" || !a) && /* @__PURE__ */ e.jsxs(\"div\", { className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\", children: [\n c ? null : /* @__PURE__ */ e.jsx(i, { className: \"h-4 w-4 text-primary-gray-500 dark:text-primary-gray-400 mr-2\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"text-primary-gray-500 dark:text-primary-gray-400\", children: y || \"Search...\" })\n ] })\n ] }),\n x === !1 ? null : /* @__PURE__ */ e.jsx(\n g,\n {\n variant: d || \"icon\",\n className: p,\n padding: o,\n onClick: () => {\n s?.(a);\n },\n children: c || /* @__PURE__ */ e.jsx(i, { className: \"stroke-2\" })\n }\n )\n ] });\n }\n);\nI.displayName = \"Search\";\nexport {\n I as Search\n};\n//# sourceMappingURL=Search.js.map\n","import { Modal } from '@undp/design-system-react/Modal';\r\nimport { useState } from 'react';\r\n\r\nimport { CsvDownloadButton } from '@/Components/Actions/CsvDownloadButton';\r\nimport { FileDown } from '@/Components/Icons';\r\nimport { StyleObject, ClassNameObject } from '@/Types';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n data: object[];\r\n cardBackgroundColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n width?: number;\r\n height?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n cardMinWidth: number;\r\n noOfItemsInAPage?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n allowDataDownloadOnDetail: boolean | string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n page: number;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst csvData = (data: any) => {\r\n if (!data) return {};\r\n const dataForCsv = Object.entries(data).map(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n return {\r\n ' ': key,\r\n value: `\"${value.join('; ')}\"`,\r\n };\r\n }\r\n return {\r\n ' ': key,\r\n value: `\"${value}\"`,\r\n };\r\n });\r\n return dataForCsv;\r\n};\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n width,\r\n height,\r\n data,\r\n onSeriesMouseClick,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardMinWidth = 320,\r\n detailsOnClick,\r\n noOfItemsInAPage,\r\n styles,\r\n classNames,\r\n page,\r\n allowDataDownloadOnDetail,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [selectedData, setSelectedData] = useState<any>(undefined);\r\n return (\r\n <>\r\n <div\r\n className='undp-scrollbar w-full my-0 mx-auto grid gap-4 undp-viz-data-cards-container'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height ? `${height}px` : 'auto',\r\n gridTemplateColumns: `repeat(auto-fill, minmax(${cardMinWidth}px, 1fr))`,\r\n }}\r\n >\r\n {data\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((_d: any, i: number) =>\r\n noOfItemsInAPage\r\n ? i < page * noOfItemsInAPage && i >= (page - 1) * noOfItemsInAPage\r\n : true,\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map((d: any, i: number) => (\r\n <div\r\n key={i}\r\n style={{\r\n ...(styles?.dataCards || {}),\r\n ...(cardBackgroundColor && { backgroundColor: cardBackgroundColor }),\r\n }}\r\n className={`w-full flex flex-col ${\r\n onSeriesMouseClick || detailsOnClick ? 'cursor-pointer' : 'cursor-auto'\r\n }${\r\n !cardBackgroundColor ? 'bg-primary-gray-200 dark:bg-primary-gray-600' : ''\r\n } ${classNames?.dataCards || ''}`}\r\n onClick={() => {\r\n onSeriesMouseClick?.(d);\r\n setSelectedData(d);\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof cardTemplate === 'string'\r\n ? { __html: string2HTML(cardTemplate, d) }\r\n : undefined\r\n }\r\n >\r\n {typeof cardTemplate === 'function' ? cardTemplate(d) : null}\r\n </div>\r\n ))}\r\n </div>\r\n {detailsOnClick && selectedData !== undefined ? (\r\n <Modal\r\n open={selectedData !== undefined}\r\n onClose={() => {\r\n setSelectedData(undefined);\r\n }}\r\n >\r\n <div\r\n className='graph-modal-content m-0'\r\n dangerouslySetInnerHTML={\r\n typeof detailsOnClick === 'string'\r\n ? { __html: string2HTML(detailsOnClick, selectedData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(selectedData) : null}\r\n </div>\r\n {allowDataDownloadOnDetail ? (\r\n <div className='flex'>\r\n <CsvDownloadButton\r\n csvData={csvData(selectedData)}\r\n headers={[\r\n {\r\n label: ' ',\r\n key: ' ',\r\n },\r\n {\r\n label: 'value',\r\n key: 'value',\r\n },\r\n ]}\r\n buttonContent={\r\n <div className='flex items-center gap-4'>\r\n {typeof allowDataDownloadOnDetail === 'string'\r\n ? allowDataDownloadOnDetail\r\n : null}\r\n <FileDown />\r\n </div>\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\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\nimport { P } from '@undp/design-system-react/Typography';\r\nimport { Pagination } from '@undp/design-system-react/Pagination';\r\nimport { Search } from '@undp/design-system-react/Search';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Languages, SourcesDataType, StyleObject, ClassNameObject } from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: object[];\r\n\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 each of the card */\r\n cardBackgroundColor?: string;\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 /** 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 /** Html for each card. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data. */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n /** Allows users to add a dropdown menus, that can be used as filters in the graph. Each filter is an object that specifies the column to filter by, and the default value. All the filters are single select only. */\r\n cardFilters?: FilterDataType[];\r\n /** Allows users to add a dropdown menus, that can be used to sort the cards based on different columns. */\r\n cardSortingOptions?: {\r\n defaultValue?: string;\r\n options: {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }[];\r\n width?: string;\r\n };\r\n /** Adds a search bar to search the cards list. The array defines all the columns from the data where text is used to search from. */\r\n cardSearchColumns?: string[];\r\n /** Min width of the cards for responsiveness. */\r\n cardMinWidth?: number;\r\n /** Add a button to download data object when viewing details. If true, data can be downloaded; if a string is provided, it specifies the button label. */\r\n allowDataDownloadOnDetail?: string | boolean;\r\n /** Defines the number of items displayed per page. */\r\n noOfItemsInAPage?: number;\r\n\r\n // Interactions and Callbacks\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst filterByKeys = (jsonArray: any, keys: string[], substring: string) => {\r\n if (keys.length === 0) return jsonArray;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return jsonArray.filter((item: any) =>\r\n keys.some(key => item[key]?.toLowerCase().includes(substring.toLowerCase())),\r\n );\r\n};\r\n\r\nexport function DataCards(props: Props) {\r\n const {\r\n width,\r\n height,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n graphID,\r\n data,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n theme = 'light',\r\n ariaLabel,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardFilters,\r\n cardSortingOptions,\r\n cardSearchColumns,\r\n cardMinWidth = 320,\r\n backgroundColor = false,\r\n padding,\r\n detailsOnClick,\r\n allowDataDownloadOnDetail = false,\r\n noOfItemsInAPage,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n } = props;\r\n\r\n const [cardData, setCardData] = useState(data);\r\n\r\n const [page, setPage] = useState(1);\r\n\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const filterSettings = useMemo(\r\n () =>\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: true,\r\n clearable: true,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n width: el.width,\r\n })),\r\n [cardFilters, data],\r\n );\r\n\r\n const [selectedFilters, setSelectedFilters] = useState(\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n value: transformDefaultValue(el.defaultValue),\r\n })),\r\n );\r\n const [sortedBy, setSortedBy] = useState<\r\n | {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }\r\n | undefined\r\n >(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue) ===\r\n -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue)\r\n ]\r\n : undefined,\r\n );\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\r\n useEffect(() => {\r\n setSortedBy(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n : undefined,\r\n );\r\n }, [cardSortingOptions]);\r\n\r\n useEffect(() => {\r\n const filteredData = filterByKeys(data, cardSearchColumns || [], searchQuery).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) =>\r\n selectedFilters.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n if (sortedBy) {\r\n setCardData(orderBy(filteredData, [sortedBy.value], [sortedBy.type]));\r\n } else {\r\n setCardData(filteredData);\r\n }\r\n }, [data, cardSearchColumns, searchQuery, selectedFilters, sortedBy]);\r\n\r\n useEffect(() => {\r\n setPage(1);\r\n }, [cardData]);\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 width ? 'w-fit' : 'w-full',\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 `${graphTitle ? `The graph shows ${graphTitle}. ` : ''}This is an list of cards. ${\r\n graphDescription ? ` ${graphDescription}` : ''\r\n }`\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 grow gap-3 w-full 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 {cardSortingOptions || filterSettings.length > 0 ? (\r\n <div className='flex gap-4 flex-wrap items-start w-full'>\r\n {cardSortingOptions ? (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: cardSortingOptions.width || 'calc(25% - 0.75rem)' }}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n Sort by\r\n </P>\r\n <DropdownSelect\r\n options={cardSortingOptions.options}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setSortedBy(el || undefined);\r\n }}\r\n variant={uiMode}\r\n size='sm'\r\n defaultValue={\r\n !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: d.width || 'calc(25% - 0.75rem)' }}\r\n key={i}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n {d.label}\r\n </P>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n variant={uiMode}\r\n size='sm'\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n setSelectedFilters(prev =>\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prev.map(f => (f.filter === d.filter ? { ...f, value: el as any } : f)),\r\n );\r\n }}\r\n defaultValue={d.defaultValue}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n {(cardSearchColumns || []).length > 0 ? (\r\n <div style={{ paddingTop: '1px' }}>\r\n <Search\r\n placeholder='Search...'\r\n onSearch={e => {\r\n setSearchQuery(e || '');\r\n }}\r\n buttonVariant='icon'\r\n inputVariant={uiMode}\r\n showSearchButton={false}\r\n inputSize='sm'\r\n />\r\n </div>\r\n ) : null}\r\n <Graph\r\n data={cardData}\r\n width={width}\r\n height={height}\r\n cardTemplate={cardTemplate}\r\n cardMinWidth={cardMinWidth}\r\n page={page}\r\n cardBackgroundColor={cardBackgroundColor}\r\n styles={styles}\r\n classNames={classNames}\r\n noOfItemsInAPage={noOfItemsInAPage}\r\n detailsOnClick={detailsOnClick}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n allowDataDownloadOnDetail={allowDataDownloadOnDetail}\r\n />\r\n {noOfItemsInAPage ? (\r\n <Pagination\r\n total={cardData.length}\r\n defaultPage={0}\r\n pageSize={noOfItemsInAPage}\r\n onChange={setPage}\r\n />\r\n ) : null}\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":["o","t","e","r","c","d","a","n","f","x","m","p","h","C","b","R","j","E","g","y","U","N","s","u","k","v","P","l","w","F","i","_","I","csvData","data","key","value","Graph","props","width","height","onSeriesMouseClick","cardTemplate","cardBackgroundColor","cardMinWidth","detailsOnClick","noOfItemsInAPage","styles","classNames","page","allowDataDownloadOnDetail","selectedData","setSelectedData","useState","jsxs","Fragment","jsx","_d","string2HTML","Modal","CsvDownloadButton","FileDown","filterByKeys","jsonArray","keys","substring","item","DataCards","graphTitle","sources","graphDescription","footNote","graphID","language","theme","ariaLabel","cardFilters","cardSortingOptions","cardSearchColumns","backgroundColor","padding","uiMode","cardData","setCardData","setPage","searchQuery","setSearchQuery","filterSettings","useMemo","el","transformDefaultValue","getUniqValue","selectedFilters","setSelectedFilters","sortedBy","setSortedBy","filterConfig","useEffect","filteredData","filter","flattenDeep","intersection","orderBy","cn","GraphHeader","DropdownSelect","createFilter","prev","Search","Pagination","GraphFooter"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|
package/dist/DataCards.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { a as l, m, b as ye, j as i } from "./index-CHPV5EwG-
|
|
1
|
+
import { a as l, m, b as ye, j as i } from "./index-CHPV5EwG-DBWUSD9b.js";
|
|
2
2
|
import $, { useState as w, useEffect as I, useMemo as Q } from "react";
|
|
3
3
|
import { i as ge } from "./index-V_JXij1_.js";
|
|
4
4
|
import { f as L } from "./index-EArKRVKg.js";
|
|
5
|
-
import { Z as W, H as Z } from "./DropdownSelect-
|
|
6
|
-
import { u as
|
|
5
|
+
import { Z as W, H as Z } from "./DropdownSelect-6kjXM6oW.js";
|
|
6
|
+
import { u as J } from "./Typography-LmZ9LEpe.js";
|
|
7
7
|
import { k as P } from "./x-BBpi7a_7-WVdj1j6r.js";
|
|
8
|
-
import { d as he, e as xe } from "./index-
|
|
8
|
+
import { d as he, e as xe } from "./index-zZjQEHlm.js";
|
|
9
9
|
import { o as be } from "./index-DvVprvy6.js";
|
|
10
|
-
import {
|
|
10
|
+
import { G as ve } from "./Modal-Cg8daIlV.js";
|
|
11
11
|
import { CsvDownloadButton as je } from "./CsvDownloadButton.js";
|
|
12
|
-
import { s as
|
|
12
|
+
import { s as X } from "./string2HTML-oFCROsus.js";
|
|
13
13
|
import { GraphFooter as Ne } from "./GraphFooter.js";
|
|
14
14
|
import { GraphHeader as we } from "./GraphHeader.js";
|
|
15
15
|
import { g as ke } from "./getUniqValue-DiCh_MOD.js";
|
|
@@ -312,7 +312,7 @@ function Fe(t) {
|
|
|
312
312
|
onClick: () => {
|
|
313
313
|
c?.(a), j(a);
|
|
314
314
|
},
|
|
315
|
-
dangerouslySetInnerHTML: typeof p == "string" ? { __html:
|
|
315
|
+
dangerouslySetInnerHTML: typeof p == "string" ? { __html: X(p, a) } : void 0,
|
|
316
316
|
children: typeof p == "function" ? p(a) : null
|
|
317
317
|
},
|
|
318
318
|
y
|
|
@@ -331,7 +331,7 @@ function Fe(t) {
|
|
|
331
331
|
"div",
|
|
332
332
|
{
|
|
333
333
|
className: "graph-modal-content m-0",
|
|
334
|
-
dangerouslySetInnerHTML: typeof o == "string" ? { __html:
|
|
334
|
+
dangerouslySetInnerHTML: typeof o == "string" ? { __html: X(o, b) } : void 0,
|
|
335
335
|
children: typeof o == "function" ? o(b) : null
|
|
336
336
|
}
|
|
337
337
|
),
|
|
@@ -391,7 +391,7 @@ function Ye(t) {
|
|
|
391
391
|
uiMode: F = "normal",
|
|
392
392
|
styles: C,
|
|
393
393
|
classNames: S
|
|
394
|
-
} = t, [M,
|
|
394
|
+
} = t, [M, G] = w(o), [me, H] = w(1), [A, pe] = w(""), E = Q(
|
|
395
395
|
() => (j || []).map((r) => ({
|
|
396
396
|
filter: r.column,
|
|
397
397
|
label: r.label || `Filter by ${r.column}`,
|
|
@@ -426,7 +426,7 @@ function Ye(t) {
|
|
|
426
426
|
)] : void 0
|
|
427
427
|
);
|
|
428
428
|
}, [a]), I(() => {
|
|
429
|
-
const r = Me(o, y || [],
|
|
429
|
+
const r = Me(o, y || [], A).filter(
|
|
430
430
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
431
431
|
(N) => U.every(
|
|
432
432
|
(V) => V.value && L([V.value]).length > 0 ? ge(
|
|
@@ -435,9 +435,9 @@ function Ye(t) {
|
|
|
435
435
|
).length > 0 : !0
|
|
436
436
|
)
|
|
437
437
|
);
|
|
438
|
-
|
|
439
|
-
}, [o, y,
|
|
440
|
-
|
|
438
|
+
G(D ? be(r, [D.value], [D.type]) : r);
|
|
439
|
+
}, [o, y, A, U, D]), I(() => {
|
|
440
|
+
H(1);
|
|
441
441
|
}, [M]), /* @__PURE__ */ i.jsx(
|
|
442
442
|
"div",
|
|
443
443
|
{
|
|
@@ -487,7 +487,7 @@ function Ye(t) {
|
|
|
487
487
|
style: { width: a.width || "calc(25% - 0.75rem)" },
|
|
488
488
|
children: [
|
|
489
489
|
/* @__PURE__ */ i.jsx(
|
|
490
|
-
|
|
490
|
+
J,
|
|
491
491
|
{
|
|
492
492
|
marginBottom: "xs",
|
|
493
493
|
size: "sm",
|
|
@@ -524,7 +524,7 @@ function Ye(t) {
|
|
|
524
524
|
style: { width: r.width || "calc(25% - 0.75rem)" },
|
|
525
525
|
children: [
|
|
526
526
|
/* @__PURE__ */ i.jsx(
|
|
527
|
-
|
|
527
|
+
J,
|
|
528
528
|
{
|
|
529
529
|
marginBottom: "xs",
|
|
530
530
|
size: "sm",
|
|
@@ -596,7 +596,7 @@ function Ye(t) {
|
|
|
596
596
|
total: M.length,
|
|
597
597
|
defaultPage: 0,
|
|
598
598
|
pageSize: O,
|
|
599
|
-
onChange:
|
|
599
|
+
onChange: H
|
|
600
600
|
}
|
|
601
601
|
) : null,
|
|
602
602
|
c || u ? /* @__PURE__ */ i.jsx(
|
package/dist/DataCards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCards.js","sources":["../node_modules/@undp/design-system-react/dist/chevron-left-DXTpJnX4.js","../node_modules/@undp/design-system-react/dist/ellipsis-CihzP6fh.js","../node_modules/@undp/design-system-react/dist/chevron-right-BcRtuL9I.js","../node_modules/@undp/design-system-react/dist/Pagination.js","../node_modules/@undp/design-system-react/dist/Input.js","../node_modules/@undp/design-system-react/dist/Search.js","../src/Components/Graphs/DataCards/Graph.tsx","../src/Components/Graphs/DataCards/index.tsx"],"sourcesContent":["import { c as e } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst o = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]], t = e(\"chevron-left\", o);\nexport {\n t as C\n};\n//# sourceMappingURL=chevron-left-DXTpJnX4.js.map\n","import { c } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst e = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"19\", cy: \"12\", r: \"1\", key: \"1wjl8i\" }],\n [\"circle\", { cx: \"5\", cy: \"12\", r: \"1\", key: \"1pcz8c\" }]\n], r = c(\"ellipsis\", e);\nexport {\n r as E\n};\n//# sourceMappingURL=ellipsis-CihzP6fh.js.map\n","import { c as o } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst t = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]], e = o(\"chevron-right\", t);\nexport {\n e as C\n};\n//# sourceMappingURL=chevron-right-BcRtuL9I.js.map\n","import { j as e } from \"./jsx-runtime-OVHDjVDe.js\";\nimport x, { useState as u, useEffect as P } from \"react\";\nimport { c as n } from \"./utils-D_Pof5Gy.js\";\nimport { C } from \"./chevron-left-DXTpJnX4.js\";\nimport { E } from \"./ellipsis-CihzP6fh.js\";\nimport { C as R } from \"./chevron-right-BcRtuL9I.js\";\nfunction d({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n \"nav\",\n {\n ...r,\n role: \"navigation\",\n \"aria-label\": \"pagination\",\n className: n(\"mx-auto flex w-full justify-center\", a)\n }\n );\n}\nd.displayName = \"PaginationUnit\";\nconst f = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\n \"ul\",\n {\n ...r,\n ref: i,\n className: n(\"flex flex-row items-center gap-1 list-none\", a)\n }\n )\n);\nf.displayName = \"PaginationContent\";\nconst m = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\"li\", { ...r, ref: i, className: n(\"mr-2 last:mr-0\", a) })\n);\nm.displayName = \"PaginationItem\";\nfunction p({\n className: a,\n children: r,\n ...i\n}) {\n return /* @__PURE__ */ e.jsx(\n \"button\",\n {\n ...i,\n type: \"button\",\n className: n(\n \"p-4 text-base text-primary-black dark:text-primary-gray-100 dark:hover:bg-primary-gray-600\",\n a\n ),\n children: r\n }\n );\n}\np.displayName = \"PaginationLink\";\nfunction h({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to previous page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(C, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nh.displayName = \"PaginationPrevious\";\nfunction b({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to next page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(R, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nb.displayName = \"PaginationNext\";\nfunction j({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsxs(\n \"span\",\n {\n ...r,\n \"aria-hidden\": !0,\n className: n(\"flex h-9 w-9 items-center justify-center\", a),\n children: [\n /* @__PURE__ */ e.jsx(E, { className: \"h-4 w-4 text-primary-gray-700 dark:text-primary-gray-100\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"sr-only\", children: \"More pages\" })\n ]\n }\n );\n}\nj.displayName = \"PaginationEllipsis\";\nconst g = (a, r) => {\n const i = [];\n return r <= 7 ? Array.from({ length: r }, (y, t) => t + 1) : (i.push(1), a <= 3 ? i.push(2, 3, 4, \"ellipsis\") : a >= r - 2 ? i.push(\"ellipsis\", r - 3, r - 2, r - 1) : i.push(\"ellipsis\", a - 1, a, a + 1, \"ellipsis\"), i.push(r), i);\n};\nfunction U(a) {\n const { defaultPage: r = 1, total: i, pageSize: y, onChange: t, className: N } = a, o = Math.ceil(i / y), [s, c] = u(r), [k, v] = u(\n g(r, o)\n );\n return P(() => {\n v(g(s, o));\n }, [s, o]), /* @__PURE__ */ e.jsx(d, { className: n(\"select-none\", N), children: /* @__PURE__ */ e.jsxs(f, { children: [\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n h,\n {\n onClick: () => {\n s > 1 && (t(s - 1), c(s - 1));\n },\n className: n(\n \"cursor-pointer\",\n s <= 1 && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) }),\n k.map((l, w) => /* @__PURE__ */ e.jsx(m, { children: l === \"ellipsis\" ? /* @__PURE__ */ e.jsx(j, {}) : /* @__PURE__ */ e.jsx(\n p,\n {\n onClick: () => {\n c(l), t(l);\n },\n className: n(\n \"cursor-pointer w-[32px] h-[32px] flex items-center justify-center rounded-full hover:bg-primary-gray-300\",\n l === s && \"bg-primary-blue-600 hover:bg-primary-blue-700 dark:bg-primary-blue-500 dark:hover:bg-primary-blue-400 hover:text-primary-wite text-primary-white\"\n ),\n children: l\n }\n ) }, w)),\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n b,\n {\n onClick: () => {\n s < o && (t(s + 1), c(s + 1));\n },\n className: n(\n \"cursor-pointer\",\n s >= o && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) })\n ] }) });\n}\nexport {\n U as Pagination\n};\n//# sourceMappingURL=Pagination.js.map\n","import { j as o } from \"./jsx-runtime-OVHDjVDe.js\";\nimport p from \"react\";\nimport { c as l } from \"./index-CHPV5EwG.js\";\nimport { c as m } from \"./utils-D_Pof5Gy.js\";\nconst s = l(\n \"w-full h-auto bg-primary-white dark:bg-primary-gray-650 text-primary-black dark:text-primary-white text-base transition-colors file:border-0 file:bg-transparent file:font-medium file:text-primary-gray-700 dark:file:text-primary-white focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 placeholder:text-primary-gray-550 dark:placeholder:text-primary-gray-400\",\n {\n variants: {\n variant: {\n light: \"border border-primary-gray-400 dark:border-primary-gray-500\",\n normal: \"border-2 border-primary-black dark:border-primary-gray-300\"\n },\n inputSize: {\n sm: \"px-2.5 py-1\",\n base: \"p-2.5\"\n }\n },\n defaultVariants: {\n inputSize: \"base\",\n variant: \"normal\"\n }\n }\n), d = p.forwardRef(({ className: r, inputSize: a, variant: i, ...t }, e) => /* @__PURE__ */ o.jsx(\"input\", { ...t, ref: e, className: m(s({ inputSize: a, variant: i }), r) }));\nd.displayName = \"Input\";\nexport {\n d as Input\n};\n//# sourceMappingURL=Input.js.map\n","import { j as e } from \"./jsx-runtime-OVHDjVDe.js\";\nimport t from \"react\";\nimport { Button as g } from \"./Button.js\";\nimport { Input as k } from \"./Input.js\";\nimport { c as w } from \"./utils-D_Pof5Gy.js\";\nimport { c as _ } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst F = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n], i = _(\"search\", F), I = t.forwardRef(\n ({\n className: n,\n inputClassName: m,\n buttonClassName: p,\n onSearch: s,\n searchOnlyOnClick: u,\n buttonVariant: d,\n buttonChildren: c,\n showSearchButton: x,\n inputVariant: f,\n inputSize: o,\n placeholder: y,\n ...j\n }, h) => {\n const [a, v] = t.useState(void 0), [N, l] = t.useState(!1);\n return /* @__PURE__ */ e.jsxs(\"div\", { className: w(\"flex gap-0\", n), ref: h, children: [\n /* @__PURE__ */ e.jsxs(\"div\", { className: \"relative w-full\", children: [\n /* @__PURE__ */ e.jsx(\n k,\n {\n ...j,\n variant: f,\n type: \"text\",\n className: m,\n onChange: (r) => {\n v(r.target.value), u || s?.(r.target.value);\n },\n inputSize: o,\n onKeyDown: (r) => {\n r.key === \"Enter\" && s?.(a);\n },\n onFocus: () => l(!0),\n onBlur: () => l(!1)\n }\n ),\n !N && (a === \"\" || !a) && /* @__PURE__ */ e.jsxs(\"div\", { className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\", children: [\n c ? null : /* @__PURE__ */ e.jsx(i, { className: \"h-4 w-4 text-primary-gray-500 dark:text-primary-gray-400 mr-2\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"text-primary-gray-500 dark:text-primary-gray-400\", children: y || \"Search...\" })\n ] })\n ] }),\n x === !1 ? null : /* @__PURE__ */ e.jsx(\n g,\n {\n variant: d || \"icon\",\n className: p,\n padding: o,\n onClick: () => {\n s?.(a);\n },\n children: c || /* @__PURE__ */ e.jsx(i, { className: \"stroke-2\" })\n }\n )\n ] });\n }\n);\nI.displayName = \"Search\";\nexport {\n I as Search\n};\n//# sourceMappingURL=Search.js.map\n","import { Modal } from '@undp/design-system-react/Modal';\r\nimport { useState } from 'react';\r\n\r\nimport { CsvDownloadButton } from '@/Components/Actions/CsvDownloadButton';\r\nimport { FileDown } from '@/Components/Icons';\r\nimport { StyleObject, ClassNameObject } from '@/Types';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n data: object[];\r\n cardBackgroundColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n width?: number;\r\n height?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n cardMinWidth: number;\r\n noOfItemsInAPage?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n allowDataDownloadOnDetail: boolean | string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n page: number;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst csvData = (data: any) => {\r\n if (!data) return {};\r\n const dataForCsv = Object.entries(data).map(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n return {\r\n ' ': key,\r\n value: `\"${value.join('; ')}\"`,\r\n };\r\n }\r\n return {\r\n ' ': key,\r\n value: `\"${value}\"`,\r\n };\r\n });\r\n return dataForCsv;\r\n};\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n width,\r\n height,\r\n data,\r\n onSeriesMouseClick,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardMinWidth = 320,\r\n detailsOnClick,\r\n noOfItemsInAPage,\r\n styles,\r\n classNames,\r\n page,\r\n allowDataDownloadOnDetail,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [selectedData, setSelectedData] = useState<any>(undefined);\r\n return (\r\n <>\r\n <div\r\n className='undp-scrollbar w-full my-0 mx-auto grid gap-4 undp-viz-data-cards-container'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height ? `${height}px` : 'auto',\r\n gridTemplateColumns: `repeat(auto-fill, minmax(${cardMinWidth}px, 1fr))`,\r\n }}\r\n >\r\n {data\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((_d: any, i: number) =>\r\n noOfItemsInAPage\r\n ? i < page * noOfItemsInAPage && i >= (page - 1) * noOfItemsInAPage\r\n : true,\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map((d: any, i: number) => (\r\n <div\r\n key={i}\r\n style={{\r\n ...(styles?.dataCards || {}),\r\n ...(cardBackgroundColor && { backgroundColor: cardBackgroundColor }),\r\n }}\r\n className={`w-full flex flex-col ${\r\n onSeriesMouseClick || detailsOnClick ? 'cursor-pointer' : 'cursor-auto'\r\n }${\r\n !cardBackgroundColor ? 'bg-primary-gray-200 dark:bg-primary-gray-600' : ''\r\n } ${classNames?.dataCards || ''}`}\r\n onClick={() => {\r\n onSeriesMouseClick?.(d);\r\n setSelectedData(d);\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof cardTemplate === 'string'\r\n ? { __html: string2HTML(cardTemplate, d) }\r\n : undefined\r\n }\r\n >\r\n {typeof cardTemplate === 'function' ? cardTemplate(d) : null}\r\n </div>\r\n ))}\r\n </div>\r\n {detailsOnClick && selectedData !== undefined ? (\r\n <Modal\r\n open={selectedData !== undefined}\r\n onClose={() => {\r\n setSelectedData(undefined);\r\n }}\r\n >\r\n <div\r\n className='graph-modal-content m-0'\r\n dangerouslySetInnerHTML={\r\n typeof detailsOnClick === 'string'\r\n ? { __html: string2HTML(detailsOnClick, selectedData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(selectedData) : null}\r\n </div>\r\n {allowDataDownloadOnDetail ? (\r\n <div className='flex'>\r\n <CsvDownloadButton\r\n csvData={csvData(selectedData)}\r\n headers={[\r\n {\r\n label: ' ',\r\n key: ' ',\r\n },\r\n {\r\n label: 'value',\r\n key: 'value',\r\n },\r\n ]}\r\n buttonContent={\r\n <div className='flex items-center gap-4'>\r\n {typeof allowDataDownloadOnDetail === 'string'\r\n ? allowDataDownloadOnDetail\r\n : null}\r\n <FileDown />\r\n </div>\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\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\nimport { P } from '@undp/design-system-react/Typography';\r\nimport { Pagination } from '@undp/design-system-react/Pagination';\r\nimport { Search } from '@undp/design-system-react/Search';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Languages, SourcesDataType, StyleObject, ClassNameObject } from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: object[];\r\n\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 each of the card */\r\n cardBackgroundColor?: string;\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 /** 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 /** Html for each card. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data. */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n /** Allows users to add a dropdown menus, that can be used as filters in the graph. Each filter is an object that specifies the column to filter by, and the default value. All the filters are single select only. */\r\n cardFilters?: FilterDataType[];\r\n /** Allows users to add a dropdown menus, that can be used to sort the cards based on different columns. */\r\n cardSortingOptions?: {\r\n defaultValue?: string;\r\n options: {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }[];\r\n width?: string;\r\n };\r\n /** Adds a search bar to search the cards list. The array defines all the columns from the data where text is used to search from. */\r\n cardSearchColumns?: string[];\r\n /** Min width of the cards for responsiveness. */\r\n cardMinWidth?: number;\r\n /** Add a button to download data object when viewing details. If true, data can be downloaded; if a string is provided, it specifies the button label. */\r\n allowDataDownloadOnDetail?: string | boolean;\r\n /** Defines the number of items displayed per page. */\r\n noOfItemsInAPage?: number;\r\n\r\n // Interactions and Callbacks\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst filterByKeys = (jsonArray: any, keys: string[], substring: string) => {\r\n if (keys.length === 0) return jsonArray;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return jsonArray.filter((item: any) =>\r\n keys.some(key => item[key]?.toLowerCase().includes(substring.toLowerCase())),\r\n );\r\n};\r\n\r\nexport function DataCards(props: Props) {\r\n const {\r\n width,\r\n height,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n graphID,\r\n data,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n theme = 'light',\r\n ariaLabel,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardFilters,\r\n cardSortingOptions,\r\n cardSearchColumns,\r\n cardMinWidth = 320,\r\n backgroundColor = false,\r\n padding,\r\n detailsOnClick,\r\n allowDataDownloadOnDetail = false,\r\n noOfItemsInAPage,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n } = props;\r\n\r\n const [cardData, setCardData] = useState(data);\r\n\r\n const [page, setPage] = useState(1);\r\n\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const filterSettings = useMemo(\r\n () =>\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: true,\r\n clearable: true,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n width: el.width,\r\n })),\r\n [cardFilters, data],\r\n );\r\n\r\n const [selectedFilters, setSelectedFilters] = useState(\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n value: transformDefaultValue(el.defaultValue),\r\n })),\r\n );\r\n const [sortedBy, setSortedBy] = useState<\r\n | {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }\r\n | undefined\r\n >(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue) ===\r\n -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue)\r\n ]\r\n : undefined,\r\n );\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\r\n useEffect(() => {\r\n setSortedBy(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n : undefined,\r\n );\r\n }, [cardSortingOptions]);\r\n\r\n useEffect(() => {\r\n const filteredData = filterByKeys(data, cardSearchColumns || [], searchQuery).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) =>\r\n selectedFilters.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n if (sortedBy) {\r\n setCardData(orderBy(filteredData, [sortedBy.value], [sortedBy.type]));\r\n } else {\r\n setCardData(filteredData);\r\n }\r\n }, [data, cardSearchColumns, searchQuery, selectedFilters, sortedBy]);\r\n\r\n useEffect(() => {\r\n setPage(1);\r\n }, [cardData]);\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 width ? 'w-fit' : 'w-full',\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 `${graphTitle ? `The graph shows ${graphTitle}. ` : ''}This is an list of cards. ${\r\n graphDescription ? ` ${graphDescription}` : ''\r\n }`\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 grow gap-3 w-full 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 {cardSortingOptions || filterSettings.length > 0 ? (\r\n <div className='flex gap-4 flex-wrap items-start w-full'>\r\n {cardSortingOptions ? (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: cardSortingOptions.width || 'calc(25% - 0.75rem)' }}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n Sort by\r\n </P>\r\n <DropdownSelect\r\n options={cardSortingOptions.options}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setSortedBy(el || undefined);\r\n }}\r\n variant={uiMode}\r\n size='sm'\r\n defaultValue={\r\n !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: d.width || 'calc(25% - 0.75rem)' }}\r\n key={i}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n {d.label}\r\n </P>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n variant={uiMode}\r\n size='sm'\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n setSelectedFilters(prev =>\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prev.map(f => (f.filter === d.filter ? { ...f, value: el as any } : f)),\r\n );\r\n }}\r\n defaultValue={d.defaultValue}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n {(cardSearchColumns || []).length > 0 ? (\r\n <div style={{ paddingTop: '1px' }}>\r\n <Search\r\n placeholder='Search...'\r\n onSearch={e => {\r\n setSearchQuery(e || '');\r\n }}\r\n buttonVariant='icon'\r\n inputVariant={uiMode}\r\n showSearchButton={false}\r\n inputSize='sm'\r\n />\r\n </div>\r\n ) : null}\r\n <Graph\r\n data={cardData}\r\n width={width}\r\n height={height}\r\n cardTemplate={cardTemplate}\r\n cardMinWidth={cardMinWidth}\r\n page={page}\r\n cardBackgroundColor={cardBackgroundColor}\r\n styles={styles}\r\n classNames={classNames}\r\n noOfItemsInAPage={noOfItemsInAPage}\r\n detailsOnClick={detailsOnClick}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n allowDataDownloadOnDetail={allowDataDownloadOnDetail}\r\n />\r\n {noOfItemsInAPage ? (\r\n <Pagination\r\n total={cardData.length}\r\n defaultPage={0}\r\n pageSize={noOfItemsInAPage}\r\n onChange={setPage}\r\n />\r\n ) : null}\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":["o","t","e","r","c","d","a","n","f","x","i","m","p","h","C","b","R","j","E","g","y","U","N","s","u","k","v","P","l","w","F","_","I","csvData","data","key","value","Graph","props","width","height","onSeriesMouseClick","cardTemplate","cardBackgroundColor","cardMinWidth","detailsOnClick","noOfItemsInAPage","styles","classNames","page","allowDataDownloadOnDetail","selectedData","setSelectedData","useState","jsxs","Fragment","jsx","_d","string2HTML","Modal","CsvDownloadButton","FileDown","filterByKeys","jsonArray","keys","substring","item","DataCards","graphTitle","sources","graphDescription","footNote","graphID","language","theme","ariaLabel","cardFilters","cardSortingOptions","cardSearchColumns","backgroundColor","padding","uiMode","cardData","setCardData","setPage","searchQuery","setSearchQuery","filterSettings","useMemo","el","transformDefaultValue","getUniqValue","selectedFilters","setSelectedFilters","sortedBy","setSortedBy","filterConfig","useEffect","filteredData","filter","flattenDeep","intersection","orderBy","cn","GraphHeader","DropdownSelect","createFilter","prev","Search","Pagination","GraphFooter"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|
|
1
|
+
{"version":3,"file":"DataCards.js","sources":["../node_modules/@undp/design-system-react/dist/chevron-left-DXTpJnX4.js","../node_modules/@undp/design-system-react/dist/ellipsis-CihzP6fh.js","../node_modules/@undp/design-system-react/dist/chevron-right-BcRtuL9I.js","../node_modules/@undp/design-system-react/dist/Pagination.js","../node_modules/@undp/design-system-react/dist/Input.js","../node_modules/@undp/design-system-react/dist/Search.js","../src/Components/Graphs/DataCards/Graph.tsx","../src/Components/Graphs/DataCards/index.tsx"],"sourcesContent":["import { c as e } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst o = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]], t = e(\"chevron-left\", o);\nexport {\n t as C\n};\n//# sourceMappingURL=chevron-left-DXTpJnX4.js.map\n","import { c } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst e = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"19\", cy: \"12\", r: \"1\", key: \"1wjl8i\" }],\n [\"circle\", { cx: \"5\", cy: \"12\", r: \"1\", key: \"1pcz8c\" }]\n], r = c(\"ellipsis\", e);\nexport {\n r as E\n};\n//# sourceMappingURL=ellipsis-CihzP6fh.js.map\n","import { c as o } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst t = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]], e = o(\"chevron-right\", t);\nexport {\n e as C\n};\n//# sourceMappingURL=chevron-right-BcRtuL9I.js.map\n","import { j as e } from \"./jsx-runtime-BzflLqGi.js\";\nimport x, { useState as u, useEffect as P } from \"react\";\nimport { c as n } from \"./utils-D_Pof5Gy.js\";\nimport { C } from \"./chevron-left-DXTpJnX4.js\";\nimport { E } from \"./ellipsis-CihzP6fh.js\";\nimport { C as R } from \"./chevron-right-BcRtuL9I.js\";\nfunction d({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n \"nav\",\n {\n ...r,\n role: \"navigation\",\n \"aria-label\": \"pagination\",\n className: n(\"mx-auto flex w-full justify-center\", a)\n }\n );\n}\nd.displayName = \"PaginationUnit\";\nconst f = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\n \"ul\",\n {\n ...r,\n ref: i,\n className: n(\"flex flex-row items-center gap-1 list-none\", a)\n }\n )\n);\nf.displayName = \"PaginationContent\";\nconst m = x.forwardRef(\n ({ className: a, ...r }, i) => /* @__PURE__ */ e.jsx(\"li\", { ...r, ref: i, className: n(\"mr-2 last:mr-0\", a) })\n);\nm.displayName = \"PaginationItem\";\nfunction p({\n className: a,\n children: r,\n ...i\n}) {\n return /* @__PURE__ */ e.jsx(\n \"button\",\n {\n ...i,\n type: \"button\",\n className: n(\n \"p-4 text-base text-primary-black dark:text-primary-gray-100 dark:hover:bg-primary-gray-600\",\n a\n ),\n children: r\n }\n );\n}\np.displayName = \"PaginationLink\";\nfunction h({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to previous page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(C, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nh.displayName = \"PaginationPrevious\";\nfunction b({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsx(\n p,\n {\n ...r,\n \"aria-label\": \"Go to next page\",\n className: n(\n \"p-2 bg-primary-gray-300 dark:bg-primary-gray-600 rtl:scale-x-[-1] rounded-full hover:bg-primary-gray-400 dark:hover:bg-primary-gray-550\",\n a\n ),\n children: /* @__PURE__ */ e.jsx(R, { className: \"h-6 w-6 stroke-primary-gray-700 dark:stroke-primary-gray-100\" })\n }\n );\n}\nb.displayName = \"PaginationNext\";\nfunction j({ className: a, ...r }) {\n return /* @__PURE__ */ e.jsxs(\n \"span\",\n {\n ...r,\n \"aria-hidden\": !0,\n className: n(\"flex h-9 w-9 items-center justify-center\", a),\n children: [\n /* @__PURE__ */ e.jsx(E, { className: \"h-4 w-4 text-primary-gray-700 dark:text-primary-gray-100\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"sr-only\", children: \"More pages\" })\n ]\n }\n );\n}\nj.displayName = \"PaginationEllipsis\";\nconst g = (a, r) => {\n const i = [];\n return r <= 7 ? Array.from({ length: r }, (y, t) => t + 1) : (i.push(1), a <= 3 ? i.push(2, 3, 4, \"ellipsis\") : a >= r - 2 ? i.push(\"ellipsis\", r - 3, r - 2, r - 1) : i.push(\"ellipsis\", a - 1, a, a + 1, \"ellipsis\"), i.push(r), i);\n};\nfunction U(a) {\n const { defaultPage: r = 1, total: i, pageSize: y, onChange: t, className: N } = a, o = Math.ceil(i / y), [s, c] = u(r), [k, v] = u(\n g(r, o)\n );\n return P(() => {\n v(g(s, o));\n }, [s, o]), /* @__PURE__ */ e.jsx(d, { className: n(\"select-none\", N), children: /* @__PURE__ */ e.jsxs(f, { children: [\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n h,\n {\n onClick: () => {\n s > 1 && (t(s - 1), c(s - 1));\n },\n className: n(\n \"cursor-pointer\",\n s <= 1 && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) }),\n k.map((l, w) => /* @__PURE__ */ e.jsx(m, { children: l === \"ellipsis\" ? /* @__PURE__ */ e.jsx(j, {}) : /* @__PURE__ */ e.jsx(\n p,\n {\n onClick: () => {\n c(l), t(l);\n },\n className: n(\n \"cursor-pointer w-[32px] h-[32px] flex items-center justify-center rounded-full hover:bg-primary-gray-300\",\n l === s && \"bg-primary-blue-600 hover:bg-primary-blue-700 dark:bg-primary-blue-500 dark:hover:bg-primary-blue-400 hover:text-primary-wite text-primary-white\"\n ),\n children: l\n }\n ) }, w)),\n /* @__PURE__ */ e.jsx(m, { children: /* @__PURE__ */ e.jsx(\n b,\n {\n onClick: () => {\n s < o && (t(s + 1), c(s + 1));\n },\n className: n(\n \"cursor-pointer\",\n s >= o && \"cursor-not-allowed pointer-events-none opacity-35\"\n )\n }\n ) })\n ] }) });\n}\nexport {\n U as Pagination\n};\n//# sourceMappingURL=Pagination.js.map\n","import { j as o } from \"./jsx-runtime-BzflLqGi.js\";\nimport p from \"react\";\nimport { c as l } from \"./index-CHPV5EwG.js\";\nimport { c as m } from \"./utils-D_Pof5Gy.js\";\nconst s = l(\n \"w-full h-auto bg-primary-white dark:bg-primary-gray-650 text-primary-black dark:text-primary-white text-base transition-colors file:border-0 file:bg-transparent file:font-medium file:text-primary-gray-700 dark:file:text-primary-white focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 placeholder:text-primary-gray-550 dark:placeholder:text-primary-gray-400\",\n {\n variants: {\n variant: {\n light: \"border border-primary-gray-400 dark:border-primary-gray-500\",\n normal: \"border-2 border-primary-black dark:border-primary-gray-300\"\n },\n inputSize: {\n sm: \"px-2.5 py-1\",\n base: \"p-2.5\"\n }\n },\n defaultVariants: {\n inputSize: \"base\",\n variant: \"normal\"\n }\n }\n), d = p.forwardRef(({ className: r, inputSize: a, variant: i, ...t }, e) => /* @__PURE__ */ o.jsx(\"input\", { ...t, ref: e, className: m(s({ inputSize: a, variant: i }), r) }));\nd.displayName = \"Input\";\nexport {\n d as Input\n};\n//# sourceMappingURL=Input.js.map\n","import { j as e } from \"./jsx-runtime-BzflLqGi.js\";\nimport t from \"react\";\nimport { Button as g } from \"./Button.js\";\nimport { Input as k } from \"./Input.js\";\nimport { c as w } from \"./utils-D_Pof5Gy.js\";\nimport { c as _ } from \"./createLucideIcon-CI1yJrZf.js\";\n/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\nconst F = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n], i = _(\"search\", F), I = t.forwardRef(\n ({\n className: n,\n inputClassName: m,\n buttonClassName: p,\n onSearch: s,\n searchOnlyOnClick: u,\n buttonVariant: d,\n buttonChildren: c,\n showSearchButton: x,\n inputVariant: f,\n inputSize: o,\n placeholder: y,\n ...j\n }, h) => {\n const [a, v] = t.useState(void 0), [N, l] = t.useState(!1);\n return /* @__PURE__ */ e.jsxs(\"div\", { className: w(\"flex gap-0\", n), ref: h, children: [\n /* @__PURE__ */ e.jsxs(\"div\", { className: \"relative w-full\", children: [\n /* @__PURE__ */ e.jsx(\n k,\n {\n ...j,\n variant: f,\n type: \"text\",\n className: m,\n onChange: (r) => {\n v(r.target.value), u || s?.(r.target.value);\n },\n inputSize: o,\n onKeyDown: (r) => {\n r.key === \"Enter\" && s?.(a);\n },\n onFocus: () => l(!0),\n onBlur: () => l(!1)\n }\n ),\n !N && (a === \"\" || !a) && /* @__PURE__ */ e.jsxs(\"div\", { className: \"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\", children: [\n c ? null : /* @__PURE__ */ e.jsx(i, { className: \"h-4 w-4 text-primary-gray-500 dark:text-primary-gray-400 mr-2\" }),\n /* @__PURE__ */ e.jsx(\"span\", { className: \"text-primary-gray-500 dark:text-primary-gray-400\", children: y || \"Search...\" })\n ] })\n ] }),\n x === !1 ? null : /* @__PURE__ */ e.jsx(\n g,\n {\n variant: d || \"icon\",\n className: p,\n padding: o,\n onClick: () => {\n s?.(a);\n },\n children: c || /* @__PURE__ */ e.jsx(i, { className: \"stroke-2\" })\n }\n )\n ] });\n }\n);\nI.displayName = \"Search\";\nexport {\n I as Search\n};\n//# sourceMappingURL=Search.js.map\n","import { Modal } from '@undp/design-system-react/Modal';\r\nimport { useState } from 'react';\r\n\r\nimport { CsvDownloadButton } from '@/Components/Actions/CsvDownloadButton';\r\nimport { FileDown } from '@/Components/Icons';\r\nimport { StyleObject, ClassNameObject } from '@/Types';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n data: object[];\r\n cardBackgroundColor?: string;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n width?: number;\r\n height?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n cardMinWidth: number;\r\n noOfItemsInAPage?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n allowDataDownloadOnDetail: boolean | string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n page: number;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst csvData = (data: any) => {\r\n if (!data) return {};\r\n const dataForCsv = Object.entries(data).map(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n return {\r\n ' ': key,\r\n value: `\"${value.join('; ')}\"`,\r\n };\r\n }\r\n return {\r\n ' ': key,\r\n value: `\"${value}\"`,\r\n };\r\n });\r\n return dataForCsv;\r\n};\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n width,\r\n height,\r\n data,\r\n onSeriesMouseClick,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardMinWidth = 320,\r\n detailsOnClick,\r\n noOfItemsInAPage,\r\n styles,\r\n classNames,\r\n page,\r\n allowDataDownloadOnDetail,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [selectedData, setSelectedData] = useState<any>(undefined);\r\n return (\r\n <>\r\n <div\r\n className='undp-scrollbar w-full my-0 mx-auto grid gap-4 undp-viz-data-cards-container'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height ? `${height}px` : 'auto',\r\n gridTemplateColumns: `repeat(auto-fill, minmax(${cardMinWidth}px, 1fr))`,\r\n }}\r\n >\r\n {data\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((_d: any, i: number) =>\r\n noOfItemsInAPage\r\n ? i < page * noOfItemsInAPage && i >= (page - 1) * noOfItemsInAPage\r\n : true,\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map((d: any, i: number) => (\r\n <div\r\n key={i}\r\n style={{\r\n ...(styles?.dataCards || {}),\r\n ...(cardBackgroundColor && { backgroundColor: cardBackgroundColor }),\r\n }}\r\n className={`w-full flex flex-col ${\r\n onSeriesMouseClick || detailsOnClick ? 'cursor-pointer' : 'cursor-auto'\r\n }${\r\n !cardBackgroundColor ? 'bg-primary-gray-200 dark:bg-primary-gray-600' : ''\r\n } ${classNames?.dataCards || ''}`}\r\n onClick={() => {\r\n onSeriesMouseClick?.(d);\r\n setSelectedData(d);\r\n }}\r\n dangerouslySetInnerHTML={\r\n typeof cardTemplate === 'string'\r\n ? { __html: string2HTML(cardTemplate, d) }\r\n : undefined\r\n }\r\n >\r\n {typeof cardTemplate === 'function' ? cardTemplate(d) : null}\r\n </div>\r\n ))}\r\n </div>\r\n {detailsOnClick && selectedData !== undefined ? (\r\n <Modal\r\n open={selectedData !== undefined}\r\n onClose={() => {\r\n setSelectedData(undefined);\r\n }}\r\n >\r\n <div\r\n className='graph-modal-content m-0'\r\n dangerouslySetInnerHTML={\r\n typeof detailsOnClick === 'string'\r\n ? { __html: string2HTML(detailsOnClick, selectedData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(selectedData) : null}\r\n </div>\r\n {allowDataDownloadOnDetail ? (\r\n <div className='flex'>\r\n <CsvDownloadButton\r\n csvData={csvData(selectedData)}\r\n headers={[\r\n {\r\n label: ' ',\r\n key: ' ',\r\n },\r\n {\r\n label: 'value',\r\n key: 'value',\r\n },\r\n ]}\r\n buttonContent={\r\n <div className='flex items-center gap-4'>\r\n {typeof allowDataDownloadOnDetail === 'string'\r\n ? allowDataDownloadOnDetail\r\n : null}\r\n <FileDown />\r\n </div>\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\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\nimport { P } from '@undp/design-system-react/Typography';\r\nimport { Pagination } from '@undp/design-system-react/Pagination';\r\nimport { Search } from '@undp/design-system-react/Search';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Languages, SourcesDataType, StyleObject, ClassNameObject } from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\nexport type FilterDataType = {\r\n column: string;\r\n label?: string;\r\n defaultValue?: string;\r\n excludeValues?: string[];\r\n width?: string;\r\n};\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: object[];\r\n\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 each of the card */\r\n cardBackgroundColor?: string;\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 /** 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 /** Html for each card. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data. */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cardTemplate: string | ((_d: any) => React.ReactNode);\r\n /** Allows users to add a dropdown menus, that can be used as filters in the graph. Each filter is an object that specifies the column to filter by, and the default value. All the filters are single select only. */\r\n cardFilters?: FilterDataType[];\r\n /** Allows users to add a dropdown menus, that can be used to sort the cards based on different columns. */\r\n cardSortingOptions?: {\r\n defaultValue?: string;\r\n options: {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }[];\r\n width?: string;\r\n };\r\n /** Adds a search bar to search the cards list. The array defines all the columns from the data where text is used to search from. */\r\n cardSearchColumns?: string[];\r\n /** Min width of the cards for responsiveness. */\r\n cardMinWidth?: number;\r\n /** Add a button to download data object when viewing details. If true, data can be downloaded; if a string is provided, it specifies the button label. */\r\n allowDataDownloadOnDetail?: string | boolean;\r\n /** Defines the number of items displayed per page. */\r\n noOfItemsInAPage?: number;\r\n\r\n // Interactions and Callbacks\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\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// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst filterByKeys = (jsonArray: any, keys: string[], substring: string) => {\r\n if (keys.length === 0) return jsonArray;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return jsonArray.filter((item: any) =>\r\n keys.some(key => item[key]?.toLowerCase().includes(substring.toLowerCase())),\r\n );\r\n};\r\n\r\nexport function DataCards(props: Props) {\r\n const {\r\n width,\r\n height,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n graphID,\r\n data,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n theme = 'light',\r\n ariaLabel,\r\n cardTemplate,\r\n cardBackgroundColor,\r\n cardFilters,\r\n cardSortingOptions,\r\n cardSearchColumns,\r\n cardMinWidth = 320,\r\n backgroundColor = false,\r\n padding,\r\n detailsOnClick,\r\n allowDataDownloadOnDetail = false,\r\n noOfItemsInAPage,\r\n uiMode = 'normal',\r\n styles,\r\n classNames,\r\n } = props;\r\n\r\n const [cardData, setCardData] = useState(data);\r\n\r\n const [page, setPage] = useState(1);\r\n\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const filterSettings = useMemo(\r\n () =>\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: true,\r\n clearable: true,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n width: el.width,\r\n })),\r\n [cardFilters, data],\r\n );\r\n\r\n const [selectedFilters, setSelectedFilters] = useState(\r\n (cardFilters || []).map(el => ({\r\n filter: el.column,\r\n value: transformDefaultValue(el.defaultValue),\r\n })),\r\n );\r\n const [sortedBy, setSortedBy] = useState<\r\n | {\r\n value: string;\r\n label: string;\r\n type: 'asc' | 'desc';\r\n }\r\n | undefined\r\n >(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue) ===\r\n -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(el => el.label === cardSortingOptions.defaultValue)\r\n ]\r\n : undefined,\r\n );\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\r\n useEffect(() => {\r\n setSortedBy(\r\n cardSortingOptions\r\n ? !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n : undefined,\r\n );\r\n }, [cardSortingOptions]);\r\n\r\n useEffect(() => {\r\n const filteredData = filterByKeys(data, cardSearchColumns || [], searchQuery).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) =>\r\n selectedFilters.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n if (sortedBy) {\r\n setCardData(orderBy(filteredData, [sortedBy.value], [sortedBy.type]));\r\n } else {\r\n setCardData(filteredData);\r\n }\r\n }, [data, cardSearchColumns, searchQuery, selectedFilters, sortedBy]);\r\n\r\n useEffect(() => {\r\n setPage(1);\r\n }, [cardData]);\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 width ? 'w-fit' : 'w-full',\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 `${graphTitle ? `The graph shows ${graphTitle}. ` : ''}This is an list of cards. ${\r\n graphDescription ? ` ${graphDescription}` : ''\r\n }`\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 grow gap-3 w-full 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 {cardSortingOptions || filterSettings.length > 0 ? (\r\n <div className='flex gap-4 flex-wrap items-start w-full'>\r\n {cardSortingOptions ? (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: cardSortingOptions.width || 'calc(25% - 0.75rem)' }}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n Sort by\r\n </P>\r\n <DropdownSelect\r\n options={cardSortingOptions.options}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setSortedBy(el || undefined);\r\n }}\r\n variant={uiMode}\r\n size='sm'\r\n defaultValue={\r\n !cardSortingOptions.defaultValue ||\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n ) === -1\r\n ? cardSortingOptions.options[0]\r\n : cardSortingOptions.options[\r\n cardSortingOptions.options.findIndex(\r\n el => el.label === cardSortingOptions.defaultValue,\r\n )\r\n ]\r\n }\r\n />\r\n </div>\r\n ) : null}\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n className='grow shrink-0 min-w-[240px]'\r\n style={{ width: d.width || 'calc(25% - 0.75rem)' }}\r\n key={i}\r\n >\r\n <P\r\n marginBottom='xs'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n {d.label}\r\n </P>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isRtl={language === 'he' || language === 'ar'}\r\n isSearchable\r\n variant={uiMode}\r\n size='sm'\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n setSelectedFilters(prev =>\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prev.map(f => (f.filter === d.filter ? { ...f, value: el as any } : f)),\r\n );\r\n }}\r\n defaultValue={d.defaultValue}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n {(cardSearchColumns || []).length > 0 ? (\r\n <div style={{ paddingTop: '1px' }}>\r\n <Search\r\n placeholder='Search...'\r\n onSearch={e => {\r\n setSearchQuery(e || '');\r\n }}\r\n buttonVariant='icon'\r\n inputVariant={uiMode}\r\n showSearchButton={false}\r\n inputSize='sm'\r\n />\r\n </div>\r\n ) : null}\r\n <Graph\r\n data={cardData}\r\n width={width}\r\n height={height}\r\n cardTemplate={cardTemplate}\r\n cardMinWidth={cardMinWidth}\r\n page={page}\r\n cardBackgroundColor={cardBackgroundColor}\r\n styles={styles}\r\n classNames={classNames}\r\n noOfItemsInAPage={noOfItemsInAPage}\r\n detailsOnClick={detailsOnClick}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n allowDataDownloadOnDetail={allowDataDownloadOnDetail}\r\n />\r\n {noOfItemsInAPage ? (\r\n <Pagination\r\n total={cardData.length}\r\n defaultPage={0}\r\n pageSize={noOfItemsInAPage}\r\n onChange={setPage}\r\n />\r\n ) : null}\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":["o","t","e","r","c","d","a","n","f","x","i","m","p","h","C","b","R","j","E","g","y","U","N","s","u","k","v","P","l","w","F","_","I","csvData","data","key","value","Graph","props","width","height","onSeriesMouseClick","cardTemplate","cardBackgroundColor","cardMinWidth","detailsOnClick","noOfItemsInAPage","styles","classNames","page","allowDataDownloadOnDetail","selectedData","setSelectedData","useState","jsxs","Fragment","jsx","_d","string2HTML","Modal","CsvDownloadButton","FileDown","filterByKeys","jsonArray","keys","substring","item","DataCards","graphTitle","sources","graphDescription","footNote","graphID","language","theme","ariaLabel","cardFilters","cardSortingOptions","cardSearchColumns","backgroundColor","padding","uiMode","cardData","setCardData","setPage","searchQuery","setSearchQuery","filterSettings","useMemo","el","transformDefaultValue","getUniqValue","selectedFilters","setSelectedFilters","sortedBy","setSortedBy","filterConfig","useEffect","filteredData","filter","flattenDeep","intersection","orderBy","cn","GraphHeader","DropdownSelect","createFilter","prev","Search","Pagination","GraphFooter"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|