@dxtmisha/wiki 0.39.7 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{defineProperty-DblGXmzD.js → defineProperty-149Ahniv.js} +4 -4
- package/dist/library.js +1 -1
- package/dist/media/descriptions/wikiDescriptionsArea.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsClientOnly.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsContainer.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsHeader.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsPageArea.d.ts +7 -0
- package/dist/media/mdx/Area/wikiMdxArea.d.ts +7 -0
- package/dist/media/mdx/ClientOnly/wikiMdxClientOnly.d.ts +7 -0
- package/dist/media/mdx/Container/wikiMdxContainer.d.ts +7 -0
- package/dist/media/mdx/Header/wikiMdxHeader.d.ts +7 -0
- package/dist/media/mdx/PageArea/wikiMdxPageArea.d.ts +7 -0
- package/dist/media.d.ts +1 -1
- package/dist/media.js +127 -68
- package/dist/storybook.js +2707 -1841
- package/dist/{wikiDescriptions-Cv4WzSNL.js → wikiDescriptions-7XaHU3Yk.js} +182 -0
- package/package.json +1 -1
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +43 -0
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +43 -0
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +41 -0
- package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +20 -4
- package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +21 -3
- package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +20 -2
- package/src/media/functional/functional/functions/computedAsync/computedAsync.en.mdx +8 -0
- package/src/media/functional/functional/functions/computedAsync/computedAsync.ru.mdx +8 -0
- package/src/media/functional/functional/functions/computedAsync/computedAsync.vi.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.en.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.ru.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.vi.mdx +8 -0
- package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
- package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +57 -54
- package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +57 -54
- package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +57 -54
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +106 -51
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +107 -52
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +103 -49
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +59 -21
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +63 -25
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +64 -26
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
- package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +178 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +178 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +178 -0
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
- package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
- package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
- package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
- package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.en.mdx +16 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.ru.mdx +16 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.vi.mdx +17 -1
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.en.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.ru.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.vi.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +79 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +79 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +79 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
- package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
- package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
- package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
- package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
- package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
- package/src/media/functional/functional-basic/icons/icons.en.mdx +3 -0
- package/src/media/functional/functional-basic/icons/icons.ru.mdx +3 -0
- package/src/media/functional/functional-basic/icons/icons.vi.mdx +3 -0
- package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -0
- package/src/media/functional/ui/about/about.en.mdx +45 -0
- package/src/media/functional/ui/about/about.ru.mdx +45 -0
- package/src/media/functional/ui/about/about.vi.mdx +45 -0
- package/src/media/functional/ui/component/component.en.mdx +104 -0
- package/src/media/functional/ui/component/component.ru.mdx +106 -0
- package/src/media/functional/ui/component/component.vi.mdx +104 -0
- package/src/media/functional/ui/setup/setup.en.mdx +72 -0
- package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
- package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
- package/src/media/functional/ui/wiki-data.en.mdx +114 -0
- package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
- package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
|
@@ -1,79 +1,122 @@
|
|
|
1
1
|
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/vi/functional-basic/Classes/GeoFlag - Cờ
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Classes/GeoFlag - Cờ các quốc gia'/>
|
|
4
4
|
|
|
5
5
|
# Lớp GeoFlag
|
|
6
6
|
|
|
7
|
-
Một lớp
|
|
7
|
+
Một lớp để làm việc với cờ các quốc gia và thông tin địa lý. Nó cung cấp một giao diện thuận tiện để lấy các biểu tượng cờ, tên quốc gia và ngôn ngữ đã được bản địa hóa. Nó sử dụng các singleton `Geo` và `GeoIntl` để giải quyết dữ liệu một cách chính xác dựa trên ngôn ngữ hiện tại.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Các tính năng chính
|
|
10
10
|
|
|
11
|
-
- **Từ điển cờ** —
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
11
|
+
- **Từ điển cờ** — danh sách `flags` tĩnh tích hợp ánh xạ mã ISO 3166-1 alpha-2 với tên biểu tượng.
|
|
12
|
+
- **Dữ liệu được bản địa hóa** — tự động dịch tên quốc gia và ngôn ngữ sang ngôn ngữ giao diện hiện tại.
|
|
13
|
+
- **Hỗ trợ quốc gia** — khả năng lấy tên quốc gia bằng ngôn ngữ "gốc" của họ (ví dụ: "Nhật Bản" và "日本" đồng thời).
|
|
14
|
+
- **Khả năng mở rộng** — hỗ trợ lọc và lấy danh sách đầy đủ cho các bộ chọn quốc gia.
|
|
15
15
|
|
|
16
16
|
## Khởi tạo
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
Để tạo một thực thể, hãy sử dụng constructor `GeoFlag(code)`.
|
|
19
19
|
|
|
20
20
|
**Tham số:**
|
|
21
|
-
- `code?: string` —
|
|
21
|
+
- `code?: string` — mã quốc gia hoặc ngôn ngữ (ví dụ: `'VN'`, `'vi-VN'`). Nếu không được chỉ định, ngôn ngữ hiện tại từ hệ thống `Geo` sẽ được sử dụng.
|
|
22
22
|
|
|
23
23
|
```javascript
|
|
24
24
|
import { GeoFlag } from '@dxtmisha/functional-basic'
|
|
25
25
|
|
|
26
|
-
//
|
|
26
|
+
// Với ngôn ngữ hiện tại
|
|
27
27
|
const flag = new GeoFlag()
|
|
28
28
|
|
|
29
|
-
//
|
|
29
|
+
// Cho một quốc gia cụ thể
|
|
30
30
|
const vnFlag = new GeoFlag('vi-VN')
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## Các phương thức
|
|
34
34
|
|
|
35
|
-
###
|
|
35
|
+
### Lấy dữ liệu
|
|
36
|
+
- `get(code?: string): GeoFlagItem | undefined` — Trả về một đối tượng dữ liệu đầy đủ về một quốc gia.
|
|
37
|
+
- `getFlag(code?: string): string | undefined` — Trả về chỉ định danh biểu tượng cờ (ví dụ: `'f-vn'`).
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
40
|
-
- `getNational(codes?: string[]): GeoFlagNational[]` — Tương tự `getList`, nhưng bổ sung tên quốc gia theo ngôn ngữ của chính nước đó.
|
|
39
|
+
### Danh sách
|
|
40
|
+
- `getList(codes?: string[]): GeoFlagItem[]` — Trả về một mảng dữ liệu quốc gia.
|
|
41
|
+
- `getNational(codes?: string[]): GeoFlagNational[]` — Trả về danh sách các quốc gia với tên quốc gia gốc.
|
|
41
42
|
|
|
42
|
-
###
|
|
43
|
+
### Cấu hình
|
|
44
|
+
- `setCode(code: string): this` — Thay đổi ngôn ngữ cơ sở cho thực thể hiện tại.
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
## Các phương thức danh sách
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
Sự khác biệt chính giữa các phương thức nằm ở ngôn ngữ mà tên quốc gia và ngôn ngữ được trả về:
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
import { GeoFlag } from '@dxtmisha/functional-basic'
|
|
50
|
+
* **`getList`** — trả về tên chỉ bằng ngôn ngữ được thiết lập trong thực thể lớp (ví dụ: tất cả bằng tiếng Việt).
|
|
51
|
+
* **`getNational`** — trả về tên bằng ngôn ngữ giao diện của bạn + thêm tên gốc bằng ngôn ngữ của chính quốc gia đó (ví dụ: "Nhật Bản" và "日本").
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
const item = flag.get()
|
|
53
|
+
### Ví dụ về sự khác biệt trong kết quả:
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
```javascript
|
|
56
|
+
const geo = new GeoFlag('vi-VN') // Ngôn ngữ tiếng Việt được thiết lập
|
|
57
|
+
|
|
58
|
+
// 1. getList chỉ trả về bản dịch
|
|
59
|
+
const list = geo.getList(['JP'])
|
|
60
|
+
/*
|
|
61
|
+
[{ country: 'Nhật Bản', ... }]
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
// 2. getNational trả về bản dịch + tên gốc
|
|
65
|
+
const national = geo.getNational(['JP'])
|
|
66
|
+
/*
|
|
67
|
+
[{
|
|
68
|
+
country: 'Nhật Bản',
|
|
69
|
+
nationalCountry: '日本',
|
|
70
|
+
...
|
|
71
|
+
}]
|
|
72
|
+
*/
|
|
57
73
|
```
|
|
58
74
|
|
|
59
|
-
|
|
60
|
-
```javascript
|
|
61
|
-
const flag = new GeoFlag('vi-VN')
|
|
62
|
-
const countries = flag.getList()
|
|
75
|
+
## Các kiểu dữ liệu
|
|
63
76
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
77
|
+
### `GeoFlagItem`
|
|
78
|
+
Đối tượng thông tin cờ cơ bản.
|
|
79
|
+
- `country`: string — Tên quốc gia đã được bản địa hóa.
|
|
80
|
+
- `language`: string — Tên ngôn ngữ đã được bản địa hóa.
|
|
81
|
+
- `standard`: string — Tiêu chuẩn ngôn ngữ đầy đủ (ví dụ: `vi-VN`).
|
|
82
|
+
- `icon`: string — Tên biểu tượng cờ (tiền tố `f-`).
|
|
83
|
+
- `label`: string — Nhãn hiển thị (mặc định khớp với `country`).
|
|
84
|
+
- `value`: string — Mã quốc gia (ISO alpha-2).
|
|
69
85
|
|
|
70
|
-
###
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
86
|
+
### `GeoFlagNational`
|
|
87
|
+
Mở rộng `GeoFlagItem` với các trường bổ sung:
|
|
88
|
+
- `nationalCountry`: string — Tên quốc gia bằng ngôn ngữ gốc.
|
|
89
|
+
- `nationalLanguage`: string — Tên ngôn ngữ bằng ngôn ngữ gốc.
|
|
90
|
+
- `description`: string — Mô tả ngắn gọn (sao chép `nationalCountry`).
|
|
74
91
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
## Ví dụ
|
|
93
|
+
|
|
94
|
+
### Danh sách các quốc gia phổ biến với tên quốc gia gốc
|
|
95
|
+
```javascript
|
|
96
|
+
const geo = new GeoFlag('vi-VN')
|
|
97
|
+
const list = geo.getNational(['VN', 'CN', 'JP'])
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
Kết quả:
|
|
101
|
+
[
|
|
102
|
+
{
|
|
103
|
+
country: 'Việt Nam',
|
|
104
|
+
nationalCountry: 'Việt Nam',
|
|
105
|
+
icon: 'f-vn',
|
|
106
|
+
...
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
country: 'Trung Quốc',
|
|
110
|
+
nationalCountry: '中国',
|
|
111
|
+
icon: 'f-cn',
|
|
112
|
+
...
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
country: 'Nhật Bản',
|
|
116
|
+
nationalCountry: '日本',
|
|
117
|
+
icon: 'f-jp',
|
|
118
|
+
...
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
*/
|
|
79
122
|
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Classes/GeoInstance - Geographic Data Instance'/>
|
|
4
|
+
|
|
5
|
+
# GeoInstance Class
|
|
6
|
+
|
|
7
|
+
An instance-based class for managing geographical data. It handles language codes (ISO 639-1), country codes (ISO 3166-1 alpha-2), time zones, and localization. Unlike the static `Geo` class, `GeoInstance` allows creating independent objects with their own state, which is particularly useful for request isolation in SSR or multi-context environments.
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
|
|
11
|
+
- **Object-Oriented** — allows creating multiple instances with different configurations.
|
|
12
|
+
- **Auto-Detection** — intelligently identifies the locale via storage or environment defaults during initialization.
|
|
13
|
+
- **Media Database Integration** — provides access to a comprehensive database of countries and languages from the `@dxtmisha/media` library.
|
|
14
|
+
- **Dynamic Time Management** — instance-level setting and retrieval of time zone offsets.
|
|
15
|
+
|
|
16
|
+
## Basic Usage
|
|
17
|
+
|
|
18
|
+
You can create a new instance of the class to manage a specific geographic context.
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
import { GeoInstance } from '@dxtmisha/functional-basic'
|
|
22
|
+
|
|
23
|
+
const geo = new GeoInstance()
|
|
24
|
+
|
|
25
|
+
// Get the current language code
|
|
26
|
+
console.log(geo.getLanguage()) // e.g., 'en'
|
|
27
|
+
|
|
28
|
+
// Set a new locale for this instance
|
|
29
|
+
geo.set('fr-FR')
|
|
30
|
+
|
|
31
|
+
// Get the formatted time zone
|
|
32
|
+
console.log(geo.getTimezoneFormat()) // e.g., '+00:00'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Methods
|
|
36
|
+
|
|
37
|
+
### Information
|
|
38
|
+
|
|
39
|
+
- `get(): GeoItemFull` — Returns the full data object for the current country and language.
|
|
40
|
+
- `getItem(): GeoItemFull` — Returns a copy of the current settings object, accounting for the dynamic language.
|
|
41
|
+
- `getCountry(): string` — Returns the 2-letter code of the current country (uppercase).
|
|
42
|
+
- `getLanguage(): string` — Returns the 2-letter code of the current language (lowercase).
|
|
43
|
+
- `getStandard(): string` — Returns the combined locale string based on current settings (e.g., `'en-VN'`).
|
|
44
|
+
- `getLocation(): string` — Returns the currently set raw locale string.
|
|
45
|
+
- `getFirstDay(): string` — Returns the code for the first day of the week (e.g., `'Mo'`).
|
|
46
|
+
- `getTimezone(): number` — Returns the time zone offset in minutes.
|
|
47
|
+
- `getTimezoneFormat(): string` — Returns the time zone offset in string format (e.g., `'+03:00'`).
|
|
48
|
+
|
|
49
|
+
### Selection
|
|
50
|
+
|
|
51
|
+
- `getList(): GeoItem[]` — Returns the full list of available countries and languages.
|
|
52
|
+
- `find(code: string): GeoItemFull` — An alias for the `getByCode` method.
|
|
53
|
+
- `getByCode(code?: string): GeoItemFull` — Searches for data by code. **Priority: Language first**, then Country. If `en-VN` is provided, it will return the record for English (`en-US`).
|
|
54
|
+
- `getByCodeFull(code: string): GeoItem | undefined` — Searches for an exact match by full locale code (e.g., `ru-RU`).
|
|
55
|
+
- `getByCountry(country: string): GeoItem | undefined` — Searches for data specifically by country code.
|
|
56
|
+
- `getByLanguage(language: string): GeoItem | undefined` — Searches for data specifically by language code.
|
|
57
|
+
|
|
58
|
+
### Configuration
|
|
59
|
+
|
|
60
|
+
- `set(code: string, save?: boolean): void` — Sets the locale for the current instance.
|
|
61
|
+
- `setTimezone(timezone: number): void` — Sets a custom time zone offset in minutes.
|
|
62
|
+
|
|
63
|
+
### Auxiliary
|
|
64
|
+
|
|
65
|
+
- `toStandard(item: GeoItem): string` — Generates a standard `'language-country'` string from a `GeoItem` object.
|
|
66
|
+
|
|
67
|
+
## Examples
|
|
68
|
+
|
|
69
|
+
### Isolated Contexts
|
|
70
|
+
```javascript
|
|
71
|
+
import { GeoInstance } from '@dxtmisha/functional-basic'
|
|
72
|
+
|
|
73
|
+
const geoEN = new GeoInstance()
|
|
74
|
+
geoEN.set('en-US')
|
|
75
|
+
|
|
76
|
+
const geoRU = new GeoInstance()
|
|
77
|
+
geoRU.set('ru-RU')
|
|
78
|
+
|
|
79
|
+
console.log(geoEN.getLanguage()) // 'en'
|
|
80
|
+
console.log(geoRU.getLanguage()) // 'ru'
|
|
81
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Classes/GeoInstance - Экземпляр Географических Данных'/>
|
|
4
|
+
|
|
5
|
+
# Класс GeoInstance
|
|
6
|
+
|
|
7
|
+
Класс для работы с географическими данными на уровне экземпляра. Он отвечает за обработку кодов языков (ISO 639-1), стран (ISO 3166-1 alpha-2), временных зон и локализации. В отличие от статического класса `Geo`, `GeoInstance` позволяет создавать независимые объекты со своим состоянием, что особенно важно для изоляции запросов в SSR или в приложениях с несколькими контекстами локализации.
|
|
8
|
+
|
|
9
|
+
## Ключевые особенности
|
|
10
|
+
|
|
11
|
+
- **Объектно-ориентированность** — позволяет создавать несколько экземпляров с разными конфигурациями.
|
|
12
|
+
- **Автоматическое определение** — интеллектуально определяет локаль через хранилище или настройки окружения при инициализации.
|
|
13
|
+
- **Интеграция с медиа-базой** — предоставляет доступ к полной базе данных стран и языков из библиотеки `@dxtmisha/media`.
|
|
14
|
+
- **Динамическое управление временем** — установка и получение смещения часового пояса на уровне конкретного экземпляра.
|
|
15
|
+
|
|
16
|
+
## Базовое использование
|
|
17
|
+
|
|
18
|
+
Вы можете создать новый экземпляр класса для управления специфическим географическим контекстом.
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
import { GeoInstance } from '@dxtmisha/functional-basic'
|
|
22
|
+
|
|
23
|
+
const geo = new GeoInstance()
|
|
24
|
+
|
|
25
|
+
// Получаем текущий код языка
|
|
26
|
+
console.log(geo.getLanguage()) // например, 'ru'
|
|
27
|
+
|
|
28
|
+
// Устанавливаем новую локаль для этого экземпляра
|
|
29
|
+
geo.set('en-US')
|
|
30
|
+
|
|
31
|
+
// Получаем форматированную временную зону
|
|
32
|
+
console.log(geo.getTimezoneFormat()) // например, '+03:00'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Методы
|
|
36
|
+
|
|
37
|
+
### Информация
|
|
38
|
+
|
|
39
|
+
- `get(): GeoItemFull` — Возвращает полный объект данных о текущей стране и языке.
|
|
40
|
+
- `getItem(): GeoItemFull` — Возвращает копию объекта текущих настроек с учетом динамически установленного языка.
|
|
41
|
+
- `getCountry(): string` — Возвращает 2-буквенный код текущей страны (в верхнем регистре).
|
|
42
|
+
- `getLanguage(): string` — Возвращает 2-буквенный код текущего языка (в нижнем регистре).
|
|
43
|
+
- `getStandard(): string` — Возвращает комбинированную строку локали на основе текущих настроек (например, `'en-VN'`).
|
|
44
|
+
- `getLocation(): string` — Возвращает текущую установленную локаль в виде "сырой" строки.
|
|
45
|
+
- `getFirstDay(): string` — Возвращает код первого дня недели для текущей локали (например, `'Mo'`).
|
|
46
|
+
- `getTimezone(): number` — Возвращает смещение часового пояса в минутах.
|
|
47
|
+
- `getTimezoneFormat(): string` — Возвращает смещение часового пояса в строковом формате (например, `'+03:00'`).
|
|
48
|
+
|
|
49
|
+
### Выбор
|
|
50
|
+
|
|
51
|
+
- `getList(): GeoItem[]` — Возвращает полный список доступных стран и языков.
|
|
52
|
+
- `find(code: string): GeoItemFull` — Алиас для метода `getByCode`.
|
|
53
|
+
- `getByCode(code?: string): GeoItemFull` — Ищет данные по коду. **Приоритет: сначала язык**, затем страна. Если передан код `en-VN`, будет возвращена запись для английского языка (`en-US`).
|
|
54
|
+
- `getByCodeFull(code: string): GeoItem | undefined` — Ищет точное совпадение по полному коду локали (например, `ru-RU`).
|
|
55
|
+
- `getByCountry(country: string): GeoItem | undefined` — Ищет данные конкретно по коду страны.
|
|
56
|
+
- `getByLanguage(language: string): GeoItem | undefined` — Ищет данные конкретно по коду языка.
|
|
57
|
+
|
|
58
|
+
### Конфигурация
|
|
59
|
+
|
|
60
|
+
- `set(code: string, save?: boolean): void` — Устанавливает локаль для текущего экземпляра.
|
|
61
|
+
- `setTimezone(timezone: number): void` — Устанавливает кастомное смещение часового пояса в минутах.
|
|
62
|
+
|
|
63
|
+
### Вспомогательные методы
|
|
64
|
+
|
|
65
|
+
- `toStandard(item: GeoItem): string` — Метод для формирования стандартной строки `'язык-страна'` из объекта `GeoItem`.
|
|
66
|
+
|
|
67
|
+
## Примеры
|
|
68
|
+
|
|
69
|
+
### Изолированные контексты
|
|
70
|
+
```javascript
|
|
71
|
+
import { GeoInstance } from '@dxtmisha/functional-basic'
|
|
72
|
+
|
|
73
|
+
const geoRU = new GeoInstance()
|
|
74
|
+
geoRU.set('ru-RU')
|
|
75
|
+
|
|
76
|
+
const geoEN = new GeoInstance()
|
|
77
|
+
geoEN.set('en-US')
|
|
78
|
+
|
|
79
|
+
console.log(geoRU.getLanguage()) // 'ru'
|
|
80
|
+
console.log(geoEN.getLanguage()) // 'en'
|
|
81
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Classes/GeoInstance - Đối Tượng Dữ Liệu Địa Lý'/>
|
|
4
|
+
|
|
5
|
+
# Lớp GeoInstance
|
|
6
|
+
|
|
7
|
+
Một lớp dựa trên đối tượng (instance-based) để quản lý dữ liệu địa lý. Nó xử lý các mã ngôn ngữ (ISO 639-1), mã quốc gia (ISO 3166-1 alpha-2), múi giờ và địa phương hóa. Khác với lớp tĩnh `Geo`, `GeoInstance` cho phép tạo các đối tượng độc lập với trạng thái riêng, điều này đặc biệt hữu ích cho việc cô lập yêu cầu (request isolation) trong môi trường SSR hoặc các ứng dụng đa ngữ cảnh.
|
|
8
|
+
|
|
9
|
+
## Tính năng chính
|
|
10
|
+
|
|
11
|
+
- **Hướng đối tượng** — cho phép tạo nhiều phiên bản (instances) with các cấu hình khác nhau.
|
|
12
|
+
- **Tự động phát hiện** — xác định thông minh địa phương (locale) thông qua bộ nhớ lưu trữ hoặc các mặc định của môi trường khi khởi tạo.
|
|
13
|
+
- **Tích hợp cơ sở dữ liệu truyền thông** — cung cấp quyền truy cập vào cơ sở dữ liệu toàn diện về các quốc gia và ngôn ngữ từ thư viện `@dxtmisha/media`.
|
|
14
|
+
- **Quản lý thời gian linh hoạt** — thiết lập và truy xuất độ lệch múi giờ ở cấp độ đối tượng.
|
|
15
|
+
|
|
16
|
+
## Cách sử dụng cơ bản
|
|
17
|
+
|
|
18
|
+
Bạn có thể tạo một đối tượng mới của lớp để quản lý một ngữ cảnh địa lý cụ thể.
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
import { GeoInstance } from '@dxtmisha/functional-basic'
|
|
22
|
+
|
|
23
|
+
const geo = new GeoInstance()
|
|
24
|
+
|
|
25
|
+
// Lấy mã ngôn ngữ hiện tại
|
|
26
|
+
console.log(geo.getLanguage()) // ví dụ: 'vi'
|
|
27
|
+
|
|
28
|
+
// Thiết lập địa phương mới cho đối tượng này
|
|
29
|
+
geo.set('en-US')
|
|
30
|
+
|
|
31
|
+
// Lấy múi giờ đã định dạng
|
|
32
|
+
console.log(geo.getTimezoneFormat()) // ví dụ: '+07:00'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Các phương thức
|
|
36
|
+
|
|
37
|
+
### Thông tin
|
|
38
|
+
|
|
39
|
+
- `get(): GeoItemFull` — Trả về đối tượng dữ liệu đầy đủ cho quốc gia và ngôn ngữ hiện tại.
|
|
40
|
+
- `getItem(): GeoItemFull` — Trả về một bản sao của đối tượng cài đặt hiện tại, có tính đến ngôn ngữ động.
|
|
41
|
+
- `getCountry(): string` — Trả về mã 2 chữ cái của quốc gia hiện tại (viết hoa).
|
|
42
|
+
- `getLanguage(): string` — Trả về mã 2 chữ cái của ngôn ngữ hiện tại (viết thường).
|
|
43
|
+
- `getStandard(): string` — Trả về chuỗi địa phương kết hợp dựa trên cài đặt hiện tại (ví dụ: `'en-VN'`).
|
|
44
|
+
- `getLocation(): string` — Trả về chuỗi địa phương thô hiện đang được thiết lập.
|
|
45
|
+
- `getFirstDay(): string` — Trả về mã cho ngày đầu tiên của tuần của địa phương hiện tại (ví dụ: `'Mo'`).
|
|
46
|
+
- `getTimezone(): number` — Trả về độ lệch múi giờ tính bằng phút.
|
|
47
|
+
- `getTimezoneFormat(): string` — Trả về độ lệch múi giờ ở định dạng chuỗi (ví dụ: `'+07:00'`).
|
|
48
|
+
|
|
49
|
+
### Lựa chọn
|
|
50
|
+
|
|
51
|
+
- `getList(): GeoItem[]` — Trả về danh sách đầy đủ các quốc gia và ngôn ngữ có sẵn.
|
|
52
|
+
- `find(code: string): GeoItemFull` — Một bí danh cho phương thức `getByCode`.
|
|
53
|
+
- `getByCode(code?: string): GeoItemFull` — Tìm kiếm dữ liệu theo mã. **Ưu tiên: Ngôn ngữ trước**, sau đó đến Quốc gia. Nếu cung cấp mã `en-VN`, nó sẽ trả về bản ghi cho tiếng Anh (`en-US`).
|
|
54
|
+
- `getByCodeFull(code: string): GeoItem | undefined` — Tìm kiếm kết quả khớp chính xác theo mã địa phương đầy đủ (ví dụ: `vi-VN`).
|
|
55
|
+
- `getByCountry(country: string): GeoItem | undefined` — Tìm kiếm dữ liệu cụ thể theo mã quốc gia.
|
|
56
|
+
- `getByLanguage(language: string): GeoItem | undefined` — Tìm kiếm dữ liệu cụ thể theo mã ngôn ngữ.
|
|
57
|
+
|
|
58
|
+
### Cấu hình
|
|
59
|
+
|
|
60
|
+
- `set(code: string, save?: boolean): void` — Thiết lập địa phương cho đối tượng hiện tại.
|
|
61
|
+
- `setTimezone(timezone: number): void` — Thiết lập độ lệch múi giờ tùy chỉnh tính bằng phút.
|
|
62
|
+
|
|
63
|
+
### Phụ trợ
|
|
64
|
+
|
|
65
|
+
- `toStandard(item: GeoItem): string` — Tạo chuỗi `'ngôn ngữ-quốc gia'` tiêu chuẩn từ đối tượng `GeoItem`.
|
|
66
|
+
|
|
67
|
+
## Ví dụ
|
|
68
|
+
|
|
69
|
+
### Ngữ cảnh độc lập
|
|
70
|
+
```javascript
|
|
71
|
+
import { GeoInstance } from '@dxtmisha/functional-basic'
|
|
72
|
+
|
|
73
|
+
const geoVI = new GeoInstance()
|
|
74
|
+
geoVI.set('vi-VN')
|
|
75
|
+
|
|
76
|
+
const geoEN = new GeoInstance()
|
|
77
|
+
geoEN.set('en-US')
|
|
78
|
+
|
|
79
|
+
console.log(geoVI.getLanguage()) // 'vi'
|
|
80
|
+
console.log(geoEN.getLanguage()) // 'en'
|
|
81
|
+
```
|
|
@@ -1,139 +1,90 @@
|
|
|
1
1
|
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/en/functional-basic/Classes/GeoPhone - Phone
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Classes/GeoPhone - Phone Masks'/>
|
|
4
4
|
|
|
5
5
|
# GeoPhone Class
|
|
6
6
|
|
|
7
|
-
A specialized class for storing and processing international phone number masks. It provides a
|
|
8
|
-
|
|
9
|
-
It integrates deeply with `Geo` geolocation data to provide automatic mask resolution based on the current user locale or explicit country codes.
|
|
7
|
+
A specialized class for storing and processing international phone number masks. It provides a mechanism for identifying a country by a phone number string, formatting raw numbers into localized masks, and managing a complex map of phone codes based on a prefix tree. The class is closely integrated with `Geo` data, allowing for automatic mask determination based on the user's current locale or provided country codes.
|
|
10
8
|
|
|
11
9
|
## Key Features
|
|
12
10
|
|
|
13
|
-
- **Automatic
|
|
14
|
-
- **Prefix Tree Optimization** — Uses a specialized `map` structure (
|
|
15
|
-
- **Intelligent Normalization** — Automatically handles regional dialing variations
|
|
16
|
-
- **Standardized Formatting** — Converts raw numeric strings into
|
|
17
|
-
|
|
18
|
-
## Search Methods
|
|
19
|
-
|
|
20
|
-
### `getByPhone`
|
|
21
|
-
|
|
22
|
-
Primary identification method that analyzes a phone number string to extract geographic information and the most suitable numbering mask.
|
|
11
|
+
- **Automatic Matching** — Dynamically determines the appropriate country and mask pattern through recursive searching in a prefix tree.
|
|
12
|
+
- **Prefix Tree Optimization** — Uses a specialized `map` structure (Trie) for high-performance searching.
|
|
13
|
+
- **Intelligent Normalization** — Automatically handles regional dialing variations such as leading zeros or national prefixes.
|
|
14
|
+
- **Standardized Formatting** — Converts raw numeric strings into readable formats.
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
- `phone: string` — The target phone number to analyze (accepts raw or partially formatted strings).
|
|
16
|
+
## Basic Usage
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
You can use the static methods of the class for rapid country identification by phone number or formatting.
|
|
28
19
|
|
|
29
20
|
```javascript
|
|
30
21
|
import { GeoPhone } from '@dxtmisha/functional-basic'
|
|
31
22
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
// item: { info: { phone: 1, ... }, mask: ['1 (***) ***-****'], ... },
|
|
36
|
-
// phone: '2025550123'
|
|
37
|
-
// }
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### `get`
|
|
41
|
-
|
|
42
|
-
Retrieves localized phone metadata associated with a specific country code.
|
|
43
|
-
|
|
44
|
-
**Parameters:**
|
|
45
|
-
- `code: string` — Standard ISO 3166 country code (e.g., `'US'`, `'RU'`, `'VN'`).
|
|
23
|
+
// Identify country by phone number
|
|
24
|
+
const info = GeoPhone.getByPhone('79001234567')
|
|
25
|
+
console.log(info.item?.value) // 'RU'
|
|
46
26
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
GeoPhone.get('US')
|
|
51
|
-
// { phone: 1, within: 1, mask: ['* (***) ***-****'], value: 'US' }
|
|
27
|
+
// Formatting by mask
|
|
28
|
+
const formatted = GeoPhone.toMask('9001234567', ['+* (***) ***-**-**'])
|
|
29
|
+
console.log(formatted) // '+7 (900) 123-45-67'
|
|
52
30
|
```
|
|
53
31
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Extended retrieval method that returns complete mask data including the search tree node for a given country code.
|
|
57
|
-
|
|
58
|
-
**Parameters:**
|
|
59
|
-
- `code: string` — Target country code string.
|
|
32
|
+
## Methods
|
|
60
33
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```javascript
|
|
64
|
-
GeoPhone.getByCode('RU')
|
|
65
|
-
// { info: { phone: 7, ... }, mask: ['7 (***) ***-**-**'], ... }
|
|
66
|
-
```
|
|
34
|
+
### Information
|
|
67
35
|
|
|
68
|
-
|
|
36
|
+
- `getList(): GeoPhoneValue[]` — Returns a complete, sorted, flat list of all registered international phone metadata.
|
|
37
|
+
- `getMap(): Record<string, GeoPhoneMap>` — Returns the root node of the internal prefix tree used for searching.
|
|
69
38
|
|
|
70
|
-
|
|
71
|
-
- `getMap(): Record<string, GeoPhoneMap>` — Returns the root node of the internal prefix-tree used for high-speed number identification.
|
|
39
|
+
### Selection
|
|
72
40
|
|
|
73
|
-
|
|
41
|
+
- `get(code: string): GeoPhoneValue | undefined` — Retrieves phone metadata associated with a specific country code.
|
|
42
|
+
- `getByPhone(phone: string): GeoPhoneMapInfo` — Analyzes a phone number string to extract information and the suitable mask.
|
|
43
|
+
- `getByCode(code: string): GeoPhoneMap | undefined` — Returns complete mask information, including the search tree node for a given code.
|
|
74
44
|
|
|
75
|
-
###
|
|
45
|
+
### Auxiliary
|
|
76
46
|
|
|
77
|
-
|
|
47
|
+
- `toMask(phone: string, masks?: string[]): string | undefined` — Converts a raw numeric phone string into a formatted version.
|
|
48
|
+
- `removeZero(phone: string): string` — Standardizes the internal representation of a number by removing leading zeros or adjusting regional prefixes.
|
|
78
49
|
|
|
79
|
-
|
|
80
|
-
- `phone: string` — The raw numeric input.
|
|
81
|
-
- `masks?: string[]` — An array of valid mask strings to iterate through for property matching.
|
|
50
|
+
## Data Types
|
|
82
51
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
### `removeZero`
|
|
52
|
+
### `GeoPhoneValue`
|
|
53
|
+
Basic metadata structure for each country's phone configuration:
|
|
54
|
+
- `phone: number` — Phone country code (e.g., `7`).
|
|
55
|
+
- `within: number` — Internal dialing rule code (used to select the special symbol in the mask).
|
|
56
|
+
- `mask: string[]` — Array of mask patterns assigned to the country.
|
|
57
|
+
- `value: string` — Country identifier (ISO 3166).
|
|
91
58
|
|
|
92
|
-
|
|
59
|
+
### `GeoPhoneMap`
|
|
60
|
+
A node in the internal prefix tree (Trie) used for searching:
|
|
61
|
+
- `items: GeoPhoneValue[]` — List of all items available in this branch of the tree.
|
|
62
|
+
- `info: GeoPhoneValue | undefined` — Phone metadata if the current node is a complete code.
|
|
63
|
+
- `value: string | undefined` — Country identifier for this node.
|
|
64
|
+
- `mask: string[]` — Array of masks with substituted internal symbols (`~`, `=`, `$`).
|
|
65
|
+
- `maskFull: string[]` — Full masks including the international code.
|
|
66
|
+
- `next: Record<string, GeoPhoneMap>` — Pointers to the next digits in the search tree.
|
|
67
|
+
|
|
68
|
+
### `GeoPhoneMapInfo`
|
|
69
|
+
Result of the `getByPhone` search method:
|
|
70
|
+
- `item?: GeoPhoneMap` — The found tree node with country and mask information.
|
|
71
|
+
- `phone?: string` — The remaining part of the number after separating the country code.
|
|
93
72
|
|
|
94
|
-
|
|
95
|
-
- `phone: string` — The input phone number string.
|
|
73
|
+
## Examples
|
|
96
74
|
|
|
97
|
-
|
|
75
|
+
### Internal Symbols (Within Logic)
|
|
76
|
+
The class's internal logic replaces the first "asterisk" in the mask with a special symbol depending on regional rules:
|
|
77
|
+
- `~` — for Russia (internal code 8).
|
|
78
|
+
- `=` — for default/other regions (e.g., USA).
|
|
98
79
|
|
|
99
80
|
```javascript
|
|
100
|
-
GeoPhone.
|
|
101
|
-
|
|
81
|
+
const mapInfo = GeoPhone.getByCode('RU')
|
|
82
|
+
console.log(mapInfo.mask[0]) // '~ (***) ***-**-**'
|
|
102
83
|
```
|
|
103
84
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
### `GeoPhoneValue`
|
|
107
|
-
The basic metadata structure for each country's phone configuration:
|
|
108
|
-
- `phone: number` — Dialing code (e.g., `7`).
|
|
109
|
-
- `within: number` — Internal dialing rule code.
|
|
110
|
-
- `mask: string[]` — Array of mask patterns.
|
|
111
|
-
- `value: string` — Country identifier.
|
|
112
|
-
|
|
113
|
-
### `GeoPhoneMap`
|
|
114
|
-
A node within the internal prefix-tree:
|
|
115
|
-
- `items: GeoPhoneValue[]` — List of items under this branch.
|
|
116
|
-
- `info: GeoPhoneValue | undefined` — The matched value at this specific numeric node.
|
|
117
|
-
- `next: Record<string, GeoPhoneMap>` — Pointers to the next numeric digits in the tree.
|
|
118
|
-
|
|
119
|
-
## Examples
|
|
120
|
-
|
|
85
|
+
### Multiple Masks
|
|
121
86
|
```javascript
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
//
|
|
125
|
-
const lookup = GeoPhone.getByPhone('+79001234567')
|
|
126
|
-
if (lookup.item) {
|
|
127
|
-
console.log('Country:', lookup.item.value) // 'RU'
|
|
128
|
-
console.log('Main Mask:', lookup.item.mask[0])
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// 2. Manual formatting
|
|
132
|
-
const formatted = GeoPhone.toMask('442071234567', ['+** (**) **** ****'])
|
|
133
|
-
console.log(formatted) // '+44 (20) 7123 4567'
|
|
134
|
-
|
|
135
|
-
// 3. Normalizing input for search
|
|
136
|
-
const rawInput = '0084901234567'
|
|
137
|
-
const normalized = GeoPhone.removeZero(rawInput.replace(/^00/, ''))
|
|
138
|
-
console.log(normalized) // '84901234567'
|
|
87
|
+
const masks = ['+* (***) ***-**-**', '+* (***) ***-***']
|
|
88
|
+
console.log(GeoPhone.toMask('79991234567', masks)) // 11 digits -> '+7 (999) 123-45-67'
|
|
89
|
+
console.log(GeoPhone.toMask('7999123456', masks)) // 10 digits -> '+7 (999) 123-456'
|
|
139
90
|
```
|