function layoutLinks()

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;
        }
      }
    }
  }