Server IP : 23.254.227.96 / Your IP : 216.73.216.7 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/viralblo/instantblog/vendor/nunomaduro/termwind/src/Components/ |
Upload File : |
<?php declare(strict_types=1); namespace Termwind\Components; use Symfony\Component\Console\Output\OutputInterface; use Termwind\Actions\StyleToMethod; use Termwind\Html\InheritStyles; use Termwind\ValueObjects\Styles; /** * @internal * * @method Element inheritFromStyles(Styles $styles) * @method Element fontBold() * @method Element strong() * @method Element italic() * @method Element underline() * @method Element lineThrough() * @method int getLength() * @method int getInnerWidth() * @method array getProperties() * @method Element href(string $href) * @method bool hasStyle(string $style) * @method Element addStyle(string $style) */ abstract class Element { /** @var string[] */ protected static array $defaultStyles = []; protected Styles $styles; /** * Creates an element instance. * * @param array<int, Element|string>|string $content */ final public function __construct( protected OutputInterface $output, protected array|string $content, Styles|null $styles = null ) { $this->styles = $styles ?? new Styles(defaultStyles: static::$defaultStyles); $this->styles->setElement($this); } /** * Creates an element instance with the given styles. * * @param array<int, Element|string>|string $content * @param array<string, mixed> $properties */ final public static function fromStyles(OutputInterface $output, array|string $content, string $styles = '', array $properties = []): static { $element = new static($output, $content); if ($properties !== []) { $element->styles->setProperties($properties); } $elementStyles = StyleToMethod::multiple($element->styles, $styles); return new static($output, $content, $elementStyles); } /** * Get the string representation of the element. */ public function toString(): string { if (is_array($this->content)) { $inheritance = new InheritStyles(); $this->content = implode('', $inheritance($this->content, $this->styles)); } return $this->styles->format($this->content); } /** * @param array<int, mixed> $arguments */ public function __call(string $name, array $arguments): mixed { if (method_exists($this->styles, $name)) { $result = $this->styles->{$name}(...$arguments); if (str_starts_with($name, 'get') || str_starts_with($name, 'has')) { return $result; } } return $this; } /** * Sets the content of the element. * * @param array<int, Element|string>|string $content */ final public function setContent(array|string $content): static { return new static($this->output, $content, $this->styles); } /** * Renders the string representation of the element on the output. */ final public function render(int $options): void { $this->output->writeln($this->toString(), $options); } /** * Get the string representation of the element. */ final public function __toString(): string { return $this->toString(); } }