@undp/data-viz 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AreaChart.cjs +2 -0
- package/dist/AreaChart.cjs.map +1 -0
- package/dist/AreaChart.js +530 -1
- package/dist/AreaChart.js.map +1 -1
- package/dist/Axis-DE7dSn1_.cjs +2 -0
- package/dist/{Axis-BlyBRMNw.cjs.map → Axis-DE7dSn1_.cjs.map} +1 -1
- package/dist/{Axis-CvK-w3E2.js → Axis-Ddg-seDi.js} +10 -11
- package/dist/{Axis-CvK-w3E2.js.map → Axis-Ddg-seDi.js.map} +1 -1
- package/dist/AxisTitle-BmHLMRJZ.js +20 -0
- package/dist/{AxisTitle-BeMxcw5I.js.map → AxisTitle-BmHLMRJZ.js.map} +1 -1
- package/dist/AxisTitle-CK9YeovX.cjs +2 -0
- package/dist/{AxisTitle-BY8MI9jC.cjs.map → AxisTitle-CK9YeovX.cjs.map} +1 -1
- package/dist/BarGraph.cjs +2 -0
- package/dist/BarGraph.cjs.map +1 -0
- package/dist/BarGraph.js +4043 -1
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +2 -0
- package/dist/BasicStatCard.cjs.map +1 -0
- package/dist/BasicStatCard.js +190 -1
- package/dist/BasicStatCard.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +2 -0
- package/dist/BeeSwarmChart.cjs.map +1 -0
- package/dist/BeeSwarmChart.d.ts +0 -8
- package/dist/BeeSwarmChart.js +1042 -1
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +2 -0
- package/dist/BiVariateChoroplethMap.cjs.map +1 -0
- package/dist/BiVariateChoroplethMap.js +720 -1
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +2 -0
- package/dist/BulletChart.cjs.map +1 -0
- package/dist/BulletChart.js +1431 -1
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +2 -0
- package/dist/ButterflyChart.cjs.map +1 -0
- package/dist/ButterflyChart.js +692 -1
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +2 -0
- package/dist/ChoroplethMap.cjs.map +1 -0
- package/dist/ChoroplethMap.js +745 -1
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +2 -0
- package/dist/CirclePackingGraph.cjs.map +1 -0
- package/dist/CirclePackingGraph.d.ts +0 -8
- package/dist/CirclePackingGraph.js +14 -1
- package/dist/CirclePackingGraph.js.map +1 -1
- package/dist/ColorLegend.cjs +2 -0
- package/dist/ColorLegend.cjs.map +1 -0
- package/dist/ColorLegend.js +47 -1
- package/dist/ColorLegend.js.map +1 -1
- package/dist/ColorLegendWithMouseOver.cjs +2 -0
- package/dist/ColorLegendWithMouseOver.cjs.map +1 -0
- package/dist/ColorLegendWithMouseOver.js +70 -1
- package/dist/ColorLegendWithMouseOver.js.map +1 -1
- package/dist/Colors.cjs +2 -0
- package/dist/Colors.cjs.map +1 -0
- package/dist/Colors.js +561 -1
- package/dist/Colors.js.map +1 -1
- package/dist/CopyTextButton.cjs +17 -0
- package/dist/CopyTextButton.cjs.map +1 -0
- package/dist/CopyTextButton.js +698 -16
- package/dist/CopyTextButton.js.map +1 -1
- package/dist/CsvDownloadButton.cjs +23 -0
- package/dist/CsvDownloadButton.cjs.map +1 -0
- package/dist/CsvDownloadButton.js +852 -7
- package/dist/CsvDownloadButton.js.map +1 -1
- package/dist/DataCards.cjs +2 -0
- package/dist/DataCards.cjs.map +1 -0
- package/dist/DataCards.js +14 -1
- package/dist/DataCards.js.map +1 -1
- package/dist/DataTable.cjs +2 -0
- package/dist/DataTable.cjs.map +1 -0
- package/dist/DataTable.js +331 -1
- package/dist/DataTable.js.map +1 -1
- package/dist/DifferenceLineChart.cjs +2 -0
- package/dist/DifferenceLineChart.cjs.map +1 -0
- package/dist/DifferenceLineChart.js +805 -1
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +2 -0
- package/dist/DonutChart.cjs.map +1 -0
- package/dist/DonutChart.js +478 -1
- package/dist/DonutChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +2 -0
- package/dist/DotDensityMap.cjs.map +1 -0
- package/dist/DotDensityMap.js +600 -1
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DropdownSelect-0I2QxaVy.cjs +29 -0
- package/dist/DropdownSelect-0I2QxaVy.cjs.map +1 -0
- package/dist/DropdownSelect-CDC9lEqU.js +4193 -0
- package/dist/DropdownSelect-CDC9lEqU.js.map +1 -0
- package/dist/DualAxisLineChart.cjs +2 -0
- package/dist/DualAxisLineChart.cjs.map +1 -0
- package/dist/DualAxisLineChart.js +699 -1
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +2 -0
- package/dist/DumbbellChart.cjs.map +1 -0
- package/dist/DumbbellChart.js +1510 -1
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{EmptyState-b2Ln487i.js → EmptyState-DdTp-Mdn.js} +8 -8
- package/dist/{EmptyState-b2Ln487i.js.map → EmptyState-DdTp-Mdn.js.map} +1 -1
- package/dist/EmptyState-d8_8SxeW.cjs +2 -0
- package/dist/{EmptyState-BQguKAp5.cjs.map → EmptyState-d8_8SxeW.cjs.map} +1 -1
- package/dist/ExcelDownloadButton.cjs +2 -0
- package/dist/ExcelDownloadButton.cjs.map +1 -0
- package/dist/ExcelDownloadButton.js +29 -1
- package/dist/ExcelDownloadButton.js.map +1 -1
- package/dist/FootNote.cjs +2 -0
- package/dist/FootNote.cjs.map +1 -0
- package/dist/FootNote.js +20 -1
- package/dist/FootNote.js.map +1 -1
- package/dist/GeoHubCompareMaps.cjs +2 -0
- package/dist/GeoHubCompareMaps.cjs.map +1 -0
- package/dist/GeoHubCompareMaps.js +370 -1
- package/dist/GeoHubCompareMaps.js.map +1 -1
- package/dist/GeoHubMap.cjs +2 -0
- package/dist/GeoHubMap.cjs.map +1 -0
- package/dist/GeoHubMap.js +429 -1
- package/dist/GeoHubMap.js.map +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs +2 -0
- package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -0
- package/dist/GeoHubMapWithLayerSelection.js +307 -1
- package/dist/GeoHubMapWithLayerSelection.js.map +1 -1
- package/dist/GraphDescription.cjs +2 -0
- package/dist/GraphDescription.cjs.map +1 -0
- package/dist/GraphDescription.js +20 -1
- package/dist/GraphDescription.js.map +1 -1
- package/dist/GraphFooter.cjs +2 -0
- package/dist/GraphFooter.cjs.map +1 -0
- package/dist/GraphFooter.js +21 -1
- package/dist/GraphFooter.js.map +1 -1
- package/dist/GraphHeader.cjs +2 -0
- package/dist/GraphHeader.cjs.map +1 -0
- package/dist/GraphHeader.js +63 -1
- package/dist/GraphHeader.js.map +1 -1
- package/dist/GraphTitle.cjs +2 -0
- package/dist/GraphTitle.cjs.map +1 -0
- package/dist/GraphTitle.js +28 -1
- package/dist/GraphTitle.js.map +1 -1
- package/dist/GriddedGraphs.cjs +2 -0
- package/dist/GriddedGraphs.cjs.map +1 -0
- package/dist/GriddedGraphs.js +482 -1
- package/dist/GriddedGraphs.js.map +1 -1
- package/dist/GriddedGraphsFromConfig.cjs +2 -0
- package/dist/GriddedGraphsFromConfig.cjs.map +1 -0
- package/dist/GriddedGraphsFromConfig.js +42 -1
- package/dist/GriddedGraphsFromConfig.js.map +1 -1
- package/dist/HeatMap.cjs +2 -0
- package/dist/HeatMap.cjs.map +1 -0
- package/dist/HeatMap.js +451 -1
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +2 -0
- package/dist/Histogram.cjs.map +1 -0
- package/dist/Histogram.js +287 -1
- package/dist/Histogram.js.map +1 -1
- package/dist/ImageDownloadButton.cjs +2 -0
- package/dist/ImageDownloadButton.cjs.map +1 -0
- package/dist/ImageDownloadButton.js +28 -1
- package/dist/ImageDownloadButton.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +2 -0
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -0
- package/dist/LineChartWithConfidenceInterval.js +818 -1
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/LinearColorLegend.cjs +2 -0
- package/dist/LinearColorLegend.cjs.map +1 -0
- package/dist/LinearColorLegend.js +33 -1
- package/dist/LinearColorLegend.js.map +1 -1
- package/dist/Modal-CUU6ZK3U.js +1019 -0
- package/dist/Modal-CUU6ZK3U.js.map +1 -0
- package/dist/Modal-C_dl0EtQ.cjs +46 -0
- package/dist/Modal-C_dl0EtQ.cjs.map +1 -0
- package/dist/MultiGraphDashboard.cjs +2 -0
- package/dist/MultiGraphDashboard.cjs.map +1 -0
- package/dist/MultiGraphDashboard.js +303 -1
- package/dist/MultiGraphDashboard.js.map +1 -1
- package/dist/MultiGraphDashboardFromConfig.cjs +2 -0
- package/dist/MultiGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/MultiGraphDashboardFromConfig.js +37 -1
- package/dist/MultiGraphDashboardFromConfig.js.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js +243 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +2 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs.map +1 -0
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +30 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js.map +1 -1
- package/dist/MultiLineAltChart.cjs +2 -0
- package/dist/MultiLineAltChart.cjs.map +1 -0
- package/dist/MultiLineAltChart.js +689 -1
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +2 -0
- package/dist/MultiLineChart.cjs.map +1 -0
- package/dist/MultiLineChart.js +722 -1
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/ParetoChart.cjs +2 -0
- package/dist/ParetoChart.cjs.map +1 -0
- package/dist/ParetoChart.js +636 -1
- package/dist/ParetoChart.js.map +1 -1
- package/dist/RadarChart.cjs +2 -0
- package/dist/RadarChart.cjs.map +1 -0
- package/dist/RadarChart.js +677 -1
- package/dist/RadarChart.js.map +1 -1
- package/dist/{ReferenceLine-BgDdQbDI.js → ReferenceLine-C1GpoG9d.js} +33 -34
- package/dist/ReferenceLine-C1GpoG9d.js.map +1 -0
- package/dist/ReferenceLine-CuFMk0cI.cjs +2 -0
- package/dist/ReferenceLine-CuFMk0cI.cjs.map +1 -0
- package/dist/RegressionLine-7_rKTHN_.cjs +2 -0
- package/dist/{RegressionLine-BfpCuD7B.cjs.map → RegressionLine-7_rKTHN_.cjs.map} +1 -1
- package/dist/{RegressionLine-cSljpHaE.js → RegressionLine-BFwDCTUU.js} +17 -18
- package/dist/{RegressionLine-cSljpHaE.js.map → RegressionLine-BFwDCTUU.js.map} +1 -1
- package/dist/SVGDownloadButton.cjs +2 -0
- package/dist/SVGDownloadButton.cjs.map +1 -0
- package/dist/SVGDownloadButton.js +28 -1
- package/dist/SVGDownloadButton.js.map +1 -1
- package/dist/SankeyChart.cjs +2 -0
- package/dist/SankeyChart.cjs.map +1 -0
- package/dist/SankeyChart.js +989 -1
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +2 -0
- package/dist/ScatterPlot.cjs.map +1 -0
- package/dist/ScatterPlot.js +828 -1
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.cjs +2 -0
- package/dist/ScrollStory.cjs.map +1 -0
- package/dist/ScrollStory.js +105 -1
- package/dist/ScrollStory.js.map +1 -1
- package/dist/SimpleLineChart.cjs +2 -0
- package/dist/SimpleLineChart.cjs.map +1 -0
- package/dist/SimpleLineChart.js +619 -1
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +2 -0
- package/dist/SingleGraphDashboard.cjs.map +1 -0
- package/dist/SingleGraphDashboard.js +522 -1
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.cjs +2 -0
- package/dist/SingleGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/SingleGraphDashboardFromConfig.js +34 -1
- package/dist/SingleGraphDashboardFromConfig.js.map +1 -1
- package/dist/SlopeChart.cjs +2 -0
- package/dist/SlopeChart.cjs.map +1 -0
- package/dist/SlopeChart.js +582 -1
- package/dist/SlopeChart.js.map +1 -1
- package/dist/Source.cjs +2 -0
- package/dist/Source.cjs.map +1 -0
- package/dist/Source.js +40 -1
- package/dist/Source.js.map +1 -1
- package/dist/SparkLine.cjs +2 -0
- package/dist/SparkLine.cjs.map +1 -0
- package/dist/SparkLine.js +320 -1
- package/dist/SparkLine.js.map +1 -1
- package/dist/Spinner-C85UF28E.js +30 -0
- package/dist/Spinner-C85UF28E.js.map +1 -0
- package/dist/Spinner-DA6Z5E4n.cjs +2 -0
- package/dist/Spinner-DA6Z5E4n.cjs.map +1 -0
- package/dist/StatCardFromData.cjs +2 -0
- package/dist/StatCardFromData.cjs.map +1 -0
- package/dist/StatCardFromData.js +249 -1
- package/dist/StatCardFromData.js.map +1 -1
- package/dist/StripChart.cjs +2 -0
- package/dist/StripChart.cjs.map +1 -0
- package/dist/StripChart.js +988 -1
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +2 -0
- package/dist/ThreeDGlobe.cjs.map +1 -0
- package/dist/ThreeDGlobe.js +451 -1
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs +2 -0
- package/dist/ThresholdColorLegendWithMouseOver.cjs.map +1 -0
- package/dist/ThresholdColorLegendWithMouseOver.js +130 -1
- package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -1
- package/dist/{Tooltip-CzZ1wFyF.js → Tooltip-DyM5snqx.js} +15 -16
- package/dist/{Tooltip-CzZ1wFyF.js.map → Tooltip-DyM5snqx.js.map} +1 -1
- package/dist/Tooltip-n8z5bfav.cjs +2 -0
- package/dist/{Tooltip-BM18N_3l.cjs.map → Tooltip-n8z5bfav.cjs.map} +1 -1
- package/dist/TreeMapGraph.cjs +2 -0
- package/dist/TreeMapGraph.cjs.map +1 -0
- package/dist/TreeMapGraph.js +760 -1
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/Types.cjs +2 -0
- package/dist/Types.cjs.map +1 -0
- package/dist/Types.js +1 -1
- package/dist/Typography-Ctgfl1J5.js +140 -0
- package/dist/Typography-Ctgfl1J5.js.map +1 -0
- package/dist/Typography-k-kOjICQ.cjs +2 -0
- package/dist/Typography-k-kOjICQ.cjs.map +1 -0
- package/dist/UnitChart.cjs +2 -0
- package/dist/UnitChart.cjs.map +1 -0
- package/dist/UnitChart.js +216 -1
- package/dist/UnitChart.js.map +1 -1
- package/dist/XAxesLabels-CJMQbfVy.cjs +2 -0
- package/dist/{XAxesLabels-C9REbQQs.cjs.map → XAxesLabels-CJMQbfVy.cjs.map} +1 -1
- package/dist/{XAxesLabels-DVw7Lvuz.js → XAxesLabels-DQFo_z2R.js} +21 -22
- package/dist/{XAxesLabels-DVw7Lvuz.js.map → XAxesLabels-DQFo_z2R.js.map} +1 -1
- package/dist/{XTicksAndGridLines-CUefTINd.js → XTicksAndGridLines-Bn9u5gOM.js} +19 -20
- package/dist/{XTicksAndGridLines-CUefTINd.js.map → XTicksAndGridLines-Bn9u5gOM.js.map} +1 -1
- package/dist/XTicksAndGridLines-CCzXIV8d.cjs +2 -0
- package/dist/{XTicksAndGridLines-DuK35ROS.cjs.map → XTicksAndGridLines-CCzXIV8d.cjs.map} +1 -1
- package/dist/YAxesLabels-BXLTX7AI.cjs +2 -0
- package/dist/{YAxesLabels-DhBdLk3Z.cjs.map → YAxesLabels-BXLTX7AI.cjs.map} +1 -1
- package/dist/{YAxesLabels-CYVY053X.js → YAxesLabels-H5-002X5.js} +11 -12
- package/dist/{YAxesLabels-CYVY053X.js.map → YAxesLabels-H5-002X5.js.map} +1 -1
- package/dist/{YTicksAndGridLines-BJRXuBdC.js → YTicksAndGridLines-B6ah7CRf.js} +14 -15
- package/dist/{YTicksAndGridLines-BJRXuBdC.js.map → YTicksAndGridLines-B6ah7CRf.js.map} +1 -1
- package/dist/YTicksAndGridLines-DBDuz6vb.cjs +2 -0
- package/dist/{YTicksAndGridLines-CtLvzExe.cjs.map → YTicksAndGridLines-DBDuz6vb.cjs.map} +1 -1
- package/dist/{checkIfMultiple-CaefP4X2.js → checkIfMultiple-BB7PlCNh.js} +1013 -518
- package/dist/checkIfMultiple-BB7PlCNh.js.map +1 -0
- package/dist/checkIfMultiple-D5ysrI7G.cjs +12 -0
- package/dist/checkIfMultiple-D5ysrI7G.cjs.map +1 -0
- package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs +2 -0
- package/dist/checkIfNullOrUndefined-BCW3Y1ML.cjs.map +1 -0
- package/dist/checkIfNullOrUndefined-DmfiKkNw.js +7 -0
- package/dist/checkIfNullOrUndefined-DmfiKkNw.js.map +1 -0
- package/dist/customArea-BYNyxAkm.cjs +2 -0
- package/dist/{customArea-B47Ew5cT.cjs.map → customArea-BYNyxAkm.cjs.map} +1 -1
- package/dist/{customArea-I3MsoqIl.js → customArea-CaxScFmW.js} +29 -30
- package/dist/{customArea-I3MsoqIl.js.map → customArea-CaxScFmW.js.map} +1 -1
- package/dist/excelDownload-BOA-lskf.js +19 -0
- package/dist/excelDownload-BOA-lskf.js.map +1 -0
- package/dist/excelDownload-BQpsCa62.cjs +2 -0
- package/dist/excelDownload-BQpsCa62.cjs.map +1 -0
- package/dist/fetchAndParseData-Bcmr659B.js +1196 -0
- package/dist/fetchAndParseData-Bcmr659B.js.map +1 -0
- package/dist/fetchAndParseData-DmgQtB9n.cjs +16 -0
- package/dist/fetchAndParseData-DmgQtB9n.cjs.map +1 -0
- package/dist/fetchAndParseData.cjs +2 -0
- package/dist/fetchAndParseData.cjs.map +1 -0
- package/dist/fetchAndParseData.js +9 -15
- package/dist/fetchAndParseData.js.map +1 -1
- package/dist/getGraphList-DuColTJM.js +265 -0
- package/dist/getGraphList-DuColTJM.js.map +1 -0
- package/dist/getGraphList-gf02xgT2.cjs +2 -0
- package/dist/getGraphList-gf02xgT2.cjs.map +1 -0
- package/dist/getJenks-TWQvbuOz.cjs +2 -0
- package/dist/getJenks-TWQvbuOz.cjs.map +1 -0
- package/dist/getJenks-VhM3GIoC.js +23 -0
- package/dist/getJenks-VhM3GIoC.js.map +1 -0
- package/dist/getSchema.cjs +2 -0
- package/dist/getSchema.cjs.map +1 -0
- package/dist/getSchema.js +910 -1
- package/dist/getSchema.js.map +1 -1
- package/dist/getSliderMarks-C0jptXeP.js +1054 -0
- package/dist/getSliderMarks-C0jptXeP.js.map +1 -0
- package/dist/getSliderMarks-CtsEXiLV.cjs +6 -0
- package/dist/getSliderMarks-CtsEXiLV.cjs.map +1 -0
- package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js +28 -0
- package/dist/getTextColorBasedOnBgColor-B6Nk2WBf.js.map +1 -0
- package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs +2 -0
- package/dist/getTextColorBasedOnBgColor-nqY-bsM_.cjs.map +1 -0
- package/dist/getUniqValue-BtUENB2H.js +20 -0
- package/dist/getUniqValue-BtUENB2H.js.map +1 -0
- package/dist/getUniqValue-CHqgSss5.cjs +2 -0
- package/dist/getUniqValue-CHqgSss5.cjs.map +1 -0
- package/dist/imageDownload-CgDcm1Sj.cjs +3 -0
- package/dist/imageDownload-CgDcm1Sj.cjs.map +1 -0
- package/dist/imageDownload-Dcci2LEy.js +495 -0
- package/dist/imageDownload-Dcci2LEy.js.map +1 -0
- package/dist/index-BVnYktl4.js +435 -0
- package/dist/index-BVnYktl4.js.map +1 -0
- package/dist/index-BW_-wD2k.cjs +2 -0
- package/dist/index-BW_-wD2k.cjs.map +1 -0
- package/dist/{index-DXmF_0ez.js → index-BmCqpO1B.js} +74 -40
- package/dist/index-BmCqpO1B.js.map +1 -0
- package/dist/{index-Db-Yg_Ud.js → index-BxAUvrua.js} +19 -19
- package/dist/{index-Db-Yg_Ud.js.map → index-BxAUvrua.js.map} +1 -1
- package/dist/index-CHPV5EwG-BPSP-7Jg.js +3341 -0
- package/dist/index-CHPV5EwG-BPSP-7Jg.js.map +1 -0
- package/dist/index-CHPV5EwG-DDoeWRVt.cjs +44 -0
- package/dist/index-CHPV5EwG-DDoeWRVt.cjs.map +1 -0
- package/dist/index-CylX-pWB.cjs +2 -0
- package/dist/{index-BYroABPm.cjs.map → index-CylX-pWB.cjs.map} +1 -1
- package/dist/index-D9h2WYDS.cjs +22 -0
- package/dist/index-D9h2WYDS.cjs.map +1 -0
- package/dist/index-DG3YrCr5-D3FrrXj8.js +459 -0
- package/dist/index-DG3YrCr5-D3FrrXj8.js.map +1 -0
- package/dist/index-DG3YrCr5-v7rayV3N.cjs +2 -0
- package/dist/index-DG3YrCr5-v7rayV3N.cjs.map +1 -0
- package/dist/index-DVOJ7vxH.cjs +10 -0
- package/dist/{index-a2C2Bqn2.cjs.map → index-DVOJ7vxH.cjs.map} +1 -1
- package/dist/index-D_n8aamX.cjs +2 -0
- package/dist/index-D_n8aamX.cjs.map +1 -0
- package/dist/index-OCoyy1wG.js +635 -0
- package/dist/index-OCoyy1wG.js.map +1 -0
- package/dist/{index-DzdwZ2OA.js → index-n_RI8T0n.js} +3 -3
- package/dist/{index-DzdwZ2OA.js.map → index-n_RI8T0n.js.map} +1 -1
- package/dist/index-tvAyXPPW-DBlMKnNB.js +47 -0
- package/dist/index-tvAyXPPW-DBlMKnNB.js.map +1 -0
- package/dist/index-tvAyXPPW-DPOG-C2i.cjs +2 -0
- package/dist/index-tvAyXPPW-DPOG-C2i.cjs.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -5
- package/dist/index.js +180 -1
- package/dist/index.js.map +1 -1
- package/dist/numberFormattingFunction-02t-wJta.cjs +2 -0
- package/dist/numberFormattingFunction-02t-wJta.cjs.map +1 -0
- package/dist/numberFormattingFunction-14YCbkN2.js +13 -0
- package/dist/numberFormattingFunction-14YCbkN2.js.map +1 -0
- package/dist/{use-in-view-CZPXmTZM.js → proxy-DJxJg1kD.js} +699 -732
- package/dist/proxy-DJxJg1kD.js.map +1 -0
- package/dist/{use-in-view-Dl1CsAIo.cjs → proxy-PQd2AItT.cjs} +2 -2
- package/dist/proxy-PQd2AItT.cjs.map +1 -0
- package/dist/removeOutliers-DR48e-18.js +57 -0
- package/dist/removeOutliers-DR48e-18.js.map +1 -0
- package/dist/removeOutliers-WELHHqiI.cjs +2 -0
- package/dist/removeOutliers-WELHHqiI.cjs.map +1 -0
- package/dist/{string2HTML-BX0oNw83.js → string2HTML-CWHGfz_d.js} +2 -2
- package/dist/{string2HTML-BX0oNw83.js.map → string2HTML-CWHGfz_d.js.map} +1 -1
- package/dist/{string2HTML-X4ZYX5jI.cjs → string2HTML-D2Avudmb.cjs} +2 -2
- package/dist/{string2HTML-X4ZYX5jI.cjs.map → string2HTML-D2Avudmb.cjs.map} +1 -1
- package/dist/svgDownload-C2-E3yf2.js +9 -0
- package/dist/svgDownload-C2-E3yf2.js.map +1 -0
- package/dist/svgDownload-D9zEGjTF.cjs +2 -0
- package/dist/svgDownload-D9zEGjTF.cjs.map +1 -0
- package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs +4 -0
- package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs.map +1 -0
- package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js +145 -0
- package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js.map +1 -0
- package/dist/transformData.cjs +2 -0
- package/dist/transformData.cjs.map +1 -0
- package/dist/transformData.d.ts +170 -0
- package/dist/transformData.js +10 -0
- package/dist/transformData.js.map +1 -0
- package/dist/transformDataForAggregation-BUGJnson.cjs +2 -0
- package/dist/transformDataForAggregation-BUGJnson.cjs.map +1 -0
- package/dist/transformDataForAggregation-DAQJWGNL.js +759 -0
- package/dist/transformDataForAggregation-DAQJWGNL.js.map +1 -0
- package/dist/transformDataForGraphFromFile-CrntpaMU.cjs +2 -0
- package/dist/transformDataForGraphFromFile-CrntpaMU.cjs.map +1 -0
- package/dist/transformDataForGraphFromFile-DdNiOWeC.js +24 -0
- package/dist/transformDataForGraphFromFile-DdNiOWeC.js.map +1 -0
- package/dist/use-in-view-BAHrBy6b.js +40 -0
- package/dist/use-in-view-BAHrBy6b.js.map +1 -0
- package/dist/use-in-view-BCmzDU2O.cjs +2 -0
- package/dist/use-in-view-BCmzDU2O.cjs.map +1 -0
- package/dist/utils.cjs +2 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.ts +217 -0
- package/dist/utils.js +27 -0
- package/dist/utils.js.map +1 -0
- package/dist/validateSchema.cjs +2 -0
- package/dist/validateSchema.cjs.map +1 -0
- package/dist/validateSchema.js +104 -1
- package/dist/validateSchema.js.map +1 -1
- package/dist/x-CnsEH4Ox-CGGXQl4M.cjs +27 -0
- package/dist/x-CnsEH4Ox-CGGXQl4M.cjs.map +1 -0
- package/dist/x-CnsEH4Ox-DDvAJndW.js +101 -0
- package/dist/x-CnsEH4Ox-DDvAJndW.js.map +1 -0
- package/package.json +15 -90
- package/dist/Axis-BlyBRMNw.cjs +0 -2
- package/dist/AxisTitle-BY8MI9jC.cjs +0 -2
- package/dist/AxisTitle-BeMxcw5I.js +0 -21
- package/dist/DropdownSelect-CuzV7gdj.cjs +0 -29
- package/dist/DropdownSelect-CuzV7gdj.cjs.map +0 -1
- package/dist/DropdownSelect-DmZsXrhY.js +0 -2698
- package/dist/DropdownSelect-DmZsXrhY.js.map +0 -1
- package/dist/EmptyState-BQguKAp5.cjs +0 -2
- package/dist/Modal-C9txyGOk.js +0 -723
- package/dist/Modal-C9txyGOk.js.map +0 -1
- package/dist/Modal-cQF2UQIa.cjs +0 -46
- package/dist/Modal-cQF2UQIa.cjs.map +0 -1
- package/dist/ReferenceLine-BgDdQbDI.js.map +0 -1
- package/dist/ReferenceLine-Bsb5jeE4.cjs +0 -2
- package/dist/ReferenceLine-Bsb5jeE4.cjs.map +0 -1
- package/dist/RegressionLine-BfpCuD7B.cjs +0 -2
- package/dist/Spinner-DN3s4S0H.js +0 -17
- package/dist/Spinner-DN3s4S0H.js.map +0 -1
- package/dist/Spinner-UmN-KPe9.cjs +0 -2
- package/dist/Spinner-UmN-KPe9.cjs.map +0 -1
- package/dist/Tooltip-BM18N_3l.cjs +0 -2
- package/dist/Typography-CDR-DAHH.cjs +0 -2
- package/dist/Typography-CDR-DAHH.cjs.map +0 -1
- package/dist/Typography-XJoSE-By.js +0 -58
- package/dist/Typography-XJoSE-By.js.map +0 -1
- package/dist/XAxesLabels-C9REbQQs.cjs +0 -2
- package/dist/XTicksAndGridLines-DuK35ROS.cjs +0 -2
- package/dist/YAxesLabels-DhBdLk3Z.cjs +0 -2
- package/dist/YTicksAndGridLines-CtLvzExe.cjs +0 -2
- package/dist/checkIfMultiple-CaefP4X2.js.map +0 -1
- package/dist/checkIfMultiple-D3h8to1T.cjs +0 -12
- package/dist/checkIfMultiple-D3h8to1T.cjs.map +0 -1
- package/dist/checkIfNullOrUndefined.d.ts +0 -15
- package/dist/checkIfNullOrUndefined.js +0 -2
- package/dist/checkIfNullOrUndefined.js.map +0 -1
- package/dist/customArea-B47Ew5cT.cjs +0 -2
- package/dist/excelDownload.d.ts +0 -31
- package/dist/excelDownload.js +0 -2
- package/dist/excelDownload.js.map +0 -1
- package/dist/generateCodes.d.ts +0 -25
- package/dist/generateCodes.js +0 -2
- package/dist/generateCodes.js.map +0 -1
- package/dist/getJenks.d.ts +0 -17
- package/dist/getJenks.js +0 -2
- package/dist/getJenks.js.map +0 -1
- package/dist/getPercentileValue.d.ts +0 -13
- package/dist/getPercentileValue.js +0 -2
- package/dist/getPercentileValue.js.map +0 -1
- package/dist/getQueryParamsFromLink.d.ts +0 -18
- package/dist/getQueryParamsFromLink.js +0 -2
- package/dist/getQueryParamsFromLink.js.map +0 -1
- package/dist/getSliderMarks-CWajGCGq.js +0 -719
- package/dist/getSliderMarks-CWajGCGq.js.map +0 -1
- package/dist/getSliderMarks-DDJ1CdhL.cjs +0 -6
- package/dist/getSliderMarks-DDJ1CdhL.cjs.map +0 -1
- package/dist/getTextColorBasedOnBgColor.d.ts +0 -13
- package/dist/getTextColorBasedOnBgColor.js +0 -2
- package/dist/getTextColorBasedOnBgColor.js.map +0 -1
- package/dist/getUniqValue.d.ts +0 -18
- package/dist/getUniqValue.js +0 -2
- package/dist/getUniqValue.js.map +0 -1
- package/dist/graphList.d.ts +0 -9
- package/dist/graphList.js +0 -2
- package/dist/graphList.js.map +0 -1
- package/dist/imageDownload.d.ts +0 -16
- package/dist/imageDownload.js +0 -3
- package/dist/imageDownload.js.map +0 -1
- package/dist/index-01r5X3Gr-9jE0ObrK.cjs +0 -2
- package/dist/index-01r5X3Gr-9jE0ObrK.cjs.map +0 -1
- package/dist/index-01r5X3Gr-kH7FxQ7P.js +0 -451
- package/dist/index-01r5X3Gr-kH7FxQ7P.js.map +0 -1
- package/dist/index-BGMGC-HN.cjs +0 -22
- package/dist/index-BGMGC-HN.cjs.map +0 -1
- package/dist/index-BHm2KTjD-2e-Fu8L-.js +0 -702
- package/dist/index-BHm2KTjD-2e-Fu8L-.js.map +0 -1
- package/dist/index-BHm2KTjD-D8FylaKc.cjs +0 -44
- package/dist/index-BHm2KTjD-D8FylaKc.cjs.map +0 -1
- package/dist/index-BIPNFFja.js +0 -506
- package/dist/index-BIPNFFja.js.map +0 -1
- package/dist/index-BYroABPm.cjs +0 -2
- package/dist/index-CEc_9zWy.cjs +0 -2
- package/dist/index-CEc_9zWy.cjs.map +0 -1
- package/dist/index-CbVeVrla.cjs +0 -2
- package/dist/index-CbVeVrla.cjs.map +0 -1
- package/dist/index-CqzhBPuO-CfQywbdq.js +0 -41
- package/dist/index-CqzhBPuO-CfQywbdq.js.map +0 -1
- package/dist/index-CqzhBPuO-raKZqS7l.cjs +0 -2
- package/dist/index-CqzhBPuO-raKZqS7l.cjs.map +0 -1
- package/dist/index-DSnvdkHZ.js +0 -495
- package/dist/index-DSnvdkHZ.js.map +0 -1
- package/dist/index-DXmF_0ez.js.map +0 -1
- package/dist/index-a2C2Bqn2.cjs +0 -10
- package/dist/numberFormattingFunction.d.ts +0 -22
- package/dist/numberFormattingFunction.js +0 -2
- package/dist/numberFormattingFunction.js.map +0 -1
- package/dist/removeOutliers.d.ts +0 -16
- package/dist/removeOutliers.js +0 -2
- package/dist/removeOutliers.js.map +0 -1
- package/dist/svgDownload.d.ts +0 -16
- package/dist/svgDownload.js +0 -2
- package/dist/svgDownload.js.map +0 -1
- package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js +0 -139
- package/dist/toConsumableArray-BSMMWi3w-Cu4vcE-m.js.map +0 -1
- package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs +0 -4
- package/dist/toConsumableArray-BSMMWi3w-DJL7-zAp.cjs.map +0 -1
- package/dist/transformColumnsToArray.d.ts +0 -38
- package/dist/transformColumnsToArray.js +0 -2
- package/dist/transformColumnsToArray.js.map +0 -1
- package/dist/transformDataForAggregation.d.ts +0 -38
- package/dist/transformDataForAggregation.js +0 -2
- package/dist/transformDataForAggregation.js.map +0 -1
- package/dist/transformDataForGraph.d.ts +0 -47
- package/dist/transformDataForGraph.js +0 -2
- package/dist/transformDataForGraph.js.map +0 -1
- package/dist/transformDataForGraphFromFile.d.ts +0 -66
- package/dist/transformDataForGraphFromFile.js +0 -2
- package/dist/transformDataForGraphFromFile.js.map +0 -1
- package/dist/use-in-view-CZPXmTZM.js.map +0 -1
- package/dist/use-in-view-Dl1CsAIo.cjs.map +0 -1
- package/dist/x-Dft9NVe_-DcB7wtv5.js +0 -61
- package/dist/x-Dft9NVe_-DcB7wtv5.js.map +0 -1
- package/dist/x-Dft9NVe_-LeyJu02C.cjs +0 -27
- package/dist/x-Dft9NVe_-LeyJu02C.cjs.map +0 -1
package/dist/ParetoChart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParetoChart.js","sources":["../src/Components/Graphs/ParetoChart/Graph.tsx","../src/Components/Graphs/ParetoChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { useRef, useState } from 'react';\r\nimport {\r\n line,\r\n curveMonotoneX,\r\n curveLinear,\r\n curveStep,\r\n curveStepAfter,\r\n curveStepBefore,\r\n} from 'd3-shape';\r\nimport { scaleBand, scaleLinear } from 'd3-scale';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { Modal } from '@undp/design-system-react/Modal';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n ParetoChartDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { XAxesLabels } from '@/Components/Elements/Axes/XAxesLabels';\r\n\r\ninterface Props {\r\n data: ParetoChartDataType[];\r\n barColor: string;\r\n lineColor: string;\r\n axisTitles: [string, string];\r\n width: number;\r\n height: number;\r\n rightMargin: number;\r\n leftMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n sameAxes: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n barPadding: number;\r\n truncateBy: number;\r\n showLabels: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n resetSelectionOnDoubleClick: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n noOfTicks: number;\r\n lineSuffix: string;\r\n barSuffix: string;\r\n linePrefix: string;\r\n showValues: boolean;\r\n barPrefix: string;\r\n curveType: CurveTypes;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n precision: number;\r\n naLabel: string;\r\n customLayers: CustomLayerDataType[];\r\n}\r\ninterface DataFormattedType {\r\n id: string;\r\n label: number | string;\r\n line?: number;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n barColor,\r\n lineColor,\r\n axisTitles,\r\n sameAxes,\r\n rightMargin,\r\n leftMargin,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n showValues,\r\n onSeriesMouseOver,\r\n barPadding,\r\n truncateBy,\r\n showLabels,\r\n onSeriesMouseClick,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n noOfTicks,\r\n lineSuffix,\r\n barSuffix,\r\n linePrefix,\r\n barPrefix,\r\n curveType,\r\n styles,\r\n classNames,\r\n animate,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const curve =\r\n curveType === 'linear'\r\n ? curveLinear\r\n : curveType === 'step'\r\n ? curveStep\r\n : curveType === 'stepAfter'\r\n ? curveStepAfter\r\n : curveType === 'stepBefore'\r\n ? curveStepBefore\r\n : curveMonotoneX;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin + 50,\r\n right: rightMargin + 65,\r\n };\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = data.map((d, i) => ({ ...d, id: `${i}` }));\r\n const x = scaleBand()\r\n .domain(dataWithId.map(d => `${d.id}`))\r\n .range([0, graphWidth])\r\n .paddingInner(barPadding);\r\n const minParam1 =\r\n Math.min(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.min(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null)) > 0\r\n ? 0\r\n : Math.min(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const minParam2 =\r\n Math.min(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.min(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null)) > 0\r\n ? 0\r\n : Math.min(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const maxParam1 =\r\n Math.max(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.max(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const maxParam2 =\r\n Math.max(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.max(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n\r\n const minParam = minParam1 < minParam2 ? minParam1 : minParam2;\r\n const maxParam = maxParam1 > maxParam2 ? maxParam1 : maxParam2;\r\n\r\n const y1 = scaleLinear()\r\n .domain([\r\n sameAxes ? minParam : minParam1,\r\n sameAxes ? (maxParam > 0 ? maxParam : 0) : maxParam1 > 0 ? maxParam1 : 0,\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n const y2 = scaleLinear()\r\n .domain([\r\n sameAxes ? minParam : minParam2,\r\n sameAxes ? (maxParam > 0 ? maxParam : 0) : maxParam2 > 0 ? maxParam2 : 0,\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n\r\n const lineShape = line<DataFormattedType>()\r\n .defined(d => !checkIfNullOrUndefined(d.line))\r\n .x(d => (x(`${d.id}`) as number) + x.bandwidth() / 2)\r\n .y(d => y2(d.line as number))\r\n .curve(curve);\r\n const y1Ticks = y1.ticks(noOfTicks);\r\n const y2Ticks = y2.ticks(noOfTicks);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <g>\r\n {y1Ticks.map((d, i) => (\r\n <g key={i}>\r\n <line\r\n y1={y1(d)}\r\n y2={y1(d)}\r\n x1={-15}\r\n x2={-20}\r\n style={{\r\n stroke: barColor,\r\n strokeWidth: 1,\r\n ...(styles?.yAxis?.gridLines || {}),\r\n }}\r\n className={classNames?.yAxis?.gridLines}\r\n />\r\n <text\r\n x={0 - 25}\r\n y={y1(d)}\r\n dy='0.33em'\r\n className={cn('text-xs', classNames?.yAxis?.labels)}\r\n style={{\r\n textAnchor: 'end',\r\n fill: barColor,\r\n ...(styles?.yAxis?.labels || {}),\r\n }}\r\n >\r\n {numberFormattingFunction(d, naLabel, precision, barPrefix, barSuffix)}\r\n </text>\r\n </g>\r\n ))}\r\n <Axis\r\n y1={0}\r\n y2={graphHeight}\r\n x1={-15}\r\n x2={-15}\r\n classNames={{ axis: classNames?.xAxis?.axis }}\r\n styles={{ axis: { stroke: barColor, ...(styles?.xAxis?.axis || {}) } }}\r\n />\r\n <AxisTitle\r\n x={10 - margin.left}\r\n y={graphHeight / 2}\r\n style={{ fill: barColor, ...(styles?.yAxis?.title || {}) }}\r\n className={classNames?.yAxis?.title}\r\n text={\r\n axisTitles[0].length > 100 ? `${axisTitles[0].substring(0, 100)}...` : axisTitles[0]\r\n }\r\n rotate90\r\n />\r\n </g>\r\n <g>\r\n {y2Ticks.map((d, i) => (\r\n <g key={i}>\r\n <line\r\n y1={y2(d)}\r\n y2={y2(d)}\r\n x1={graphWidth + 15}\r\n x2={graphWidth + 20}\r\n style={{\r\n stroke: lineColor,\r\n strokeWidth: 1,\r\n ...(styles?.yAxis?.gridLines || {}),\r\n }}\r\n className={classNames?.yAxis?.gridLines}\r\n />\r\n <text\r\n x={graphWidth + 25}\r\n y={y2(d)}\r\n dy='0.33em'\r\n dx={-2}\r\n style={{\r\n textAnchor: 'start',\r\n fill: lineColor,\r\n ...(styles?.yAxis?.labels || {}),\r\n }}\r\n className={cn('text-xs', classNames?.yAxis?.labels)}\r\n >\r\n {numberFormattingFunction(d, naLabel, precision, linePrefix, lineSuffix)}\r\n </text>\r\n </g>\r\n ))}\r\n <Axis\r\n y1={0}\r\n y2={graphHeight}\r\n x1={graphWidth + 15}\r\n x2={graphWidth + 15}\r\n classNames={{ axis: classNames?.xAxis?.axis }}\r\n styles={{ axis: { stroke: lineColor, ...(styles?.xAxis?.axis || {}) } }}\r\n />\r\n <AxisTitle\r\n x={graphWidth + margin.right - 15}\r\n y={graphHeight / 2}\r\n style={{ fill: lineColor, ...(styles?.yAxis?.title || {}) }}\r\n className={classNames?.yAxis?.title}\r\n text={\r\n axisTitles[1].length > 100 ? `${axisTitles[1].substring(0, 100)}...` : axisTitles[1]\r\n }\r\n rotate90\r\n />\r\n </g>\r\n <Axis\r\n y1={sameAxes ? y1(0) : graphHeight}\r\n y2={sameAxes ? y1(0) : graphHeight}\r\n x1={-15}\r\n x2={graphWidth + 15}\r\n classNames={{ axis: classNames?.xAxis?.axis }}\r\n styles={{ axis: styles?.xAxis?.axis }}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map((d, i) => {\r\n return (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n opacity={0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n <motion.rect\r\n variants={{\r\n initial: {\r\n attrY: y1(0),\r\n height: 0,\r\n opacity: 1,\r\n },\r\n whileInView: {\r\n attrY: d.bar ? (d.bar > 0 ? y1(d.bar) : y1(0)) : 0,\r\n height: d.bar ? Math.abs(y1(d.bar) - y1(0)) : 0,\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n attrY: y1(0),\r\n height: 0,\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n x={x(`${i}`)}\r\n width={x.bandwidth()}\r\n style={{ fill: barColor }}\r\n />\r\n {showValues && !checkIfNullOrUndefined(d.bar) ? (\r\n <motion.text\r\n x={(x(`${d.id}`) as number) + x.bandwidth() / 2}\r\n exit={{\r\n attrY: y1(0),\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n attrY: y1(0),\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n attrY: y1(d.bar || 0),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n style={{\r\n fill: barColor,\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy={d.bar ? (d.bar >= 0 ? '-5px' : '1em') : '-5px'}\r\n >\r\n {numberFormattingFunction(d.bar, naLabel, precision, barPrefix, barSuffix)}\r\n </motion.text>\r\n ) : null}\r\n {showLabels ? (\r\n <XAxesLabels\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={graphHeight + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment='top'\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n </motion.g>\r\n );\r\n })}\r\n <motion.path\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n d: lineShape(dataWithId.map(d => ({ ...d, line: 0 }))) as string,\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n d: lineShape(dataWithId) as string,\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n style={{\r\n stroke: lineColor,\r\n fill: 'none',\r\n strokeWidth: 2,\r\n }}\r\n />\r\n {dataWithId.map((d, i) => (\r\n <g key={i}>\r\n {!checkIfNullOrUndefined(d.line) ? (\r\n <g\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n <motion.circle\r\n exit={{\r\n cy: y2(0),\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n cy: y2(0),\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n cy: y2(d.line as number),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n cx={(x(d.id) as number) + x.bandwidth() / 2}\r\n r={\r\n graphWidth / dataWithId.length < 5\r\n ? 0\r\n : graphWidth / dataWithId.length < 20\r\n ? 2\r\n : 4\r\n }\r\n style={{ fill: lineColor }}\r\n />\r\n {showValues ? (\r\n <motion.text\r\n x={(x(`${d.id}`) as number) + x.bandwidth() / 2}\r\n exit={{\r\n y: y2(0),\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n style={{\r\n fill: lineColor,\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n variants={{\r\n initial: {\r\n y: y2(0),\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n y: y2(d.line as number),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy='-5px'\r\n >\r\n {numberFormattingFunction(\r\n d.line,\r\n naLabel,\r\n precision,\r\n linePrefix,\r\n lineSuffix,\r\n )}\r\n </motion.text>\r\n ) : null}\r\n </g>\r\n ) : null}\r\n </g>\r\n ))}\r\n </AnimatePresence>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <Modal\r\n open={mouseClickData !== undefined}\r\n onClose={() => {\r\n setMouseClickData(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, mouseClickData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(mouseClickData) : null}\r\n </div>\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport {\r\n Languages,\r\n ParetoChartDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n} from '@/Types';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: ParetoChartDataType[];\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 /** Color of the bars */\r\n barColor?: string;\r\n /** Color of the line */\r\n lineColor?: string;\r\n /** Title for the color legend */\r\n colorLegendTitle?: 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 /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n\r\n // Values and Ticks\r\n /** Suffix for values of the lines */\r\n lineSuffix?: string;\r\n /** Suffix for values of the bars */\r\n barSuffix?: string;\r\n /** Prefix for values of the lines */\r\n linePrefix?: string;\r\n /** Prefix for values of the bars */\r\n barPrefix?: string;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Curve type for the line */\r\n curveType?: CurveTypes;\r\n /** Enables same axis for bars and line */\r\n sameAxes?: boolean;\r\n /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Title for the line axis */\r\n lineAxisTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. 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 tooltip?: string | ((_d: any) => React.ReactNode);\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 over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\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 /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function ParetoChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n padding,\r\n lineColor = Colors.light.categoricalColors.colors[1],\r\n barColor = Colors.light.categoricalColors.colors[0],\r\n sameAxes = false,\r\n backgroundColor = false,\r\n leftMargin = 80,\r\n rightMargin = 80,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n lineAxisTitle = 'Line chart',\r\n barAxisTitle = 'Bar graph',\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n graphID,\r\n graphDownload = false,\r\n dataDownload = false,\r\n barPadding = 0.25,\r\n truncateBy = 999,\r\n showLabels = true,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n colorLegendTitle,\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n showValues = true,\r\n noOfTicks = 5,\r\n lineSuffix = '',\r\n barSuffix = '',\r\n linePrefix = '',\r\n barPrefix = '',\r\n curveType = 'curve',\r\n styles,\r\n classNames,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n naLabel = 'NA',\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a pareto chart that shows a variable as bars and another as line chart.${\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 w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\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 graphDownload={graphDownload ? graphParentDiv.current : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n <div className='grow flex flex-col justify-center gap-3 w-full'>\r\n {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n <ColorLegend\r\n colorDomain={[barAxisTitle, lineAxisTitle]}\r\n colors={[\r\n barColor || Colors[theme].categoricalColors.colors[0],\r\n lineColor || Colors[theme].categoricalColors.colors[1],\r\n ]}\r\n colorLegendTitle={colorLegendTitle}\r\n showNAColor={false}\r\n />\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Graph area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <Graph\r\n data={data}\r\n sameAxes={sameAxes}\r\n lineColor={lineColor}\r\n barColor={barColor}\r\n width={width || svgWidth}\r\n height={Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n )}\r\n truncateBy={truncateBy}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n axisTitles={[barAxisTitle, lineAxisTitle]}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n barPadding={barPadding}\r\n showLabels={showLabels}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n noOfTicks={noOfTicks}\r\n lineSuffix={lineSuffix}\r\n barSuffix={barSuffix}\r\n linePrefix={linePrefix}\r\n barPrefix={barPrefix}\r\n curveType={curveType}\r\n showValues={showValues}\r\n styles={styles}\r\n classNames={classNames}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["Graph","props","data","width","height","barColor","lineColor","axisTitles","sameAxes","rightMargin","leftMargin","topMargin","bottomMargin","tooltip","showValues","onSeriesMouseOver","barPadding","truncateBy","showLabels","onSeriesMouseClick","resetSelectionOnDoubleClick","detailsOnClick","noOfTicks","lineSuffix","barSuffix","linePrefix","barPrefix","curveType","styles","classNames","animate","precision","customLayers","naLabel","svgRef","useRef","isInView","useInView","curve","curveLinear","curveStep","curveStepAfter","curveStepBefore","curveMonotoneX","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","margin","graphWidth","graphHeight","dataWithId","d","i","scaleBand","minParam1","minParam2","maxParam1","maxParam2","minParam","maxParam","y1","scaleLinear","y2","lineShape","line","checkIfNullOrUndefined","y1Ticks","y2Ticks","jsxs","Fragment","jsx","motion","cn","numberFormattingFunction","Axis","AxisTitle","AnimatePresence","event","isEqual","XAxesLabels","Tooltip","Modal","string2HTML","ParetoChart","graphTitle","sources","graphDescription","footNote","padding","Colors","backgroundColor","lineAxisTitle","barAxisTitle","relativeHeight","graphID","graphDownload","dataDownload","language","colorLegendTitle","minHeight","theme","ariaLabel","svgWidth","setSvgWidth","svgHeight","setSvgHeight","graphDiv","graphParentDiv","useEffect","resizeObserver","entries","GraphHeader","EmptyState","ColorLegend","GraphFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ParetoChart.js","sources":["../src/Components/Graphs/ParetoChart/Graph.tsx","../src/Components/Graphs/ParetoChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { useRef, useState } from 'react';\r\nimport {\r\n line,\r\n curveMonotoneX,\r\n curveLinear,\r\n curveStep,\r\n curveStepAfter,\r\n curveStepBefore,\r\n} from 'd3-shape';\r\nimport { scaleBand, scaleLinear } from 'd3-scale';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { Modal } from '@undp/design-system-react/Modal';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n ParetoChartDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { XAxesLabels } from '@/Components/Elements/Axes/XAxesLabels';\r\n\r\ninterface Props {\r\n data: ParetoChartDataType[];\r\n barColor: string;\r\n lineColor: string;\r\n axisTitles: [string, string];\r\n width: number;\r\n height: number;\r\n rightMargin: number;\r\n leftMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n sameAxes: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n barPadding: number;\r\n truncateBy: number;\r\n showLabels: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n resetSelectionOnDoubleClick: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n noOfTicks: number;\r\n lineSuffix: string;\r\n barSuffix: string;\r\n linePrefix: string;\r\n showValues: boolean;\r\n barPrefix: string;\r\n curveType: CurveTypes;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n precision: number;\r\n naLabel: string;\r\n customLayers: CustomLayerDataType[];\r\n}\r\ninterface DataFormattedType {\r\n id: string;\r\n label: number | string;\r\n line?: number;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n barColor,\r\n lineColor,\r\n axisTitles,\r\n sameAxes,\r\n rightMargin,\r\n leftMargin,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n showValues,\r\n onSeriesMouseOver,\r\n barPadding,\r\n truncateBy,\r\n showLabels,\r\n onSeriesMouseClick,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n noOfTicks,\r\n lineSuffix,\r\n barSuffix,\r\n linePrefix,\r\n barPrefix,\r\n curveType,\r\n styles,\r\n classNames,\r\n animate,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const curve =\r\n curveType === 'linear'\r\n ? curveLinear\r\n : curveType === 'step'\r\n ? curveStep\r\n : curveType === 'stepAfter'\r\n ? curveStepAfter\r\n : curveType === 'stepBefore'\r\n ? curveStepBefore\r\n : curveMonotoneX;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin + 50,\r\n right: rightMargin + 65,\r\n };\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = data.map((d, i) => ({ ...d, id: `${i}` }));\r\n const x = scaleBand()\r\n .domain(dataWithId.map(d => `${d.id}`))\r\n .range([0, graphWidth])\r\n .paddingInner(barPadding);\r\n const minParam1 =\r\n Math.min(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.min(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null)) > 0\r\n ? 0\r\n : Math.min(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const minParam2 =\r\n Math.min(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.min(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null)) > 0\r\n ? 0\r\n : Math.min(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const maxParam1 =\r\n Math.max(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.max(...dataWithId.map(d => d.bar).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n const maxParam2 =\r\n Math.max(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null)) !== Infinity\r\n ? Math.max(...dataWithId.map(d => d.line).filter(d => d !== undefined && d !== null))\r\n : 0;\r\n\r\n const minParam = minParam1 < minParam2 ? minParam1 : minParam2;\r\n const maxParam = maxParam1 > maxParam2 ? maxParam1 : maxParam2;\r\n\r\n const y1 = scaleLinear()\r\n .domain([\r\n sameAxes ? minParam : minParam1,\r\n sameAxes ? (maxParam > 0 ? maxParam : 0) : maxParam1 > 0 ? maxParam1 : 0,\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n const y2 = scaleLinear()\r\n .domain([\r\n sameAxes ? minParam : minParam2,\r\n sameAxes ? (maxParam > 0 ? maxParam : 0) : maxParam2 > 0 ? maxParam2 : 0,\r\n ])\r\n .range([graphHeight, 0])\r\n .nice();\r\n\r\n const lineShape = line<DataFormattedType>()\r\n .defined(d => !checkIfNullOrUndefined(d.line))\r\n .x(d => (x(`${d.id}`) as number) + x.bandwidth() / 2)\r\n .y(d => y2(d.line as number))\r\n .curve(curve);\r\n const y1Ticks = y1.ticks(noOfTicks);\r\n const y2Ticks = y2.ticks(noOfTicks);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <g>\r\n {y1Ticks.map((d, i) => (\r\n <g key={i}>\r\n <line\r\n y1={y1(d)}\r\n y2={y1(d)}\r\n x1={-15}\r\n x2={-20}\r\n style={{\r\n stroke: barColor,\r\n strokeWidth: 1,\r\n ...(styles?.yAxis?.gridLines || {}),\r\n }}\r\n className={classNames?.yAxis?.gridLines}\r\n />\r\n <text\r\n x={0 - 25}\r\n y={y1(d)}\r\n dy='0.33em'\r\n className={cn('text-xs', classNames?.yAxis?.labels)}\r\n style={{\r\n textAnchor: 'end',\r\n fill: barColor,\r\n ...(styles?.yAxis?.labels || {}),\r\n }}\r\n >\r\n {numberFormattingFunction(d, naLabel, precision, barPrefix, barSuffix)}\r\n </text>\r\n </g>\r\n ))}\r\n <Axis\r\n y1={0}\r\n y2={graphHeight}\r\n x1={-15}\r\n x2={-15}\r\n classNames={{ axis: classNames?.xAxis?.axis }}\r\n styles={{ axis: { stroke: barColor, ...(styles?.xAxis?.axis || {}) } }}\r\n />\r\n <AxisTitle\r\n x={10 - margin.left}\r\n y={graphHeight / 2}\r\n style={{ fill: barColor, ...(styles?.yAxis?.title || {}) }}\r\n className={classNames?.yAxis?.title}\r\n text={\r\n axisTitles[0].length > 100 ? `${axisTitles[0].substring(0, 100)}...` : axisTitles[0]\r\n }\r\n rotate90\r\n />\r\n </g>\r\n <g>\r\n {y2Ticks.map((d, i) => (\r\n <g key={i}>\r\n <line\r\n y1={y2(d)}\r\n y2={y2(d)}\r\n x1={graphWidth + 15}\r\n x2={graphWidth + 20}\r\n style={{\r\n stroke: lineColor,\r\n strokeWidth: 1,\r\n ...(styles?.yAxis?.gridLines || {}),\r\n }}\r\n className={classNames?.yAxis?.gridLines}\r\n />\r\n <text\r\n x={graphWidth + 25}\r\n y={y2(d)}\r\n dy='0.33em'\r\n dx={-2}\r\n style={{\r\n textAnchor: 'start',\r\n fill: lineColor,\r\n ...(styles?.yAxis?.labels || {}),\r\n }}\r\n className={cn('text-xs', classNames?.yAxis?.labels)}\r\n >\r\n {numberFormattingFunction(d, naLabel, precision, linePrefix, lineSuffix)}\r\n </text>\r\n </g>\r\n ))}\r\n <Axis\r\n y1={0}\r\n y2={graphHeight}\r\n x1={graphWidth + 15}\r\n x2={graphWidth + 15}\r\n classNames={{ axis: classNames?.xAxis?.axis }}\r\n styles={{ axis: { stroke: lineColor, ...(styles?.xAxis?.axis || {}) } }}\r\n />\r\n <AxisTitle\r\n x={graphWidth + margin.right - 15}\r\n y={graphHeight / 2}\r\n style={{ fill: lineColor, ...(styles?.yAxis?.title || {}) }}\r\n className={classNames?.yAxis?.title}\r\n text={\r\n axisTitles[1].length > 100 ? `${axisTitles[1].substring(0, 100)}...` : axisTitles[1]\r\n }\r\n rotate90\r\n />\r\n </g>\r\n <Axis\r\n y1={sameAxes ? y1(0) : graphHeight}\r\n y2={sameAxes ? y1(0) : graphHeight}\r\n x1={-15}\r\n x2={graphWidth + 15}\r\n classNames={{ axis: classNames?.xAxis?.axis }}\r\n styles={{ axis: styles?.xAxis?.axis }}\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {dataWithId.map((d, i) => {\r\n return (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n opacity={0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n <motion.rect\r\n variants={{\r\n initial: {\r\n attrY: y1(0),\r\n height: 0,\r\n opacity: 1,\r\n },\r\n whileInView: {\r\n attrY: d.bar ? (d.bar > 0 ? y1(d.bar) : y1(0)) : 0,\r\n height: d.bar ? Math.abs(y1(d.bar) - y1(0)) : 0,\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n attrY: y1(0),\r\n height: 0,\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n x={x(`${i}`)}\r\n width={x.bandwidth()}\r\n style={{ fill: barColor }}\r\n />\r\n {showValues && !checkIfNullOrUndefined(d.bar) ? (\r\n <motion.text\r\n x={(x(`${d.id}`) as number) + x.bandwidth() / 2}\r\n exit={{\r\n attrY: y1(0),\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n attrY: y1(0),\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n attrY: y1(d.bar || 0),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n style={{\r\n fill: barColor,\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy={d.bar ? (d.bar >= 0 ? '-5px' : '1em') : '-5px'}\r\n >\r\n {numberFormattingFunction(d.bar, naLabel, precision, barPrefix, barSuffix)}\r\n </motion.text>\r\n ) : null}\r\n {showLabels ? (\r\n <XAxesLabels\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={graphHeight + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment='top'\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n </motion.g>\r\n );\r\n })}\r\n <motion.path\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n d: lineShape(dataWithId.map(d => ({ ...d, line: 0 }))) as string,\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n d: lineShape(dataWithId) as string,\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n style={{\r\n stroke: lineColor,\r\n fill: 'none',\r\n strokeWidth: 2,\r\n }}\r\n />\r\n {dataWithId.map((d, i) => (\r\n <g key={i}>\r\n {!checkIfNullOrUndefined(d.line) ? (\r\n <g\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n <motion.circle\r\n exit={{\r\n cy: y2(0),\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n cy: y2(0),\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n cy: y2(d.line as number),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n cx={(x(d.id) as number) + x.bandwidth() / 2}\r\n r={\r\n graphWidth / dataWithId.length < 5\r\n ? 0\r\n : graphWidth / dataWithId.length < 20\r\n ? 2\r\n : 4\r\n }\r\n style={{ fill: lineColor }}\r\n />\r\n {showValues ? (\r\n <motion.text\r\n x={(x(`${d.id}`) as number) + x.bandwidth() / 2}\r\n exit={{\r\n y: y2(0),\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n style={{\r\n fill: lineColor,\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n variants={{\r\n initial: {\r\n y: y2(0),\r\n opacity: 0,\r\n },\r\n whileInView: {\r\n y: y2(d.line as number),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy='-5px'\r\n >\r\n {numberFormattingFunction(\r\n d.line,\r\n naLabel,\r\n precision,\r\n linePrefix,\r\n lineSuffix,\r\n )}\r\n </motion.text>\r\n ) : null}\r\n </g>\r\n ) : null}\r\n </g>\r\n ))}\r\n </AnimatePresence>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <Modal\r\n open={mouseClickData !== undefined}\r\n onClose={() => {\r\n setMouseClickData(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, mouseClickData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(mouseClickData) : null}\r\n </div>\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport {\r\n Languages,\r\n ParetoChartDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CurveTypes,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n} from '@/Types';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: ParetoChartDataType[];\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 /** Color of the bars */\r\n barColor?: string;\r\n /** Color of the line */\r\n lineColor?: string;\r\n /** Title for the color legend */\r\n colorLegendTitle?: 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 /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n\r\n // Values and Ticks\r\n /** Suffix for values of the lines */\r\n lineSuffix?: string;\r\n /** Suffix for values of the bars */\r\n barSuffix?: string;\r\n /** Prefix for values of the lines */\r\n linePrefix?: string;\r\n /** Prefix for values of the bars */\r\n barPrefix?: string;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Curve type for the line */\r\n curveType?: CurveTypes;\r\n /** Enables same axis for bars and line */\r\n sameAxes?: boolean;\r\n /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Title for the line axis */\r\n lineAxisTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. 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 tooltip?: string | ((_d: any) => React.ReactNode);\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 over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\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 /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function ParetoChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n padding,\r\n lineColor = Colors.light.categoricalColors.colors[1],\r\n barColor = Colors.light.categoricalColors.colors[0],\r\n sameAxes = false,\r\n backgroundColor = false,\r\n leftMargin = 80,\r\n rightMargin = 80,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n lineAxisTitle = 'Line chart',\r\n barAxisTitle = 'Bar graph',\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n graphID,\r\n graphDownload = false,\r\n dataDownload = false,\r\n barPadding = 0.25,\r\n truncateBy = 999,\r\n showLabels = true,\r\n onSeriesMouseClick,\r\n language = 'en',\r\n colorLegendTitle,\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n showValues = true,\r\n noOfTicks = 5,\r\n lineSuffix = '',\r\n barSuffix = '',\r\n linePrefix = '',\r\n barPrefix = '',\r\n curveType = 'curve',\r\n styles,\r\n classNames,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n naLabel = 'NA',\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 620);\r\n setSvgHeight(height || entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 480);\r\n setSvgWidth(graphDiv.current.clientWidth || 620);\r\n if (!width) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height]);\r\n\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a pareto chart that shows a variable as bars and another as line chart.${\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 w-full gap-4 grow justify-between'>\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\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 graphDownload={graphDownload ? graphParentDiv.current : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n <div className='grow flex flex-col justify-center gap-3 w-full'>\r\n {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n <ColorLegend\r\n colorDomain={[barAxisTitle, lineAxisTitle]}\r\n colors={[\r\n barColor || Colors[theme].categoricalColors.colors[0],\r\n lineColor || Colors[theme].categoricalColors.colors[1],\r\n ]}\r\n colorLegendTitle={colorLegendTitle}\r\n showNAColor={false}\r\n />\r\n <div\r\n className='flex flex-col grow justify-center leading-0'\r\n ref={graphDiv}\r\n aria-label='Graph area'\r\n >\r\n {(width || svgWidth) && (height || svgHeight) ? (\r\n <Graph\r\n data={data}\r\n sameAxes={sameAxes}\r\n lineColor={lineColor}\r\n barColor={barColor}\r\n width={width || svgWidth}\r\n height={Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n )}\r\n truncateBy={truncateBy}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n axisTitles={[barAxisTitle, lineAxisTitle]}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n barPadding={barPadding}\r\n showLabels={showLabels}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n noOfTicks={noOfTicks}\r\n lineSuffix={lineSuffix}\r\n barSuffix={barSuffix}\r\n linePrefix={linePrefix}\r\n barPrefix={barPrefix}\r\n curveType={curveType}\r\n showValues={showValues}\r\n styles={styles}\r\n classNames={classNames}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["Graph","props","data","width","height","barColor","lineColor","axisTitles","sameAxes","rightMargin","leftMargin","topMargin","bottomMargin","tooltip","showValues","onSeriesMouseOver","barPadding","truncateBy","showLabels","onSeriesMouseClick","resetSelectionOnDoubleClick","detailsOnClick","noOfTicks","lineSuffix","barSuffix","linePrefix","barPrefix","curveType","styles","classNames","animate","precision","customLayers","naLabel","svgRef","useRef","isInView","useInView","curve","curveLinear","curveStep","curveStepAfter","curveStepBefore","curveMonotoneX","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","margin","graphWidth","graphHeight","dataWithId","d","i","x","scaleBand","minParam1","minParam2","maxParam1","maxParam2","minParam","maxParam","y1","scaleLinear","y2","lineShape","line","checkIfNullOrUndefined","y1Ticks","y2Ticks","jsxs","Fragment","jsx","motion","cn","numberFormattingFunction","Axis","AxisTitle","AnimatePresence","event","isEqual","XAxesLabels","Tooltip","Modal","string2HTML","ParetoChart","graphTitle","sources","graphDescription","footNote","padding","Colors","backgroundColor","lineAxisTitle","barAxisTitle","relativeHeight","graphID","graphDownload","dataDownload","language","colorLegendTitle","minHeight","theme","ariaLabel","svgWidth","setSvgWidth","svgHeight","setSvgHeight","graphDiv","graphParentDiv","useEffect","resizeObserver","entries","GraphHeader","EmptyState","ColorLegend","GraphFooter"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-CHPV5EwG-DDoeWRVt.cjs"),f=require("react"),xt=require("./index-CZbIGs8q.cjs"),wt=require("./index-BXns0-ng.cjs"),bt=require("./Modal-C_dl0EtQ.cjs"),Et=require("./Tooltip-n8z5bfav.cjs"),q=require("./Colors.cjs"),dt=require("./numberFormattingFunction-02t-wJta.cjs"),kt=require("./string2HTML-D2Avudmb.cjs"),N=require("./checkIfNullOrUndefined-BCW3Y1ML.cjs"),Rt=require("./use-in-view-BCmzDU2O.cjs"),pt=require("./linear-BVckp9RD.cjs"),mt=require("./line-DHV4JwCR.cjs"),W=require("./proxy-PQd2AItT.cjs"),Ct=require("./index-DVOJ7vxH.cjs"),It=require("./GraphFooter.cjs"),St=require("./GraphHeader.cjs"),Nt=require("./EmptyState-d8_8SxeW.cjs"),Ot=require("./ColorLegendWithMouseOver.cjs");var Pt=gt(mt.curveLinear);function ft(t){this._curve=t}ft.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};function gt(t){function e(r){return new ft(t(r))}return e._curve=t,e}function Tt(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(r){return arguments.length?e(gt(r)):e()._curve},t}function $t(){return Tt(mt.line().curve(Pt))}function it(){}function ht(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function _t(t,e){this._context=t,this._k=(1-e)/6}_t.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:ht(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:ht(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};(function t(e){function r(c){return new _t(c,e)}return r.tension=function(c){return t(+c)},r})(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:it,areaEnd:it,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:ht(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const qt=function t(e){function r(c){return new yt(c,e)}return r.tension=function(c){return t(+c)},r}(0);function vt(t){this._context=t}vt.prototype={areaStart:it,areaEnd:it,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function Vt(t){return new vt(t)}function Dt(t){const{data:e,radius:r,lineColors:c,tooltip:k,onSeriesMouseOver:V,onSeriesMouseClick:M,colorDomain:u,detailsOnClick:j,styles:y,classNames:d,selectedColor:O,axisLabels:G,strokeWidth:et,showValues:nt,showDots:st,rightMargin:ot,topMargin:U,bottomMargin:rt,leftMargin:D,curveType:X,noOfTicks:Y,minValue:P,maxValue:T,resetSelectionOnDoubleClick:at,fillShape:h,highlightedLines:g,animate:x,dimmedOpacity:_,precision:R,customLayers:z}=t,B=f.useRef(null),$=Rt.useInView(B,{once:x.once,amount:x.amount}),w=X==="linear"?Vt:qt,b={top:U,left:D},v=Math.min((2*r-D-ot)/2,(2*r-U-rt)/2),[E,L]=f.useState(void 0),[C,A]=f.useState(void 0),[J,H]=f.useState(void 0),[K,F]=f.useState(void 0),l=pt.linear().domain([0,e[0].values.length]).range([0,2*Math.PI]),Q=N.checkIfNullOrUndefined(T)?Math.max(...e.map(i=>Math.max(...i.values.filter(s=>!N.checkIfNullOrUndefined(s)))))<0?0:Math.max(...e.map(i=>Math.max(...i.values.filter(s=>!N.checkIfNullOrUndefined(s))))):T,lt=N.checkIfNullOrUndefined(P)?Math.min(...e.map(i=>Math.min(...i.values.filter(s=>!N.checkIfNullOrUndefined(s)))))>=0?0:Math.min(...e.map(i=>Math.min(...i.values.filter(s=>!N.checkIfNullOrUndefined(s))))):P,p=pt.linear().domain([lt,Q]).range([0,v]).nice(),ct=p.ticks(Y),I=$t().radius(i=>p(i)).angle((i,s)=>l(s)).curve(w);return n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[n.jsxRuntimeExports.jsx(W.motion.svg,{width:`${r*2}px`,height:`${r*2}px`,viewBox:`0 0 ${r*2} ${r*2}`,direction:"ltr",ref:B,children:n.jsxRuntimeExports.jsxs("g",{transform:`translate(${b.left},${b.top})`,children:[z.filter(i=>i.position==="before").map(i=>i.layer),n.jsxRuntimeExports.jsxs("g",{transform:`translate(${v},${v})`,children:[G.map((i,s)=>n.jsxRuntimeExports.jsxs("g",{children:[n.jsxRuntimeExports.jsx("line",{x1:0,y1:0,x2:Math.cos(l(s)-Math.PI/2)*v,y2:Math.sin(l(s)-Math.PI/2)*v,className:n.mo("stroke-1 stroke-primary-gray-500 dark:stroke-primary-gray-550",d?.xAxis?.axis),style:y?.xAxis?.axis},s),n.jsxRuntimeExports.jsx("text",{x:Math.cos(l(s)-Math.PI/2)*(v+6),y:Math.sin(l(s)-Math.PI/2)*(v+6),style:{textAnchor:Math.cos(l(s)-Math.PI/2)<0?"end":Math.cos(l(s)-Math.PI/2)<1e-5?"middle":"start",...y?.xAxis?.labels||""},dy:Math.sin(l(s)-Math.PI/2)<0?0:Math.sin(l(s)-Math.PI/2)<1e-5?5:10,className:n.mo("fill-primary-gray-700 dark:fill-primary-gray-300 text-xs",d?.xAxis?.labels),children:i})]},s)),ct.map((i,s)=>n.jsxRuntimeExports.jsxs("g",{children:[n.jsxRuntimeExports.jsx("path",{d:I(Array(G.length).fill(i))||"",className:n.mo("stroke-primary-gray-500 dark:stroke-primary-gray-550",d?.xAxis?.gridLines),style:{...y?.xAxis?.gridLines,fill:"none"}}),n.jsxRuntimeExports.jsx("foreignObject",{x:-25,y:Math.sin(-Math.PI/2)*p(i)>-1e-4?Math.sin(-Math.PI/2)*p(i)-7:Math.sin(-Math.PI/2)*p(i)-5,width:50,height:12,children:n.jsxRuntimeExports.jsx("div",{className:"flex justify-center",children:n.jsxRuntimeExports.jsx("p",{className:n.mo("fill-primary-gray-500 dark:fill-primary-gray-550 text-xs m-0 py-0 px-1.5 text-center leading-none bg-primary-white dark:bg-primary-gray-700",d?.xAxis?.labels),style:y?.xAxis?.labels,children:dt.numberFormattingFunction(i,"NA",R)})})})]},s)),n.jsxRuntimeExports.jsx(Ct.AnimatePresence,{children:e.map((i,s)=>n.jsxRuntimeExports.jsxs(W.motion.g,{variants:{initial:{opacity:E?i.label===E.label?1:_:O?i.color&&c[u.indexOf(i.color)]===O?1:_:g.length!==0?i.label&&g.indexOf(i.label)!==-1?1:.3:1},whileInView:{opacity:E?i.label===E.label?1:_:O?i.color&&c[u.indexOf(i.color)]===O?1:_:g.length!==0?i.label&&g.indexOf(i.label)!==-1?1:_:1,transition:{duration:x.duration}}},initial:"initial",animate:$?"whileInView":"initial",exit:{opacity:0,transition:{duration:x.duration}},onMouseEnter:a=>{L(i),F(a.clientY),H(a.clientX),V?.(i)},onMouseMove:a=>{L(i),F(a.clientY),H(a.clientX)},onMouseLeave:()=>{L(void 0),H(void 0),F(void 0),V?.(void 0)},onClick:()=>{(M||j)&&(wt.isEqual(C,i)&&at?(A(void 0),M?.(void 0)):(A(i),M?.(i)))},children:[n.jsxRuntimeExports.jsx(W.motion.path,{d:I(i.values)||"",variants:{initial:{d:I(i.values.map(a=>0))||""},whileInView:{d:I(i.values)||"",transition:{duration:x.duration}}},initial:"initial",animate:$?"whileInView":"initial",exit:{opacity:0,transition:{duration:x.duration}},style:{stroke:e.filter(a=>a.color).length===0?c[0]:i.color?c[u.indexOf(i.color)]:q.Colors.gray,fill:h?e.filter(a=>a.color).length===0?c[0]:i.color?c[u.indexOf(i.color)]:q.Colors.gray:"none",fillOpacity:.1,strokeWidth:et}}),n.jsxRuntimeExports.jsx("g",{children:i.values.map((a,m)=>n.jsxRuntimeExports.jsx("g",{children:N.checkIfNullOrUndefined(a)?null:n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[st?n.jsxRuntimeExports.jsx(W.motion.circle,{cx:Math.cos(l(m)-Math.PI/2)*p(a),cy:Math.sin(l(m)-Math.PI/2)*p(a),r:4,style:{fill:e.filter(Z=>Z.color).length===0?c[0]:i.color?c[u.indexOf(i.color)]:q.Colors.gray},variants:{initial:{cx:0,cy:0,opacity:0},whileInView:{cx:Math.cos(l(m)-Math.PI/2)*p(a),cy:Math.sin(l(m)-Math.PI/2)*p(a),opacity:1,transition:{duration:x.duration}}},initial:"initial",animate:$?"whileInView":"initial",exit:{opacity:0,transition:{duration:x.duration}}}):null,nt?n.jsxRuntimeExports.jsx(W.motion.text,{x:Math.cos(l(m)-Math.PI/2)*(p(a)+6),y:Math.sin(l(m)-Math.PI/2)*(p(a)+6),style:{fill:c[s],textAnchor:Math.cos(l(m)-Math.PI/2)<0?"end":Math.cos(l(m)-Math.PI/2)<1e-5?"middle":"start",...y?.graphObjectValues||{}},dy:Math.sin(l(m)-Math.PI/2)<0?10:(Math.sin(l(m)-Math.PI/2)<1e-5,0),className:n.mo("graph-value text-xs font-bold",d?.graphObjectValues),variants:{initial:{opacity:0},whileInView:{opacity:1,transition:{duration:x.duration}}},initial:"initial",animate:$?"whileInView":"initial",exit:{opacity:0,transition:{duration:x.duration}},children:dt.numberFormattingFunction(a,"NA",R)}):null]})},m))})]},i.label||s))})]}),z.filter(i=>i.position==="after").map(i=>i.layer)]})}),E&&k&&J&&K?n.jsxRuntimeExports.jsx(Et.Tooltip,{data:E,body:k,xPos:J,yPos:K,backgroundStyle:y?.tooltip,className:d?.tooltip}):null,j&&C!==void 0?n.jsxRuntimeExports.jsx(bt.X,{open:C!==void 0,onClose:()=>{A(void 0)},children:n.jsxRuntimeExports.jsx("div",{className:"graph-modal-content m-0",dangerouslySetInnerHTML:typeof j=="string"?{__html:kt.string2HTML(j,C)}:void 0,children:typeof j=="function"?j(C):null})}):null]})}function Lt(t){const{graphTitle:e,colors:r,sources:c,graphDescription:k,footNote:V,radius:M,data:u,showColorScale:j=!0,padding:y,backgroundColor:d=!1,tooltip:O,onSeriesMouseOver:G,graphID:et,onSeriesMouseClick:nt,topMargin:st=75,bottomMargin:ot=75,leftMargin:U=75,rightMargin:rt=75,graphDownload:D=!1,dataDownload:X=!1,colorDomain:Y,language:P="en",theme:T="light",highlightedLines:at=[],width:h,height:g,minHeight:x=0,strokeWidth:_=2,relativeHeight:R,ariaLabel:z,colorLegendTitle:B,detailsOnClick:$,styles:w,classNames:b,showNAColor:v=!0,axisLabels:E,showDots:L=!0,showValues:C=!1,curveType:A="curve",noOfTicks:J=5,minValue:H,maxValue:K,fillShape:F=!1,resetSelectionOnDoubleClick:l=!0,animate:Q=!1,dimmedOpacity:lt=.3,precision:p=2,customLayers:ct=[]}=t,[I,i]=f.useState(0),[s,a]=f.useState(0),[m,Z]=f.useState(0),[Mt,jt]=f.useState(void 0),S=f.useRef(null),ut=f.useRef(null);return f.useEffect(()=>{const o=new ResizeObserver(tt=>{a(h||tt[0].target.clientWidth||420),Z(g||tt[0].target.clientHeight||420),i((Math.min(h||tt[0].target.clientWidth||620,g||tt[0].target.clientHeight||480)||420)/2)});return S.current&&(Z(S.current.clientHeight||420),a(S.current.clientWidth||420),i((Math.min(S.current.clientWidth,S.current.clientHeight)||420)/2),(!h||!M)&&o.observe(S.current)),()=>o.disconnect()},[h,g,M]),n.jsxRuntimeExports.jsx("div",{className:`${T||"light"} flex ${h?"w-fit grow-0":"w-full grow"}`,dir:P==="he"||P==="ar"?"rtl":void 0,children:n.jsxRuntimeExports.jsx("div",{className:n.mo(`${d?d===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}ml-auto mr-auto flex flex-col grow h-inherit ${P||"en"}`,b?.graphContainer),style:{...w?.graphContainer||{},minHeight:"inherit",...d&&d!==!0?{backgroundColor:d}:{}},id:et,ref:ut,"aria-label":z||`${e?`The graph shows ${e}. `:""}This is a donut or pie chart chart. ${k?` ${k}`:""}`,children:n.jsxRuntimeExports.jsx("div",{className:"flex grow",style:{padding:d?y||"1rem":y||0},children:n.jsxRuntimeExports.jsxs("div",{className:"flex flex-col gap-2 w-full grow justify-between",children:[e||k||D||X?n.jsxRuntimeExports.jsx(St.GraphHeader,{styles:{title:w?.title,description:w?.description},classNames:{title:b?.title,description:b?.description},graphTitle:e,graphDescription:k,width:h,graphDownload:D?ut.current:void 0,dataDownload:X?u.map(o=>o.data).filter(o=>o!==void 0).length>0?u.map(o=>o.data).filter(o=>o!==void 0):u.filter(o=>o!==void 0):null}):null,n.jsxRuntimeExports.jsx("div",{className:"flex grow flex-col justify-center items-stretch gap-8 flex-wrap",style:{width:h?`${h}px`:"100%"},children:u.length===0?n.jsxRuntimeExports.jsx(Nt.EmptyState,{}):n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[j&&u.filter(o=>o.color).length!==0?n.jsxRuntimeExports.jsx(Ot.ColorLegendWithMouseOver,{width:h,colorLegendTitle:B,colors:r||q.Colors[T].categoricalColors.colors,colorDomain:Y||xt.uniqBy(u.filter(o=>o.color),"color").map(o=>o.color),setSelectedColor:jt,showNAColor:v}):null,n.jsxRuntimeExports.jsx("div",{className:`flex ${h?"grow-0":"grow"} items-center justify-center leading-0`,style:{width:h?`${h}px`:"100%",height:g?`${Math.max(x,g||(R?x?(h||s)*R>x?(h||s)*R:x:(h||s)*R:m))}px`:"auto"},ref:S,"aria-label":"Graph area",children:n.jsxRuntimeExports.jsx("div",{className:"w-full flex justify-center leading-0",children:M||I?n.jsxRuntimeExports.jsx(Dt,{data:u,lineColors:u.filter(o=>o.color).length===0?r?[r]:[q.Colors.primaryColors["blue-600"]]:r||q.Colors[T].categoricalColors.colors,radius:M||I,tooltip:O,colorDomain:Y||xt.uniqBy(u.filter(o=>o.color),"color").map(o=>o.color),onSeriesMouseOver:G,onSeriesMouseClick:nt,styles:w,detailsOnClick:$,selectedColor:Mt,axisLabels:E,strokeWidth:_,showValues:C,showDots:L,topMargin:st,bottomMargin:ot,leftMargin:U,rightMargin:rt,curveType:A,noOfTicks:J,minValue:H,maxValue:K,fillShape:F,highlightedLines:at,resetSelectionOnDoubleClick:l,animate:Q===!0?{duration:.5,once:!0,amount:.5}:Q||{duration:0,once:!0,amount:0},dimmedOpacity:lt,precision:p,customLayers:ct}):null})})]})}),c||V?n.jsxRuntimeExports.jsx(It.GraphFooter,{styles:{footnote:w?.footnote,source:w?.source},classNames:{footnote:b?.footnote,source:b?.source},sources:c,footNote:V,width:h}):n.jsxRuntimeExports.jsx("div",{})]})})})})}exports.RadarChart=Lt;
|
|
2
|
+
//# sourceMappingURL=RadarChart.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadarChart.cjs","sources":["../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/linearClosed.js","../src/Components/Graphs/RadarChart/Graph.tsx","../src/Components/Graphs/RadarChart/index.tsx"],"sourcesContent":["import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport isEqual from 'fast-deep-equal';\r\nimport { lineRadial, curveLinearClosed, curveCardinalClosed } from 'd3-shape';\r\nimport { useRef, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { Modal } from '@undp/design-system-react/Modal';\r\nimport { scaleLinear } from 'd3-scale';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n RadarChartDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { string2HTML } from '@/Utils/string2HTML';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\n\r\ninterface Props {\r\n radius: number;\r\n lineColors: string[];\r\n axisLabels: (string | number)[];\r\n data: RadarChartDataType[];\r\n\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n selectedColor?: string;\r\n onSeriesMouseOver?: (_d: any) => void;\r\n onSeriesMouseClick?: (_d: any) => void;\r\n colorDomain: string[];\r\n\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n strokeWidth: number;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n showValues: boolean;\r\n showDots: boolean;\r\n topMargin: number;\r\n bottomMargin: number;\r\n leftMargin: number;\r\n rightMargin: number;\r\n curveType: 'linear' | 'curve';\r\n noOfTicks: number;\r\n maxValue?: number;\r\n minValue?: number;\r\n fillShape: boolean;\r\n resetSelectionOnDoubleClick: boolean;\r\n highlightedLines: (string | number)[];\r\n animate: AnimateDataType;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n radius,\r\n lineColors,\r\n tooltip,\r\n onSeriesMouseOver,\r\n onSeriesMouseClick,\r\n colorDomain,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n selectedColor,\r\n axisLabels,\r\n strokeWidth,\r\n showValues,\r\n showDots,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n curveType,\r\n noOfTicks,\r\n minValue,\r\n maxValue,\r\n resetSelectionOnDoubleClick,\r\n fillShape,\r\n highlightedLines,\r\n animate,\r\n dimmedOpacity,\r\n precision,\r\n customLayers,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const curve = curveType === 'linear' ? curveLinearClosed : curveCardinalClosed;\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\r\n const radiusWithoutMargin = Math.min(\r\n (2 * radius - leftMargin - rightMargin) / 2,\r\n (2 * radius - topMargin - bottomMargin) / 2,\r\n );\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const angleScale = scaleLinear()\r\n .domain([0, data[0].values.length])\r\n .range([0, 2 * Math.PI]);\r\n\r\n const maxVal = !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(\r\n ...data.map(d =>\r\n Math.max(...(d.values.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n ) < 0\r\n ? 0\r\n : Math.max(\r\n ...data.map(d =>\r\n Math.max(...(d.values.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n );\r\n\r\n const minVal = !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(\r\n ...data.map(d =>\r\n Math.min(...(d.values.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n ) >= 0\r\n ? 0\r\n : Math.min(\r\n ...data.map(d =>\r\n Math.min(...(d.values.filter(l => !checkIfNullOrUndefined(l)) as number[])),\r\n ),\r\n );\r\n const scale = scaleLinear().domain([minVal, maxVal]).range([0, radiusWithoutMargin]).nice();\r\n const ticksArray = scale.ticks(noOfTicks);\r\n const lineShape = lineRadial<number>()\r\n .radius(d => scale(d))\r\n .angle((_, i) => angleScale(i))\r\n .curve(curve);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${radius * 2}px`}\r\n height={`${radius * 2}px`}\r\n viewBox={`0 0 ${radius * 2} ${radius * 2}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g transform={`translate(${radiusWithoutMargin},${radiusWithoutMargin})`}>\r\n {axisLabels.map((d, i) => (\r\n <g key={i}>\r\n <line\r\n x1={0}\r\n y1={0}\r\n x2={Math.cos(angleScale(i) - Math.PI / 2) * radiusWithoutMargin}\r\n y2={Math.sin(angleScale(i) - Math.PI / 2) * radiusWithoutMargin}\r\n key={i}\r\n className={cn(\r\n 'stroke-1 stroke-primary-gray-500 dark:stroke-primary-gray-550',\r\n classNames?.xAxis?.axis,\r\n )}\r\n style={styles?.xAxis?.axis}\r\n />\r\n <text\r\n x={Math.cos(angleScale(i) - Math.PI / 2) * (radiusWithoutMargin + 6)}\r\n y={Math.sin(angleScale(i) - Math.PI / 2) * (radiusWithoutMargin + 6)}\r\n style={{\r\n textAnchor:\r\n Math.cos(angleScale(i) - Math.PI / 2) < 0\r\n ? 'end'\r\n : Math.cos(angleScale(i) - Math.PI / 2) < 0.00001\r\n ? 'middle'\r\n : 'start',\r\n ...(styles?.xAxis?.labels || ''),\r\n }}\r\n dy={\r\n Math.sin(angleScale(i) - Math.PI / 2) < 0\r\n ? 0\r\n : Math.sin(angleScale(i) - Math.PI / 2) < 0.00001\r\n ? 5\r\n : 10\r\n }\r\n className={cn(\r\n 'fill-primary-gray-700 dark:fill-primary-gray-300 text-xs',\r\n classNames?.xAxis?.labels,\r\n )}\r\n >\r\n {d}\r\n </text>\r\n </g>\r\n ))}\r\n {ticksArray.map((d, i) => (\r\n <g key={i}>\r\n <path\r\n d={lineShape(Array(axisLabels.length).fill(d)) || ''}\r\n className={cn(\r\n 'stroke-primary-gray-500 dark:stroke-primary-gray-550',\r\n classNames?.xAxis?.gridLines,\r\n )}\r\n style={{\r\n ...styles?.xAxis?.gridLines,\r\n fill: 'none',\r\n }}\r\n />\r\n <foreignObject\r\n x={-25}\r\n y={\r\n Math.sin(-Math.PI / 2) * scale(d) > -0.0001\r\n ? Math.sin(-Math.PI / 2) * scale(d) - 7\r\n : Math.sin(-Math.PI / 2) * scale(d) - 5\r\n }\r\n width={50}\r\n height={12}\r\n >\r\n <div className='flex justify-center'>\r\n <p\r\n className={cn(\r\n 'fill-primary-gray-500 dark:fill-primary-gray-550 text-xs m-0 py-0 px-1.5 text-center leading-none bg-primary-white dark:bg-primary-gray-700',\r\n classNames?.xAxis?.labels,\r\n )}\r\n style={styles?.xAxis?.labels}\r\n >\r\n {numberFormattingFunction(d, 'NA', precision)}\r\n </p>\r\n </div>\r\n </foreignObject>\r\n </g>\r\n ))}\r\n <AnimatePresence>\r\n {data.map((d, i) => (\r\n <motion.g\r\n key={d.label || i}\r\n variants={{\r\n initial: {\r\n opacity: mouseOverData\r\n ? d.label === mouseOverData.label\r\n ? 1\r\n : dimmedOpacity\r\n : selectedColor\r\n ? d.color\r\n ? lineColors[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedLines.length !== 0\r\n ? d.label\r\n ? highlightedLines.indexOf(d.label) !== -1\r\n ? 1\r\n : 0.3\r\n : 0.3\r\n : 1,\r\n },\r\n whileInView: {\r\n opacity: mouseOverData\r\n ? d.label === mouseOverData.label\r\n ? 1\r\n : dimmedOpacity\r\n : selectedColor\r\n ? d.color\r\n ? lineColors[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedLines.length !== 0\r\n ? d.label\r\n ? highlightedLines.indexOf(d.label) !== -1\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n >\r\n <motion.path\r\n d={lineShape(d.values) || ''}\r\n variants={{\r\n initial: { d: lineShape(d.values.map(_el => 0)) || '' },\r\n whileInView: {\r\n d: lineShape(d.values) || '',\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n style={{\r\n stroke:\r\n data.filter(el => el.color).length === 0\r\n ? lineColors[0]\r\n : !d.color\r\n ? Colors.gray\r\n : lineColors[colorDomain.indexOf(d.color)],\r\n fill: fillShape\r\n ? data.filter(el => el.color).length === 0\r\n ? lineColors[0]\r\n : !d.color\r\n ? Colors.gray\r\n : lineColors[colorDomain.indexOf(d.color)]\r\n : 'none',\r\n fillOpacity: 0.1,\r\n strokeWidth,\r\n }}\r\n />\r\n <g>\r\n {d.values.map((el, j) => (\r\n <g key={j}>\r\n {!checkIfNullOrUndefined(el) ? (\r\n <>\r\n {showDots ? (\r\n <motion.circle\r\n cx={Math.cos(angleScale(j) - Math.PI / 2) * scale(el)}\r\n cy={Math.sin(angleScale(j) - Math.PI / 2) * scale(el)}\r\n r={4}\r\n style={{\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? lineColors[0]\r\n : !d.color\r\n ? Colors.gray\r\n : lineColors[colorDomain.indexOf(d.color)],\r\n }}\r\n variants={{\r\n initial: { cx: 0, cy: 0, opacity: 0 },\r\n whileInView: {\r\n cx: Math.cos(angleScale(j) - Math.PI / 2) * scale(el),\r\n cy: Math.sin(angleScale(j) - Math.PI / 2) * scale(el),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n x={Math.cos(angleScale(j) - Math.PI / 2) * (scale(el) + 6)}\r\n y={Math.sin(angleScale(j) - Math.PI / 2) * (scale(el) + 6)}\r\n style={{\r\n fill: lineColors[i],\r\n textAnchor:\r\n Math.cos(angleScale(j) - Math.PI / 2) < 0\r\n ? 'end'\r\n : Math.cos(angleScale(j) - Math.PI / 2) < 0.00001\r\n ? 'middle'\r\n : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n dy={\r\n Math.sin(angleScale(j) - Math.PI / 2) < 0\r\n ? 10\r\n : Math.sin(angleScale(j) - Math.PI / 2) < 0.00001\r\n ? 0\r\n : 0\r\n }\r\n className={cn(\r\n 'graph-value text-xs font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n variants={{\r\n initial: { opacity: 0 },\r\n whileInView: {\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n >\r\n {numberFormattingFunction(el, 'NA', precision)}\r\n </motion.text>\r\n ) : null}\r\n </>\r\n ) : null}\r\n </g>\r\n ))}\r\n </g>\r\n </motion.g>\r\n ))}\r\n </AnimatePresence>\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <Modal\r\n open={mouseClickData !== undefined}\r\n onClose={() => {\r\n setMouseClickData(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, mouseClickData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(mouseClickData) : null}\r\n </div>\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport uniqBy from 'lodash.uniqby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n RadarChartDataType,\r\n Languages,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: RadarChartDataType[];\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 /** Color or array of colors for each line */\r\n colors?: string | string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: string[];\r\n /** Title for the color legend */\r\n colorLegendTitle?: 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 /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Radius of the radar chart */\r\n radius?: number;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n\r\n // Values and Ticks\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Toggle visibility of dots on the line */\r\n showDots?: boolean;\r\n /** Stroke width of the line */\r\n strokeWidth?: number;\r\n /** Toggle is the shape is filled or not */\r\n fillShape?: boolean;\r\n /** No. of ticks on the x-axis */\r\n noOfTicks?: number;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Toggle visibility of NA color in the color scale. This is only applicable if the data props hae color parameter and showColorScale prop is true */\r\n showNAColor?: boolean;\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedLines?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Labels for the axes */\r\n axisLabels: (string | number)[];\r\n /** Curve type for the line */\r\n curveType?: 'linear' | 'curve';\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. 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 tooltip?: string | ((_d: any) => React.ReactNode);\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 over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\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 /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function RadarChart(props: Props) {\r\n const {\r\n graphTitle,\r\n colors,\r\n sources,\r\n graphDescription,\r\n footNote,\r\n radius,\r\n data,\r\n showColorScale = true,\r\n padding,\r\n backgroundColor = false,\r\n tooltip,\r\n onSeriesMouseOver,\r\n graphID,\r\n onSeriesMouseClick,\r\n topMargin = 75,\r\n bottomMargin = 75,\r\n leftMargin = 75,\r\n rightMargin = 75,\r\n graphDownload = false,\r\n dataDownload = false,\r\n colorDomain,\r\n language = 'en',\r\n theme = 'light',\r\n highlightedLines = [],\r\n width,\r\n height,\r\n minHeight = 0,\r\n strokeWidth = 2,\r\n relativeHeight,\r\n ariaLabel,\r\n colorLegendTitle,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n showNAColor = true,\r\n axisLabels,\r\n showDots = true,\r\n showValues = false,\r\n curveType = 'curve',\r\n noOfTicks = 5,\r\n minValue,\r\n maxValue,\r\n fillShape = false,\r\n resetSelectionOnDoubleClick = true,\r\n animate = false,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n } = props;\r\n\r\n const [graphRadius, setGraphRadius] = useState(0);\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [selectedColor, setSelectedColor] = useState<string | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(width || entries[0].target.clientWidth || 420);\r\n setSvgHeight(height || entries[0].target.clientHeight || 420);\r\n setGraphRadius(\r\n (Math.min(\r\n ...[\r\n width || entries[0].target.clientWidth || 620,\r\n height || entries[0].target.clientHeight || 480,\r\n ],\r\n ) || 420) / 2,\r\n );\r\n });\r\n if (graphDiv.current) {\r\n setSvgHeight(graphDiv.current.clientHeight || 420);\r\n setSvgWidth(graphDiv.current.clientWidth || 420);\r\n setGraphRadius(\r\n (Math.min(...[graphDiv.current.clientWidth, graphDiv.current.clientHeight]) || 420) / 2,\r\n );\r\n if (!width || !radius) resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [width, height, radius]);\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex ${width ? 'w-fit grow-0' : 'w-full grow'}`}\r\n dir={language === 'he' || language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={cn(\r\n `${\r\n !backgroundColor\r\n ? 'bg-transparent '\r\n : backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${language || 'en'}`,\r\n classNames?.graphContainer,\r\n )}\r\n style={{\r\n ...(styles?.graphContainer || {}),\r\n minHeight: 'inherit',\r\n ...(backgroundColor && backgroundColor !== true ? { backgroundColor } : {}),\r\n }}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n ariaLabel ||\r\n `${\r\n graphTitle ? `The graph shows ${graphTitle}. ` : ''\r\n }This is a donut or pie chart chart. ${graphDescription ? ` ${graphDescription}` : ''}`\r\n }\r\n >\r\n <div\r\n className='flex grow'\r\n style={{ padding: backgroundColor ? padding || '1rem' : padding || 0 }}\r\n >\r\n <div className='flex flex-col gap-2 w-full grow justify-between'>\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\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 graphDownload={graphDownload ? graphParentDiv.current : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n <div\r\n className='flex grow flex-col justify-center items-stretch gap-8 flex-wrap'\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n }}\r\n >\r\n {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorScale && data.filter(el => el.color).length !== 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorLegendTitle={colorLegendTitle}\r\n colors={\r\n (colors as string[] | undefined) || Colors[theme].categoricalColors.colors\r\n }\r\n colorDomain={\r\n colorDomain ||\r\n (uniqBy(\r\n data.filter(el => el.color),\r\n 'color',\r\n ).map(d => d.color) as string[])\r\n }\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={showNAColor}\r\n />\r\n ) : null}\r\n <div\r\n className={`flex ${\r\n width ? 'grow-0' : 'grow'\r\n } items-center justify-center leading-0`}\r\n style={{\r\n width: width ? `${width}px` : '100%',\r\n height: height\r\n ? `${Math.max(\r\n minHeight,\r\n height ||\r\n (relativeHeight\r\n ? minHeight\r\n ? (width || svgWidth) * relativeHeight > minHeight\r\n ? (width || svgWidth) * relativeHeight\r\n : minHeight\r\n : (width || svgWidth) * relativeHeight\r\n : svgHeight),\r\n )}px`\r\n : 'auto',\r\n }}\r\n ref={graphDiv}\r\n aria-label='Graph area'\r\n >\r\n <div className='w-full flex justify-center leading-0'>\r\n {radius || graphRadius ? (\r\n <Graph\r\n data={data}\r\n lineColors={\r\n data.filter(el => el.color).length === 0\r\n ? colors\r\n ? [colors as string]\r\n : [Colors.primaryColors['blue-600']]\r\n : (colors as string[] | undefined) ||\r\n Colors[theme].categoricalColors.colors\r\n }\r\n radius={radius || graphRadius}\r\n tooltip={tooltip}\r\n colorDomain={\r\n colorDomain ||\r\n (uniqBy(\r\n data.filter(el => el.color),\r\n 'color',\r\n ).map(d => d.color) as string[])\r\n }\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n selectedColor={selectedColor}\r\n axisLabels={axisLabels}\r\n strokeWidth={strokeWidth}\r\n showValues={showValues}\r\n showDots={showDots}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n curveType={curveType}\r\n noOfTicks={noOfTicks}\r\n minValue={minValue}\r\n maxValue={maxValue}\r\n fillShape={fillShape}\r\n highlightedLines={highlightedLines}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : (\r\n <div />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["curveRadialLinear","curveRadial","curveLinear","Radial","curve","a","r","radial","context","lineRadial","l","c","_","lineRadial$1","line","noop","point","that","x","y","Cardinal","tension","custom","cardinal","CardinalClosed","curveCardinalClosed","LinearClosed","curveLinearClosed","Graph","props","data","radius","lineColors","tooltip","onSeriesMouseOver","onSeriesMouseClick","colorDomain","detailsOnClick","styles","classNames","selectedColor","axisLabels","strokeWidth","showValues","showDots","rightMargin","topMargin","bottomMargin","leftMargin","curveType","noOfTicks","minValue","maxValue","resetSelectionOnDoubleClick","fillShape","highlightedLines","animate","dimmedOpacity","precision","customLayers","svgRef","useRef","isInView","useInView","margin","radiusWithoutMargin","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","angleScale","scaleLinear","maxVal","checkIfNullOrUndefined","d","minVal","scale","ticksArray","lineShape","i","jsxs","Fragment","jsx","motion","cn","numberFormattingFunction","AnimatePresence","event","isEqual","_el","el","Colors","j","Tooltip","Modal","string2HTML","RadarChart","graphTitle","colors","sources","graphDescription","footNote","showColorScale","padding","backgroundColor","graphID","graphDownload","dataDownload","language","theme","width","height","minHeight","relativeHeight","ariaLabel","colorLegendTitle","showNAColor","graphRadius","setGraphRadius","svgWidth","setSvgWidth","svgHeight","setSvgHeight","setSelectedColor","graphDiv","graphParentDiv","useEffect","resizeObserver","entries","GraphHeader","EmptyState","ColorLegendWithMouseOver","uniqBy","GraphFooter"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|