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

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

# Класс Properties

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

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

- **Многоэтапный конвейер обработки** — выполняет специализированные трансформаторы для замены, клонирования, связывания и перемещения токенов дизайна.
- **Структурное слияние** — интеллектуально разрешает и объединяет настройки, глобальные значения по умолчанию и переопределения для конкретных компонентов.
- **Инкрементальное управление кэшем** — использует `PropertiesCache` для сохранения результатов обработки, что значительно повышает производительность сборки.
- **Синтез SCSS** — компилирует разрешенные токены в структурированный формат SCSS для прямого использования в слоях стилизации.
- **Оптимизированные для ИИ метаданные** — подготавливает структуры свойств, которые легко потребляются движками документации и генераторами на базе ИИ.

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

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

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

const engine = new Properties()
const tokens = engine.get() // Возвращает полностью обработанный PropertiesItems
```

## Методы

### Доступ к данным

- `get(): PropertiesItems` — Возвращает основной контейнер всех обработанных токенов дизайна.
- `getScss(): string` — Возвращает скомпилированное представление текущего набора токенов в формате SCSS.

## Операции

### Конвейер обработки токенов

При создании экземпляра `Properties` координирует комплексный многоуровневый поток трансформаций:
1. **Получение источников**: читает и объединяет необработанные данные из `PropertiesSettings`, `PropertiesMain` и внешних JSON-файлов.
2. **Базовая нормализация**: запускает фундаментальные преобразования:
    - **Замена (Replacement)**: разрешает паттерны алиасов.
    - **Разрешение палитры**: внедряет значения цветовых палитр.
    - **Клонирование и синтез подсвойств**: обрабатывает сложные репликации свойств.
3. **Продвинутая трансформация**: выполняет высокоуровневую логику для:
    - **Разрешения компонентов**: сопоставляет свойства со структурами конкретных компонентов.
    - **Маппинга состояний и классов**: генерирует метаданные для состояний UI (hover, active) и BEM-классов.
    - **Синтеза медиа и анимаций**: разрешает адаптивные контрольные точки и токены движения.
4. **Оптимизация и очистка**: сортирует свойства, обрабатывает дубликаты и удаляет пустые узлы.
5. **Сохранение**: финальный результат сохраняется в `PropertiesCache` с использованием уникального хеша на основе текущей конфигурации дизайна.

