29 lines
775 B
TypeScript
29 lines
775 B
TypeScript
/**
|
|
* Pure utilities for transcript data detection and formatting.
|
|
* Extracted from MessageBubble for testability without React DOM.
|
|
*/
|
|
|
|
export interface TranscriptData {
|
|
assetName: string;
|
|
language: string;
|
|
fullText: string;
|
|
segments: Array<{ text: string; start: number; end: number }>;
|
|
duration: number;
|
|
}
|
|
|
|
export function isTranscriptData(data: unknown): data is TranscriptData {
|
|
return (
|
|
typeof data === "object" &&
|
|
data !== null &&
|
|
"fullText" in data &&
|
|
"segments" in data &&
|
|
Array.isArray((data as TranscriptData).segments)
|
|
);
|
|
}
|
|
|
|
export function formatTimestamp(seconds: number): string {
|
|
const mins = Math.floor(seconds / 60);
|
|
const secs = Math.floor(seconds % 60);
|
|
return `${String(mins).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
|
|
}
|