<?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'
));
}
}