import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/DesignUi - Оркестратор UI-инфраструктуры'/>

# Класс DesignUi

Класс `DesignUi` — это центральный оркестратор, отвечающий за инициализацию и синхронизацию всей инфраструктуры UI-библиотеки. Он координирует высокоуровневые задачи, такие как пересборка стилей, генерация документации, обновление архитектуры компонентов и настройка метаданных дистрибутива пакета.

## Ключевые особенности

- **Централизованная оркестрация** — управляет потоком выполнения нескольких специализированных генераторов (Styles, Wiki, Components).
- **Инкрементальная инициализация** — поддерживает инициализацию как отдельного компонента, так и всего набора библиотеки.
- **Управление кэшем** — автоматически очищает кэш свойств, гарантируя, что все сгенерированные ресурсы используют актуальные токены дизайн-системы.
- **Автоматическая настройка пакета** — динамически обновляет карту экспорта в `package.json` для соответствия текущему состоянию сборки.
- **Синтез на уровне библиотеки** — запускает глобальные обновления для плагинов, медиа-ресурсов и определений типов во всем рабочем пространстве.

## Инициализация

Инициализируйте оркестратор, при необходимости указав имя компонента. Если имя не указано, класс обрабатывает все компоненты, найденные в библиотеке.

**Параметры:**
- `name: string` — идентификатор конкретного компонента для обработки (необязательно, по умолчанию `''`).

```typescript
import { DesignUi } from '@dxtmisha/scripts'

// Для обновления всего:
const ui = new DesignUi()
ui.make()

// Для обновления конкретного компонента:
const buttonUi = new DesignUi('button')
buttonUi.make()
```

## Методы

### Управление

- `make(): void` — выполняет полный конвейер инициализации, последовательно запуская все обновления инфраструктуры.

## Операции

### Конвейер инициализации UI

При вызове `make()` класс `DesignUi` координирует комплексное многоэтапное обновление:
1. **Сброс окружения**: очищает `PropertiesCache` для предотвращения влияния устаревших токенов на новую сборку.
2. **Генерация инфраструктуры**: запускает генерацию глобальных стилей (`Styles`) и вики («DesignWiki») для подготовки визуального и документального фундамента.
3. **Синхронизация компонентов**: выполняет `DesignComponent` для целевых компонентов, разрешая их структурные метаданные и генерируя исходные файлы.
4. **Подготовка к дистрибуции**: обновляет `package.json` актуальными маппингами экспорта для CSS, SCSS и модулей скриптов.
5. **Библиотечный синтез**: последовательно запускает специализированные библиотечные генераторы:
    - `LibraryMedia`: синхронизирует иконки и флаги.
    - `LibraryList`: компилирует реестр компонентов.
    - `LibraryPlugin`: пересобирает плагины интеграции с Vue/фреймворками.
    - `LibraryAiWiki`: генерирует оптимизированные для ИИ артефакты документации.
    - `LibraryTypes`: компилирует глобальные определения типов.

### Роль в экосистеме

`DesignUi` служит основной точкой входа для разработчиков и автоматизированных инструментов сборки. Абстрагируя сложность десятков специализированных классов, он предоставляет стабильный интерфейс «в один клик» для поддержания синхронизации UI-библиотеки с развивающимися спецификациями дизайн-системы.
