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

<Meta title='@dxtmisha/vi/functional-basic/Classes/MetaOg - Thẻ meta Open Graph'/>

# Lớp MetaOg

Kế thừa `MetaManager`. Quản lý các thẻ meta giao thức [Open Graph](https://ogp.me/) — được mạng xã hội (Facebook, VK, v.v.) sử dụng để tạo bản xem trước liên kết.

Sử dụng thuộc tính `property` (không phải `name`) cho các thẻ meta, theo tiêu chuẩn Open Graph.

## Khởi tạo

Để quản lý dữ liệu Open Graph, hãy gọi hàm khởi tạo `new MetaOg()`.

**Tính năng:**
- **Kế thừa** — mở rộng `MetaManager`, sử dụng thuộc tính `property` để quản lý các thẻ.
- **Tiêu chuẩn** — đi kèm với danh sách được định nghĩa sẵn của tất cả các thẻ giao thức [Open Graph](https://ogp.me/) chính.

```javascript
import { MetaOg } from '@dxtmisha/functional-basic'

const og = new MetaOg()
```

## Thẻ được hỗ trợ

Quản lý các thẻ `og:*` sau: `og:title`, `og:type`, `og:url`, `og:image`, `og:description`, `og:locale`, `og:site_name`.

## Getter

- `getTitle(): string` — tiêu đề trang cho bản xem trước.
- `getType(): MetaOpenGraphType` — loại nội dung (ví dụ: `'website'`, `'article'`).
- `getUrl(): string` — URL chính của trang.
- `getImage(): string` — URL hình ảnh xem trước.
- `getDescription(): string` — mô tả trang.
- `getLocale(): string` — locale theo định dạng `en_US`, `vi_VN`.
- `getSiteName(): string` — tên website.

## Setter

Tất cả setter cập nhật thẻ tương ứng trong DOM và trả về `this` để chuỗi phương thức.

- `setTitle(title: string): this`
- `setType(type: MetaOpenGraphType): this` — loại: `'website'`, `'article'`, `'book'`, `'music.song'`, v.v.
- `setUrl(url: string): this`
- `setImage(url: string): this`
- `setDescription(description: string): this`
- `setLocale(locale: string): this` — định dạng: `'vi_VN'`, `'en_US'`.
- `setSiteName(siteName: string): this`

## Ví dụ

```javascript
import { MetaOg } from '@dxtmisha/functional-basic'

const og = new MetaOg()

og
  .setTitle('Bài viết của tôi')
  .setType('article')
  .setUrl('https://example.com/article/1')
  .setImage('https://example.com/images/cover.jpg')
  .setDescription('Mô tả bài viết của tôi')
  .setLocale('vi_VN')
  .setSiteName('Trang web của tôi')

// Cho SSR
const html = og.html()
// '<meta property="og:title" content="Bài viết của tôi">...'
```
