import { OverlapType, getOverlapType } from './getOverlapType';
import { StudioProjectState } from './types';

export default function trimState(
  state: StudioProjectState,
  startBeats: number,
  endBeats: number,
  trackIds?: string[]
) {
  return {
    ...state,
    tracks: state.tracks
      .filter((track) =>
        trackIds !== undefined ? trackIds.includes(track.id) : true
      )
      .map((track) => ({
        ...track,
        clips: track.clips.filter(
          (clip) =>
            getOverlapType(
              clip.startBeats,
              clip.endBeats,
              startBeats,
              endBeats
            ) !== OverlapType.NoOverlap
        ),
      })),
  };
}
