Вход Регистрация
Файл: vendor/laravel/prompts/src/Concerns/Themes.php
Строк: 126
<?php

namespace LaravelPromptsConcerns;

use 
InvalidArgumentException;
use 
LaravelPromptsAutoCompletePrompt;
use 
LaravelPromptsClear;
use 
LaravelPromptsConfirmPrompt;
use 
LaravelPromptsDataTablePrompt;
use 
LaravelPromptsGrid;
use 
LaravelPromptsMultiSearchPrompt;
use 
LaravelPromptsMultiSelectPrompt;
use 
LaravelPromptsNote;
use 
LaravelPromptsNumberPrompt;
use 
LaravelPromptsPasswordPrompt;
use 
LaravelPromptsPausePrompt;
use 
LaravelPromptsProgress;
use 
LaravelPromptsPrompt;
use 
LaravelPromptsSearchPrompt;
use 
LaravelPromptsSelectPrompt;
use 
LaravelPromptsSpinner;
use 
LaravelPromptsStream;
use 
LaravelPromptsSuggestPrompt;
use 
LaravelPromptsTable;
use 
LaravelPromptsTask;
use 
LaravelPromptsTextareaPrompt;
use 
LaravelPromptsTextPrompt;
use 
LaravelPromptsThemesDefaultAutoCompletePromptRenderer;
use 
LaravelPromptsThemesDefaultClearRenderer;
use 
LaravelPromptsThemesDefaultConfirmPromptRenderer;
use 
LaravelPromptsThemesDefaultDataTableRenderer;
use 
LaravelPromptsThemesDefaultGridRenderer;
use 
LaravelPromptsThemesDefaultMultiSearchPromptRenderer;
use 
LaravelPromptsThemesDefaultMultiSelectPromptRenderer;
use 
LaravelPromptsThemesDefaultNoteRenderer;
use 
LaravelPromptsThemesDefaultNumberPromptRenderer;
use 
LaravelPromptsThemesDefaultPasswordPromptRenderer;
use 
LaravelPromptsThemesDefaultPausePromptRenderer;
use 
LaravelPromptsThemesDefaultProgressRenderer;
use 
LaravelPromptsThemesDefaultSearchPromptRenderer;
use 
LaravelPromptsThemesDefaultSelectPromptRenderer;
use 
LaravelPromptsThemesDefaultSpinnerRenderer;
use 
LaravelPromptsThemesDefaultStreamRenderer;
use 
LaravelPromptsThemesDefaultSuggestPromptRenderer;
use 
LaravelPromptsThemesDefaultTableRenderer;
use 
LaravelPromptsThemesDefaultTaskRenderer;
use 
LaravelPromptsThemesDefaultTextareaPromptRenderer;
use 
LaravelPromptsThemesDefaultTextPromptRenderer;
use 
LaravelPromptsThemesDefaultTitleRenderer;
use 
LaravelPromptsTitle;

trait 
Themes
{
    
/**
     * The name of the active theme.
     */
    
protected static string $theme 'default';

    
/**
     * The available themes.
     *
     * @var array<string, array<class-string<Prompt>, class-string<object&callable>>>
     */
    
protected static array $themes = [
        
'default' => [
            
TextPrompt::class => TextPromptRenderer::class,
            
NumberPrompt::class => NumberPromptRenderer::class,
            
TextareaPrompt::class => TextareaPromptRenderer::class,
            
PasswordPrompt::class => PasswordPromptRenderer::class,
            
SelectPrompt::class => SelectPromptRenderer::class,
            
MultiSelectPrompt::class => MultiSelectPromptRenderer::class,
            
ConfirmPrompt::class => ConfirmPromptRenderer::class,
            
PausePrompt::class => PausePromptRenderer::class,
            
SearchPrompt::class => SearchPromptRenderer::class,
            
MultiSearchPrompt::class => MultiSearchPromptRenderer::class,
            
SuggestPrompt::class => SuggestPromptRenderer::class,
            
Spinner::class => SpinnerRenderer::class,
            
Note::class => NoteRenderer::class,
            
Table::class => TableRenderer::class,
            
Progress::class => ProgressRenderer::class,
            
Clear::class => ClearRenderer::class,
            
Grid::class => GridRenderer::class,
            
AutoCompletePrompt::class => AutoCompletePromptRenderer::class,
            
Title::class => TitleRenderer::class,
            
Stream::class => StreamRenderer::class,
            
Task::class => TaskRenderer::class,
            
DataTablePrompt::class => DataTableRenderer::class,
        ],
    ];

    
/**
     * Get or set the active theme.
     *
     * @throws InvalidArgumentException
     */
    
public static function theme(?string $name null): string
    
{
        if (
$name === null) {
            return static::
$theme;
        }

        if (! isset(static::
$themes[$name])) {
            throw new 
InvalidArgumentException("Prompt theme [{$name}] not found.");
        }

        return static::
$theme $name;
    }

    
/**
     * Add a new theme.
     *
     * @param  array<class-string<Prompt>, class-string<object&callable>>  $renderers
     */
    
public static function addTheme(string $name, array $renderers): void
    
{
        if (
$name === 'default') {
            throw new 
InvalidArgumentException('The default theme cannot be overridden.');
        }

        static::
$themes[$name] = $renderers;
    }

    
/**
     * Get the renderer for the current prompt.
     */
    
protected function getRenderer(): callable
    {
        
$class get_class($this);

        return new (static::
$themes[static::$theme][$class] ?? static::$themes['default'][$class])($this);
    }

    
/**
     * Render the prompt using the active theme.
     */
    
protected function renderTheme(): string
    
{
        
$renderer $this->getRenderer();

        return 
$renderer($this);
    }
}
Онлайн: 1
Реклама