export default function calculateSpans()

in src/components/BranchProfile/calculateSpans.ts [10:59]


export default function calculateSpans(
  type: string,
  max: number,
  startArg: number,
  endArg: number,
  branchStartArg: number,
  branchEndArg: number,
  activeIndexArg: number,
  successorIndexArg: number,
  pinnedIndexArg: number,
) {
  const offset = startArg;
  const start = startArg - offset;
  const end = endArg - offset;
  const branchStart = branchStartArg - offset;
  const branchEnd = branchEndArg - offset;
  const activeIndex = convertArg(activeIndexArg, offset);
  const successorIndex = convertArg(successorIndexArg, offset);
  const pinnedIndex = convertArg(pinnedIndexArg, offset);

  // Set up the initial spans ranges; culling out empty ranges
  let spans = initialSpans(start, max);
  const isCurrent = type === 'current';
  spans = insertSpan(spans, new Span(start, end + 1, 'UNRELATED_UNIQUE'));

  if (isNumber(branchStart) && isNumber(branchEnd) && branchStart >= 0 && branchEnd >= 0) {
    const color = isCurrent ? 'CURRENT' : 'ANCESTOR';
    const span = new Span(branchStart, branchEnd + 1, color);
    spans = insertSpan(spans, span);
  }

  if (isNumber(activeIndex) && activeIndex >= start && activeIndex <= max) {
    let color = type === 'current' ? 'CURRENT_ACTIVE' : 'LEGACY_ACTIVE';
    if (isNumber(pinnedIndex) && activeIndex === pinnedIndex + 1) {
      color = 'SUCCESSOR_ACTIVE';
    }
    const span = new Span(activeIndex, activeIndex + 1, color);
    spans = insertSpan(spans, span);
  }
  if (isNumber(pinnedIndex) && pinnedIndex >= 0) {
    const span = new Span(pinnedIndex, pinnedIndex + 1, 'SUCCESSOR_PIN');
    spans = insertSpan(spans, span);
  }
  if (isNumber(successorIndex) && successorIndex >= 0) {
    const color = isCurrent ? 'SUCCESSOR_ACTIVE' : 'SUCCESSOR';
    const span = new Span(successorIndex, successorIndex + 1, color);
    spans = insertSpan(spans, span);
  }
  return spans;
}