/**
 * Text comparison utilities for OCR Text Explorer
 * Provides character, word, and line-level diff visualization
 */
/**
 * Create character-level diff with inline highlighting
 */
function createCharacterDiff(original, improved) {
    if (!original || !improved) {
        return '
';
    
    for (const part of diff) {
        if (part.type === 'equal') {
            html += escapeHtml(part.value);
        } else if (part.type === 'delete') {
            html += `${escapeHtml(part.value)}`;
        } else if (part.type === 'insert') {
            html += `${escapeHtml(part.value)}`;
        }
    }
    
    html += '
';
    return html;
}
/**
 * Create word-level diff
 */
function createWordDiff(original, improved) {
    if (!original || !improved) {
        return '';
    
    for (const part of diff) {
        if (part.type === 'equal') {
            html += escapeHtml(part.value.join(''));
        } else if (part.type === 'delete') {
            html += `${escapeHtml(part.value.join(''))}`;
        } else if (part.type === 'insert') {
            html += `${escapeHtml(part.value.join(''))}`;
        }
    }
    
    html += '
';
    return html;
}
/**
 * Create line-level diff
 */
function createLineDiff(original, improved) {
    if (!original || !improved) {
        return '';
    
    for (const part of diff) {
        if (part.type === 'equal') {
            for (const line of part.value) {
                html += `
${escapeHtml(line)}
`;
            }
        } else if (part.type === 'delete') {
            for (const line of part.value) {
                html += `
${escapeHtml(line)}
`;
            }
        } else if (part.type === 'insert') {
            for (const line of part.value) {
                html += `
${escapeHtml(line)}
`;
            }
        }
    }
    
    html += '