import { StudioProjectState } from '../types';

export default function makeBeat1(targetBeats: number) {
  const delta = -1 * targetBeats;
  return (state: StudioProjectState): StudioProjectState => ({
    ...state,
    selection: {
      ...state.selection,
      anchorBeats: 0,
      focusBeats: 0,
    },
    loop: {
      ...state.loop,
      startBeats: state.loop.startBeats + delta,
      endBeats: state.loop.endBeats + delta,
    },
    tracks: state.tracks.map((track) => ({
      ...track,
      clips: track.clips.map((clip) => ({
        ...clip,
        startBeats: clip.startBeats + delta,
        endBeats: clip.endBeats + delta,
      })),
      clipCreationIntents: track.clipCreationIntents.map((intent) => ({
        ...intent,
        startBeats: intent.startBeats
          ? intent.startBeats + delta
          : intent.startBeats,
        endBeats: intent.endBeats ? intent.endBeats + delta : intent.endBeats,
      })),
    })),
  });
}
