<?php

namespace App\Prompts\Renderers;

use Laravel\Prompts\SuggestPrompt;
use Laravel\Prompts\Themes\Default\SuggestPromptRenderer;

class LiveSuggestPromptRenderer extends SuggestPromptRenderer
{
    protected function renderOptions(SuggestPrompt $prompt): string
    {
        if (empty($prompt->matches())) {
            return '';
        }

        return implode(PHP_EOL, $this->scrollbar(
            array_map(function ($label, $key) use ($prompt) {
                $label = $this->truncate($label, $prompt->terminal()->cols() - 12);

                return $prompt->highlighted === $key
                    ? "{$this->cyan('')} {$label}  "
                    : "  {$this->dim($label)}  ";
            }, $visible = $prompt->visible(), array_keys($visible)),
            $prompt->firstVisible,
            $prompt->scroll,
            count($prompt->matches()),
            min($this->longest($prompt->matches(), padding: 4), $prompt->terminal()->cols() - 6),
            $prompt->state === 'cancel' ? 'dim' : 'cyan'
        ));
    }
}