import getTimingFromDownbeats from '../edit2025/getTimingFromDownbeats';
import { StudioClip, StudioTiming } from './types';

export default function getProjectTimingForClip(
  clip: StudioClip,
  trackId: string
): StudioTiming {
  const timing = getTimingFromDownbeats(
    Object.entries(clip.warp.markers).map(([seconds, beats]) => [
      Number(seconds),
      beats,
    ])
  );

  let minBps = timing.bps;
  let maxBps = timing.bps;
  for (const automationPoint of timing.bpsAutomation) {
    if (automationPoint.value < minBps) {
      minBps = automationPoint.value;
    }
    if (automationPoint.value > maxBps) {
      maxBps = automationPoint.value;
    }
  }

  if (minBps > maxBps * 0.9) {
    return {
      type: 'manual',
      bps: Math.round(timing.bps * 60) / 60,
      bpsAutomation: [],
      lockBPS: true,
    };
  } else {
    return {
      type: 'follow-track',
      trackId,
      fallbackBPS: timing.bps,
    };
  }
}
