in packages-ext/recoil-devtools/src/utils/sankey/SankeyGraphLayout.js [322:364]
function layoutLinks() {
for (const depth of depths) {
const padding =
depth.length > 1
? depth.padding
: depth.length === 1
? maxPosition - depth[0].value
: 0;
for (const node of depth) {
sortAsc(node.sourceLinks, link => link.source?.position ?? Infinity);
let trailingPosition = node.position - padding / 2;
let trailingPadding = padding / (node.sourceLinks.length - 1);
let position = node.position;
for (const sourceLink of node.sourceLinks) {
sourceLink.targetDepth = node.depth;
sourceLink.targetPosition = position;
position += sourceLink.value;
// Trailing link to missing node
if (sourceLink.fadeSource) {
sourceLink.sourceDepth = node.depth - 1;
sourceLink.sourcePosition = trailingPosition;
}
trailingPosition += sourceLink.value + trailingPadding;
}
sortAsc(node.targetLinks, link => link.target?.position ?? Infinity);
position = node.position;
trailingPosition = node.position - padding / 2;
trailingPadding = padding / (node.targetLinks.length - 1);
for (const targetLink of node.targetLinks) {
targetLink.sourceDepth = node.depth;
targetLink.sourcePosition = position;
position += targetLink.value;
// Trailing link to missing node
if (targetLink.fadeTarget) {
targetLink.targetDepth = node.depth + 1;
targetLink.targetPosition = trailingPosition;
}
trailingPosition += targetLink.value + trailingPadding;
}
}
}
}