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

<Meta title='@dxtmisha/ru/figma-code/Classes/FigmaTopLevelFrames - Управление фреймами верхнего уровня'/>

# Класс FigmaTopLevelFrames

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

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

- **Автоматическое кэширование** — эффективно управляет кэшем отформатированных данных фреймов по принципу синглтона.
- **Интеграция с мессенджером** — упрощает двустороннюю связь между плагином и UI относительно списков фреймов.
- **Обработка узлов** — использует `FigmaFrame` для извлечения и форматирования основных свойств узлов (ID, имя, экспорт в JPG) для отображения в UI.

## Статические методы

### `getListData`

Получает и кэширует отформатированный список фреймов верхнего уровня. Он обрабатывает каждый основной фрейм с текущей страницы, извлекая его ID, имя и экспортируя его в формат JPG.

**Возвращает:** `Promise<UiFigmaFramesList>` — Промис, который разрешается в массив отформатированных данных фреймов.

```typescript
const frames = await FigmaTopLevelFrames.getListData()
```

### `send`

Настраивает прослушиватель запросов фреймов с помощью мессенджера плагина. При получении сообщения `UI_FIGMA_FRAMES_POST_NAME` из UI, он автоматически получает актуальные данные и отправляет их обратно.

**Возвращает:** `void`

```typescript
FigmaTopLevelFrames.send()
```

## Типы

### `UiFigmaFramesList`

Массив объектов, представляющих обработанные данные фреймов для UI.
- `id: string` — уникальный ID узла Figma.
- `name: string` — отображаемое имя фрейма.
- `image: Uint8Array | string` — экспортированные данные JPG.
- `item: FigmaItem` — экземпляр обертки `FigmaItem` для дальнейших операций.
