// ==== カットデータ（残す区間 = keep segments） ====
// /supermovie-cut が自動生成・上書きする。
// 【初期状態 = カットなし】元動画を丸ごと1セグメントで再生する恒等マッピング。
// カット後は /supermovie-cut が複数セグメントに書き換え、
// 同時に videoConfig.ts の DURATION_FRAMES をカット後の尺(=CUT_DURATION_FRAMES)に更新する。
// ⚠️ 全数値はフレーム値。ms値は必ず toFrame() でラップする。

import { FPS as CONFIG_FPS, DURATION_FRAMES } from './videoConfig';

export interface CutSegment {
  id: number;
  originalStart: number; // 元動画フレーム
  originalEnd: number;   // 元動画フレーム
  playbackStart: number; // カット後の再生フレーム
  playbackEnd: number;   // カット後の再生フレーム
}

export const FPS = CONFIG_FPS;
const toFrame = (ms: number) => Math.round((ms / 1000) * FPS);

// 初期：全区間を恒等マッピング（カットなし）
export const cutData: CutSegment[] = [
  { id: 1, originalStart: 0, originalEnd: DURATION_FRAMES, playbackStart: 0, playbackEnd: DURATION_FRAMES },
];

export const ORIGINAL_DURATION_FRAMES = DURATION_FRAMES;
export const CUT_DURATION_FRAMES = DURATION_FRAMES;

// ★ subtitles / se が使う: 元動画フレーム → カット後再生フレーム への変換
export function mapOriginalToPlayback(originalFrame: number): number {
  for (const seg of cutData) {
    if (originalFrame >= seg.originalStart && originalFrame <= seg.originalEnd) {
      return seg.playbackStart + (originalFrame - seg.originalStart);
    }
  }
  for (let i = cutData.length - 1; i >= 0; i--) {
    if (originalFrame > cutData[i].originalEnd) {
      return cutData[i].playbackEnd;
    }
  }
  return 0;
}

export function isKept(originalFrame: number): boolean {
  return cutData.some(
    (seg) => originalFrame >= seg.originalStart && originalFrame <= seg.originalEnd,
  );
}

// toFrame は /supermovie-cut が生成するコードで使用
void toFrame;
