<?php namespace App\View\Components; use Closure; use Illuminate\Contracts\View\View; use Illuminate\Support\Str; use Illuminate\View\Component; class Editor extends Component { public string $id; public string $name; public ?string $value; public array $options; public function __construct( string $name, ?string $value, public string $lang, public bool $readonly = false, public bool $lineNumbers = true, ) { $this->id = $name.'-'.Str::random(8); $this->name = $name; $this->value = json_encode($value ?? ''); $this->options = $this->getOptions(); } private function getOptions(): array { return [ 'id' => $this->id, 'name' => $this->name, 'lang' => $this->lang, 'value' => $this->value, ]; } public function render(): View|Closure|string { return view('components.editor'); } }