@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.
Files changed (227) hide show
  1. package/dist/{defineProperty-DblGXmzD.js → defineProperty-149Ahniv.js} +4 -4
  2. package/dist/library.js +1 -1
  3. package/dist/media/descriptions/wikiDescriptionsArea.d.ts +7 -0
  4. package/dist/media/descriptions/wikiDescriptionsClientOnly.d.ts +7 -0
  5. package/dist/media/descriptions/wikiDescriptionsContainer.d.ts +7 -0
  6. package/dist/media/descriptions/wikiDescriptionsHeader.d.ts +7 -0
  7. package/dist/media/descriptions/wikiDescriptionsPageArea.d.ts +7 -0
  8. package/dist/media/mdx/Area/wikiMdxArea.d.ts +7 -0
  9. package/dist/media/mdx/ClientOnly/wikiMdxClientOnly.d.ts +7 -0
  10. package/dist/media/mdx/Container/wikiMdxContainer.d.ts +7 -0
  11. package/dist/media/mdx/Header/wikiMdxHeader.d.ts +7 -0
  12. package/dist/media/mdx/PageArea/wikiMdxPageArea.d.ts +7 -0
  13. package/dist/media.d.ts +1 -1
  14. package/dist/media.js +127 -68
  15. package/dist/storybook.js +2707 -1841
  16. package/dist/{wikiDescriptions-Cv4WzSNL.js → wikiDescriptions-7XaHU3Yk.js} +182 -0
  17. package/package.json +1 -1
  18. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +43 -0
  19. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +43 -0
  20. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +41 -0
  21. package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +20 -4
  22. package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +21 -3
  23. package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +20 -2
  24. package/src/media/functional/functional/functions/computedAsync/computedAsync.en.mdx +8 -0
  25. package/src/media/functional/functional/functions/computedAsync/computedAsync.ru.mdx +8 -0
  26. package/src/media/functional/functional/functions/computedAsync/computedAsync.vi.mdx +8 -0
  27. package/src/media/functional/functional/functions/computedEternity/computedEternity.en.mdx +8 -0
  28. package/src/media/functional/functional/functions/computedEternity/computedEternity.ru.mdx +8 -0
  29. package/src/media/functional/functional/functions/computedEternity/computedEternity.vi.mdx +8 -0
  30. package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
  31. package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
  32. package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
  33. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +57 -54
  34. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +57 -54
  35. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +57 -54
  36. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
  37. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
  38. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
  39. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
  40. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
  41. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
  42. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
  43. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
  44. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
  45. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
  46. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
  47. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
  48. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
  49. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
  50. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
  51. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +106 -51
  52. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +107 -52
  53. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +103 -49
  54. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
  55. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
  56. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
  57. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +59 -21
  58. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +63 -25
  59. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +64 -26
  60. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
  61. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
  62. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
  63. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
  64. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
  65. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
  66. package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
  67. package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
  68. package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
  69. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
  70. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
  71. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
  72. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
  73. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
  74. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
  75. package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
  76. package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
  77. package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
  78. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
  79. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
  80. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
  81. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
  82. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
  83. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
  84. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +178 -0
  85. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +178 -0
  86. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +178 -0
  87. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
  88. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
  89. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
  90. package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
  91. package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
  92. package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
  93. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
  94. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
  95. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
  96. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
  97. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
  98. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
  99. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
  100. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
  101. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
  102. package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
  103. package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
  104. package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
  105. package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
  106. package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
  107. package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
  108. package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
  109. package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
  110. package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
  111. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
  112. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
  113. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
  114. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
  115. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
  116. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
  117. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
  118. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
  119. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
  120. package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
  121. package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
  122. package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
  123. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
  124. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
  125. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
  126. package/src/media/functional/functional-basic/classes/Meta/Meta.en.mdx +16 -0
  127. package/src/media/functional/functional-basic/classes/Meta/Meta.ru.mdx +16 -0
  128. package/src/media/functional/functional-basic/classes/Meta/Meta.vi.mdx +17 -1
  129. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.en.mdx +9 -0
  130. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.ru.mdx +9 -0
  131. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.vi.mdx +9 -0
  132. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +79 -0
  133. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +79 -0
  134. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +79 -0
  135. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
  136. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
  137. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
  138. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
  139. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
  140. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
  141. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
  142. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
  143. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
  144. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
  145. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
  146. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
  147. package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
  148. package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
  149. package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
  150. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
  151. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
  152. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
  153. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
  154. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
  155. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
  156. package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
  157. package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
  158. package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
  159. package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
  160. package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
  161. package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
  162. package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
  163. package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
  164. package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
  165. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
  166. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
  167. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
  168. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
  169. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
  170. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
  171. package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
  172. package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
  173. package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
  174. package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
  175. package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
  176. package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
  177. package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
  178. package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
  179. package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
  180. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
  181. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
  182. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
  183. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
  184. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
  185. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
  186. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
  187. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
  188. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
  189. package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
  190. package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
  191. package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
  192. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
  193. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
  194. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
  195. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
  196. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
  197. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
  198. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
  199. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
  200. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
  201. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
  202. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
  203. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
  204. package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
  205. package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
  206. package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
  207. package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
  208. package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
  209. package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
  210. package/src/media/functional/functional-basic/icons/icons.en.mdx +3 -0
  211. package/src/media/functional/functional-basic/icons/icons.ru.mdx +3 -0
  212. package/src/media/functional/functional-basic/icons/icons.vi.mdx +3 -0
  213. package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
  214. package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
  215. package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -0
  216. package/src/media/functional/ui/about/about.en.mdx +45 -0
  217. package/src/media/functional/ui/about/about.ru.mdx +45 -0
  218. package/src/media/functional/ui/about/about.vi.mdx +45 -0
  219. package/src/media/functional/ui/component/component.en.mdx +104 -0
  220. package/src/media/functional/ui/component/component.ru.mdx +106 -0
  221. package/src/media/functional/ui/component/component.vi.mdx +104 -0
  222. package/src/media/functional/ui/setup/setup.en.mdx +72 -0
  223. package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
  224. package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
  225. package/src/media/functional/ui/wiki-data.en.mdx +114 -0
  226. package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
  227. 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/Prefix Tree) для высокопроизводительного поиска по международным планам нумерации.
