@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
|
@@ -4,136 +4,87 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Класс GeoPhone
|
|
6
6
|
|
|
7
|
-
Специализированный класс для хранения и обработки масок международных телефонных номеров. Обеспечивает
|
|
8
|
-
|
|
9
|
-
Класс тесно интегрирован с гео-данными `Geo`, что позволяет автоматически определять маску на основе текущей локали пользователя или переданных кодов стран.
|
|
7
|
+
Специализированный класс для хранения и обработки масок международных телефонных номеров. Обеспечивает механизм идентификации страны по строке номера, форматирование необработанных чисел в локализованные маски и управление комплексной картой телефонных кодов на базе префиксного дерева. Класс тесно интегрирован с гео-данными `Geo`, что позволяет автоматически определять маску на основе текущей локали пользователя или переданных кодов стран.
|
|
10
8
|
|
|
11
9
|
## Ключевые особенности
|
|
12
10
|
|
|
13
11
|
- **Автоматическое сопоставление** — динамически определяет подходящую страну и паттерн маски через рекурсивный поиск по префиксному дереву.
|
|
14
|
-
- **Оптимизация дерева префиксов** — использует специализированную структуру `map` (Trie
|
|
15
|
-
- **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные
|
|
16
|
-
- **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые
|
|
17
|
-
|
|
18
|
-
## Методы поиска
|
|
19
|
-
|
|
20
|
-
### `getByPhone`
|
|
21
|
-
|
|
22
|
-
Основной метод идентификации, который анализирует строку номера телефона для извлечения географической информации и наиболее подходящей маски нумерации.
|
|
12
|
+
- **Оптимизация дерева префиксов** — использует специализированную структуру `map` (Trie) для высокопроизводительного поиска.
|
|
13
|
+
- **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные префиксы.
|
|
14
|
+
- **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые форматы.
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
- `phone: string` — целевой номер телефона для анализа (принимает как сырые, так и частично отформатированные строки).
|
|
16
|
+
## Базовое использование
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
Вы можете использовать статические методы класса для быстрой идентификации страны по номеру телефона или форматирования.
|
|
28
19
|
|
|
29
20
|
```javascript
|
|
30
21
|
import { GeoPhone } from '@dxtmisha/functional-basic'
|
|
31
22
|
|
|
23
|
+
// Идентификация страны по номеру
|
|
32
24
|
const info = GeoPhone.getByPhone('79001234567')
|
|
33
|
-
//
|
|
34
|
-
// {
|
|
35
|
-
// item: { info: { phone: 7, ... }, mask: ['7 (***) ***-**-**'], ... },
|
|
36
|
-
// phone: '9001234567'
|
|
37
|
-
// }
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### `get`
|
|
41
|
-
|
|
42
|
-
Извлекает локализованные метаданные телефона, связанные с конкретным кодом страны.
|
|
43
|
-
|
|
44
|
-
**Параметры:**
|
|
45
|
-
- `code: string` — стандартный код страны ISO 3166 (например, `'RU'`, `'US'`, `'VN'`).
|
|
25
|
+
console.log(info.item?.value) // 'RU'
|
|
46
26
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
GeoPhone.get('RU')
|
|
51
|
-
// { phone: 7, within: 8, mask: ['* (***) ***-**-**'], value: 'RU' }
|
|
27
|
+
// Форматирование по маске
|
|
28
|
+
const formatted = GeoPhone.toMask('9001234567', ['+* (***) ***-**-**'])
|
|
29
|
+
console.log(formatted) // '+7 (900) 123-45-67'
|
|
52
30
|
```
|
|
53
31
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Расширенный метод получения данных, который возвращает полную информацию о маске, включая узел дерева поиска для заданного кода страны.
|
|
57
|
-
|
|
58
|
-
**Параметры:**
|
|
59
|
-
- `code: string` — строка целевого кода страны.
|
|
60
|
-
|
|
61
|
-
**Возвращает:** `GeoPhoneMap | undefined` — объект узла карты для запрошенного кода.
|
|
62
|
-
|
|
63
|
-
```javascript
|
|
64
|
-
GeoPhone.getByCode('US')
|
|
65
|
-
// { info: { phone: 1, ... }, mask: ['1 (***) ***-****'], ... }
|
|
66
|
-
```
|
|
32
|
+
## Методы
|
|
67
33
|
|
|
68
|
-
|
|
34
|
+
### Информация
|
|
69
35
|
|
|
70
|
-
- `getList(): GeoPhoneValue[]` —
|
|
71
|
-
- `getMap(): Record<string, GeoPhoneMap>` —
|
|
36
|
+
- `getList(): GeoPhoneValue[]` — Возвращает полный отсортированный плоский список всех зарегистрированных метаданных международных телефонов.
|
|
37
|
+
- `getMap(): Record<string, GeoPhoneMap>` — Возвращает корневой узел внутреннего префиксного дерева для поиска.
|
|
72
38
|
|
|
73
|
-
|
|
39
|
+
### Выбор
|
|
74
40
|
|
|
75
|
-
|
|
41
|
+
- `get(code: string): GeoPhoneValue | undefined` — Извлекает метаданные телефона, связанные с конкретным кодом страны.
|
|
42
|
+
- `getByPhone(phone: string): GeoPhoneMapInfo` — Анализирует строку номера телефона для извлечения информации и подходящей маски.
|
|
43
|
+
- `getByCode(code: string): GeoPhoneMap | undefined` — Возвращает полную информацию о маске, включая узел дерева поиска для заданного кода.
|
|
76
44
|
|
|
77
|
-
|
|
45
|
+
### Вспомогательные методы
|
|
78
46
|
|
|
79
|
-
|
|
80
|
-
- `phone: string` —
|
|
81
|
-
- `masks?: string[]` — массив строк допустимых масок для сопоставления.
|
|
47
|
+
- `toMask(phone: string, masks?: string[]): string | undefined` — Преобразует сырую числовую строку телефона в отформатированную версию.
|
|
48
|
+
- `removeZero(phone: string): string` — Стандартизирует внутреннее представление номера, удаляя ведущие нули или корректируя региональные префиксы.
|
|
82
49
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
```javascript
|
|
86
|
-
GeoPhone.toMask('9001234567', ['* (***) ***-**-**'])
|
|
87
|
-
// '7 (900) 123-45-67'
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### `removeZero`
|
|
91
|
-
|
|
92
|
-
Стандартизирует внутреннее представление номера, удаляя ведущие нули или корректируя региональные префиксы для обеспечения согласованной логики поиска.
|
|
93
|
-
|
|
94
|
-
**Параметры:**
|
|
95
|
-
- `phone: string` — строка входящего номера телефона.
|
|
96
|
-
|
|
97
|
-
**Возвращает:** `string` — нормализованная числовая строка.
|
|
98
|
-
|
|
99
|
-
```javascript
|
|
100
|
-
GeoPhone.removeZero('0671234567') // '671234567'
|
|
101
|
-
GeoPhone.removeZero('89001234567') // '9001234567'
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Объекты GeoPhone
|
|
50
|
+
## Типы данных
|
|
105
51
|
|
|
106
52
|
### `GeoPhoneValue`
|
|
107
53
|
Базовая структура метаданных для конфигурации телефона каждой страны:
|
|
108
|
-
- `phone: number` —
|
|
109
|
-
- `within: number` —
|
|
110
|
-
- `mask: string[]` —
|
|
111
|
-
- `value: string` —
|
|
54
|
+
- `phone: number` — Телефонный код страны (например, `7`).
|
|
55
|
+
- `within: number` — Код внутреннего правила набора (используется для выбора спецсимвола в маске).
|
|
56
|
+
- `mask: string[]` — Массив паттернов масок, закрепленных за страной.
|
|
57
|
+
- `value: string` — Идентификатор страны (ISO 3166).
|
|
112
58
|
|
|
113
59
|
### `GeoPhoneMap`
|
|
114
|
-
Узел внутреннего префиксного
|
|
115
|
-
- `items: GeoPhoneValue[]` —
|
|
116
|
-
- `info: GeoPhoneValue | undefined` —
|
|
117
|
-
- `
|
|
60
|
+
Узел внутреннего префиксного дерева (Trie), используемый для поиска:
|
|
61
|
+
- `items: GeoPhoneValue[]` — Список всех элементов, доступных в данной ветви дерева.
|
|
62
|
+
- `info: GeoPhoneValue | undefined` — Метаданные телефона, если текущий узел является завершенным кодом.
|
|
63
|
+
- `value: string | undefined` — Идентификатор страны для данного узла.
|
|
64
|
+
- `mask: string[]` — Массив масок с подставленными спецсимволами (`~`, `=`, `$`).
|
|
65
|
+
- `maskFull: string[]` — Полные маски, включая международный код.
|
|
66
|
+
- `next: Record<string, GeoPhoneMap>` — Указатели на следующие цифры номера в дереве поиска.
|
|
67
|
+
|
|
68
|
+
### `GeoPhoneMapInfo`
|
|
69
|
+
Результат выполнения метода поиска `getByPhone`:
|
|
70
|
+
- `item?: GeoPhoneMap` — Найденный узел дерева с информацией о стране и масках.
|
|
71
|
+
- `phone?: string` — Оставшаяся часть номера после отделения кода страны.
|
|
118
72
|
|
|
119
73
|
## Примеры
|
|
120
74
|
|
|
75
|
+
### Работа со спецсимволами (Within)
|
|
76
|
+
Внутренняя логика класса заменяет первую "звездочку" в маске на спецсимвол в зависимости от региональных правил:
|
|
77
|
+
- `~` — для России (код внутри страны 8).
|
|
78
|
+
- `$` — для некоторых других регионов.
|
|
79
|
+
|
|
80
|
+
```javascript
|
|
81
|
+
const mapInfo = GeoPhone.getByCode('RU')
|
|
82
|
+
console.log(mapInfo.mask[0]) // '~ (***) ***-**-**'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Множественные маски
|
|
121
86
|
```javascript
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
//
|
|
125
|
-
const lookup = GeoPhone.getByPhone('+79001234567')
|
|
126
|
-
if (lookup.item) {
|
|
127
|
-
console.log('Страна:', lookup.item.value) // 'RU'
|
|
128
|
-
console.log('Основная маска:', lookup.item.mask[0])
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// 2. Ручное форматирование
|
|
132
|
-
const formatted = GeoPhone.toMask('442071234567', ['+** (**) **** ****'])
|
|
133
|
-
console.log(formatted) // '+44 (20) 7123 4567'
|
|
134
|
-
|
|
135
|
-
// 3. Нормализация ввода для поиска
|
|
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 цифр -> '+7 (999) 123-45-67'
|
|
89
|
+
console.log(GeoPhone.toMask('7999123456', masks)) // 10 цифр -> '+7 (999) 123-456'
|
|
139
90
|
```
|
|
@@ -1,139 +1,89 @@
|
|
|
1
1
|
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/vi/functional-basic/Classes/GeoPhone - Mặt nạ
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Classes/GeoPhone - Mặt nạ điện thoại'/>
|
|
4
4
|
|
|
5
5
|
# Lớp GeoPhone
|
|
6
6
|
|
|
7
|
-
Lớp chuyên biệt để lưu trữ và xử lý
|
|
7
|
+
Lớp chuyên biệt để lưu trữ và xử lý mặt nạ số điện thoại quốc tế. Cung cấp cơ chế xác định quốc gia theo chuỗi số điện thoại, định dạng số thô thành mặt nạ được bản địa hóa và quản lý bản đồ mã điện thoại phức tạp dựa trên cây tiền tố (Trie). Lớp này được tích hợp chặt chẽ với dữ liệu địa lý `Geo`, cho phép tự động xác định mặt nạ dựa trên ngôn ngữ hiện tại của người dùng hoặc mã quốc gia được cung cấp.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Tính năng chính
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
- **Khớp tự động** — Tự động xác định quốc gia và mẫu mặt nạ phù hợp thông qua tìm kiếm đệ quy trong cây tiền tố.
|
|
12
|
+
- **Tối ưu hóa cây tiền tố** — Sử dụng cấu trúc `map` chuyên biệt (Trie) để tìm kiếm hiệu suất cao.
|
|
13
|
+
- **Bình thường hóa thông minh** — Tự động xử lý các biến thể quay số khu vực như số 0 ở đầu hoặc tiền tố quốc gia.
|
|
14
|
+
- **Định dạng tiêu chuẩn** — Chuyển đổi các chuỗi số thô thành định dạng dễ đọc.
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
- **Tối ưu hóa Cây Tiền tố (Prefix Tree)** — Sử dụng cấu trúc `map` chuyên biệt (Prefix Tree) để tìm kiếm hiệu quả và hiệu suất cao trên các kế hoạch đánh số quốc tế.
|
|
15
|
-
- **Chuẩn hóa Thông minh** — Tự động xử lý các biến thể quay số theo vùng, chẳng hạn như số 0 ở đầu hoặc các tiền tố quốc gia (ví dụ: số '8' của Nga).
|
|
16
|
-
- **Định dạng Chuẩn hóa** — Chuyển đổi các chuỗi số thô thành các định dạng điện thoại dễ đọc, phù hợp với các tiêu chuẩn viễn thông quốc tế.
|
|
16
|
+
## Cách sử dụng cơ bản
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
### `getByPhone`
|
|
21
|
-
|
|
22
|
-
Phương thức định danh chính phân tích một chuỗi số điện thoại để trích xuất thông tin địa lý và mặt nạ đánh số phù hợp nhất.
|
|
23
|
-
|
|
24
|
-
**Tham số:**
|
|
25
|
-
- `phone: string` — Số điện thoại mục tiêu cần phân tích (chấp nhận các chuỗi thô hoặc đã được định dạng một phần).
|
|
26
|
-
|
|
27
|
-
**Trả về:** `GeoPhoneMapInfo` — Một đối tượng cấu trúc chứa mục `GeoPhoneMap` khớp được và phần số đã được chuẩn hóa của điện thoại.
|
|
18
|
+
Bạn có thể sử dụng các phương thức tĩnh của lớp để xác định nhanh quốc gia theo số điện thoại hoặc định dạng.
|
|
28
19
|
|
|
29
20
|
```javascript
|
|
30
21
|
import { GeoPhone } from '@dxtmisha/functional-basic'
|
|
31
22
|
|
|
23
|
+
// Xác định quốc gia theo số điện thoại
|
|
32
24
|
const info = GeoPhone.getByPhone('84901234567')
|
|
33
|
-
//
|
|
34
|
-
// {
|
|
35
|
-
// item: { info: { phone: 84, ... }, mask: ['+84 ** **** ****'], ... },
|
|
36
|
-
// phone: '901234567'
|
|
37
|
-
// }
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### `get`
|
|
41
|
-
|
|
42
|
-
Truy xuất siêu dữ liệu điện thoại đã địa phương hóa được liên kết với một mã quốc gia cụ thể.
|
|
43
|
-
|
|
44
|
-
**Tham số:**
|
|
45
|
-
- `code: string` — Mã quốc gia tiêu chuẩn ISO 3166 (ví dụ: `'VN'`, `'RU'`, `'US'`).
|
|
25
|
+
console.log(info.item?.value) // 'VN'
|
|
46
26
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
GeoPhone.get('VN')
|
|
51
|
-
// { phone: 84, within: 0, mask: ['+** ** **** ****'], value: 'VN' }
|
|
27
|
+
// Định dạng theo mặt nạ
|
|
28
|
+
const formatted = GeoPhone.toMask('901234567', ['+** (***) ***-***'])
|
|
29
|
+
console.log(formatted) // '+84 (901) 234-567'
|
|
52
30
|
```
|
|
53
31
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
Phương thức truy xuất mở rộng trả về dữ liệu mặt nạ đầy đủ bao gồm cả nút cây tìm kiếm cho một mã quốc gia nhất định.
|
|
57
|
-
|
|
58
|
-
**Tham số:**
|
|
59
|
-
- `code: string` — Chuỗi mã quốc gia mục tiêu.
|
|
60
|
-
|
|
61
|
-
**Trả về:** `GeoPhoneMap | undefined` — Đối tượng nút bản đồ đầy đủ cho mã được yêu cầu.
|
|
62
|
-
|
|
63
|
-
```javascript
|
|
64
|
-
GeoPhone.getByCode('US')
|
|
65
|
-
// { info: { phone: 1, ... }, mask: ['1 (***) ***-****'], ... }
|
|
66
|
-
```
|
|
32
|
+
## Các phương thức
|
|
67
33
|
|
|
68
|
-
|
|
34
|
+
### Thông tin
|
|
69
35
|
|
|
70
|
-
- `getList(): GeoPhoneValue[]` — Trả về danh sách phẳng đầy đủ, đã được sắp xếp của tất cả
|
|
71
|
-
- `getMap(): Record<string, GeoPhoneMap>` — Trả về nút gốc của cây tiền tố nội bộ được sử dụng để
|
|
36
|
+
- `getList(): GeoPhoneValue[]` — Trả về danh sách phẳng đầy đủ, đã được sắp xếp của tất cả dữ liệu meta điện thoại quốc tế.
|
|
37
|
+
- `getMap(): Record<string, GeoPhoneMap>` — Trả về nút gốc của cây tiền tố nội bộ được sử dụng để tìm kiếm.
|
|
72
38
|
|
|
73
|
-
|
|
39
|
+
### Lựa chọn
|
|
74
40
|
|
|
75
|
-
|
|
41
|
+
- `get(code: string): GeoPhoneValue | undefined` — Lấy dữ liệu meta điện thoại liên kết với một mã quốc gia cụ thể.
|
|
42
|
+
- `getByPhone(phone: string): GeoPhoneMapInfo` — Phân tích chuỗi số điện thoại để trích xuất thông tin và mặt nạ phù hợp.
|
|
43
|
+
- `getByCode(code: string): GeoPhoneMap | undefined` — Trả về thông tin mặt nạ đầy đủ cho một mã nhất định.
|
|
76
44
|
|
|
77
|
-
|
|
45
|
+
### Phụ trợ
|
|
78
46
|
|
|
79
|
-
|
|
80
|
-
- `phone: string` —
|
|
81
|
-
- `masks?: string[]` — Một mảng các chuỗi mặt nạ hợp lệ để lặp qua nhằm tìm kiếm sự phù hợp.
|
|
47
|
+
- `toMask(phone: string, masks?: string[]): string | undefined` — Chuyển đổi chuỗi số điện thoại thô thành phiên bản đã định dạng.
|
|
48
|
+
- `removeZero(phone: string): string` — Bình thường hóa biểu diễn nội bộ của số bằng cách loại bỏ các số 0 ở đầu hoặc điều chỉnh tiền tố khu vực.
|
|
82
49
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
```javascript
|
|
86
|
-
GeoPhone.toMask('901234567', ['+** ** **** ****'])
|
|
87
|
-
// '+84 90 1234 567'
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### `removeZero`
|
|
91
|
-
|
|
92
|
-
Chuẩn hóa biểu diễn số nội bộ bằng cách loại bỏ các số 0 ở đầu hoặc sửa các tiền tố quay số vùng để đảm bảo logic tìm kiếm nhất quán.
|
|
93
|
-
|
|
94
|
-
**Tham số:**
|
|
95
|
-
- `phone: string` — Chuỗi số điện thoại đầu vào.
|
|
96
|
-
|
|
97
|
-
**Trả về:** `string` — Chuỗi số đã được chuẩn hóa.
|
|
98
|
-
|
|
99
|
-
```javascript
|
|
100
|
-
GeoPhone.removeZero('0901234567') // '901234567'
|
|
101
|
-
GeoPhone.removeZero('89001234567') // '9001234567'
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Các đối tượng GeoPhone
|
|
50
|
+
## Kiểu dữ liệu
|
|
105
51
|
|
|
106
52
|
### `GeoPhoneValue`
|
|
107
53
|
Cấu trúc siêu dữ liệu cơ bản cho cấu hình điện thoại của mỗi quốc gia:
|
|
108
|
-
- `phone: number` — Mã
|
|
109
|
-
- `within: number` — Mã quy tắc
|
|
110
|
-
- `mask: string[]` — Mảng các mẫu mặt
|
|
111
|
-
- `value: string` —
|
|
54
|
+
- `phone: number` — Mã điện thoại quốc gia (ví dụ: `84`).
|
|
55
|
+
- `within: number` — Mã quy tắc gọi nội bộ (dùng để chọn ký tự đặc biệt trong mặt nạ).
|
|
56
|
+
- `mask: string[]` — Mảng các mẫu mặt nạ được gán cho quốc gia.
|
|
57
|
+
- `value: string` — Mã định danh quốc gia (ISO 3166).
|
|
112
58
|
|
|
113
59
|
### `GeoPhoneMap`
|
|
114
|
-
Một nút trong cây tiền tố nội
|
|
115
|
-
- `items: GeoPhoneValue[]` — Danh sách các mục
|
|
116
|
-
- `info: GeoPhoneValue | undefined` —
|
|
117
|
-
- `
|
|
60
|
+
Một nút trong cây tiền tố nội bộ (Trie) được sử dụng để tìm kiếm:
|
|
61
|
+
- `items: GeoPhoneValue[]` — Danh sách tất cả các mục có sẵn trong nhánh này của cây.
|
|
62
|
+
- `info: GeoPhoneValue | undefined` — Dữ liệu meta điện thoại nếu nút hiện tại là một mã đầy đủ.
|
|
63
|
+
- `value: string | undefined` — Mã định danh quốc gia cho nút này.
|
|
64
|
+
- `mask: string[]` — Mảng các mặt nạ với các ký tự nội bộ đã được thay thế (`~`, `=`, `$`).
|
|
65
|
+
- `maskFull: string[]` — Mặt nạ đầy đủ bao gồm cả mã quốc tế.
|
|
66
|
+
- `next: Record<string, GeoPhoneMap>` — Con trỏ đến các chữ số tiếp theo trong cây tìm kiếm.
|
|
67
|
+
|
|
68
|
+
### `GeoPhoneMapInfo`
|
|
69
|
+
Kết quả của phương thức tìm kiếm `getByPhone`:
|
|
70
|
+
- `item?: GeoPhoneMap` — Nút cây tìm thấy với thông tin quốc gia và mặt nạ.
|
|
71
|
+
- `phone?: string` — Phần còn lại của số sau khi tách mã quốc gia.
|
|
118
72
|
|
|
119
73
|
## Ví dụ
|
|
120
74
|
|
|
75
|
+
### Logic ký tự nội bộ (Within)
|
|
76
|
+
Logic nội bộ của lớp sẽ thay thế dấu "sao" đầu tiên trong mặt nạ bằng một ký tự đặc biệt tùy thuộc vào quy tắc khu vực:
|
|
77
|
+
- `~` — cho Nga (mã nội bộ 8).
|
|
78
|
+
- `=` — cho các khu vực mặc định/khác (ví dụ: Việt Nam, Hoa Kỳ).
|
|
79
|
+
|
|
80
|
+
```javascript
|
|
81
|
+
const mapInfo = GeoPhone.getByCode('RU')
|
|
82
|
+
console.log(mapInfo.mask[0]) // '~ (***) ***-**-**'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Nhiều mặt nạ
|
|
121
86
|
```javascript
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// 1. Định danh quốc gia bằng số điện thoại
|
|
125
|
-
const lookup = GeoPhone.getByPhone('+84901234567')
|
|
126
|
-
if (lookup.item) {
|
|
127
|
-
console.log('Quốc gia:', lookup.item.value) // 'VN'
|
|
128
|
-
console.log('Mặt nạ chính:', lookup.item.mask[0])
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// 2. Định dạng thủ công
|
|
132
|
-
const formatted = GeoPhone.toMask('442071234567', ['+** (**) **** ****'])
|
|
133
|
-
console.log(formatted) // '+44 (20) 7123 4567'
|
|
134
|
-
|
|
135
|
-
// 3. Chuẩn hóa đầu vào để tìm kiếm
|
|
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('84901234567', masks)) // 11 số -> '+84 (901) 234-567'
|
|
139
89
|
```
|
|
@@ -4,7 +4,9 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Hash Class
|
|
6
6
|
|
|
7
|
-
A static class for managing data stored in the URL hash (`#`). It
|
|
7
|
+
A static facade class for managing data stored in the URL hash (`#`). It delegates execution to the `HashInstance` class, providing centralized access and state isolation (e.g., for SSR).
|
|
8
|
+
|
|
9
|
+
It automatically synchronizes application state with the URL — every `set` call updates the browser's hash string, while the `hashchange` event refreshes the internal state.
|
|
8
10
|
|
|
9
11
|
## Key Features
|
|
10
12
|
|
|
@@ -12,10 +14,11 @@ A static class for managing data stored in the URL hash (`#`). It automatically
|
|
|
12
14
|
- **Reactivity via Watchers** — The `addWatch` method allows subscribing to changes on a specific variable.
|
|
13
15
|
- **Auto-initialization** — When the page loads, data is automatically read from the URL.
|
|
14
16
|
- **Smart Typing** — Values are deserialized from a string: numbers, booleans, and objects are restored to their original types.
|
|
17
|
+
- **SSR Isolation** — `ServerStorage` ensures a unique data instance for each request on the server.
|
|
15
18
|
|
|
16
19
|
## Initialization
|
|
17
20
|
|
|
18
|
-
The class is static and initializes automatically
|
|
21
|
+
The class is static and initializes automatically upon the first access.
|
|
19
22
|
|
|
20
23
|
```javascript
|
|
21
24
|
// URL: https://myapp.com/#page=2;filter=active
|
|
@@ -28,11 +31,19 @@ const filter = Hash.get('filter') // 'active' (string)
|
|
|
28
31
|
|
|
29
32
|
## Methods
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
- `
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- `
|
|
34
|
+
### Instance
|
|
35
|
+
- `static getItem(): HashInstance` — Returns the current `HashInstance` (isolated for the current request).
|
|
36
|
+
|
|
37
|
+
### Reading and Writing
|
|
38
|
+
- `static get<T>(name: string, defaultValue?: T | (() => T)): T` — Returns the value of a hash variable.
|
|
39
|
+
- `static set<T>(name: string, callback: T | (() => T)): void` — Sets a variable's value and updates the URL hash.
|
|
40
|
+
|
|
41
|
+
### Watchers
|
|
42
|
+
- `static addWatch<T>(name: string, callback: (value: T) => void): void` — Subscribes to changes for a specific hash variable.
|
|
43
|
+
- `static removeWatch<T>(name: string, callback: (value: T) => void): void` — Unsubscribes from changes for a specific variable.
|
|
44
|
+
|
|
45
|
+
### Management
|
|
46
|
+
- `static reload(): void` — Forces synchronization of the state with the current URL hash.
|
|
36
47
|
|
|
37
48
|
## Examples
|
|
38
49
|
|
|
@@ -4,7 +4,9 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Класс Hash
|
|
6
6
|
|
|
7
|
-
Статический
|
|
7
|
+
Статический класс-фасад для управления данными, которые хранятся в URL-хэше (`#`). Он делегирует выполнение классу `HashInstance`, обеспечивая централизованный доступ и изоляцию состояния (например, при SSR).
|
|
8
|
+
|
|
9
|
+
Автоматически синхронизирует состояние приложения с URL — каждый вызов `set` обновляет строку хэша в браузере, а событие `hashchange` обновляет внутреннее состояние.
|
|
8
10
|
|
|
9
11
|
## Ключевые особенности
|
|
10
12
|
|
|
@@ -12,10 +14,11 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
12
14
|
- **Реактивность через watchers** — Метод `addWatch` позволяет подписаться на изменение конкретной переменной.
|
|
13
15
|
- **Авто-инициализация** — При загрузке страницы данные автоматически считываются из URL.
|
|
14
16
|
- **Умный тип** — Значения десериализуются из строки: числа, булевые значения и объекты восстанавливаются.
|
|
17
|
+
- **SSR-изоляция** — Через `ServerStorage` обеспечивается уникальный экземпляр данных для каждого запроса на сервере.
|
|
15
18
|
|
|
16
19
|
## Инициализация
|
|
17
20
|
|
|
18
|
-
Класс является статическим и инициализируется автоматически при
|
|
21
|
+
Класс является статическим и инициализируется автоматически при первом обращении.
|
|
19
22
|
|
|
20
23
|
```javascript
|
|
21
24
|
// URL: https://myapp.com/#page=2;filter=active
|
|
@@ -28,11 +31,19 @@ const filter = Hash.get('filter') // 'active' (string)
|
|
|
28
31
|
|
|
29
32
|
## Методы
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
- `
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- `
|
|
34
|
+
### Экземпляр
|
|
35
|
+
- `static getItem(): HashInstance` — Возвращает текущий экземпляр `HashInstance` (изолированный для текущего запроса).
|
|
36
|
+
|
|
37
|
+
### Чтение и запись
|
|
38
|
+
- `static get<T>(name: string, defaultValue?: T | (() => T)): T` — Возвращает значение переменной из хэша.
|
|
39
|
+
- `static set<T>(name: string, callback: T | (() => T)): void` — Устанавливает значение переменной и обновляет URL-хэш.
|
|
40
|
+
|
|
41
|
+
### Наблюдение (Watchers)
|
|
42
|
+
- `static addWatch<T>(name: string, callback: (value: T) => void): void` — Подписывается на изменение переменной.
|
|
43
|
+
- `static removeWatch<T>(name: string, callback: (value: T) => void): void` — Отписывается от изменений.
|
|
44
|
+
|
|
45
|
+
### Управление
|
|
46
|
+
- `static reload(): void` — Принудительно синхронизирует состояние с текущим URL-хэшем.
|
|
36
47
|
|
|
37
48
|
## Примеры
|
|
38
49
|
|
|
@@ -4,7 +4,9 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Lớp Hash
|
|
6
6
|
|
|
7
|
-
Một lớp tĩnh để quản lý dữ liệu được lưu trữ trong URL hash (`#`).
|
|
7
|
+
Một lớp facade tĩnh để quản lý dữ liệu được lưu trữ trong URL hash (`#`). Nó ủy quyền thực thi cho lớp `HashInstance`, cung cấp khả năng truy cập tập trung и cách ly trạng thái (ví dụ: cho SSR).
|
|
8
|
+
|
|
9
|
+
Nó tự động đồng bộ hóa trạng thái ứng dụng với URL — mỗi lần gọi `set` sẽ cập nhật chuỗi hash trên trình duyệt, và sự kiện `hashchange` sẽ làm mới trạng thái nội bộ.
|
|
8
10
|
|
|
9
11
|
## Tính năng chính
|
|
10
12
|
|
|
@@ -12,10 +14,11 @@ Một lớp tĩnh để quản lý dữ liệu được lưu trữ trong URL has
|
|
|
12
14
|
- **Phản hồi qua Watcher** — Phương thức `addWatch` cho phép đăng ký theo dõi thay đổi của một biến cụ thể.
|
|
13
15
|
- **Tự động khởi tạo** — Khi tải trang, dữ liệu được tự động đọc từ URL.
|
|
14
16
|
- **Phân tích kiểu thông minh** — Giá trị được giải mã từ chuỗi: số, boolean và đối tượng được khôi phục về kiểu gốc.
|
|
17
|
+
- **Cách ly SSR** — `ServerStorage` đảm bảo mỗi yêu cầu trên máy chủ có một phiên bản dữ liệu riêng.
|
|
15
18
|
|
|
16
19
|
## Khởi tạo
|
|
17
20
|
|
|
18
|
-
Lớp này là tĩnh và khởi tạo tự động khi
|
|
21
|
+
Lớp này là tĩnh và khởi tạo tự động khi truy cập lần đầu.
|
|
19
22
|
|
|
20
23
|
```javascript
|
|
21
24
|
// URL: https://myapp.com/#page=2;filter=active
|
|
@@ -28,11 +31,19 @@ const filter = Hash.get('filter') // 'active' (string)
|
|
|
28
31
|
|
|
29
32
|
## Phương thức
|
|
30
33
|
|
|
31
|
-
|
|
32
|
-
- `
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- `
|
|
34
|
+
### Phiên bản
|
|
35
|
+
- `static getItem(): HashInstance` — Trả về phiên bản `HashInstance` hiện tại (được cách ly cho yêu cầu hiện tại).
|
|
36
|
+
|
|
37
|
+
### Đọc и Ghi
|
|
38
|
+
- `static get<T>(name: string, defaultValue?: T | (() => T)): T` — Trả về giá trị của biến hash.
|
|
39
|
+
- `static set<T>(name: string, callback: T | (() => T)): void` — Thiết lập giá trị của biến и cập nhật URL hash.
|
|
40
|
+
|
|
41
|
+
### Theo dõi (Watchers)
|
|
42
|
+
- `static addWatch<T>(name: string, callback: (value: T) => void): void` — Đăng ký theo dõi thay đổi của một biến hash cụ thể.
|
|
43
|
+
- `static removeWatch<T>(name: string, callback: (value: T) => void): void` — Hủy đăng ký theo dõi thay đổi của một biến.
|
|
44
|
+
|
|
45
|
+
### Quản lý
|
|
46
|
+
- `static reload(): void` — Ép buộc đồng bộ hóa trạng thái với URL hash hiện tại.
|
|
36
47
|
|
|
37
48
|
## Ví dụ
|
|
38
49
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Classes/HashInstance - URL Hash Instance'/>
|
|
4
|
+
|
|
5
|
+
# HashInstance Class
|
|
6
|
+
|
|
7
|
+
`HashInstance` is the core class that implements the logic for managing data in the URL hash. It provides state storage, mechanisms for subscribing to changes, and synchronization with the browser API.
|
|
8
|
+
|
|
9
|
+
You can use this class directly if you need isolated hash management separate from the global `Hash` state.
|
|
10
|
+
|
|
11
|
+
## Key Features
|
|
12
|
+
|
|
13
|
+
- **Isolated State** — Stores its own set of hash variables.
|
|
14
|
+
- **Chainable API** — Most methods return `this`, allowing for concise code.
|
|
15
|
+
- **Automatic Synchronization** — Upon initialization, it reads data from the URL and subscribes to the `hashchange` event.
|
|
16
|
+
- **SSR Compatibility** — Works safely in server-side environments using stubs for DOM APIs.
|
|
17
|
+
|
|
18
|
+
## Initialization
|
|
19
|
+
|
|
20
|
+
To create an instance, use the `HashInstance()` constructor.
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { HashInstance } from '@dxtmisha/functional-basic'
|
|
24
|
+
|
|
25
|
+
const myHash = new HashInstance()
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Methods
|
|
29
|
+
|
|
30
|
+
### Reading and Writing
|
|
31
|
+
- `get<T>(name: string, defaultValue?: T | (() => T)): T` — Returns the value of a variable. If it doesn't exist, sets `defaultValue` and returns it.
|
|
32
|
+
- `set<T>(name: string, callback: T | (() => T)): this` — Updates the variable's value and synchronizes the URL.
|
|
33
|
+
|
|
34
|
+
### Watchers
|
|
35
|
+
- `addWatch<T>(name: string, callback: (value: T) => void): this` — Adds a handler for variable changes.
|
|
36
|
+
- `removeWatch<T>(name: string, callback: (value: T) => void): this` — Removes a handler.
|
|
37
|
+
|
|
38
|
+
### Management
|
|
39
|
+
- `reload(): this` — Refreshes the internal state from the current URL hash.
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
### Using an Isolated Instance
|
|
44
|
+
```typescript
|
|
45
|
+
const searchHash = new HashInstance()
|
|
46
|
+
|
|
47
|
+
// Subscribe
|
|
48
|
+
searchHash.addWatch('query', (q) => {
|
|
49
|
+
console.log('Search:', q)
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
// Set value (will update URL)
|
|
53
|
+
searchHash.set('query', 'smartphones')
|
|
54
|
+
```
|