<?php

declare(strict_types=1);

namespace app\models\helpers;

use yii;
use yii\base\Model;
use yii\web\View;

class JsManager extends Model
{
    /**
     * Сгенерировать <script> элементы из данных AssetManager
     *
     * Создавалось под виджет ActiveForm и только на нём тестировалось
     *
     * @param View $view Представление
     * @param array $targets Названия виджетов (например: "yii\widgets\ActiveFormAsset")
     *
     * @return string HTML-код
     */
    public static function include(View $view, array $targets): string
    {
        // Инициализация
        $buffer = '';

        foreach ($targets as $target) {
            // Перебор целей для генерации

            // Инициализация
            $depends = $view->assetBundles[$target]->depends;

            if (count($depends) > 0) {
                // Найдены зависимости

                // Рекурсивный вызов
                self::include($view, $depends);
            }

            // Инициализация
            $files = $view->assetBundles[$target]->js;

            foreach ($files as $file) {
                // Перебор файлов цели для генерации

                // Инициализация публичного пути к файлу
                $path = $view->assetBundles[$target]->baseUrl . '/' . $file;

                // Генерация
                $buffer .= <<<HTML
                    <script src="$path" defer></script>
                HTML;
            }
        }

        return $buffer;
    }
}
