import { getPlaintextLyrics } from '@/components/edit2025/lyrics/getPlaintextLyrics';

import splitBeatAlignedLyrics from '../splitBeatAlignedLyrics';
import { ExactBeatRange, LyricsEditSpec } from '../types';

export const resolveLyrics = (
  contextWindow: ExactBeatRange,
  lyrics: LyricsEditSpec
) => {
  const {
    beatAlignedLyricsBefore,
    beatAlignedLyricsAfter,
    editedPlaintextLyrics,
    originalPlaintextLyrics,
  } = lyrics;

  const contextWindowPrefixLyrics = getPlaintextLyrics(
    splitBeatAlignedLyrics(
      beatAlignedLyricsBefore,
      -Infinity,
      contextWindow.startBeats
    )[2]
  );

  const contextWindowSuffixLyrics = getPlaintextLyrics(
    splitBeatAlignedLyrics(
      beatAlignedLyricsAfter,
      contextWindow.endBeats,
      Infinity
    )[0]
  );

  return {
    infillLyrics: editedPlaintextLyrics,

    currentContextWindowLyrics:
      contextWindowPrefixLyrics +
      originalPlaintextLyrics +
      contextWindowSuffixLyrics,

    contextWindowLyrics:
      contextWindowPrefixLyrics +
      editedPlaintextLyrics +
      contextWindowSuffixLyrics,

    fullSongLyrics:
      getPlaintextLyrics(beatAlignedLyricsBefore) +
      editedPlaintextLyrics +
      getPlaintextLyrics(beatAlignedLyricsAfter),
  };
};
