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

<Meta title='@dxtmisha/ru/figma-code/Classes/FigmaFramesSelected - Управление выбранными фреймами'/>

# Класс `FigmaFramesSelected`

Статический утилитарный класс для управления списком идентификаторов фреймов, выбранных пользователем в контексте плагина. Он обеспечивает сохранение данных с использованием хранилища Figma и синхронизацию состояния между логикой плагина и пользовательским интерфейсом.

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

- **Постоянство данных** — Список выбранных ID сохраняется через `FigmaStorage`, что позволяет сохранять выборку между сессиями работы плагина.
- **Двусторонняя синхронизация** — Метод `send()` инициализирует слушателей сообщений из UI, обеспечивая бесшовное обновление списка выбора.
- **Эффективное кэширование** — Использует внутренний кэш для мгновенного доступа к списку без частого обращения к хранилищу.

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

Поскольку это статический класс, создание экземпляра не требуется. Как правило, достаточно вызвать настройку связи в основном файле плагина.

```typescript
import { FigmaFramesSelected } from '@dxtmisha/figma-code'

// Настройка слушателей для сообщений из UI
FigmaFramesSelected.send()
```

## Методы

### Управление выборкой

Методы для взаимодействия с текущим списком идентификаторов выбранных фреймов.

- `has(id: string): boolean` — Проверяет, находится ли конкретный ID фрейма в списке выбора.
- `get(): string[]` — Получает текущий список выбранных ID (использует кэш).
- `add(id: string): void` — Добавляет ID фрейма в список и сохраняет изменения.
- `remove(id: string): void` — Удаляет ID фрейма из списка и сохраняет изменения.
- `toggle(id: string, selected: boolean): void` — Добавляет или удаляет ID в зависимости от флага `selected`.

### Связь

Методы для синхронизации состояния с интерфейсом.

- `send(): void` — Настраивает слушателей `FigmaPluginMessenger` для обработки обновлений выборки из UI.
