66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\View\Components\Script;
 | |
| 
 | |
| use App\Abstracts\View\Component;
 | |
| use Illuminate\Support\Js;
 | |
| 
 | |
| class Declaration extends Component
 | |
| {
 | |
|     /** @var string */
 | |
|     public $kind;
 | |
| 
 | |
|     /** @var array */
 | |
|     public $value;
 | |
| 
 | |
|     public $scripts = null;
 | |
| 
 | |
|     /**
 | |
|      * Create a new component instance.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function __construct(
 | |
|         string $kind = 'var',array $value = []
 | |
|     ) {
 | |
|         $this->kind = $kind;
 | |
|         $this->value = $value;
 | |
| 
 | |
|         $this->scripts = $this->getScripts();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the view / contents that represent the component.
 | |
|      *
 | |
|      * @return \Illuminate\Contracts\View\View|string
 | |
|      */
 | |
|     public function render()
 | |
|     {
 | |
|         return view('components.script.declaration');
 | |
|     }
 | |
| 
 | |
|     protected function getScripts()
 | |
|     {
 | |
|         $scripts = '';
 | |
| 
 | |
|         foreach ($this->value as $key => $value) {
 | |
|             $scripts .= $this->getScript($key, $value) . "\n";
 | |
|         }
 | |
| 
 | |
|         return $scripts;
 | |
|     }
 | |
| 
 | |
|     protected function getScript($key, $value = null)
 | |
|     {
 | |
|         $script = $this->kind . ' ' . $key;
 | |
| 
 | |
|         if (! is_null($value)) {
 | |
|             $script .= ' = ' . Js::from($value)->toHtml() . ';';
 | |
|         } else {
 | |
|             $script .= ' = ' . 'null;';
 | |
|         }
 | |
| 
 | |
|         return $script;
 | |
|     }
 | |
| }
 |