import clearTimeFromTrack from '../actionHelpers/clearTimeFromTrack';
import {
  getDerivedTiming,
  getSelectionEndBeats,
  getSelectionStartBeats,
} from '../selectors';
import { StudioProjectState } from '../types';

export default function splitTimelineSelection(
  state: StudioProjectState
): StudioProjectState {
  const timing = getDerivedTiming(state);
  const newTracks = state.tracks.map((track) =>
    state.selection.trackIds.includes(track.id)
      ? clearTimeFromTrack(
          timing,
          getSelectionStartBeats(state),
          getSelectionStartBeats(state),
          clearTimeFromTrack(
            timing,
            getSelectionEndBeats(state),
            getSelectionEndBeats(state),
            track
          )
        )
      : track
  );
  return {
    ...state,
    tracks: newTracks,
    metadata: {
      ...state.metadata,
      usedSplit: true,
    },
    selection: {
      ...state.selection,
      focusedArea: 'timeline',
    },
  };
}
