@undp/data-viz 2.4.1 → 2.5.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 +1 -1
- package/dist/AreaChart.cjs.map +1 -1
- package/dist/AreaChart.d.ts +11 -9
- package/dist/AreaChart.js +320 -322
- package/dist/AreaChart.js.map +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.d.ts +15 -25
- package/dist/BarGraph.js +1694 -1694
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +1 -1
- package/dist/BasicStatCard.cjs.map +1 -1
- package/dist/BasicStatCard.d.ts +13 -9
- package/dist/BasicStatCard.js +79 -81
- package/dist/BasicStatCard.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.d.ts +11 -9
- package/dist/BeeSwarmChart.js +335 -336
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.d.ts +13 -3
- package/dist/BiVariateChoroplethMap.js +309 -304
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.d.ts +11 -5
- package/dist/BulletChart.js +560 -559
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.d.ts +11 -9
- package/dist/ButterflyChart.js +348 -350
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.d.ts +11 -3
- package/dist/ChoroplethMap.js +314 -311
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.d.ts +11 -9
- package/dist/CirclePackingGraph.js +1 -1
- package/dist/DataCards.cjs +1 -1
- package/dist/DataCards.d.ts +1 -1
- package/dist/DataCards.js +1 -1
- package/dist/DataTable.cjs +1 -1
- package/dist/DataTable.cjs.map +1 -1
- package/dist/DataTable.d.ts +4 -5
- package/dist/DataTable.js +114 -116
- package/dist/DataTable.js.map +1 -1
- package/dist/{DetailsModal-jmmKRMRM.cjs → DetailsModal-Du8Fr1QD.cjs} +2 -2
- package/dist/{DetailsModal-jmmKRMRM.cjs.map → DetailsModal-Du8Fr1QD.cjs.map} +1 -1
- package/dist/{DetailsModal-B2XBWR7w.js → DetailsModal-GqEbGHY2.js} +2 -2
- package/dist/{DetailsModal-B2XBWR7w.js.map → DetailsModal-GqEbGHY2.js.map} +1 -1
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.cjs.map +1 -1
- package/dist/DifferenceLineChart.d.ts +11 -9
- package/dist/DifferenceLineChart.js +502 -504
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.cjs.map +1 -1
- package/dist/DonutChart.d.ts +14 -9
- package/dist/DonutChart.js +174 -179
- package/dist/DonutChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.d.ts +1 -1
- package/dist/DotDensityMap.js +270 -267
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.cjs.map +1 -1
- package/dist/DualAxisLineChart.d.ts +13 -9
- package/dist/DualAxisLineChart.js +341 -351
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.d.ts +11 -9
- package/dist/DumbbellChart.js +592 -593
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/GeoHubCompareMaps.cjs +1 -1
- package/dist/GeoHubCompareMaps.d.ts +1 -1
- package/dist/GeoHubCompareMaps.js +1 -1
- package/dist/GeoHubMap.cjs +1 -1
- package/dist/GeoHubMap.d.ts +1 -1
- package/dist/GeoHubMap.js +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
- package/dist/GeoHubMapWithLayerSelection.d.ts +1 -1
- package/dist/GeoHubMapWithLayerSelection.js +1 -1
- package/dist/GraphEl-BgkDbq50.cjs +2 -0
- package/dist/GraphEl-BgkDbq50.cjs.map +1 -0
- package/dist/GraphEl-Ch0uAeZw.js +1830 -0
- package/dist/GraphEl-Ch0uAeZw.js.map +1 -0
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.d.ts +29 -16
- package/dist/GriddedGraphs.js +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +29 -16
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.cjs.map +1 -1
- package/dist/HeatMap.d.ts +11 -9
- package/dist/HeatMap.js +203 -205
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.cjs.map +1 -1
- package/dist/Histogram.d.ts +11 -5
- package/dist/Histogram.js +88 -89
- package/dist/Histogram.js.map +1 -1
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.d.ts +11 -3
- package/dist/HybridMap.js +339 -336
- package/dist/HybridMap.js.map +1 -1
- package/dist/ImageDownloadButton.cjs +1 -1
- package/dist/ImageDownloadButton.js +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
- package/dist/LineChartWithConfidenceInterval.d.ts +11 -9
- package/dist/LineChartWithConfidenceInterval.js +393 -395
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/LinearColorLegend.cjs +1 -1
- package/dist/LinearColorLegend.js +1 -1
- package/dist/MultiGraphDashboard.d.ts +29 -16
- package/dist/MultiGraphDashboardFromConfig.d.ts +29 -16
- package/dist/MultiGraphDashboardWideToLongFormat.d.ts +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.d.ts +1 -1
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.d.ts +11 -9
- package/dist/MultiLineAltChart.js +411 -413
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.d.ts +11 -9
- package/dist/MultiLineChart.js +438 -440
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.cjs.map +1 -1
- package/dist/ParetoChart.d.ts +13 -13
- package/dist/ParetoChart.js +347 -355
- package/dist/ParetoChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +29 -16
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +29 -16
- package/dist/PerformanceIntensiveScrollStory.d.ts +29 -16
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.d.ts +11 -5
- package/dist/RadarChart.js +213 -213
- package/dist/RadarChart.js.map +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.cjs.map +1 -1
- package/dist/SankeyChart.d.ts +11 -9
- package/dist/SankeyChart.js +448 -450
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.d.ts +15 -13
- package/dist/ScatterPlot.js +477 -483
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.d.ts +29 -16
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.cjs.map +1 -1
- package/dist/SimpleLineChart.d.ts +11 -9
- package/dist/SimpleLineChart.js +362 -364
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.d.ts +29 -16
- package/dist/SingleGraphDashboard.js +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +29 -16
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +29 -16
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +29 -16
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +29 -16
- package/dist/SingleGraphDashboardThreeDGraphs.js +40 -39
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +29 -16
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.d.ts +1 -1
- package/dist/SlopeChart.js +2 -2
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.d.ts +1 -1
- package/dist/SparkLine.js +1 -1
- package/dist/StatCardFromData.cjs +1 -1
- package/dist/StatCardFromData.cjs.map +1 -1
- package/dist/StatCardFromData.d.ts +11 -9
- package/dist/StatCardFromData.js +113 -116
- package/dist/StatCardFromData.js.map +1 -1
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.d.ts +11 -9
- package/dist/StripChart.js +434 -435
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.d.ts +11 -3
- package/dist/ThreeDGlobe.js +143 -143
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.js +1 -1
- package/dist/{Tooltip-Bj-s__cI.js → Tooltip-3EYDVa3w.js} +2 -2
- package/dist/{Tooltip-Bj-s__cI.js.map → Tooltip-3EYDVa3w.js.map} +1 -1
- package/dist/{Tooltip-Hr46paWP.cjs → Tooltip-C9F3uYG0.cjs} +2 -2
- package/dist/{Tooltip-Hr46paWP.cjs.map → Tooltip-C9F3uYG0.cjs.map} +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.d.ts +11 -9
- package/dist/TreeMapGraph.js +369 -371
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/Types.d.ts +29 -16
- package/dist/UnitChart.cjs +1 -1
- package/dist/UnitChart.cjs.map +1 -1
- package/dist/UnitChart.d.ts +11 -5
- package/dist/UnitChart.js +118 -119
- package/dist/UnitChart.js.map +1 -1
- package/dist/WaterfallChart.cjs +1 -1
- package/dist/WaterfallChart.cjs.map +1 -1
- package/dist/WaterfallChart.d.ts +11 -9
- package/dist/WaterfallChart.js +306 -308
- package/dist/WaterfallChart.js.map +1 -1
- package/dist/XTicksAndGridLines-B4UhDVyU.cjs +2 -0
- package/dist/XTicksAndGridLines-B4UhDVyU.cjs.map +1 -0
- package/dist/XTicksAndGridLines-CkYwVshF.js +40 -0
- package/dist/XTicksAndGridLines-CkYwVshF.js.map +1 -0
- package/dist/YTicksAndGridLines-BbujwxOB.js +40 -0
- package/dist/YTicksAndGridLines-BbujwxOB.js.map +1 -0
- package/dist/YTicksAndGridLines-sT3zdCs6.cjs +2 -0
- package/dist/YTicksAndGridLines-sT3zdCs6.cjs.map +1 -0
- package/dist/{imageDownload-Diofs_vY.js → imageDownload-BYsNEtMS.js} +11 -11
- package/dist/{imageDownload-Diofs_vY.js.map → imageDownload-BYsNEtMS.js.map} +1 -1
- package/dist/{imageDownload-61q6jyJW.cjs → imageDownload-CkMwA7Cw.cjs} +4 -4
- package/dist/{imageDownload-61q6jyJW.cjs.map → imageDownload-CkMwA7Cw.cjs.map} +1 -1
- package/dist/index-BPyj_6hG.js +375 -0
- package/dist/index-BPyj_6hG.js.map +1 -0
- package/dist/index-DuLvdHo2.cjs +2 -0
- package/dist/index-DuLvdHo2.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +108 -245
- package/dist/index.js +3 -3
- package/dist/numberFormattingFunction-BUUV_luR.js +28 -0
- package/dist/numberFormattingFunction-BUUV_luR.js.map +1 -0
- package/dist/numberFormattingFunction-u2iNHL_c.cjs +2 -0
- package/dist/numberFormattingFunction-u2iNHL_c.cjs.map +1 -0
- package/dist/{string2HTML-ZoGd08P_.cjs → string2HTML-30nfIm8R.cjs} +2 -2
- package/dist/{string2HTML-ZoGd08P_.cjs.map → string2HTML-30nfIm8R.cjs.map} +1 -1
- package/dist/{string2HTML-BrFperRM.js → string2HTML-DL-pInUB.js} +2 -2
- package/dist/{string2HTML-BrFperRM.js.map → string2HTML-DL-pInUB.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +2 -2
- package/package.json +2 -2
- package/dist/GraphEl-B73N4RIA.js +0 -1906
- package/dist/GraphEl-B73N4RIA.js.map +0 -1
- package/dist/GraphEl-Lt1og0C-.cjs +0 -2
- package/dist/GraphEl-Lt1og0C-.cjs.map +0 -1
- package/dist/XTicksAndGridLines-C5DuC5oY.cjs +0 -2
- package/dist/XTicksAndGridLines-C5DuC5oY.cjs.map +0 -1
- package/dist/XTicksAndGridLines-gdbGX2rm.js +0 -39
- package/dist/XTicksAndGridLines-gdbGX2rm.js.map +0 -1
- package/dist/YTicksAndGridLines-CsNSq9W9.js +0 -39
- package/dist/YTicksAndGridLines-CsNSq9W9.js.map +0 -1
- package/dist/YTicksAndGridLines-DFjm8RCc.cjs +0 -2
- package/dist/YTicksAndGridLines-DFjm8RCc.cjs.map +0 -1
- package/dist/index-B0Awa_de.js +0 -377
- package/dist/index-B0Awa_de.js.map +0 -1
- package/dist/index-CP8cmNzt.cjs +0 -2
- package/dist/index-CP8cmNzt.cjs.map +0 -1
- package/dist/numberFormattingFunction-Cn9R7CM9.cjs +0 -2
- package/dist/numberFormattingFunction-Cn9R7CM9.cjs.map +0 -1
- package/dist/numberFormattingFunction-DqMf_v1m.js +0 -28
- package/dist/numberFormattingFunction-DqMf_v1m.js.map +0 -1
package/dist/SankeyChart.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SankeyChart.cjs","sources":["../node_modules/d3-sankey/node_modules/d3-array/src/max.js","../node_modules/d3-sankey/node_modules/d3-array/src/min.js","../node_modules/d3-sankey/node_modules/d3-array/src/sum.js","../node_modules/d3-sankey/src/align.js","../node_modules/d3-sankey/src/constant.js","../node_modules/d3-sankey/src/sankey.js","../node_modules/d3-sankey/node_modules/d3-path/src/path.js","../node_modules/d3-sankey/node_modules/d3-shape/src/constant.js","../node_modules/d3-sankey/node_modules/d3-shape/src/point.js","../node_modules/d3-sankey/node_modules/d3-shape/src/array.js","../node_modules/d3-sankey/node_modules/d3-shape/src/link/index.js","../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../src/Components/Graphs/SankeyChart/Graph.tsx","../src/Components/Graphs/SankeyChart/index.tsx"],"sourcesContent":["export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","import isEqual from 'fast-deep-equal';\r\nimport { useRef, useState } from 'react';\r\nimport { sankey, sankeyCenter, sankeyLinkHorizontal } from 'd3-sankey';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n NodeDataType,\r\n NodesLinkDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\n\r\ninterface Props {\r\n data: NodesLinkDataType;\r\n showLabels: boolean;\r\n leftMargin: number;\r\n truncateBy: number;\r\n defaultLinkOpacity: number;\r\n width: number;\r\n height: number;\r\n nodePadding: number;\r\n nodeWidth: number;\r\n rightMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n suffix: string;\r\n prefix: string;\r\n showValues?: 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n id: string;\r\n highlightedSourceDataPoints?: string[];\r\n highlightedTargetDataPoints?: string[];\r\n sourceTitle?: string;\r\n targetTitle?: string;\r\n animate: AnimateDataType;\r\n sortNodes: 'asc' | 'desc' | 'mostReadable' | 'none';\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 styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n locale: string;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n showLabels,\r\n leftMargin,\r\n rightMargin,\r\n truncateBy,\r\n width,\r\n height,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix,\r\n prefix,\r\n showValues,\r\n onSeriesMouseClick,\r\n nodePadding,\r\n nodeWidth,\r\n id,\r\n highlightedSourceDataPoints,\r\n highlightedTargetDataPoints,\r\n defaultLinkOpacity,\r\n sourceTitle,\r\n targetTitle,\r\n animate,\r\n sortNodes,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n precision,\r\n customLayers,\r\n locale,\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 // 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [selectedNode, setSelectedNode] = 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,\r\n right: rightMargin,\r\n };\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n const sankeyGenerator =\r\n sortNodes === 'mostReadable'\r\n ? sankey()\r\n .nodeWidth(nodeWidth)\r\n .nodePadding(nodePadding)\r\n .size([graphWidth, graphHeight])\r\n .nodeAlign(sankeyCenter)\r\n : sortNodes === 'none'\r\n ? sankey()\r\n .nodeWidth(nodeWidth)\r\n .nodePadding(nodePadding)\r\n .size([graphWidth, graphHeight])\r\n .nodeAlign(sankeyCenter)\r\n .nodeSort(null)\r\n .linkSort(null)\r\n : sankey()\r\n .nodeWidth(nodeWidth)\r\n .nodePadding(nodePadding)\r\n .size([graphWidth, graphHeight])\r\n .nodeAlign(sankeyCenter)\r\n .nodeSort(\r\n sortNodes === 'desc'\r\n ? (a, b) => (b.value || 0) - (a.value || 0)\r\n : (a, b) => (a.value || 0) - (b.value || 0),\r\n );\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const { nodes, links } = sankeyGenerator(data as any);\r\n const linkPathGenerator = sankeyLinkHorizontal();\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 style={{ marginLeft: 'auto', marginRight: 'auto' }}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n {sourceTitle ? (\r\n <text\r\n x={margin.left}\r\n y={margin.top - 10}\r\n className='text-base font-bold fill-primary-gray-700 dark:fill-primary-gray-100'\r\n style={{ textAnchor: 'start' }}\r\n >\r\n {sourceTitle}\r\n </text>\r\n ) : null}\r\n {targetTitle ? (\r\n <text\r\n x={width - margin.right}\r\n y={margin.top - 10}\r\n className='text-base font-bold fill-primary-gray-700 dark:fill-primary-gray-100'\r\n style={{ textAnchor: 'end' }}\r\n >\r\n {targetTitle}\r\n </text>\r\n ) : null}\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n {nodes\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((d: any) => d.type === 'source')\r\n .map((d, i) => (\r\n <g\r\n key={i}\r\n onMouseEnter={() => {\r\n setSelectedNode(d);\r\n }}\r\n onMouseLeave={() => {\r\n setSelectedNode(undefined);\r\n }}\r\n >\r\n <g transform={`translate(${d.x0},${d.y0})`}>\r\n <rect\r\n x={0}\r\n y={0}\r\n width={(d.x1 || 0) - (d.x0 || 0)}\r\n height={(d.y1 || 0) - (d.y0 || 0)}\r\n style={{ fill: (d as NodeDataType).color }}\r\n />\r\n {showLabels || showValues ? (\r\n <foreignObject\r\n y={0 - nodePadding / 2}\r\n x={0 - leftMargin}\r\n width={leftMargin}\r\n height={(d.y1 || 0) - (d.y0 || 0) + nodePadding}\r\n >\r\n <div\r\n className='flex flex-col gap-0.5 justify-center py-0 px-1.5'\r\n style={{\r\n height: `${(d.y1 || 0) - (d.y0 || 0) + nodePadding}px`,\r\n overflow: 'visible',\r\n }}\r\n >\r\n {showLabels ? (\r\n <P\r\n marginBottom={showValues ? '3xs' : 'none'}\r\n size='sm'\r\n leading='none'\r\n className={cn(\r\n 'sankey-right-label text-right',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {`${(d as NodeDataType).label}`.length < truncateBy\r\n ? `${(d as NodeDataType).label}`\r\n : `${`${(d as NodeDataType).label}`.substring(0, truncateBy)}...`}\r\n </P>\r\n ) : null}\r\n {showValues ? (\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n leading='none'\r\n className={cn(\r\n 'sankey-right-value text-right font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.value,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )}\r\n </P>\r\n ) : null}\r\n </div>\r\n </foreignObject>\r\n ) : null}\r\n </g>\r\n </g>\r\n ))}\r\n {nodes\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((d: any) => d.type === 'target')\r\n .map((d, i) => (\r\n <g\r\n key={i}\r\n onMouseEnter={() => {\r\n setSelectedNode(d);\r\n }}\r\n onMouseLeave={() => {\r\n setSelectedNode(undefined);\r\n }}\r\n >\r\n <g transform={`translate(${d.x0},${d.y0})`}>\r\n <rect\r\n x={0}\r\n y={0}\r\n width={(d.x1 || 0) - (d.x0 || 0)}\r\n height={(d.y1 || 0) - (d.y0 || 0)}\r\n style={{ fill: (d as NodeDataType).color }}\r\n />\r\n {showLabels || showValues ? (\r\n <foreignObject\r\n y={0 - nodePadding / 2}\r\n x={nodeWidth}\r\n width={rightMargin - nodeWidth}\r\n height={(d.y1 || 0) - (d.y0 || 0) + nodePadding}\r\n >\r\n <div\r\n className='flex flex-col gap-0.5 justify-center py-0 px-1.5'\r\n style={{\r\n height: `${(d.y1 || 0) - (d.y0 || 0) + nodePadding}px`,\r\n }}\r\n >\r\n {showLabels ? (\r\n <P\r\n marginBottom={showValues ? '3xs' : 'none'}\r\n size='sm'\r\n leading='none'\r\n className={cn(\r\n 'sankey-left-label text-left',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {`${(d as NodeDataType).label}`.length < truncateBy\r\n ? `${(d as NodeDataType).label}`\r\n : `${`${(d as NodeDataType).label}`.substring(0, truncateBy)}...`}\r\n </P>\r\n ) : null}\r\n {showValues ? (\r\n <P\r\n size='sm'\r\n leading='none'\r\n marginBottom='none'\r\n className={cn(\r\n 'sankey-left-value text-left font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.value,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )}\r\n </P>\r\n ) : null}\r\n </div>\r\n </foreignObject>\r\n ) : null}\r\n </g>\r\n </g>\r\n ))}\r\n <defs>\r\n {links.map((d, i) => (\r\n <linearGradient\r\n id={`${id}-gradient-${i}`}\r\n x1='0%'\r\n y1='0%'\r\n x2='100%'\r\n y2='0%'\r\n key={i}\r\n gradientUnits='userSpaceOnUse'\r\n >\r\n <stop\r\n offset='0%'\r\n style={{\r\n stopColor: (d.source as NodeDataType).color,\r\n stopOpacity: 1,\r\n }}\r\n />\r\n <stop\r\n offset='100%'\r\n style={{\r\n stopColor: (d.target as NodeDataType).color,\r\n stopOpacity: 1,\r\n }}\r\n />\r\n </linearGradient>\r\n ))}\r\n </defs>\r\n <g>\r\n <AnimatePresence>\r\n {links.map((d, i) => (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={`${d.source}-${d.target}`}\r\n onMouseEnter={event => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setMouseOverData((d as any).data);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onMouseMove={event => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setMouseOverData((d as any).data);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n isEqual(mouseClickData, (d as any).data) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setMouseClickData((d as any).data);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?.((d as any).data);\r\n }\r\n }\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 variants={{\r\n initial: {\r\n opacity: selectedNode\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).name === selectedNode.name ||\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).name === selectedNode.name\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : highlightedSourceDataPoints || highlightedTargetDataPoints\r\n ? highlightedSourceDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).label,\r\n ) !== -1 ||\r\n highlightedTargetDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).label,\r\n ) !== -1\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : defaultLinkOpacity,\r\n },\r\n whileInView: {\r\n opacity: selectedNode\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).name === selectedNode.name ||\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).name === selectedNode.name\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : highlightedSourceDataPoints || highlightedTargetDataPoints\r\n ? highlightedSourceDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).label,\r\n ) !== -1 ||\r\n highlightedTargetDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).label,\r\n ) !== -1\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : defaultLinkOpacity,\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 <motion.path\r\n key={`${d.source}-${d.target}`}\r\n d={linkPathGenerator(d) || ''}\r\n style={{\r\n stroke: `url(#${id}-gradient-${i})`,\r\n strokeWidth: d.width,\r\n fill: 'none',\r\n }}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n pathLength: 0,\r\n opacity: 1,\r\n },\r\n whileInView: {\r\n pathLength: 1,\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 />\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 <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, useEffectEvent } from 'react';\r\nimport sum from 'lodash.sum';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n Languages,\r\n NodesLinkDataType,\r\n SankeyDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { generateRandomString } from '@/Utils/generateRandomString';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: SankeyDataType[];\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 source */\r\n sourceColors?: string[] | string;\r\n /** Color or array of colors for targets */\r\n targetColors?: string[] | string;\r\n /** Domain of colors for the source */\r\n sourceColorDomain?: (string | number)[];\r\n /** Domain of colors for the target */\r\n targetColorDomain?: (string | number)[];\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 /** Toggles the background to fill the container. This only works if the width of the graph is defined. */\r\n fillContainer?: boolean;\r\n /** Padding between nodes */\r\n nodePadding?: number;\r\n /** Thickness of each node */\r\n nodeWidth?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n\r\n // Graph Parameters\r\n /** Title of the source */\r\n sourceTitle?: string;\r\n /** Title of the targets */\r\n targetTitle?: string;\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Source to highlight. Use the label value from data to highlight the data point */\r\n highlightedSourceDataPoints?: (string | number)[];\r\n /** Targets to highlight. Use the label value from data to highlight the data point */\r\n highlightedTargetDataPoints?: (string | number)[];\r\n /** Opacity of the links */\r\n defaultLinkOpacity?: number;\r\n /** Sorting order of the nodes */\r\n sortNodes?: 'asc' | 'desc' | 'mostReadable' | 'none';\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 /** Locale for number formatting. Must matches what `Intl.NumberFormat` expects. */\r\n locale?: string;\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 when user mouseover on the links. 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 SankeyChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n showLabels = true,\r\n leftMargin = 75,\r\n rightMargin = 75,\r\n topMargin = 30,\r\n bottomMargin = 10,\r\n truncateBy = 999,\r\n height,\r\n width,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix = '',\r\n prefix = '',\r\n relativeHeight,\r\n showValues = true,\r\n graphID,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n fillContainer = true,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n sourceColors,\r\n targetColors,\r\n sourceColorDomain,\r\n targetColorDomain,\r\n nodePadding = 5,\r\n nodeWidth = 5,\r\n highlightedSourceDataPoints,\r\n highlightedTargetDataPoints,\r\n defaultLinkOpacity = 0.3,\r\n sourceTitle,\r\n targetTitle,\r\n sortNodes = 'mostReadable',\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n locale = 'en',\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [sankeyData, setSankeyData] = useState<NodesLinkDataType | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n const updateSankeyDataEvent = useEffectEvent((data: NodesLinkDataType) => {\r\n setSankeyData(data);\r\n });\r\n\r\n useEffect(() => {\r\n const sourceNodes = uniqBy(data, 'source', true).map(d => ({\r\n name: `source_${d}`,\r\n type: 'source' as const,\r\n label: `${d}`,\r\n color:\r\n typeof sourceColors === 'string' || !sourceColors\r\n ? sourceColors || Colors.graphMainColor\r\n : sourceColors[\r\n (sourceColorDomain || uniqBy(data, 'source', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n ) > sourceColors.length\r\n ? sourceColors.length - 1\r\n : (sourceColorDomain || uniqBy(data, 'source', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n )\r\n ],\r\n totalValue: sum(data.filter(el => `${el.source}` === `${d}`).map(el => el.value)),\r\n }));\r\n const sourceNodesSorted =\r\n sortNodes === 'asc' || sortNodes === 'desc'\r\n ? orderBy(sourceNodes, ['totalValue'], [sortNodes])\r\n : sourceNodes;\r\n const targetNodes = uniqBy(data, 'target', true).map(d => ({\r\n name: `target_${d}`,\r\n type: 'target' as const,\r\n label: `${d}`,\r\n color:\r\n typeof targetColors === 'string' || !targetColors\r\n ? targetColors || Colors.graphMainColor\r\n : targetColors[\r\n (targetColorDomain || uniqBy(data, 'target', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n ) > targetColors.length\r\n ? targetColors.length - 1\r\n : (targetColorDomain || uniqBy(data, 'target', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n )\r\n ],\r\n totalValue: sum(data.filter(el => `${el.target}` === `${d}`).map(el => el.value)),\r\n }));\r\n const targetNodesSorted =\r\n sortNodes === 'asc' || sortNodes === 'desc'\r\n ? orderBy(targetNodes, ['totalValue'], [sortNodes])\r\n : targetNodes;\r\n\r\n const nodes = [...sourceNodesSorted, ...targetNodesSorted];\r\n updateSankeyDataEvent({\r\n nodes,\r\n links: data.map(d => ({\r\n source: nodes.findIndex(el => el.name === `source_${d.source}`),\r\n target: nodes.findIndex(el => el.name === `target_${d.target}`),\r\n value: d.value,\r\n data: { ...d },\r\n })),\r\n });\r\n }, [data, sortNodes, sourceColorDomain, sourceColors, targetColorDomain, targetColors]);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={fillContainer ? undefined : width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\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 : 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 <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && sankeyData && data.length > 0 ? (\r\n <Graph\r\n data={sankeyData}\r\n nodePadding={nodePadding}\r\n nodeWidth={nodeWidth}\r\n width={fillContainer || !width ? svgWidth : svgWidth < width ? svgWidth : width}\r\n height={svgHeight}\r\n showLabels={showLabels}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n truncateBy={truncateBy}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n showValues={showValues}\r\n suffix={suffix}\r\n prefix={prefix}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n id={generateRandomString(8)}\r\n highlightedSourceDataPoints={highlightedSourceDataPoints?.map(d => `${d}`)}\r\n highlightedTargetDataPoints={highlightedTargetDataPoints?.map(d => `${d}`)}\r\n defaultLinkOpacity={defaultLinkOpacity}\r\n sourceTitle={sourceTitle}\r\n targetTitle={targetTitle}\r\n sortNodes={sortNodes}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n classNames={classNames}\r\n detailsOnClick={detailsOnClick}\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 locale={locale}\r\n />\r\n ) : null}\r\n </GraphArea>\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 </GraphContainer>\r\n );\r\n}\r\n"],"names":["max","values","valueof","value","index","min","sum","targetDepth","d","justify","node","n","center","constant","x","ascendingSourceBreadth","a","b","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","find","nodeById","id","computeLinkBreadths","nodes","y0","y1","link","Sankey","x0","x1","dx","dy","py","align","sort","linkSort","links","iterations","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","_","i","source","target","sourceLinks","targetLinks","current","next","computeNodeLayers","kx","columns","column","initializeNodeBreadths","ky","c","y","reorderLinks","alpha","beta","relaxRightToLeft","relaxLeftToRight","w","v","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","width","pi","tau","epsilon","tauEpsilon","Path","path","x2","y2","r","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","l","t01","t21","a0","a1","ccw","cw","da","h","p","slice","linkSource","linkTarget","curve","pointX","pointY","context","buffer","argv","s","t","curveHorizontal","linkHorizontal","horizontalSource","horizontalTarget","sankeyLinkHorizontal","Graph","props","$","_c","data","showLabels","leftMargin","rightMargin","truncateBy","height","topMargin","bottomMargin","tooltip","onSeriesMouseOver","suffix","prefix","showValues","onSeriesMouseClick","nodePadding","nodeWidth","highlightedSourceDataPoints","highlightedTargetDataPoints","defaultLinkOpacity","sourceTitle","targetTitle","animate","sortNodes","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","precision","customLayers","locale","svgRef","useRef","t0","amount","once","isInView","useInView","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","selectedNode","setSelectedNode","eventX","setEventX","eventY","setEventY","t1","top","bottom","left","right","margin","graphWidth","graphHeight","T0","T1","t10","t11","t12","t13","t14","t15","t2","t3","t4","t5","t6","t7","t8","t9","duration","graphObjectValues","sankeyGenerator","size","nodeAlign","sankeyCenter","nodeSort","_temp","_temp2","linkPathGenerator","motion","svg","Symbol","for","marginLeft","marginRight","jsx","textAnchor","filter","_temp3","map","_temp4","t16","d_2","jsxs","fill","color","overflow","P","cn","hyphens","label","length","substring","numberFormattingFunction","_temp5","t17","d_4","i_0","_temp6","t18","d_5","i_1","stopColor","stopOpacity","AnimatePresence","d_6","i_2","event","clientY","clientX","event_0","isEqual","initial","opacity","name","indexOf","whileInView","transition","stroke","strokeWidth","pathLength","_temp7","_temp8","t19","t20","Tooltip","modal","DetailsModal","t22","Fragment","d_8","layer","d_7","position","d_3","type","d_1","d_0","a_0","b_0","SankeyChart","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","fillContainer","language","minHeight","theme","ariaLabel","sourceColors","targetColors","sourceColorDomain","targetColorDomain","t23","t24","t25","svgWidth","setSvgWidth","svgHeight","setSvgHeight","sankeyData","setSankeyData","graphDiv","graphParentDiv","t26","data_0","updateSankeyDataEvent","useEffectEvent","t27","sourceNodes","uniqBy","Colors","graphMainColor","findIndex","el_0","el","totalValue","sourceNodesSorted","orderBy","targetNodes","el_4","targetNodesSorted","el_7","el_8","t28","useEffect","t29","t30","resizeObserver","ResizeObserver","entries","clientWidth","clientHeight","observe","disconnect","t31","graphContainer","t32","t33","t34","description","title","GraphHeader","t35","EmptyState","t36","generateRandomString","_temp9","t37","GraphArea","t38","footnote","GraphFooter","t39","GraphContainer","el_6","el_2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|
|
1
|
+
{"version":3,"file":"SankeyChart.cjs","sources":["../node_modules/d3-sankey/node_modules/d3-array/src/max.js","../node_modules/d3-sankey/node_modules/d3-array/src/min.js","../node_modules/d3-sankey/node_modules/d3-array/src/sum.js","../node_modules/d3-sankey/src/align.js","../node_modules/d3-sankey/src/constant.js","../node_modules/d3-sankey/src/sankey.js","../node_modules/d3-sankey/node_modules/d3-path/src/path.js","../node_modules/d3-sankey/node_modules/d3-shape/src/constant.js","../node_modules/d3-sankey/node_modules/d3-shape/src/point.js","../node_modules/d3-sankey/node_modules/d3-shape/src/array.js","../node_modules/d3-sankey/node_modules/d3-shape/src/link/index.js","../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../src/Components/Graphs/SankeyChart/Graph.tsx","../src/Components/Graphs/SankeyChart/index.tsx"],"sourcesContent":["export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","import isEqual from 'fast-deep-equal';\r\nimport { useRef, useState } from 'react';\r\nimport { sankey, sankeyCenter, sankeyLinkHorizontal } from 'd3-sankey';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { P } from '@undp/design-system-react/Typography';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n NodeDataType,\r\n NodesLinkDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\n\r\ninterface Props {\r\n data: NodesLinkDataType;\r\n showLabels: boolean;\r\n leftMargin: number;\r\n truncateBy: number;\r\n defaultLinkOpacity: number;\r\n width: number;\r\n height: number;\r\n nodePadding: number;\r\n nodeWidth: number;\r\n rightMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n suffix: string;\r\n prefix: string;\r\n showValues?: 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n id: string;\r\n highlightedSourceDataPoints?: string[];\r\n highlightedTargetDataPoints?: string[];\r\n sourceTitle?: string;\r\n targetTitle?: string;\r\n animate: AnimateDataType;\r\n sortNodes: 'asc' | 'desc' | 'mostReadable' | 'none';\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 styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n locale: string;\r\n padZeros: boolean;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n showLabels,\r\n leftMargin,\r\n rightMargin,\r\n truncateBy,\r\n width,\r\n height,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n suffix,\r\n prefix,\r\n showValues,\r\n onSeriesMouseClick,\r\n nodePadding,\r\n nodeWidth,\r\n id,\r\n highlightedSourceDataPoints,\r\n highlightedTargetDataPoints,\r\n defaultLinkOpacity,\r\n sourceTitle,\r\n targetTitle,\r\n animate,\r\n sortNodes,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n precision,\r\n customLayers,\r\n locale,\r\n padZeros,\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 // 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [selectedNode, setSelectedNode] = 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,\r\n right: rightMargin,\r\n };\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n const sankeyGenerator =\r\n sortNodes === 'mostReadable'\r\n ? sankey()\r\n .nodeWidth(nodeWidth)\r\n .nodePadding(nodePadding)\r\n .size([graphWidth, graphHeight])\r\n .nodeAlign(sankeyCenter)\r\n : sortNodes === 'none'\r\n ? sankey()\r\n .nodeWidth(nodeWidth)\r\n .nodePadding(nodePadding)\r\n .size([graphWidth, graphHeight])\r\n .nodeAlign(sankeyCenter)\r\n .nodeSort(null)\r\n .linkSort(null)\r\n : sankey()\r\n .nodeWidth(nodeWidth)\r\n .nodePadding(nodePadding)\r\n .size([graphWidth, graphHeight])\r\n .nodeAlign(sankeyCenter)\r\n .nodeSort(\r\n sortNodes === 'desc'\r\n ? (a, b) => (b.value || 0) - (a.value || 0)\r\n : (a, b) => (a.value || 0) - (b.value || 0),\r\n );\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const { nodes, links } = sankeyGenerator(data as any);\r\n const linkPathGenerator = sankeyLinkHorizontal();\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 style={{ marginLeft: 'auto', marginRight: 'auto' }}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n {sourceTitle ? (\r\n <text\r\n x={margin.left}\r\n y={margin.top - 10}\r\n className='text-base font-bold fill-primary-gray-700 dark:fill-primary-gray-100'\r\n style={{ textAnchor: 'start' }}\r\n >\r\n {sourceTitle}\r\n </text>\r\n ) : null}\r\n {targetTitle ? (\r\n <text\r\n x={width - margin.right}\r\n y={margin.top - 10}\r\n className='text-base font-bold fill-primary-gray-700 dark:fill-primary-gray-100'\r\n style={{ textAnchor: 'end' }}\r\n >\r\n {targetTitle}\r\n </text>\r\n ) : null}\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n {nodes\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((d: any) => d.type === 'source')\r\n .map((d, i) => (\r\n <g\r\n key={i}\r\n onMouseEnter={() => {\r\n setSelectedNode(d);\r\n }}\r\n onMouseLeave={() => {\r\n setSelectedNode(undefined);\r\n }}\r\n >\r\n <g transform={`translate(${d.x0},${d.y0})`}>\r\n <rect\r\n x={0}\r\n y={0}\r\n width={(d.x1 || 0) - (d.x0 || 0)}\r\n height={(d.y1 || 0) - (d.y0 || 0)}\r\n style={{ fill: (d as NodeDataType).color }}\r\n />\r\n {showLabels || showValues ? (\r\n <foreignObject\r\n y={0 - nodePadding / 2}\r\n x={0 - leftMargin}\r\n width={leftMargin}\r\n height={(d.y1 || 0) - (d.y0 || 0) + nodePadding}\r\n >\r\n <div\r\n className='flex flex-col gap-0.5 justify-center py-0 px-1.5'\r\n style={{\r\n height: `${(d.y1 || 0) - (d.y0 || 0) + nodePadding}px`,\r\n overflow: 'visible',\r\n }}\r\n >\r\n {showLabels ? (\r\n <P\r\n marginBottom={showValues ? '3xs' : 'none'}\r\n size='sm'\r\n leading='none'\r\n className={cn(\r\n 'sankey-right-label text-right',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {`${(d as NodeDataType).label}`.length < truncateBy\r\n ? `${(d as NodeDataType).label}`\r\n : `${`${(d as NodeDataType).label}`.substring(0, truncateBy)}...`}\r\n </P>\r\n ) : null}\r\n {showValues ? (\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n leading='none'\r\n className={cn(\r\n 'sankey-right-value text-right font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.value,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n padZeros,\r\n )}\r\n </P>\r\n ) : null}\r\n </div>\r\n </foreignObject>\r\n ) : null}\r\n </g>\r\n </g>\r\n ))}\r\n {nodes\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .filter((d: any) => d.type === 'target')\r\n .map((d, i) => (\r\n <g\r\n key={i}\r\n onMouseEnter={() => {\r\n setSelectedNode(d);\r\n }}\r\n onMouseLeave={() => {\r\n setSelectedNode(undefined);\r\n }}\r\n >\r\n <g transform={`translate(${d.x0},${d.y0})`}>\r\n <rect\r\n x={0}\r\n y={0}\r\n width={(d.x1 || 0) - (d.x0 || 0)}\r\n height={(d.y1 || 0) - (d.y0 || 0)}\r\n style={{ fill: (d as NodeDataType).color }}\r\n />\r\n {showLabels || showValues ? (\r\n <foreignObject\r\n y={0 - nodePadding / 2}\r\n x={nodeWidth}\r\n width={rightMargin - nodeWidth}\r\n height={(d.y1 || 0) - (d.y0 || 0) + nodePadding}\r\n >\r\n <div\r\n className='flex flex-col gap-0.5 justify-center py-0 px-1.5'\r\n style={{\r\n height: `${(d.y1 || 0) - (d.y0 || 0) + nodePadding}px`,\r\n }}\r\n >\r\n {showLabels ? (\r\n <P\r\n marginBottom={showValues ? '3xs' : 'none'}\r\n size='sm'\r\n leading='none'\r\n className={cn(\r\n 'sankey-left-label text-left',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {`${(d as NodeDataType).label}`.length < truncateBy\r\n ? `${(d as NodeDataType).label}`\r\n : `${`${(d as NodeDataType).label}`.substring(0, truncateBy)}...`}\r\n </P>\r\n ) : null}\r\n {showValues ? (\r\n <P\r\n size='sm'\r\n leading='none'\r\n marginBottom='none'\r\n className={cn(\r\n 'sankey-left-value text-left font-bold',\r\n classNames?.graphObjectValues,\r\n )}\r\n style={{\r\n hyphens: 'auto',\r\n color: (d as NodeDataType).color,\r\n ...styles?.graphObjectValues,\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.value,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n padZeros,\r\n )}\r\n </P>\r\n ) : null}\r\n </div>\r\n </foreignObject>\r\n ) : null}\r\n </g>\r\n </g>\r\n ))}\r\n <defs>\r\n {links.map((d, i) => (\r\n <linearGradient\r\n id={`${id}-gradient-${i}`}\r\n x1='0%'\r\n y1='0%'\r\n x2='100%'\r\n y2='0%'\r\n key={i}\r\n gradientUnits='userSpaceOnUse'\r\n >\r\n <stop\r\n offset='0%'\r\n style={{\r\n stopColor: (d.source as NodeDataType).color,\r\n stopOpacity: 1,\r\n }}\r\n />\r\n <stop\r\n offset='100%'\r\n style={{\r\n stopColor: (d.target as NodeDataType).color,\r\n stopOpacity: 1,\r\n }}\r\n />\r\n </linearGradient>\r\n ))}\r\n </defs>\r\n <g>\r\n <AnimatePresence>\r\n {links.map((d, i) => (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={`${d.source}-${d.target}`}\r\n onMouseEnter={event => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setMouseOverData((d as any).data);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onMouseMove={event => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setMouseOverData((d as any).data);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n isEqual(mouseClickData, (d as any).data) &&\r\n resetSelectionOnDoubleClick\r\n ) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setMouseClickData((d as any).data);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?.((d as any).data);\r\n }\r\n }\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 variants={{\r\n initial: {\r\n opacity: selectedNode\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).name === selectedNode.name ||\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).name === selectedNode.name\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : highlightedSourceDataPoints || highlightedTargetDataPoints\r\n ? highlightedSourceDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).label,\r\n ) !== -1 ||\r\n highlightedTargetDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).label,\r\n ) !== -1\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : defaultLinkOpacity,\r\n },\r\n whileInView: {\r\n opacity: selectedNode\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).name === selectedNode.name ||\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).name === selectedNode.name\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : highlightedSourceDataPoints || highlightedTargetDataPoints\r\n ? highlightedSourceDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.source as any).label,\r\n ) !== -1 ||\r\n highlightedTargetDataPoints?.indexOf(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d.target as any).label,\r\n ) !== -1\r\n ? 0.85\r\n : defaultLinkOpacity\r\n : defaultLinkOpacity,\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 <motion.path\r\n key={`${d.source}-${d.target}`}\r\n d={linkPathGenerator(d) || ''}\r\n style={{\r\n stroke: `url(#${id}-gradient-${i})`,\r\n strokeWidth: d.width,\r\n fill: 'none',\r\n }}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n variants={{\r\n initial: {\r\n pathLength: 0,\r\n opacity: 1,\r\n },\r\n whileInView: {\r\n pathLength: 1,\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 />\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 <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, useEffectEvent } from 'react';\r\nimport sum from 'lodash.sum';\r\nimport orderBy from 'lodash.orderby';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n Languages,\r\n NodesLinkDataType,\r\n NumberFormatOptions,\r\n SankeyDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { generateRandomString } from '@/Utils/generateRandomString';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: SankeyDataType[];\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 source */\r\n sourceColors?: string[] | string;\r\n /** Color or array of colors for targets */\r\n targetColors?: string[] | string;\r\n /** Domain of colors for the source */\r\n sourceColorDomain?: (string | number)[];\r\n /** Domain of colors for the target */\r\n targetColorDomain?: (string | number)[];\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 /** Toggles the background to fill the container. This only works if the width of the graph is defined. */\r\n fillContainer?: boolean;\r\n /** Padding between nodes */\r\n nodePadding?: number;\r\n /** Thickness of each node */\r\n nodeWidth?: number;\r\n\r\n // Values and Ticks\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n\r\n // Graph Parameters\r\n /** Title of the source */\r\n sourceTitle?: string;\r\n /** Title of the targets */\r\n targetTitle?: string;\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Source to highlight. Use the label value from data to highlight the data point */\r\n highlightedSourceDataPoints?: (string | number)[];\r\n /** Targets to highlight. Use the label value from data to highlight the data point */\r\n highlightedTargetDataPoints?: (string | number)[];\r\n /** Opacity of the links */\r\n defaultLinkOpacity?: number;\r\n /** Sorting order of the nodes */\r\n sortNodes?: 'asc' | 'desc' | 'mostReadable' | 'none';\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Configuration options for controlling number formatting, localization, prefixes/suffixes, precision, and zero padding. */\r\n numberDisplayOptions?: NumberFormatOptions;\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 when user mouseover on the links. 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 SankeyChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n showLabels = true,\r\n leftMargin = 75,\r\n rightMargin = 75,\r\n topMargin = 30,\r\n bottomMargin = 10,\r\n truncateBy = 999,\r\n height,\r\n width,\r\n footNote,\r\n padding,\r\n backgroundColor = false,\r\n tooltip,\r\n onSeriesMouseOver,\r\n relativeHeight,\r\n showValues = true,\r\n graphID,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n fillContainer = true,\r\n language = 'en',\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n sourceColors,\r\n targetColors,\r\n sourceColorDomain,\r\n targetColorDomain,\r\n nodePadding = 5,\r\n nodeWidth = 5,\r\n highlightedSourceDataPoints,\r\n highlightedTargetDataPoints,\r\n defaultLinkOpacity = 0.3,\r\n sourceTitle,\r\n targetTitle,\r\n sortNodes = 'mostReadable',\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n animate = false,\r\n customLayers = [],\r\n numberDisplayOptions,\r\n } = props;\r\n\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [sankeyData, setSankeyData] = useState<NodesLinkDataType | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n const updateSankeyDataEvent = useEffectEvent((data: NodesLinkDataType) => {\r\n setSankeyData(data);\r\n });\r\n\r\n useEffect(() => {\r\n const sourceNodes = uniqBy(data, 'source', true).map(d => ({\r\n name: `source_${d}`,\r\n type: 'source' as const,\r\n label: `${d}`,\r\n color:\r\n typeof sourceColors === 'string' || !sourceColors\r\n ? sourceColors || Colors.graphMainColor\r\n : sourceColors[\r\n (sourceColorDomain || uniqBy(data, 'source', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n ) > sourceColors.length\r\n ? sourceColors.length - 1\r\n : (sourceColorDomain || uniqBy(data, 'source', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n )\r\n ],\r\n totalValue: sum(data.filter(el => `${el.source}` === `${d}`).map(el => el.value)),\r\n }));\r\n const sourceNodesSorted =\r\n sortNodes === 'asc' || sortNodes === 'desc'\r\n ? orderBy(sourceNodes, ['totalValue'], [sortNodes])\r\n : sourceNodes;\r\n const targetNodes = uniqBy(data, 'target', true).map(d => ({\r\n name: `target_${d}`,\r\n type: 'target' as const,\r\n label: `${d}`,\r\n color:\r\n typeof targetColors === 'string' || !targetColors\r\n ? targetColors || Colors.graphMainColor\r\n : targetColors[\r\n (targetColorDomain || uniqBy(data, 'target', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n ) > targetColors.length\r\n ? targetColors.length - 1\r\n : (targetColorDomain || uniqBy(data, 'target', true)).findIndex(\r\n el => `${el}` === `${d}`,\r\n )\r\n ],\r\n totalValue: sum(data.filter(el => `${el.target}` === `${d}`).map(el => el.value)),\r\n }));\r\n const targetNodesSorted =\r\n sortNodes === 'asc' || sortNodes === 'desc'\r\n ? orderBy(targetNodes, ['totalValue'], [sortNodes])\r\n : targetNodes;\r\n\r\n const nodes = [...sourceNodesSorted, ...targetNodesSorted];\r\n updateSankeyDataEvent({\r\n nodes,\r\n links: data.map(d => ({\r\n source: nodes.findIndex(el => el.name === `source_${d.source}`),\r\n target: nodes.findIndex(el => el.name === `target_${d.target}`),\r\n value: d.value,\r\n data: { ...d },\r\n })),\r\n });\r\n }, [data, sortNodes, sourceColorDomain, sourceColors, targetColorDomain, targetColors]);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={fillContainer ? undefined : width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\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 : 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 <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && sankeyData && data.length > 0 ? (\r\n <Graph\r\n data={sankeyData}\r\n nodePadding={nodePadding}\r\n nodeWidth={nodeWidth}\r\n width={fillContainer || !width ? svgWidth : svgWidth < width ? svgWidth : width}\r\n height={svgHeight}\r\n showLabels={showLabels}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n truncateBy={truncateBy}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n showValues={showValues}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n id={generateRandomString(8)}\r\n highlightedSourceDataPoints={highlightedSourceDataPoints?.map(d => `${d}`)}\r\n highlightedTargetDataPoints={highlightedTargetDataPoints?.map(d => `${d}`)}\r\n defaultLinkOpacity={defaultLinkOpacity}\r\n sourceTitle={sourceTitle}\r\n targetTitle={targetTitle}\r\n sortNodes={sortNodes}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n classNames={classNames}\r\n detailsOnClick={detailsOnClick}\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 customLayers={customLayers}\r\n locale={numberDisplayOptions?.locale || 'en'}\r\n padZeros={numberDisplayOptions?.padZeros || false}\r\n suffix={numberDisplayOptions?.suffix || ''}\r\n prefix={numberDisplayOptions?.prefix || ''}\r\n precision={numberDisplayOptions?.precision ?? 2}\r\n />\r\n ) : null}\r\n </GraphArea>\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 </GraphContainer>\r\n );\r\n}\r\n"],"names":["max","values","valueof","value","index","min","sum","targetDepth","d","justify","node","n","center","constant","x","ascendingSourceBreadth","a","b","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","find","nodeById","id","computeLinkBreadths","nodes","y0","y1","link","Sankey","x0","x1","dx","dy","py","align","sort","linkSort","links","iterations","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","_","i","source","target","sourceLinks","targetLinks","current","next","computeNodeLayers","kx","columns","column","initializeNodeBreadths","ky","c","y","reorderLinks","alpha","beta","relaxRightToLeft","relaxLeftToRight","w","v","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","width","pi","tau","epsilon","tauEpsilon","Path","path","x2","y2","r","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","l","t01","t21","a0","a1","ccw","cw","da","h","p","slice","linkSource","linkTarget","curve","pointX","pointY","context","buffer","argv","s","t","curveHorizontal","linkHorizontal","horizontalSource","horizontalTarget","sankeyLinkHorizontal","Graph","props","$","_c","data","showLabels","leftMargin","rightMargin","truncateBy","height","topMargin","bottomMargin","tooltip","onSeriesMouseOver","suffix","prefix","showValues","onSeriesMouseClick","nodePadding","nodeWidth","highlightedSourceDataPoints","highlightedTargetDataPoints","defaultLinkOpacity","sourceTitle","targetTitle","animate","sortNodes","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","precision","customLayers","locale","padZeros","svgRef","useRef","t0","amount","once","isInView","useInView","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","selectedNode","setSelectedNode","eventX","setEventX","eventY","setEventY","t1","top","bottom","left","right","margin","graphWidth","graphHeight","T0","T1","t10","t11","t12","t13","t14","t15","t2","t3","t4","t5","t6","t7","t8","t9","duration","graphObjectValues","sankeyGenerator","size","nodeAlign","sankeyCenter","nodeSort","_temp","_temp2","linkPathGenerator","motion","svg","Symbol","for","marginLeft","marginRight","jsx","textAnchor","filter","_temp3","map","_temp4","t16","d_2","jsxs","fill","color","overflow","P","cn","hyphens","label","length","substring","numberFormattingFunction","_temp5","t17","d_4","i_0","_temp6","t18","d_5","i_1","stopColor","stopOpacity","AnimatePresence","d_6","i_2","event","clientY","clientX","event_0","isEqual","initial","opacity","name","indexOf","whileInView","transition","stroke","strokeWidth","pathLength","_temp7","_temp8","t19","t20","Tooltip","modal","DetailsModal","t22","Fragment","d_8","layer","d_7","position","d_3","type","d_1","d_0","a_0","b_0","SankeyChart","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","relativeHeight","graphID","graphDownload","dataDownload","fillContainer","language","minHeight","theme","ariaLabel","sourceColors","targetColors","sourceColorDomain","targetColorDomain","numberDisplayOptions","svgWidth","setSvgWidth","svgHeight","setSvgHeight","sankeyData","setSankeyData","graphDiv","graphParentDiv","data_0","updateSankeyDataEvent","useEffectEvent","t23","sourceNodes","uniqBy","Colors","graphMainColor","findIndex","el_0","el","totalValue","sourceNodesSorted","orderBy","targetNodes","el_4","targetNodesSorted","el_7","el_8","t24","useEffect","t25","t26","resizeObserver","ResizeObserver","entries","clientWidth","clientHeight","observe","disconnect","t27","graphContainer","t28","t29","t30","description","title","GraphHeader","t31","EmptyState","t32","generateRandomString","_temp9","t33","GraphArea","t34","footnote","GraphFooter","t35","GraphContainer","el_6","el_2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|
package/dist/SankeyChart.d.ts
CHANGED
|
@@ -44,7 +44,15 @@ declare interface CustomLayerDataType {
|
|
|
44
44
|
layer: React.ReactNode;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
declare type Languages = 'en' | 'ar' | 'az' | 'bn' | 'cy' | 'he' | 'hi' | '
|
|
47
|
+
declare type Languages = 'en' | 'ar' | 'az' | 'bn' | 'cy' | 'he' | 'hi' | 'ja' | 'ka' | 'km' | 'ko' | 'my' | 'ne' | 'zh' | 'custom';
|
|
48
|
+
|
|
49
|
+
declare interface NumberFormatOptions {
|
|
50
|
+
locale?: string;
|
|
51
|
+
precision?: number;
|
|
52
|
+
prefix?: string;
|
|
53
|
+
suffix?: string;
|
|
54
|
+
padZeros?: boolean;
|
|
55
|
+
}
|
|
48
56
|
|
|
49
57
|
declare interface Props {
|
|
50
58
|
/** Array of data objects */
|
|
@@ -97,10 +105,6 @@ declare interface Props {
|
|
|
97
105
|
nodePadding?: number;
|
|
98
106
|
/** Thickness of each node */
|
|
99
107
|
nodeWidth?: number;
|
|
100
|
-
/** Prefix for values */
|
|
101
|
-
prefix?: string;
|
|
102
|
-
/** Suffix for values */
|
|
103
|
-
suffix?: string;
|
|
104
108
|
/** Truncate labels by specified length */
|
|
105
109
|
truncateBy?: number;
|
|
106
110
|
/** Title of the source */
|
|
@@ -121,10 +125,8 @@ declare interface Props {
|
|
|
121
125
|
sortNodes?: 'asc' | 'desc' | 'mostReadable' | 'none';
|
|
122
126
|
/** Toggles if the graph animates in when loaded. */
|
|
123
127
|
animate?: boolean | AnimateDataType;
|
|
124
|
-
/**
|
|
125
|
-
|
|
126
|
-
/** Locale for number formatting. Must matches what `Intl.NumberFormat` expects. */
|
|
127
|
-
locale?: string;
|
|
128
|
+
/** Configuration options for controlling number formatting, localization, prefixes/suffixes, precision, and zero padding. */
|
|
129
|
+
numberDisplayOptions?: NumberFormatOptions;
|
|
128
130
|
/** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */
|
|
129
131
|
customLayers?: CustomLayerDataType[];
|
|
130
132
|
/** Enable graph download option as png */
|