15
- - **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные префиксы (например, российская «8»).
16
- - **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые форматы, соответствующие международным стандартам телефонии.
17
-
18
- ## Методы поиска
19
-
20
- ### `getByPhone`
21
-
22
- Основной метод идентификации, который анализирует строку номера телефона для извлечения географической информации и наиболее подходящей маски нумерации.
12
+ - **Оптимизация дерева префиксов** — использует специализированную структуру `map` (Trie) для высокопроизводительного поиска.
13
+ - **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные префиксы.
14
+ - **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые форматы.
23
15
 
24
- **Параметры:**
25
- - `phone: string` — целевой номер телефона для анализа (принимает как сырые, так и частично отформатированные строки).
16
+ ## Базовое использование
26
17
 
27
- **Возвращает:** `GeoPhoneMapInfo` структурированный объект, содержащий найденный элемент `GeoPhoneMap` и нормализованную числовую часть номера.
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
- **Возвращает:** `GeoPhoneValue | undefined` — сырые метаданные для страны или `undefined`, если код не найден в базе.
48
-
49
- ```javascript
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
- ### `getByCode`
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
- ### `toMask`
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
- **Возвращает:** `string | undefined` — отформатированная строка или `undefined`, если длина ввода не соответствует ни одной маске.
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` — телефонный код (например, `7`).
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
- - `next: Record<string, GeoPhoneMap>`указатели на следующие цифры номера в дереве.
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
- import { GeoPhone } from '@dxtmisha/functional'
123
-
124
- // 1. Идентификация страны по номеру телефона
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ạ số điện thoại'/>
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ý các mặt nạ số điện thoại quốc tế. cung cấp một hệ thống mạnh mẽ để xác định thông tin vị trí địa lý của quốc gia từ các chuỗi số điện thoại, định dạng số thô thành các đặc tả mặt nạ địa phương và quản lý bản đồ mã điện thoại quốc tế dựa trên cấu trúc cây tiền tố (prefix-tree).
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 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
- Lớp này tích hợp sâu với dữ liệu địa lý `Geo` để cung cấp khả năng tự động phân giải mặt nạ dựa trên vùng locale hiện tại của người dùng hoặc các mã quốc gia cụ thể.
9
+ ## Tính năng chính
10
10
 
11
- ## Các tính năng chính
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
- - **Tự động khớp (Auto Mapping)** — Tự động phân giải quốc gia và mẫu mặt nạ phù hợp một cách động thông qua tra cứu cây tiền tố đệ quy.
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 bản
17
17
 
