import insertClipsToList from '../insertClipsToList';
import { getDerivedTiming } from '../selectors';
import { StudioClip, StudioProjectState } from '../types';
import { updateTrackOrTakeLane } from './updateTracksAndTakeLanes';

export default function arrangeClip(
  trackOrTakeLaneId: string,
  clip: StudioClip
) {
  return (state: StudioProjectState): StudioProjectState =>
    updateTrackOrTakeLane(trackOrTakeLaneId, (t) => {
      return {
        ...t,
        clips: insertClipsToList(getDerivedTiming(state), [clip], t.clips),
      };
    })(state);
}
