import clearTimeFromClipList from '../clearTimeFromClipList';
import { getDerivedTiming } from '../selectors';
import { StudioProjectState } from '../types';

export default function deleteRanges(
  ranges: { startBeats: number; endBeats: number }[],
  trackIds: string[]
) {
  return (state: StudioProjectState): StudioProjectState => {
    let newState = state;

    for (const range of ranges) {
      newState = {
        ...newState,
        tracks: newState.tracks.map((track) =>
          trackIds.includes(track.id)
            ? {
                ...track,
                clips: clearTimeFromClipList(
                  getDerivedTiming(newState),
                  range.startBeats,
                  range.endBeats,
                  track.clips
                ),
              }
            : track
        ),
        selection: {
          ...newState.selection,
          focusedArea: 'timeline',
        },
      };
    }
    return newState;
  };
}