18
- ## Các phương thức Tìm kiếm
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 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
- // trả về:
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
- **Trả về:** `GeoPhoneValue | undefined` — Siêu dữ liệu thô của quốc gia, hoặc `undefined` nếu không tìm thấy trong bộ dữ liệu.
48
-
49
- ```javascript
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
- ### `getByCode`
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
- ## Các phương thức Truy cập Dữ liệu
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ả siêu dữ liệu điện thoại quốc tế đã đăng ký.
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 để định danh số điện thoại tốc độ cao.
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
- ## Các phương thức Định dạng & Tiện ích
39
+ ### Lựa chọn
74
40
 
75
- ### `toMask`
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
- Chuyển đổi một chuỗi số điện thoại thô thành phiên bản đã được định dạng dựa trên một tập hợp các mặt nạ cụ thể.
45
+ ### Phụ trợ
78
46
 
79
- **Tham số:**
80
- - `phone: string` — Đầu vào số thô.
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
- **Trả về:** `string | undefined` — Chuỗi đã được định dạng cho người dùng, hoặc `undefined` nếu không có độ dài mặt nạ nào khớp với đầu vào.
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ã quay số (ví dụ: `84`).
109
- - `within: number` — Mã quy tắc quay số nội bộ.
110
- - `mask: string[]` — Mảng các mẫu mặt nạ.
111
- - `value: string` — Định danh quốc gia.
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` — đị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 bộ:
115
- - `items: GeoPhoneValue[]` — Danh sách các mục thuộc nhánh này.
116
- - `info: GeoPhoneValue | undefined` — Giá trị khớp tại nút số cụ thể này.
117
- - `next: Record<string, GeoPhoneMap>`Con trỏ đến các chữ số tiếp theo trong cây.
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 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 một mã đầy đủ.
63
+ - `value: string | undefined` đị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
- import { GeoPhone } from '@dxtmisha/functional'
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 automatically synchronizes application state with the URL — every `set` call updates the browser's hash string, while the `hashchange` event refreshes the internal state.
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 on page load — reading the current URL hash string.
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
- - `get<T>(name: string, defaultValue?: T | (() => T)): T` — Returns the value of a hash variable. If the value doesn't exist, it is set using `defaultValue` (which can be a function).
32
- - `set<T>(name: string, callback: T | (() => T)): void` — Sets a variable's value and updates the URL hash. If the value hasn't changed, no update occurs.
33
- - `addWatch<T>(name: string, callback: (value: T) => void): void` — Subscribes to changes for a specific hash variable.
34
- - `removeWatch<T>(name: string, callback: (value: T) => void): void` — Unsubscribes from changes for a specific variable.
35
- - `reload(): void` Reads the current URL hash and synchronizes it with the internal state.
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
- Статический класс для управления данными, которые хранятся в URL-хэше (`#`). Автоматически синхронизирует состояние приложения с URL — каждый вызов `set` обновляет строку хэша в браузере, а событие `hashchange` обновляет внутреннее состояние.
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
- Класс является статическим и инициализируется автоматически при загрузке страницы — считывает текущую строку хэша URL.
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
- - `get<T>(name: string, defaultValue?: T | (() => T)): T` — Возвращает значение переменной из хэша. Если значения нет, устанавливает его через `defaultValue` (может быть функцией).
32
- - `set<T>(name: string, callback: T | (() => T)): void` — Устанавливает значение переменной и обновляет URL-хэш. Если значение не изменилось, обновление не происходит.
33
- - `addWatch<T>(name: string, callback: (value: T) => void): void` — Подписывается на изменение конкретной переменной в хэше.
34
- - `removeWatch<T>(name: string, callback: (value: T) => void): void` — Отписывается от изменений конкретной переменной.
35
- - `reload(): void` Считывает текущий URL-хэш и синхронизирует с ним внутреннее состояние.
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 (`#`). 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, sự kiện `hashchange` sẽ làm mới trạng thái nội bộ.
7
+ Một lớp facade tĩnh để quản lý dữ liệu được lưu trữ trong URL hash (`#`). ủ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 tải trang đọc chuỗi hash URL hiện tại.
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
- - `get<T>(name: string, defaultValue?: T | (() => T)): T` — Trả về giá trị của biến hash. Nếu không có giá trị, nó được thiết lập qua `defaultValue` (có thể là hàm).
32
- - `set<T>(name: string, callback: T | (() => T)): void` — Thiết lập giá trị của biến cập nhật URL hash. Nếu giá trị không thay đổi, không có cập nhật nào xảy ra.
33
- - `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ể.
34
- - `removeWatch<T>(name: string, callback: (value: T) => void): void` — Hủy đăng ký theo dõi thay đổi của một biến.
35
- - `reload(): void` Đọc URL hash hiện tại đồng bộ hóa với trạng thái nội bộ.
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
+ ```