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

<Meta title='@dxtmisha/ru/scripts/Classes/PropertiesValues - Значения свойств'/>

# Класс PropertiesValues

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

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

- **Распознавание маркеров** — идентифицирует значения, помеченные как «полные» (не требующие дальнейшей обработки).
- **Валидация цветов** — проверяет строки на соответствие форматам HEX (включая прозрачность).
- **Нормализация типов** — автоматически преобразует числовые значения в строки для консистентности.
- **Очистка данных** — удаляет системные маркеры перед финальным использованием значений.

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

Класс содержит только статические методы, поэтому создание экземпляра через `new` не требуется.

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

// Обращение к статическим методам
const isFull = PropertiesValues.isFull('=someValue')
```

## Методы

### `isFull`
Проверяет, начинается ли строковое значение со специального маркера `=` (равно). Этот маркер сигнализирует системе, что значение является финальным и не требует обработки референсов или других трансформаций.

**Параметры:**
- `value: PropertyItemPartial['value']` — проверяемое значение свойства.

**Возвращает:** `boolean` — `true`, если значение является полным.

```typescript
const result = PropertiesValues.isFull('=100%');
// Результат: true
```

### `isColor`
Проверяет, является ли переданная строка валидным цветом в формате HEX (начинается с символа `#`).

**Параметры:**
- `value: PropertyItemPartial['__c']` — значение для проверки.

**Возвращает:** `boolean` — `true`, если строка похожа на HEX-цвет.

```typescript
const isHex = PropertiesValues.isColor('#ff0000');
// Результат: true
```

### `isColorWithOpacity`
Специализированная проверка для HEX-цветов с альфа-каналом. Ищет соответствие восьмизначному формату HEX (например, `#rrggbbaa`).

**Параметры:**
- `value: PropertyItemPartial['__c']` — значение для проверки.

**Возвращает:** `boolean` — `true`, если это цвет с прозрачностью.

```typescript
const isTrans = PropertiesValues.isColorWithOpacity('#ff000080');
// Результат: true
```

### `reValue`
Нормализует значение для дальнейшего использования. Если значение помечено как «полное», маркер `=` удаляется. Если значение является числом, оно преобразуется в строку.

**Параметры:**
- `value: PropertyItemPartial['value']` — исходное значение свойства.

**Возвращает:** `PropertyItemPartial['value']` — нормализованное строковое (или прежнее объектное) значение.

```typescript
const val1 = PropertiesValues.reValue('=12px'); // '12px'
const val2 = PropertiesValues.reValue(24); // '24'
```

### `getExpFull`
Возвращает регулярное выражение, используемое для поиска маркера полного значения.

**Возвращает:** `RegExp` — регулярное выражение `/^=/`.

```typescript
const regex = PropertiesValues.getExpFull();
```

## Операции

### Процесс нормализации значений

1. **Проверка на "полноту"**: Метод `isFull` определяет, нужно ли пропускать этап обработки ссылок.
2. **Типизация**: Все числа через `reValue` приводятся к строковому типу, чтобы избежать ошибок при конкатенации в CSS/SCSS.
3. **Фильтрация**: Маркеры управления (такие как `=`) удаляются из финальной строки, чтобы они не попали в итоговый CSS код.

## Примеры

### Проверка и очистка входных данных
```typescript
import { PropertiesValues } from '@dxtmisha/scripts'

const rawValue = '=rgba(0,0,0,0.5)'

if (PropertiesValues.isFull(rawValue)) {
  const cleanValue = PropertiesValues.reValue(rawValue)
  console.log(cleanValue) // 'rgba(0,0,0,0.5)'
}
```
