42 lines
934 B
PHP
42 lines
934 B
PHP
<?php
|
|
|
|
namespace Laravel\Prompts\Themes\Default;
|
|
|
|
use Laravel\Prompts\Spinner;
|
|
|
|
class SpinnerRenderer extends Renderer
|
|
{
|
|
/**
|
|
* The frames of the spinner.
|
|
*
|
|
* @var array<string>
|
|
*/
|
|
protected array $frames = ['⠂', '⠒', '⠐', '⠰', '⠠', '⠤', '⠄', '⠆'];
|
|
|
|
/**
|
|
* The frame to render when the spinner is static.
|
|
*/
|
|
protected string $staticFrame = '⠶';
|
|
|
|
/**
|
|
* The interval between frames.
|
|
*/
|
|
protected int $interval = 75;
|
|
|
|
/**
|
|
* Render the spinner.
|
|
*/
|
|
public function __invoke(Spinner $spinner): string
|
|
{
|
|
if ($spinner->static) {
|
|
return $this->line(" {$this->cyan($this->staticFrame)} {$spinner->message}");
|
|
}
|
|
|
|
$spinner->interval = $this->interval;
|
|
|
|
$frame = $this->frames[$spinner->count % count($this->frames)];
|
|
|
|
return $this->line(" {$this->cyan($frame)} {$spinner->message}");
|
|
}
|
|
}
|