import { messages } from '../../core/messages/index.js';
import { normalizePath } from '../../shared/helpers/index.js';
const log = messages.log;
export function exibirMolduraSegura(titulo, linhas, fallbackFn) {
    try {
        const bloco = log.bloco(titulo, linhas);
        console.log(bloco);
        return true;
    }
    catch {
        if (fallbackFn) {
            fallbackFn();
        }
        else {
            linhas.forEach(linha => log.info(messages.CliExibirMolduraMensagens.fallbackLinha(linha)));
        }
        return false;
    }
}
export function exibirMolduraPlano(movimentos, limite = 10) {
    const linhas = [messages.CliExibirMolduraMensagens.planoCabecalhoLinha1, messages.CliExibirMolduraMensagens.planoCabecalhoLinha2];
    const primeiros = movimentos.slice(0, limite);
    for (const metrica of primeiros) {
        const de = normalizePath(String(metrica.de)).slice(0, 34).padEnd(34, ' ');
        const para = normalizePath(String(metrica.para)).slice(0, 39);
        linhas.push(`${de}  → ${para}`);
    }
    if (movimentos.length > limite) {
        linhas.push(messages.CliExibirMolduraMensagens.planoOverflow(movimentos.length - limite));
    }
    exibirMolduraSegura(messages.CliExibirMolduraMensagens.planoTitulo, linhas, () => {
        primeiros.forEach(metrica => log.info(messages.CliExibirMolduraMensagens.planoFallbackLinha(metrica.de, metrica.para)));
        if (movimentos.length > limite) {
            log.info(messages.CliExibirMolduraMensagens.planoFallbackOverflow(movimentos.length - limite));
        }
    });
}
export function exibirMolduraConflitos(conflitos, limite = 10) {
    const linhas = [messages.CliExibirMolduraMensagens.conflitosCabecalhoLinha1, messages.CliExibirMolduraMensagens.conflitosCabecalhoLinha2];
    const primeiros = conflitos.slice(0, limite);
    for (const elem of primeiros) {
        const alvo = normalizePath(String((elem && typeof elem === 'object' && 'alvo' in elem && elem.alvo) ?? JSON.stringify(elem))).slice(0, 31).padEnd(31, ' ');
        const motivo = String((elem && typeof elem === 'object' && 'motivo' in elem && elem.motivo) ?? '-').slice(0, 30);
        linhas.push(`${alvo}   ${motivo}`);
    }
    if (conflitos.length > limite) {
        linhas.push(messages.CliExibirMolduraMensagens.conflitosOverflow(conflitos.length - limite));
    }
    exibirMolduraSegura(messages.CliExibirMolduraMensagens.conflitosTitulo, linhas, () => {
        primeiros.forEach(elem => {
            const alvoStr = (elem && typeof elem === 'object' && 'alvo' in elem && elem.alvo) ?? 'alvo desconhecido';
            const motivoStr = (elem && typeof elem === 'object' && 'motivo' in elem && elem.motivo) ?? '-';
            log.aviso(messages.CliExibirMolduraMensagens.conflitosFallbackLinha(String(alvoStr), String(motivoStr)));
        });
        if (conflitos.length > limite) {
            log.aviso(messages.CliExibirMolduraMensagens.conflitosFallbackOverflow(conflitos.length - limite));
        }
    });
}
//# sourceMappingURL=display-frame.js.map