import React, { useEffect, useState } from 'react'; import { X } from 'lucide-react'; import { knowledgeBaseService } from '../services/knowledgeBaseService'; import { useLanguage } from '../contexts/LanguageContext'; interface ChunkInfo { fileId: string; fileName: string; totalChunks: number; chunkSize: number; chunkOverlap: number; chunks: Array<{ index: number; content: string; contentLength: number; startPosition: number; endPosition: number; }>; } interface ChunkInfoDrawerProps { isOpen: boolean; onClose: () => void; fileId: string; fileName: string; authToken: string; } export const ChunkInfoDrawer: React.FC = ({ isOpen, onClose, fileId, fileName, authToken, }) => { const { t } = useLanguage(); const [chunkInfo, setChunkInfo] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); useEffect(() => { if (isOpen && fileId) { loadChunks(); } }, [isOpen, fileId]); const loadChunks = async () => { setLoading(true); setError(null); try { const data = await knowledgeBaseService.getFileChunks(fileId, authToken); setChunkInfo(data); } catch (err) { console.error('Failed to load chunks:', err); setError(t('errorLoadData')); } finally { setLoading(false); } }; if (!isOpen) return null; return ( <> {/* Backdrop */}
{/* Drawer */}
{/* Header */}

{t('chunkInfo')}

{fileName}

{/* Content */}
{loading ? (
{t('loading')}
) : error ? (
{error}
) : chunkInfo ? (
{/* Summary */}
{t('totalChunks')}: {chunkInfo.totalChunks}
{t('chunkSize')}: {chunkInfo.chunkSize} tokens
{t('chunkOverlap')}: {chunkInfo.chunkOverlap} tokens
{/* Chunks List */}
{chunkInfo.chunks.map((chunk) => (
{t('chunkIndex')} #{chunk.index} {chunk.contentLength} {t('contentLength')}
{chunk.content}
{t('position')}: {chunk.startPosition} - {chunk.endPosition}
))}
) : null}
); };