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

<Meta title='@dxtmisha/vi/figma-code/Classes/FigmaFramesSelected - Quản lý các frame được chọn'/>

# Lớp `FigmaFramesSelected`

Một lớp tiện ích tĩnh để quản lý danh sách các định danh frame được người dùng chọn trong ngữ cảnh của plugin. Nó xử lý việc lưu trữ dữ liệu bền vững bằng cách sử dụng bộ nhớ của Figma và đảm bảo đồng bộ hóa giữa logic của plugin và giao diện người dùng.

## Các tính năng chính

- **Lưu trữ dữ liệu bền vững** — Danh sách các ID được chọn được lưu qua `FigmaStorage`, cho phép lựa chọn tồn tại qua các phiên làm việc của plugin.
- **Đồng bộ hóa hai chiều** — Phương thức `send()` khởi tạo các trình lắng nghe tin nhắn từ UI, cho phép cập nhật danh sách lựa chọn một cách liền mạch.
- **Caching hiệu quả** — Sử dụng bộ nhớ đệm nội bộ để cung cấp quyền truy cập tức thì vào danh sách lựa chọn mà không cần đọc bộ nhớ thường xuyên.

## Khởi tạo

Vì đây là một lớp tĩnh, không cần khởi tạo thực thể. Thông thường, bạn chỉ cần gọi thiết lập giao tiếp trong tệp plugin chính của mình.

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

// Thiết lập các trình lắng nghe tin nhắn từ UI
FigmaFramesSelected.send()
```

## Các phương thức

### Quản lý lựa chọn (Selection Management)

Các phương thức để tương tác với danh sách ID frame được chọn hiện tại.

- `has(id: string): boolean` — Kiểm tra xem một ID frame cụ thể có nằm trong danh sách lựa chọn hay không.
- `get(): string[]` — Truy xuất danh sách ID frame được chọn hiện tại (sử dụng cache).
- `add(id: string): void` — Thêm một ID frame vào danh sách và lưu thay đổi.
- `remove(id: string): void` — Xóa một ID frame khỏi danh sách và lưu thay đổi.
- `toggle(id: string, selected: boolean): void` — Thêm hoặc xóa một ID dựa trên cờ `selected`.

### Giao tiếp (Communication)

Các phương thức để đồng bộ hóa trạng thái với UI.

- `send(): void` — Thiết lập các trình lắng nghe `FigmaPluginMessenger` để xử lý các bản cập nhật lựa chọn từ UI.
