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

<Meta title='@dxtmisha/ru/scripts/Classes/PropertiesConvector - Трансформер семантических токенов'/>

# Класс PropertiesConvector

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

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

- **Семантическая диспетчеризация** — автоматически направляет токены в специализированные конвертеры на основе метаданных их `type`.
- **Рекурсивный обход** — глубоко обходит вложенные объекты свойств, гарантируя обработку всех дочерних токенов.
- **Специализированные конвертеры** — интегрирует выделенную логику для `color`, `boxShadow`, `fontFamilies` и `typography`.
- **Преобразование «на месте»** — напрямую модифицирует объекты свойств для сохранения структурной целостности в процессе сборки.

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

Являясь статической утилитой, `PropertiesConvector` не требует создания экземпляра. Доступ к его основной функции осуществляется напрямую.

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

// Преобразование набора необработанных свойств
PropertiesConvector.to(rawProperties)
```

## Методы

### Трансформация

- `to(properties): void` — рекурсивно обрабатывает список свойств, применяя специфические для типа преобразования к каждому элементу.

## Операции

### Поток диспетчеризации преобразования

`PropertiesConvector` управляет жизненным циклом трансформации через стратегию рекурсивного сопоставления:
1. **Определение типа**: Для каждого элемента в предоставленном кластере свойств класс проверяет наличие соответствующего конвертера во внутреннем реестре (например, сопоставление `color` с `convectorColor`).
2. **Специализированное выполнение**: Если совпадение найдено, на элементе выполняется логика конкретного конвертера, преобразующая необработанные значения в финальные форматы.
3. **Рекурсивное ветвление**:
    - Если у элемента есть `value`, являющееся объектом, класс рекурсивно вызывает `to()` для этого объекта.
    - Если сам элемент является объектом без распознанного типа, он продолжает обход для поиска вложенных токенов.
4. **Целостность данных**: Процесс гарантирует, что сложные структуры (такие как карты типографики или многослойные тени) будут полностью разрешены перед следующим этапом конвейера.
