blob: 2f00d0817909ba5d9b440d4cc4d13fef1063fe20 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import type { SnapPoint, SnapResult } from "./types";
export function resolveTimelineSnap({
targetTime,
snapPoints,
maxSnapDistance,
}: {
targetTime: number;
snapPoints: SnapPoint[];
maxSnapDistance: number;
}): SnapResult {
let closestSnapPoint: SnapPoint | null = null;
let closestDistance = Infinity;
for (const snapPoint of snapPoints) {
const distance = Math.abs(targetTime - snapPoint.time);
if (distance <= maxSnapDistance && distance < closestDistance) {
closestDistance = distance;
closestSnapPoint = snapPoint;
}
}
return {
snappedTime: closestSnapPoint ? closestSnapPoint.time : targetTime,
snapPoint: closestSnapPoint,
snapDistance: closestDistance,
};
}
|