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

<Meta title='@dxtmisha/ru/scripts/Classes/DesignConstructor - Генератор конструктора дизайна'/>

# Класс DesignConstructor

Класс `DesignConstructor` — это специализированная реализация `DesignCommand`, ориентированная на генерацию внутренней логики и «конструкторов» компонентов. Он автоматизирует создание определений свойств, типов TypeScript и стилевых хуков, которые формируют основу поведенческого слоя компонента.

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

- **Развертывание конструктора** — автоматически генерирует полный набор файлов, необходимых для реализации поведенческой логики компонента.
- **Автоматизация типизации** — создает `props.ts`, `types.ts` и `basicTypes.ts` для обеспечения строгой типизации всех частей компонента.
- **Стилевой фундамент** — создает начальный файл `style.scss`, совместимый с системой классов конструктора.
- **Генерация унифицированной логики** — создает файлы `.ts` и `.tsx` для гибкой реализации логики компонентов.
- **Системная интеграция** — автоматически обновляет `package.json` и создает экспорты библиотеки для нового конструктора.

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

Для инициализации экземпляра генератора используйте конструктор. Он автоматически определяет целевую директорию внутри папки `src/constructors`.

**Параметры:**
- `command: string` — уникальный идентификатор компонента (например, `'button'`, `'list'`).
- `options: Record<string, string>` — дополнительные параметры конфигурации в формате ключ-значение.

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

const generator = new DesignConstructor('button')
generator.make()
```

## Методы

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

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

## Операции

### Структура генерируемых файлов

При инициализации `DesignConstructor` обрабатывает несколько файлов на основе шаблонов:

- `properties.json` — конфигурация маппинга для внутренних свойств конструктора.
- `props.ts` — определения свойств, включая типы и значения по умолчанию.
- `types.ts` и `basicTypes.ts` — интерфейсы TypeScript и определения типов для состояния и конфигурации компонента.
- `style.scss` — начальные определения стилей, связанные со структурой классов конструктора.
- `Constructors.ts` — основной файл реализации логики.
- `ConstructorsDesign.tsx` — реализация визуального слоя/рендеринга с использованием TSX.
- `index.ts` — точка входа для экспортов конструктора.

### Жизненный цикл выполнения

Процесс `make()` выполняется в строгом порядке для сохранения целостности данных:
1. **Настройка директорий**: определяет и подтверждает целевой путь в директории `src/constructors`.
2. **Генерация файлов**: последовательно вызывает специализированные методы `make[File]()` для преобразования шаблонов в код проекта.
3. **Внутренняя интеграция**: обновляет `package.json` проекта для предоставления доступа к новому конструктору.
4. **Публикация библиотеки**: генерирует файл экспорта в корневой директории библиотеки для обеспечения глобального использования.
