@undp/data-viz 2.0.9 → 2.1.0
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.d.ts +2 -0
- package/dist/AreaChart.js +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.d.ts +2 -0
- package/dist/BarGraph.js +1188 -1213
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.d.ts +2 -0
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.d.ts +2 -0
- package/dist/BeeSwarmChart.js +258 -267
- 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 +2 -0
- package/dist/BiVariateChoroplethMap.js +126 -131
- 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 +2 -0
- package/dist/BulletChart.js +404 -413
- 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 +2 -0
- package/dist/ButterflyChart.js +179 -184
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.d.ts +2 -0
- package/dist/ChoroplethMap.js +268 -273
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.d.ts +2 -0
- package/dist/CirclePackingGraph.js +1 -1
- package/dist/DataCards.d.ts +2 -0
- package/dist/DataCards.js +1 -1
- package/dist/DataTable.d.ts +2 -0
- package/dist/DetailsModal-0Ry5nXiC.js +32 -0
- package/dist/DetailsModal-0Ry5nXiC.js.map +1 -0
- package/dist/DetailsModal-BN0HDFlV.cjs +2 -0
- package/dist/DetailsModal-BN0HDFlV.cjs.map +1 -0
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.d.ts +2 -0
- package/dist/DifferenceLineChart.js +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.cjs.map +1 -1
- package/dist/DonutChart.d.ts +2 -0
- package/dist/DonutChart.js +185 -190
- 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 +2 -0
- package/dist/DotDensityMap.js +198 -203
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.d.ts +2 -0
- package/dist/DualAxisLineChart.js +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.d.ts +2 -0
- package/dist/DumbbellChart.js +364 -373
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/GeoHubCompareMaps.d.ts +2 -0
- package/dist/GeoHubMap.d.ts +2 -0
- package/dist/GeoHubMapWithLayerSelection.d.ts +2 -0
- package/dist/{GraphEl-BcKU0bG1.cjs → GraphEl-B16EYkko.cjs} +2 -2
- package/dist/{GraphEl-BcKU0bG1.cjs.map → GraphEl-B16EYkko.cjs.map} +1 -1
- package/dist/{GraphEl-CGq1EWRn.js → GraphEl-ebgfxefq.js} +3 -3
- package/dist/{GraphEl-CGq1EWRn.js.map → GraphEl-ebgfxefq.js.map} +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.cjs.map +1 -1
- package/dist/GriddedGraphs.d.ts +2 -0
- package/dist/GriddedGraphs.js +19 -19
- package/dist/GriddedGraphs.js.map +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +2 -0
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.cjs.map +1 -1
- package/dist/HeatMap.d.ts +2 -0
- package/dist/HeatMap.js +111 -116
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.d.ts +2 -0
- package/dist/Histogram.js +1 -1
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.d.ts +2 -0
- package/dist/HybridMap.js +202 -207
- package/dist/HybridMap.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.d.ts +2 -0
- package/dist/LineChartWithConfidenceInterval.js +1 -1
- package/dist/{Modal-DGcuAHyK.js → Modal-bMQA6bL_.js} +5 -5
- package/dist/{Modal-DGcuAHyK.js.map → Modal-bMQA6bL_.js.map} +1 -1
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.cjs.map +1 -1
- package/dist/MultiGraphDashboard.d.ts +2 -0
- package/dist/MultiGraphDashboard.js +10 -10
- package/dist/MultiGraphDashboard.js.map +1 -1
- package/dist/MultiGraphDashboardFromConfig.d.ts +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.d.ts +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.d.ts +2 -0
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.d.ts +2 -0
- package/dist/MultiLineAltChart.js +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.d.ts +2 -0
- package/dist/MultiLineChart.js +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.cjs.map +1 -1
- package/dist/ParetoChart.d.ts +2 -0
- package/dist/ParetoChart.js +187 -192
- package/dist/ParetoChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +2 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +16 -16
- package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +2 -0
- package/dist/PerformanceIntensiveScrollStory.d.ts +2 -0
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.d.ts +2 -0
- package/dist/RadarChart.js +158 -163
- 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 +2 -0
- package/dist/SankeyChart.js +172 -177
- 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 +2 -0
- package/dist/ScatterPlot.js +222 -227
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.d.ts +2 -0
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.d.ts +2 -0
- package/dist/SimpleLineChart.js +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.cjs.map +1 -1
- package/dist/SingleGraphDashboard.d.ts +2 -0
- package/dist/SingleGraphDashboard.js +24 -24
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +2 -0
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +2 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +2 -0
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +2 -0
- package/dist/SingleGraphDashboardThreeDGraphs.js +46 -46
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +2 -0
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.d.ts +2 -0
- package/dist/SlopeChart.js +182 -187
- package/dist/SlopeChart.js.map +1 -1
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.d.ts +2 -0
- package/dist/SparkLine.js +1 -1
- package/dist/StatCardFromData.d.ts +2 -0
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.d.ts +2 -0
- package/dist/StripChart.js +249 -258
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.d.ts +2 -0
- package/dist/ThreeDGlobe.js +142 -147
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/Tooltip-Dj5eVppQ.js +45 -0
- package/dist/Tooltip-Dj5eVppQ.js.map +1 -0
- package/dist/Tooltip-uUdw6wJL.cjs +2 -0
- package/dist/Tooltip-uUdw6wJL.cjs.map +1 -0
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.d.ts +2 -0
- package/dist/TreeMapGraph.js +159 -164
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/Types.d.ts +2 -0
- package/dist/UnitChart.d.ts +2 -0
- package/dist/{checkIfMultiple-Y9iKaV_u.js → checkIfMultiple-CIRtG0KE.js} +2 -2
- package/dist/{checkIfMultiple-Y9iKaV_u.js.map → checkIfMultiple-CIRtG0KE.js.map} +1 -1
- package/dist/index-BBV4tAeA.js +330 -0
- package/dist/index-BBV4tAeA.js.map +1 -0
- package/dist/index-CF5hnGvG.cjs +2 -0
- package/dist/index-CF5hnGvG.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/Tooltip-4dJo4_AF.cjs +0 -2
- package/dist/Tooltip-4dJo4_AF.cjs.map +0 -1
- package/dist/Tooltip-CwWUegPB.js +0 -43
- package/dist/Tooltip-CwWUegPB.js.map +0 -1
- package/dist/index-B2LQV7Tk.js +0 -335
- package/dist/index-B2LQV7Tk.js.map +0 -1
- package/dist/index-xRHRLDIp.cjs +0 -2
- package/dist/index-xRHRLDIp.cjs.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 { Modal } from '@undp/design-system-react/Modal';\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 { string2HTML } from '@/Utils/string2HTML';\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}\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 } = 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(d.value, 'NA', precision, prefix, suffix)}\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(d.value, 'NA', precision, prefix, suffix)}\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.length !== 0 ||\r\n highlightedTargetDataPoints.length !== 0\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.length !== 0 ||\r\n highlightedTargetDataPoints.length !== 0\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 <Modal\r\n open={mouseClickData !== undefined}\r\n onClose={() => {\r\n setMouseClickData(undefined);\r\n }}\r\n >\r\n <div\r\n className='graph-modal-content m-0'\r\n dangerouslySetInnerHTML={\r\n typeof detailsOnClick === 'string'\r\n ? { __html: string2HTML(detailsOnClick, mouseClickData) }\r\n : undefined\r\n }\r\n >\r\n {typeof detailsOnClick === 'function' ? detailsOnClick(mouseClickData) : null}\r\n </div>\r\n </Modal>\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, 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 /** 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 } = 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 {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <GraphArea ref={graphDiv}>\r\n {svgWidth && svgHeight && sankeyData ? (\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 />\r\n ) : null}\r\n </GraphArea>\r\n )}\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </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","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","_temp3","_temp4","linkPathGenerator","motion","svg","Symbol","for","marginLeft","marginRight","jsx","textAnchor","filter","_temp5","map","_temp6","t16","d_2","jsxs","fill","color","overflow","P","cn","hyphens","label","length","substring","numberFormattingFunction","_temp7","t17","d_4","i_0","_temp8","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","_temp9","_temp0","t19","t20","Tooltip","Modal","__html","string2HTML","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","t26","t27","t28","svgWidth","setSvgWidth","svgHeight","setSvgHeight","sankeyData","setSankeyData","graphDiv","graphParentDiv","t29","data_0","updateSankeyDataEvent","useEffectEvent","t30","sourceNodes","uniqBy","Colors","graphMainColor","findIndex","el_0","el","totalValue","sourceNodesSorted","orderBy","targetNodes","el_4","targetNodesSorted","el_7","el_8","t31","useEffect","t32","t33","resizeObserver","ResizeObserver","entries","clientWidth","clientHeight","observe","disconnect","t34","graphContainer","t35","t36","t37","description","title","GraphHeader","t38","EmptyState","GraphArea","generateRandomString","t39","footnote","GraphFooter","t40","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}\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 } = 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(d.value, 'NA', precision, prefix, suffix)}\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(d.value, 'NA', precision, prefix, suffix)}\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.length !== 0 ||\r\n highlightedTargetDataPoints.length !== 0\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.length !== 0 ||\r\n highlightedTargetDataPoints.length !== 0\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 /** 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 } = 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 {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <GraphArea ref={graphDiv}>\r\n {svgWidth && svgHeight && sankeyData ? (\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 />\r\n ) : null}\r\n </GraphArea>\r\n )}\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </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","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","_temp3","_temp4","linkPathGenerator","motion","svg","Symbol","for","marginLeft","marginRight","jsx","textAnchor","filter","_temp5","map","_temp6","t16","d_2","jsxs","fill","color","overflow","P","cn","hyphens","label","length","substring","numberFormattingFunction","_temp7","t17","d_4","i_0","_temp8","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","_temp9","_temp0","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","t26","t27","t28","svgWidth","setSvgWidth","svgHeight","setSvgHeight","sankeyData","setSankeyData","graphDiv","graphParentDiv","t29","data_0","updateSankeyDataEvent","useEffectEvent","t30","sourceNodes","uniqBy","Colors","graphMainColor","findIndex","el_0","el","totalValue","sourceNodesSorted","orderBy","targetNodes","el_4","targetNodesSorted","el_7","el_8","t31","useEffect","t32","t33","resizeObserver","ResizeObserver","entries","clientWidth","clientHeight","observe","disconnect","t34","graphContainer","t35","t36","t37","description","title","GraphHeader","t38","EmptyState","GraphArea","generateRandomString","t39","footnote","GraphFooter","t40","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
|
@@ -36,6 +36,7 @@ declare interface ClassNameObject {
|
|
|
36
36
|
regLine?: string;
|
|
37
37
|
dataCards?: string;
|
|
38
38
|
colorLegend?: string;
|
|
39
|
+
modal?: string;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
declare interface CustomLayerDataType {
|
|
@@ -174,6 +175,7 @@ declare interface StyleObject {
|
|
|
174
175
|
mouseOverLine?: React.CSSProperties;
|
|
175
176
|
regLine?: React.CSSProperties;
|
|
176
177
|
dataCards?: React.CSSProperties;
|
|
178
|
+
modal?: React.CSSProperties;
|
|
177
179
|
}
|
|
178
180
|
|
|
179
181
|
export { }
|