import React, { useState } from 'react';
import { formatTime } from '../utils/subtitleUtils';
import { useTranscriptionStore } from '../stores/transcriptionStore';
import { InformationCircleIcon } from '@heroicons/react/24/outline';
const FullTranscription: React.FC = () => {
const [showInfoTooltip, setShowInfoTooltip] = useState(false);
const [showExpandedChunks, setShowExpandedChunks] = useState(false);
const { transcription, selectedLanguage } = useTranscriptionStore();
const renderInfoTooltip = () => {
if (!transcription) return null;
const chunks = transcription.chunks || [];
const maxVisibleChunks = 3;
const hasMoreChunks = chunks.length > maxVisibleChunks;
const visibleChunks = showExpandedChunks ? chunks : chunks.slice(0, maxVisibleChunks);
// Calculate better positioning to avoid edge cuts
const tooltipStyle: React.CSSProperties = {
position: 'fixed',
left: '50%',
top: '50%',
transform: 'translate(-50%, -50%)',
maxHeight: '80vh', // Prevent tooltip from being taller than viewport
overflowY: 'auto' as const
};
return (
Transcription Details
Model:
{transcription.model}
Language:
{selectedLanguage || 'auto-detect'}
Segments:
{transcription.num_segments}
Duration:
{formatTime(transcription.total_duration)}
Device:
{transcription.device}
{/* Long-form specific info */}
{transcription.num_chunks && (
<>
Chunks:
{transcription.num_chunks}
>
)}
{/* Improved Chunk details */}
{chunks.length > 0 && (
Chunk Details
{hasMoreChunks && (
)}
{visibleChunks.map((chunk, index) => (
Chunk #{index + 1}
{chunk.duration.toFixed(1)}s
{formatTime(chunk.start_time)} → {formatTime(chunk.end_time)}
))}
{hasMoreChunks && !showExpandedChunks && (
)}
)}
);
};
if (!transcription) return null;
return (
Full Transcription
{/* Info tooltip */}
setShowInfoTooltip(true)}
onMouseLeave={() => setShowInfoTooltip(false)}
/>
{showInfoTooltip && renderInfoTooltip()}
{transcription.transcription}
);
};
export default FullTranscription;