/home/kueuepay/public_html/vendor/nunomaduro/termwind/src/Termwind.php
<?php
declare(strict_types=1);
namespace Termwind;
use Closure;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Output\OutputInterface;
use Termwind\Components\Element;
use Termwind\Exceptions\InvalidChild;
/**
* @internal
*/
final class Termwind
{
/**
* The implementation of the output.
*/
private static OutputInterface|null $renderer;
/**
* Sets the renderer implementation.
*/
public static function renderUsing(OutputInterface|null $renderer): void
{
self::$renderer = $renderer ?? new ConsoleOutput();
}
/**
* Creates a div element instance.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function div(array|string $content = '', string $styles = '', array $properties = []): Components\Div
{
$content = self::prepareElements($content, $styles);
return Components\Div::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates a paragraph element instance.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function paragraph(array|string $content = '', string $styles = '', array $properties = []): Components\Paragraph
{
$content = self::prepareElements($content, $styles);
return Components\Paragraph::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates a span element instance with the given style.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function span(array|string $content = '', string $styles = '', array $properties = []): Components\Span
{
$content = self::prepareElements($content, $styles);
return Components\Span::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates an element instance with raw content.
*
* @param array<int, Element|string>|string $content
*/
public static function raw(array|string $content = ''): Components\Raw
{
return Components\Raw::fromStyles(
self::getRenderer(), $content
);
}
/**
* Creates an anchor element instance with the given style.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function anchor(array|string $content = '', string $styles = '', array $properties = []): Components\Anchor
{
$content = self::prepareElements($content, $styles);
return Components\Anchor::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates an unordered list instance.
*
* @param array<int, string|Element> $content
* @param array<string, mixed> $properties
*/
public static function ul(array $content = [], string $styles = '', array $properties = []): Components\Ul
{
$ul = Components\Ul::fromStyles(
self::getRenderer(), '', $styles, $properties
);
$content = self::prepareElements(
$content,
$styles,
static function ($li) use ($ul): string|Element {
if (is_string($li)) {
return $li;
}
if (! $li instanceof Components\Li) {
throw new InvalidChild('Unordered lists only accept `li` as child');
}
return match (true) {
$li->hasStyle('list-none') => $li,
$ul->hasStyle('list-none') => $li->addStyle('list-none'),
$ul->hasStyle('list-square') => $li->addStyle('list-square'),
$ul->hasStyle('list-disc') => $li->addStyle('list-disc'),
default => $li->addStyle('list-none'),
};
}
);
return $ul->setContent($content);
}
/**
* Creates an ordered list instance.
*
* @param array<int, string|Element> $content
* @param array<string, mixed> $properties
*/
public static function ol(array $content = [], string $styles = '', array $properties = []): Components\Ol
{
$ol = Components\Ol::fromStyles(
self::getRenderer(), '', $styles, $properties
);
$index = 0;
$content = self::prepareElements(
$content,
$styles,
static function ($li) use ($ol, &$index): string|Element {
if (is_string($li)) {
return $li;
}
if (! $li instanceof Components\Li) {
throw new InvalidChild('Ordered lists only accept `li` as child');
}
return match (true) {
$li->hasStyle('list-none') => $li->addStyle('list-none'),
$ol->hasStyle('list-none') => $li->addStyle('list-none'),
$ol->hasStyle('list-decimal') => $li->addStyle('list-decimal-'.(++$index)),
default => $li->addStyle('list-none'),
};
}
);
return $ol->setContent($content);
}
/**
* Creates a list item instance.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function li(array|string $content = '', string $styles = '', array $properties = []): Components\Li
{
$content = self::prepareElements($content, $styles);
return Components\Li::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates a description list instance.
*
* @param array<int, string|Element> $content
* @param array<string, mixed> $properties
*/
public static function dl(array $content = [], string $styles = '', array $properties = []): Components\Dl
{
$content = self::prepareElements(
$content,
$styles,
static function ($element): string|Element {
if (is_string($element)) {
return $element;
}
if (! $element instanceof Components\Dt && ! $element instanceof Components\Dd) {
throw new InvalidChild('Description lists only accept `dt` and `dd` as children');
}
return $element;
}
);
return Components\Dl::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates a description term instance.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function dt(array|string $content = '', string $styles = '', array $properties = []): Components\Dt
{
$content = self::prepareElements($content, $styles);
return Components\Dt::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates a description details instance.
*
* @param array<int, Element|string>|string $content
* @param array<string, mixed> $properties
*/
public static function dd(array|string $content = '', string $styles = '', array $properties = []): Components\Dd
{
$content = self::prepareElements($content, $styles);
return Components\Dd::fromStyles(
self::getRenderer(), $content, $styles, $properties
);
}
/**
* Creates a horizontal rule instance.
*
* @param array<string, mixed> $properties
*/
public static function hr(string $styles = '', array $properties = []): Components\Hr
{
return Components\Hr::fromStyles(
self::getRenderer(), '', $styles, $properties
);
}
/**
* Creates an break line element instance.
*
* @param array<string, mixed> $properties
*/
public static function breakLine(string $styles = '', array $properties = []): Components\BreakLine
{
return Components\BreakLine::fromStyles(
self::getRenderer(), '', $styles, $properties
);
}
/**
* Gets the current renderer instance.
*/
public static function getRenderer(): OutputInterface
{
return self::$renderer ??= new ConsoleOutput();
}
/**
* Convert child elements to a string.
*
* @param array<int, string|Element>|string $elements
* @return array<int, string|Element>
*/
private static function prepareElements($elements, string $styles = '', Closure|null $callback = null): array
{
if ($callback === null) {
$callback = static fn ($element): string|Element => $element;
}
$elements = is_array($elements) ? $elements : [$elements];
return array_map($callback, $elements);
}
}
Run Command [Bypass]
Run Command
User Login
top
In the digital age, privacy concerns have become increasingly paramount, prompting the European Union to enact the General Data Protection Regulation (GDPR) in 2018. Among its many provisions, GDPR sets strict guidelines for the collection and processing of personal data, including the use of cookies on websites. Privacy Policy
Allow
Decline