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

<Meta title='@dxtmisha/ru/figma-code/Classes/FigmaClientStorage - Работа с клиентским хранилищем'/>

# Класс `FigmaClientStorage`

Высокоуровневая обертка над API `clientStorage` в Figma. Предоставляет удобный интерфейс для постоянного хранения данных на машине пользователя, поддерживая кэширование, значения по умолчанию и автоматическое управление данными.

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

- **Доступ через Синглтон** — Используйте `getInstance()`, чтобы гарантировать согласованный доступ к одному и тому же ключу хранилища из разных частей плагина.
- **Значения по умолчанию** — Метод `get()` может принимать значение по умолчанию или асинхронную функцию для инициализации хранилища, если оно пустое.
- **Поддержка кэша** — Интеграция с `FigmaStorageData` для управления актуальностью данных и минимизации избыточных вызовов API.

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

Получите экземпляр класса, используя статический метод `getInstance()`.

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

// Получение экземпляра для 'user-settings'
const storage = FigmaClientStorage.getInstance<object>('user-settings')
```

## Методы

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

#### `get`

Получает данные из хранилища. Если хранилище пустое и передано значение по умолчанию, оно будет записано и возвращено.

**Параметры:**
- `defaultValue?: T | (() => T | Promise<T>)` — (Опционально) Значение или функция для инициализации хранилища при отсутствии данных.

**Возвращает:** `Promise<T | undefined>` — Сохраненное значение.

```typescript
const theme = await storage.get('light')
```

#### `set`

Обновляет данные в хранилище.

**Параметры:**
- `value?: T | (() => T | Promise<T>)` — Новое значение или функция, возвращающая его.

**Возвращает:** `Promise<T | undefined>` — Новое установленное значение.

```typescript
await storage.set('dark')
```

#### `remove`

Удаляет данные, связанные с ключом хранилища.

**Возвращает:** `Promise<this>` — Текущий экземпляр.

```typescript
await storage.remove()
```
