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

<Meta title='@dxtmisha/ru/scripts/Classes/StylesToAbstract - Базовый класс для преобразования стилей'/>

# Класс StylesToAbstract

Класс `StylesToAbstract` является основой для всех механизмов преобразования стилей. Он предоставляет стандартизированный интерфейс и набор вспомогательных методов для перевода свойств дизайна в CSS-совместимые структуры.

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

- **Стандартизированный конвейер обработки** — Гарантирует, что все подклассы следуют одному и тому же рабочему процессу: `make` → `treatment` → `addSpace`.
- **Управление контекстом свойств** — Автоматически управляет текущим свойством дизайна, уровнями отступов и положением в дереве.
- **Гибкое делегирование контента** — Поддерживает рекурсивную обработку свойств через вызываемых функций.
- **Разрешение путей и имен** — Встроенные помощники для извлечения и нормализации имен свойств и значений CSS.

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

Являясь абстрактным классом, `StylesToAbstract` не может быть создан напрямую. Он служит базой для конкретных преобразователей стилей.

**Параметры:**
- `property: PropertyItemsItem` — текущая ветка дерева свойств, которая обрабатывается.
- `space: string` — строка отступа (например, `"  "` или `"\t"`).
- `content?: () => string[]` — вызываемая функция, используемая для обработки подсвойств (необязательно).
- `first?: boolean` — указывает, является ли этот элемент первым в текущем списке или на уровне дерева (необязательно, по умолчанию: `true`).

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

// Пример: Создание конкретной реализации
class StylesToCustom extends StylesToAbstract {
  protected treatment(): string[] {
    // Определите здесь логику преобразования
    return [
      `${this.getName()} {`,
      `  content: ${this.getValue()};`,
      '}'
    ]
  }
}
```

## Методы

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

- `make(): string[]` — Основная точка входа. Организует преобразование и добавляет необходимый отступ к каждой строке.

### Абстрактные

- `treatment(): string[]` — Определяет конкретную логику преобразования данных свойства в структуру стиля. Подклассы должны реализовать этот метод.
