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