import type { RetimeConfig } from "@/lib/timeline"; import { clampRetimeRate } from "@/constants/retime-constants"; function getSafeRate({ rate }: { rate: number }): number { return clampRetimeRate({ rate }); } export function getSourceTimeAtClipTime({ clipTime, retime, }: { clipTime: number; retime?: RetimeConfig; }): number { return clipTime * getSafeRate({ rate: retime?.rate ?? 1 }); } export function getClipTimeAtSourceTime({ sourceTime, retime, }: { sourceTime: number; retime?: RetimeConfig; }): number { return sourceTime / getSafeRate({ rate: retime?.rate ?? 1 }); } export function getEffectiveRateAt({ retime, }: { clipTime?: number; retime?: RetimeConfig; }): number { return getSafeRate({ rate: retime?.rate ?? 1 }); } export function getTimelineDurationForSourceSpan({ sourceSpan, retime, }: { sourceSpan: number; retime?: RetimeConfig; }): number { if (sourceSpan <= 0) { return 0; } return sourceSpan / getSafeRate({ rate: retime?.rate ?? 1 }); }