import { defaultStudioTrackHeight, minimumTrackHeight } from '../createTrack';
import { StudioProjectState } from '../types';

export default function toggleTakeLanes(trackId: string, expanded?: boolean) {
  return (state: StudioProjectState): StudioProjectState => {
    const trackIndex = state.tracks.findIndex((track) => track.id === trackId);
    if (trackIndex === -1) {
      return state;
    }
    return {
      ...state,
      tracks: state.tracks.map((track) => {
        if (track.id === trackId) {
          const newExpanded =
            expanded === undefined
              ? !track.takeLanesExpanded || track.height <= minimumTrackHeight
              : expanded;
          return {
            ...track,
            height:
              newExpanded && track.height <= minimumTrackHeight
                ? defaultStudioTrackHeight
                : track.height,
            takeLanesExpanded: newExpanded,
          };
        } else {
          return track;
        }
      }),
    };
  };
}
