MCPcopy
hub / github.com/CapSoftware/Cap / mapTimelineDisplayTimeToSourceTime

Function mapTimelineDisplayTimeToSourceTime

apps/web/lib/video-edits.ts:483–515  ·  view source on GitHub ↗
(
	state: VideoTimelineState,
	displayTime: number,
)

Source from the content-addressed store, hash-verified

481}
482
483export function mapTimelineDisplayTimeToSourceTime(
484 state: VideoTimelineState,
485 displayTime: number,
486) {
487 const duration = normalizeDuration(state.duration);
488 const displayDuration = getTimelineDisplayDuration({ ...state, duration });
489 if (duration <= 0 || displayDuration <= 0 || !isFiniteNumber(displayTime)) {
490 return 0;
491 }
492
493 const time = clampEditTime(displayTime, 0, displayDuration);
494 let sourceCursor = 0;
495 let displayCursor = 0;
496 for (const range of getDisplayDeletedRanges({ ...state, duration })) {
497 const keptDuration = Math.max(0, range.start - sourceCursor);
498 const displayEnd = displayCursor + keptDuration;
499 if (time <= displayEnd + EPSILON) {
500 return roundEditTime(
501 clampEditTime(
502 sourceCursor + time - displayCursor,
503 sourceCursor,
504 range.start,
505 ),
506 );
507 }
508 sourceCursor = range.end;
509 displayCursor = displayEnd;
510 }
511
512 return roundEditTime(
513 clampEditTime(sourceCursor + time - displayCursor, sourceCursor, duration),
514 );
515}
516
517export function getTimelineDisplaySegments(
518 state: VideoTimelineState,

Callers 3

EditVideoClientFunction · 0.90

Calls 6

normalizeDurationFunction · 0.85
isFiniteNumberFunction · 0.85
clampEditTimeFunction · 0.85
getDisplayDeletedRangesFunction · 0.85
roundEditTimeFunction · 0.85

Tested by

no test coverage detected