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

<Meta title='@dxtmisha/ru/functional/Classes/GeoRef - Реактивный менеджер географии'/>

# Класс GeoRef

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

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

- **Глобальная реактивность** — использует общее реактивное состояние для географических данных.
- **Централизованное управление** — единая точка истины для настроек страны и языка.
- **Статический доступ** — методы можно вызывать напрямую у класса без создания экземпляра.

## Глобальное использование

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

```typescript
import { GeoRef } from '@dxtmisha/functional'
import { watch } from 'vue'

// 1. Получение реактивного значения
const country = GeoRef.getCountry()
console.log('Текущая страна:', country.value)

// 2. Отслеживание изменений
watch(GeoRef.getLanguage(), (lang) => {
  console.log('Язык изменен на:', lang)
})

// 3. Глобальное изменение локации
GeoRef.set('en-US') 
// Все вызовы getCountry, getLanguage и т.д. обновятся автоматически
```

## Состояние и получение данных

- `get(): Ref<GeoItemFull>` — возвращает реактивный объект с полной географической информацией.
- `getCountry(): ComputedRef<string>` — текущий код страны (например, `'RU'`).
- `getLanguage(): ComputedRef<string>` — текущий код языка (например, `'ru'`).
- `getStandard(): ComputedRef<string>` — полный формат стандарта локали (например, `'ru-RU'`).
- `getFirstDay(): ComputedRef<string>` — первый день недели (например, `'monday'`).

## Действия

### `set`
Изменяет глобальные географические данные на основе переданного кода. Это действие мгновенно обновляет все реактивные зависимости `GeoRef` во всем приложении.

**Параметры:**
- `code: string` — код страны, полный вид язык-страна (например, "ru-RU") или один из них.

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

## Типы

### GeoItemFull
Структура объекта с полной географической информацией.

- `country: string` — текущий код страны.
- `language: string` — текущий код языка.
- `standard: string` — стандартный код локали.
- `firstDay: string` — первый день недели.
- `countryAlternative?: string[]` — список альтернативных кодов стран.
- `languageAlternative?: string[]` — список альтернативных кодов языков.
- `zone?: string | null` — текущий часовой пояс.
- `phoneCode?: string` — телефонный код страны.
- `phoneMask?: string | string[]` — типичная маска номера телефона.
