MCPcopy Create free account
hub / github.com/block/buzz / formatTimecode

Function formatTimecode

desktop/src/shared/ui/VideoPlayer.tsx:131–165  ·  view source on GitHub ↗
(
  seconds: number,
  options: { fractionalDigits?: number; trimZeroFraction?: boolean } = {},
)

Source from the content-addressed store, hash-verified

129}
130
131function formatTimecode(
132 seconds: number,
133 options: { fractionalDigits?: number; trimZeroFraction?: boolean } = {},
134): string {
135 const safeSeconds = Number.isFinite(seconds) ? Math.max(0, seconds) : 0;
136 const fractionalDigits = Math.max(0, options.fractionalDigits ?? 0);
137 const precisionFactor = 10 ** fractionalDigits;
138 const totalTicks =
139 fractionalDigits > 0
140 ? Math.round(safeSeconds * precisionFactor)
141 : Math.floor(safeSeconds);
142 const totalSeconds =
143 fractionalDigits > 0
144 ? Math.floor(totalTicks / precisionFactor)
145 : totalTicks;
146 const hours = Math.floor(totalSeconds / 3600);
147 const minutes = Math.floor((totalSeconds % 3600) / 60);
148 const remainingSeconds = totalSeconds % 60;
149 const paddedSeconds = String(remainingSeconds).padStart(2, "0");
150 const fraction = fractionalDigits > 0 ? totalTicks % precisionFactor : 0;
151
152 const baseTimecode =
153 hours > 0
154 ? `${hours}:${String(minutes).padStart(2, "0")}:${paddedSeconds}`
155 : `${String(minutes).padStart(2, "0")}:${paddedSeconds}`;
156
157 if (
158 fractionalDigits <= 0 ||
159 (options.trimZeroFraction === true && fraction === 0)
160 ) {
161 return baseTimecode;
162 }
163
164 return `${baseTimecode}.${String(fraction).padStart(fractionalDigits, "0")}`;
165}
166
167function formatCommentTimecode(seconds: number): string {
168 return formatTimecode(seconds, {

Callers 4

formatCommentTimecodeFunction · 0.85
VideoScrubberFunction · 0.85
VideoPlayerFunction · 0.85
VideoReviewDialogFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected