@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,34 +4,34 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # Lớp Formatters
6
6
 
7
- Một lớp chuyên dụng để định dạng danh sách dữ liệu dựa trên cấu hình được cung cấp. Nó đóng vai trò như một cầu nối giữa dữ liệu thô và các chuỗi văn bản đã được địa phương hóa, dễ đọc, tận dụng cơ chế singleton `GeoIntl` để đảm bảo tính nhất quán trong định dạng trên các ngôn ngữ khác nhau.
7
+ Một lớp chuyên dụng để định dạng danh sách dữ liệu dựa trên cấu hình được cung cấp. Nó đóng vai trò cầu nối giữa dữ liệu thô và các chuỗi đã được bản địa hóa, dễ đọc, sử dụng singleton `GeoIntl` để định dạng nhất quán trên các ngôn ngữ khác nhau.
8
8
 
9
- ## Tính năng chính
9
+ ## Các tính năng chính
10
10
 
11
- - **Cấu hình khai báo** — Định nghĩa các quy tắc định dạng một lần và áp dụng chúng cho toàn bộ tập dữ liệu.
12
- - **Hỗ trợ nhiều kiểu dữ liệu** — Hỗ trợ tích hợp cho tiền tệ, ngày tháng, tên, số, số nhiều và các đơn vị đo lường.
13
- - **Biến đổi tùy chỉnh** — Khả năng cung cấp các hàm riêng cho các nhu cầu định dạng đặc thù.
14
- - **An toàn kiểu dữ liệu (Type Safety)** — Hỗ trợ đầy đủ TypeScript cho các mục dữ liệu, các tùy chọn và danh sách kết quả đã được định dạng.
15
- - **Tự động tạo khóa (Key Generation)** — Tự động thêm các giá trị đã định dạng vào các mục với hậu tố `Format` (ví dụ: `price` trở thành `priceFormat`).
11
+ - **Cấu hình khai báo** — Xác định các quy tắc định dạng một lần và áp dụng chúng cho toàn bộ tập dữ liệu.
12
+ - **Hỗ trợ nhiều loại** — Hỗ trợ tích hợp cho tiền tệ, ngày tháng, tên, số, số nhiều và đơn vị đo lường.
13
+ - **Chuyển đổi tùy chỉnh** — Khả năng cung cấp các hàm riêng của bạn cho các nhu cầu định dạng duy nhất.
14
+ - **Typing** — Hỗ trợ TypeScript đầy đủ cho các mục, tham số và danh sách đã định dạng kết quả.
15
+ - **Tự động tạo khóa** — Tự động thêm các giá trị đã định dạng vào các mục với hậu tố `Format` (ví dụ: `price` trở thành `priceFormat`).
16
16
 
17
17
  ## Khởi tạo
18
18
 
19
- Để khởi tạo đối tượng, hãy gọi hàm khởi tạo `Formatters(options, list)`.
19
+ Để khởi tạo đối tượng, hãy gọi constructor `Formatters(options, list)`.
20
20
 
21
- ### Ràng buộc Generic (Generic Constraints)
21
+ ### Các ràng buộc Generic (Generic Constraints)
22
22
 
23
- - `Options extends FormattersOptionsList` — kiểu của các tùy chọn định dạng.
24
- - `List extends FormattersList<FormattersListItem> | FormattersListItem` — kiểu dữ liệu đầu vào (mảng hoặc một mục duy nhất).
25
- - `Item extends (List extends any[] ? List[number] : List)` — kiểu của một mục duy nhất trong danh sách.
23
+ - `Options extends FormattersOptionsList` — kiểu tham số định dạng.
24
+ - `List extends FormattersListProp` — kiểu dữ liệu đầu vào (mảng hoặc một mục).
25
+ - `Item extends FormattersItemProp<List>` — kiểu của một mục duy nhất trong danh sách.
26
26
 
27
27
  **Tham số:**
28
- - `options: Options` — tùy chọn định dạng cho mỗi cột/thuộc tính.
29
- - `list?: List` — danh sách hoặc mục dữ liệu ban đầu để định dạng.
28
+ - `options: Options` — tham số định dạng cho mỗi cột/thuộc tính.
29
+ - `list?: List` — danh sách dữ liệu ban đầu để định dạng.
30
30
 
31
31
  ```typescript
32
32
  import { Formatters } from '@dxtmisha/functional-basic'
33
33
 
34
- // 1. Xác định các tùy chọn định dạng
34
+ // 1. Xác định các tham số định dạng
35
35
  const options = {
36
36
  price: {
37
37
  type: 'currency',
@@ -44,31 +44,17 @@ const options = {
44
44
  user: {
45
45
  type: 'name',
46
46
  options: { lastPropName: 'surname', firstPropName: 'name' }
47
- },
48
- weight: {
49
- type: 'unit',
50
- options: { unit: 'kilogram' }
51
- },
52
- count: {
53
- type: 'plural',
54
- options: { words: 'quả táo|quả táo' }
55
- },
56
- status: {
57
- transformation: (value: number) => value === 1 ? 'Đang hoạt động' : 'Ngừng hoạt động'
58
47
  }
59
48
  }
60
49
 
61
- // 2. Dữ liệu ban đầu (có thể là một mảng hoặc một đối tượng duy nhất)
50
+ // 2. Dữ liệu thô
62
51
  const data = [
63
52
  {
64
53
  price: 100,
65
54
  currency: 'VND',
66
55
  created: '2024-03-07T12:00:00',
67
- name: 'Thanh',
68
- surname: 'Nguyễn',
69
- weight: 75,
70
- count: 5,
71
- status: 1
56
+ name: 'An',
57
+ surname: 'Nguyễn'
72
58
  }
73
59
  ]
74
60
 
@@ -76,93 +62,95 @@ const data = [
76
62
  const formatter = new Formatters(options, data)
77
63
  ```
78
64
 
79
- ## Xử dữ liệu
80
-
81
- ### `to`
65
+ ## Các phương thức
82
66
 
83
- Xử lý dữ liệu và trả về kết quả. Nếu đầu vào là một mảng, nó sẽ trả về một mảng mới gồm các mục đã được bổ sung dữ liệu. Nếu đầu vào là một mục duy nhất, nó sẽ trả về chính mục đó với các trường đã định dạng.
67
+ ### Xử lý
68
+ - `to(): FormattersReturn<List, Options>` — Xử lý dữ liệu và trả về kết quả. Nếu đầu vào là một mảng, trả về một mảng mới gồm các mục đã được làm giàu. Nếu là một mục duy nhất — một đối tượng duy nhất. Thêm các thuộc tính với hậu tố `Format`.
84
69
 
85
- **Trả về:** `FormattersListColumns<Item, Options> | FormattersListColumnItem<Item, Options>` — dữ liệu đã được bổ sung các thuộc tính `*Format`.
86
-
87
- ```javascript
88
- const result = formatter.to()
89
- /*
90
- Kết quả (nếu là mảng): [
91
- {
92
- id: 101,
93
- price: 100,
94
- currency: 'VND',
95
- priceFormat: '100.000 ₫',
96
- status: 1,
97
- statusFormat: 'Đang hoạt động',
98
- ...
99
- }
100
- ]
70
+ ### Cấu hình
71
+ - `setList(list?: List): this` — Cập nhật dữ liệu để định dạng. Hỗ trợ nối chuỗi.
101
72
 
102
- Kết quả (nếu là một mục duy nhất): {
103
- price: 100,
104
- priceFormat: '100.000 ₫',
105
- ...
106
- }
107
- */
108
- ```
109
-
110
- ## Truy xuất và quản lý dữ liệu
111
-
112
- - `is(): boolean` — Kiểm tra xem danh sách/mục đã được thiết lập chưa.
113
- - `isArray(): boolean` — Kiểm tra xem dữ liệu hiện tại có phải là một mảng không.
73
+ ### Thông tin
74
+ - `is(): boolean` — Kiểm tra xem dữ liệu đã được thiết lập để xử lý hay chưa.
75
+ - `isArray(): boolean` Liệu dữ liệu hiện tại có phải là một mảng hay không.
114
76
  - `length(): number` — Trả về số lượng bản ghi trong danh sách.
115
- - `getList(): Item[]` — Trả về danh sách dữ liệu hiện tại dưới dạng mảng.
77
+ - `getList(): FormattersList<Item>` — Trả về danh sách hiện tại dưới dạng mảng.
116
78
  - `getOptions(): Options` — Trả về cấu hình định dạng hiện tại.
117
- - `setList(list?: List): this` — Cập nhật dữ liệu cần định dạng và trả về thực thể để gọi chuỗi lệnh.
118
-
119
- ## Cấu trúc cấu hình
120
-
121
- Đối tượng cấu hình được truyền vào hàm khởi tạo là một bản đồ (map), nơi mỗi khóa tương ứng với tên một thuộc tính trong dữ liệu của bạn. Mỗi giá trị phải tuân theo cấu trúc `FormattersOptionsItem`.
122
-
123
- ### Cấu trúc mục chính
124
79
 
80
+ ## Các loại định dạng và Tham số
81
+
82
+ Cấu hình `FormattersOptionsList` là một từ điển trong đó các khóa tương ứng với tên thuộc tính trong dữ liệu (hỗ trợ ký hiệu chấm `path.to.prop`) và các giá trị là đối tượng `FormattersOptionsItem`.
83
+
84
+ ### Cấu trúc chung của `FormattersOptionsItem`
85
+ - `type?: FormattersType` — Loại định dạng.
86
+ - `transformation?: (value, item, options) => string` — Hàm chuyển đổi tùy chỉnh.
87
+ - `options?: Options` — Đối tượng tham số, cấu trúc phụ thuộc vào `type` đã chọn.
88
+
89
+ ### Mô tả chi tiết các loại
90
+
91
+ #### 1. Tiền tệ (`currency`)
92
+ Được sử dụng để hiển thị các giá trị tiền tệ đã được bản địa hóa.
93
+ - `currencyPropName?: string` — Tên thuộc tính trong mục chứa mã tiền tệ (mặc định là `currency`).
94
+ - `options?: string | Intl.NumberFormatOptions` — Bạn có thể truyền một mã cố định (ví dụ: `'VND'`) hoặc một đối tượng cài đặt `Intl.NumberFormat`.
95
+ - `numberOnly?: boolean` — Nếu `true`, chỉ trả về số đã định dạng mà không có biểu tượng tiền tệ.
96
+
97
+ #### 2. Ngày tháng (`date`)
98
+ Định dạng ngày và giờ thông qua `GeoIntl`.
99
+ - `type?: GeoDate` — Định dạng đặt trước:
100
+ - `full` — Ngày và giờ đầy đủ.
101
+ - `datetime` — Ngày và giờ (không có giây).
102
+ - `date` — Chỉ ngày.
103
+ - `time` — Chỉ giờ.
104
+ - `year-month`, `year`, `month`, `day`, `day-month`, `hour-minute`.
105
+ - `options?: Intl.DateTimeFormatOptions` — Các tham số `Intl` tiêu chuẩn (ví dụ: `month: 'long'`).
106
+ - `hour24?: boolean` — Nếu `true`, buộc sử dụng chế độ 24 giờ.
107
+
108
+ #### 3. Tên (`name`)
109
+ Kết hợp các phần của tên đầy đủ theo đúng thứ tự.
110
+ - `lastPropName?: string` — Trường cho họ (mặc định là `lastName`).
111
+ - `firstPropName?: string` — Trường cho tên (mặc định là `firstName`).
112
+ - `surname?: string` — Trường cho tên đệm (mặc định là `surname`).
113
+ - `short?: boolean` — Nếu `true`, xuất họ và chữ cái đầu (ví dụ: "Nguyễn A.").
114
+
115
+ #### 4. Số (`number`)
116
+ Định dạng số tiêu chuẩn với phân tách chữ số.
117
+ - `options?: Intl.NumberFormatOptions` — Các tham số `Intl` (số chữ số thập phân, kiểu dáng, v.v.).
118
+
119
+ #### 5. Số nhiều (`plural`)
120
+ Chọn dạng từ đúng tùy thuộc vào số lượng.
121
+ - `words: string` — Các dạng từ thông qua dấu phân cách `|`.
122
+ - Cho tiếng Việt: `"quả táo|những quả táo"`.
123
+ - Cho tiếng Anh: `"apple|apples"`.
124
+ - `options?: Intl.PluralRulesOptions` — Cài đặt quy tắc số nhiều.
125
+ - `optionsNumber?: Intl.NumberFormatOptions` — Cài đặt định dạng cho chính con số được xuất trước từ.
126
+
127
+ #### 6. Đơn vị đo lường (`unit`)
128
+ Thêm các đơn vị đo lường (km, kg, l).
129
+ - `unit: string` — Mã đơn vị đo lường (ví dụ: `'kilometer'`, `'kilogram'`, `'liter'`).
130
+ - `options?: Intl.NumberFormatOptions` — Tham số định dạng cho phần số.
131
+
132
+ ## Ví dụ
133
+
134
+ ### Sử dụng Dot Notation
125
135
  ```typescript
126
- {
127
- // 1. Chỉ định kiểu định dạng
128
- type: 'currency' | 'date' | 'name' | 'number' | 'plural' | 'unit',
136
+ const options = {
137
+ 'user.profile.age': { type: 'number' }
138
+ }
139
+ const data = { user: { profile: { age: 25 } } }
140
+ const formatter = new Formatters(options, data)
129
141
 
130
- // 2. Truyền các tham số dành riêng cho kiểu tại đây
131
- options: { ... },
142
+ const result = formatter.to()
143
+ // result.userProfileAgeFormat === "25"
144
+ ```
132
145
 
133
- // 3. Hoặc sử dụng một hàm tùy chỉnh (ghi đè logic của kiểu)
134
- transformation: (value, item, options) => string
146
+ ### Chuyển đổi tùy chỉnh
147
+ ```typescript
148
+ const options = {
149
+ status: {
150
+ // Hàm tùy chỉnh có ưu tiên cao hơn type
151
+ transformation: (value, item) => {
152
+ return value === 'active' ? `✅ ${item.name} đang trực tuyến` : '❌ Ngoại tuyến'
153
+ }
154
+ }
135
155
  }
136
156
  ```
137
-
138
- ## Các tham số cụ thể
139
-
140
- Dưới đây là các tham số có sẵn bên trong thuộc tính **`options`** cho từng kiểu.
141
-
142
- ### Tiền tệ (`currency`)
143
- - `currencyPropName?: string` — Thuộc tính trong mục chứa mã tiền tệ (mặc định là `item.currency`).
144
- - `options?: string | Intl.NumberFormatOptions` — Mã tiền tệ cố định hoặc các tùy chọn `Intl` đầy đủ.
145
- - `numberOnly?: boolean` — Nếu là `true`, chỉ trả về số đã định dạng mà không có ký hiệu tiền tệ.
146
-
147
- ### Ngày tháng (`date`)
148
- - `type?: GeoDate` — Kiểu thiết lập sẵn: `full`, `datetime`, `date`, `year-month`, `year`, `month`, `day`, `day-month`, `time`, `hour-minute`, `hour`, `minute`, `second`.
149
- - `options?: Intl.DateTimeFormatOptions['month'] | Intl.DateTimeFormatOptions` — Các tùy chọn ngày tháng tiêu chuẩn của `Intl` hoặc kiểu tháng.
150
- - `hour24?: boolean` — Kết quả định dạng bắt buộc sử dụng định dạng 24 giờ nếu là `true`.
151
-
152
- ### Tên (`name`)
153
- - `lastPropName?: string` — Trường cho họ (mặc định: `lastName`).
154
- - `firstPropName?: string` — Trường cho tên (mặc định: `firstName`).
155
- - `surname?: string` — Trường cho tên đệm (mặc định: `surname`).
156
- - `short?: boolean` — Có sử dụng định dạng rút gọn (viết tắt) hay không.
157
-
158
- ### Số (`number`)
159
- - `options?: Intl.NumberFormatOptions` — Các tùy chọn số tiêu chuẩn của `Intl`.
160
-
161
- ### Số nhiều (`plural`)
162
- - `words: string` — Các dạng từ cách nhau bởi `|` (ví dụ: `"quả táo|quả táo"`).
163
- - `options?: Intl.PluralRulesOptions` — Các thiết lập quy tắc số nhiều.
164
- - `optionsNumber?: Intl.NumberFormatOptions` — Định dạng cho chính con số đó.
165
-
166
- ### Đơn vị (`unit`)
167
- - `unit: string | Intl.NumberFormatOptions` — Đơn vị cần hiển thị (ví dụ: `'kilometer'`, `'kilogram'`).
168
-
@@ -8,11 +8,11 @@ A static utility class for centralized management of the application's geographi
8
8
 
9
9
  ## Key Features
10
10
 
11
- - **Auto-Detection** — intelligently identifies the user's locale via `navigator.language` or HTML attributes if not explicitly defined.
11
+ - **Auto-Detection** — intelligently identifies the user's locale via storage or environment defaults.
12
12
  - **Persistence** — utilizes `DataStorage` to save and restore user-selected language and country preferences.
13
13
  - **Media Database Integration** — provides access to a comprehensive database of countries and languages from the `@dxtmisha/media` library.
14
- - **Global Time Management** — centralized setting and retrieval of time zone offsets for correct date handling.
15
- - **Static Access** — all methods are static, eliminating the need for instantiation (`new Geo()`).
14
+ - **Global Time Management** — centralized setting and retrieval of time zone offsets.
15
+ - **Static Access** — all methods are static, providing a convenient global interface without manual instantiation.
16
16
 
17
17
  ## Basic Usage
18
18
 
@@ -8,11 +8,11 @@ import {Meta} from '@storybook/addon-docs/blocks'
8
8
 
9
9
  ## Ключевые особенности
10
10
 
11
- - **Автоматическое определение** — интеллектуально определяет локаль пользователя через `navigator.language` или настройки HTML, если они не заданы явно.
12
- - **Персистентность** — использует `DataStorage` для сохранения и восстановления выбранных пользователем предпочтений языка и страны.
13
- - **Интеграция с медиа-базой** — предоставляет доступ к полной базе данных стран и языков из библиотеки `@dxtmisha/media`.
14
- - **Глобальное управление временем** — централизованная установка и получение смещения часового пояса для корректной работы с датами.
15
- - **Статический доступ** — все методы класса статические, что исключает необходимость создания экземпляров (`new Geo()`).
11
+ - **Автоматическое определение** — интеллектуально определяет локаль через хранилище или настройки окружения.
12
+ - **Персистентность** — использует `DataStorage` для сохранения и восстановления предпочтений пользователя.
13
+ - **Интеграция с медиа-базой** — предоставляет доступ к базе данных стран и языков из библиотеки `@dxtmisha/media`.
14
+ - **Глобальное управление временем** — централизованная установка и получение смещения часового пояса.
15
+ - **Статический доступ** — удобный глобальный интерфейс без необходимости ручного создания экземпляров.
16
16
 
17
17
  ## Базовое использование
18
18
 
@@ -8,11 +8,11 @@ Một lớp tiện ích tĩnh (static class) để quản lý tập trung dữ l
8
8
 
9
9
  ## Tính năng chính
10
10
 
11
- - **Tự động phát hiện** — xác định thông minh địa phương (locale) của người dùng thông qua `navigator.language` hoặc các thuộc tính HTML nếu không được xác định rõ ràng.
12
- - **Lưu trữ lâu dài** — sử dụng `DataStorage` để lưu và khôi phục các tùy chọn ngôn ngữ và quốc gia do người dùng chọn.
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 toàn cầu** — thiết lập và truy xuất tập trung các độ lệch múi giờ để xử lý ngày tháng chính xác.
15
- - **Truy cập tĩnh** — tất cả các phương thức đều tĩnh, loại bỏ nhu cầu khởi tạo (`new Geo()`).
11
+ - **Tự động phát hiện** — xác định thông minh địa phương (locale) thông qua bộ nhớ hoặc mặc định của môi trường.
12
+ - **Lưu trữ lâu dài** — sử dụng `DataStorage` để lưu và khôi phục các tùy chọn của người dùng.
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 quốc gia và ngôn ngữ từ thư viện `@dxtmisha/media`.
14
+ - **Quản lý thời gian toàn cầu** — thiết lập và truy xuất tập trung các độ lệch múi giờ.
15
+ - **Truy cập tĩnh** — cung cấp giao diện toàn cầu thuận tiện không cần khởi tạo thủ công.
16
16
 
17
17
  ## Cách sử dụng cơ bản
18
18
 
@@ -4,76 +4,119 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # GeoFlag Class
6
6
 
7
- A class for working with country flags. Provides a convenient interface for retrieving flag icons, localized country and language names based on a country code or locale. It uses `Geo` and `GeoIntl` to resolve localized names.
7
+ A class for working with country flags and geographic information. It provides a convenient interface for retrieving flag icons, localized country names, and languages. It uses the `Geo` and `GeoIntl` singletons to correctly resolve data based on the current locale.
8
8
 
9
9
  ## Key Features
10
10
 
11
- - **Flag Dictionary** — A built-in static `flags` dictionary mapping ISO 3166-1 alpha-2 country codes to icon names.
12
- - **Localized Names** — Returns country and language names according to the current UI locale.
13
- - **National Names** — A dedicated `getNational` method returns country names in their own language.
14
- - **Flexible Filtering** — List methods support filtering by an array of codes.
11
+ - **Flag Dictionary** — built-in static `flags` list mapping ISO 3166-1 alpha-2 codes to icon names.
12
+ - **Localized Data** — automatic translation of country and language names into the current interface language.
13
+ - **National Support** — the ability to retrieve country names in their "native" language (e.g., "Japan" and "日本" simultaneously).
14
+ - **Scalability** — support for filtering and retrieving full lists for country selectors.
15
15
 
16
16
  ## Initialization
17
17
 
18
- Creates a new `GeoFlag` instance with an optional country or locale code.
18
+ To create an instance, use the `GeoFlag(code)` constructor.
19
19
 
20
20
  **Parameters:**
21
- - `code?: string` — Country or locale code (e.g., `'US'`, `'en-US'`). Defaults to the current locale from `Geo`.
21
+ - `code?: string` — country or locale code (e.g., `'US'`, `'en-US'`). If not specified, the current locale from the `Geo` system is used.
22
22
 
23
23
  ```javascript
24
24
  import { GeoFlag } from '@dxtmisha/functional-basic'
25
25
 
26
- // Create with the current locale
26
+ // With current locale
27
27
  const flag = new GeoFlag()
28
28
 
29
- // Create for a specific country
29
+ // For a specific country
30
30
  const usFlag = new GeoFlag('en-US')
31
31
  ```
32
32
 
33
33
  ## Methods
34
34
 
35
35
  ### Data Retrieval
36
+ - `get(code?: string): GeoFlagItem | undefined` — Returns a full data object about a country.
37
+ - `getFlag(code?: string): string | undefined` — Returns only the flag icon identifier (e.g., `'f-us'`).
36
38
 
37
- - `get(code?: string): GeoFlagItem | undefined` — Returns a full data object for a country: language, country code, standard, and flag icon name. If no code is specified, uses the constructor's code.
38
- - `getFlag(code?: string): string | undefined` — Returns only the icon name for a given country's flag.
39
- - `getList(codes?: string[]): GeoFlagItem[]` — Returns an array of flag data objects. If `codes` is not provided, returns all countries from the dictionary.
40
- - `getNational(codes?: string[]): GeoFlagNational[]` — Similar to `getList`, but additionally contains country names in the country's own language.
39
+ ### Lists
40
+ - `getList(codes?: string[]): GeoFlagItem[]` — Returns an array of country data.
41
+ - `getNational(codes?: string[]): GeoFlagNational[]` — Returns a list of countries with national names.
41
42
 
42
- ### Data Mutation
43
+ ### Configuration
44
+ - `setCode(code: string): this` — Changes the base locale for the current instance.
43
45
 
44
- - `setCode(code: string): this` — Changes the country code for the current instance.
46
+ ## List Methods
45
47
 
46
- ## Examples
48
+ The main difference between the methods lies in the language in which the country and language names are returned:
47
49
 
48
- ### Displaying a Flag for the Current Country
49
- ```javascript
50
- import { GeoFlag } from '@dxtmisha/functional-basic'
50
+ * **`getList`** returns names only in the language set in the class instance (e.g., everything in English).
51
+ * **`getNational`** — returns names in your interface language + adds original names in the country's own language (e.g., "Japan" and "日本").
51
52
 
52
- const flag = new GeoFlag()
53
- const item = flag.get()
53
+ ### Example of the difference in result:
54
54
 
55
- console.log(item?.icon) // 'f-us'
56
- console.log(item?.country) // 'United States'
55
+ ```javascript
56
+ const geo = new GeoFlag('en-US') // English language is set
57
+
58
+ // 1. getList returns only the translation
59
+ const list = geo.getList(['JP'])
60
+ /*
61
+ [{ country: 'Japan', ... }]
62
+ */
63
+
64
+ // 2. getNational returns the translation + original name
65
+ const national = geo.getNational(['JP'])
66
+ /*
67
+ [{
68
+ country: 'Japan',
69
+ nationalCountry: '日本',
70
+ ...
71
+ }]
72
+ */
57
73
  ```
58
74
 
59
- ### List of All Countries with Flags
60
- ```javascript
61
- const flag = new GeoFlag('en-US')
62
- const countries = flag.getList()
75
+ ## Types
63
76
 
64
- countries.forEach(item => {
65
- console.log(`${item.icon}: ${item.country}`)
66
- })
67
- // 'f-fr: France', 'f-de: Germany', ...
68
- ```
77
+ ### `GeoFlagItem`
78
+ Basic flag information object.
79
+ - `country`: string — Localized country name.
80
+ - `language`: string Localized language name.
81
+ - `standard`: string — Full locale standard (e.g., `en-US`).
82
+ - `icon`: string — Flag icon name (prefix `f-`).
83
+ - `label`: string — Display label (matches `country` by default).
84
+ - `value`: string — Country code (ISO alpha-2).
69
85
 
70
- ### List with National Names
71
- ```javascript
72
- // Returns the country name in both your language and the country's own language
73
- const national = new GeoFlag('en-US').getNational(['FR', 'JP', 'RU'])
86
+ ### `GeoFlagNational`
87
+ Extends `GeoFlagItem` with additional fields:
88
+ - `nationalCountry`: string Country name in its native language.
89
+ - `nationalLanguage`: string Language name in its native language.
90
+ - `description`: string — Brief description (duplicates `nationalCountry`).
74
91
 
75
- national.forEach(item => {
76
- console.log(`${item.country} (${item.nationalCountry})`)
77
- })
78
- // France (France), Japan (日本), Russia (Россия)
92
+ ## Examples
93
+
94
+ ### List of Popular Countries with National Names
95
+ ```javascript
96
+ const geo = new GeoFlag('en-US')
97
+ const list = geo.getNational(['US', 'CN', 'JP'])
98
+
99
+ /*
100
+ Result:
101
+ [
102
+ {
103
+ country: 'United States',
104
+ nationalCountry: 'United States',
105
+ icon: 'f-us',
106
+ ...
107
+ },
108
+ {
109
+ country: 'China',
110
+ nationalCountry: '中国',
111
+ icon: 'f-cn',
112
+ ...
113
+ },
114
+ {
115
+ country: 'Japan',
116
+ nationalCountry: '日本',
117
+ icon: 'f-jp',
118
+ ...
119
+ }
120
+ ]
121
+ */
79
122
  ```
@@ -4,76 +4,119 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # Класс GeoFlag
6
6
 
7
- Класс для работы с флагами стран. Предоставляет удобный интерфейс для получения иконок флагов, отображаемых имен стран и языков на основе кода страны или локали. Использует `Geo` и `GeoIntl` для разрешения локализованных наименований.
7
+ Класс для работы с флагами стран и географической информацией. Он предоставляет удобный интерфейс для получения иконок флагов, локализованных названий стран и языков. Использует синглтоны `Geo` и `GeoIntl` для корректного разрешения данных в зависимости от текущей локали.
8
8
 
9
9
  ## Ключевые особенности
10
10
 
11
- - **Словарь флагов** — встроенный статический словарь `flags`, связывающий коды стран (ISO 3166-1 alpha-2) с именами иконок.
12
- - **Локализованные имена**возвращает название страны и языка в соответствии с текущей локалью интерфейса.
13
- - **Национальные имена**отдельный метод `getNational` возвращает названия стран на их собственном языке.
14
- - **Гибкая фильтрация** методы списков поддерживают фильтрацию по массиву кодов.
11
+ - **Словарь флагов** — встроенный статический список `flags`, связывающий коды ISO 3166-1 alpha-2 с именами иконок.
12
+ - **Локализованные данные**автоматический перевод названий стран и языков на язык текущего интерфейса.
13
+ - **Национальная поддержка**возможность получения названий стран на их «родном» языке (например, «Япония» и «日本» одновременно).
14
+ - **Масштабируемость**поддержка фильтрации и получения полных списков для селекторов стран.
15
15
 
16
16
  ## Инициализация
17
17
 
18
- Создает новый экземпляр `GeoFlag` с опциональным кодом страны или локали.
18
+ Для создания экземпляра используйте конструктор `GeoFlag(code)`.
19
19
 
20
20
  **Параметры:**
21
- - `code?: string` — код страны или локали (например, `'RU'`, `'ru-RU'`). По умолчанию используется текущая локаль из `Geo`.
21
+ - `code?: string` — код страны или локали (например, `'RU'`, `'en-US'`). Если не указан, используется текущая локаль из системы `Geo`.
22
22
 
23
23
  ```javascript
24
24
  import { GeoFlag } from '@dxtmisha/functional-basic'
25
25
 
26
- // Создание с текущей локалью
26
+ // С текущей локалью
27
27
  const flag = new GeoFlag()
28
28
 
29
- // Создание для конкретной страны
29
+ // Для конкретной страны
30
30
  const ruFlag = new GeoFlag('ru-RU')
31
31
  ```
32
32
 
33
33
  ## Методы
34
34
 
35
35
  ### Получение данных
36
+ - `get(code?: string): GeoFlagItem | undefined` — Возвращает полный объект данных о стране.
37
+ - `getFlag(code?: string): string | undefined` — Возвращает только идентификатор иконки флага (например, `'f-ru'`).
36
38
 
37
- - `get(code?: string): GeoFlagItem | undefined` — Возвращает полный объект данных о стране: языке, коде страны, стандарте, иконке флага. Если код не указан, используется код из конструктора.
38
- - `getFlag(code?: string): string | undefined` — Возвращает только имя иконки флага для указанной страны.
39
- - `getList(codes?: string[]): GeoFlagItem[]` — Возвращает массив объектов с данными о флагах. Если `codes` не передан, возвращает все страны из словаря.
40
- - `getNational(codes?: string[]): GeoFlagNational[]` — Аналог `getList`, но дополнительно содержит названия на национальном языке страны.
39
+ ### Списки
40
+ - `getList(codes?: string[]): GeoFlagItem[]` — Возвращает массив данных о странах.
41
+ - `getNational(codes?: string[]): GeoFlagNational[]` — Возвращает список стран с национальными названиями.
41
42
 
42
- ### Изменение данных
43
+ ### Настройка
44
+ - `setCode(code: string): this` — Изменяет базовую локаль для текущего экземпляра.
43
45
 
44
- - `setCode(code: string): this` — Изменяет код страны для текущего экземпляра.
46
+ ## Методы работы со списками
45
47
 
46
- ## Примеры
48
+ Основное различие между методами заключается в языке, на котором возвращаются названия стран и языков:
47
49
 
48
- ### Отображение флага для текущей страны
49
- ```javascript
50
- import { GeoFlag } from '@dxtmisha/functional-basic'
50
+ * **`getList`** возвращает названия только на том языке, который установлен в экземпляре класса (например, всё на русском).
51
+ * **`getNational`** — возвращает названия на языке вашего интерфейса + добавляет оригинальные названия на языке самой страны (например, «Япония» и «日本»).
51
52
 
52
- const flag = new GeoFlag()
53
- const item = flag.get()
53
+ ### Пример разницы в результате:
54
54
 
55
- console.log(item?.icon) // 'f-ru'
56
- console.log(item?.country) // 'Россия'
55
+ ```javascript
56
+ const geo = new GeoFlag('ru-RU') // Установлен русский язык
57
+
58
+ // 1. getList возвращает только перевод
59
+ const list = geo.getList(['JP'])
60
+ /*
61
+ [{ country: 'Япония', ... }]
62
+ */
63
+
64
+ // 2. getNational возвращает перевод + оригинальное название
65
+ const national = geo.getNational(['JP'])
66
+ /*
67
+ [{
68
+ country: 'Япония',
69
+ nationalCountry: '日本',
70
+ ...
71
+ }]
72
+ */
57
73
  ```
58
74
 
59
- ### Список всех стран с флагами
60
- ```javascript
61
- const flag = new GeoFlag('ru-RU')
62
- const countries = flag.getList()
75
+ ## Типы
63
76
 
64
- countries.forEach(item => {
65
- console.log(`${item.icon}: ${item.country}`)
66
- })
67
- // 'f-us: США', 'f-fr: Франция', ...
68
- ```
77
+ ### `GeoFlagItem`
78
+ Базовый объект информации о флаге.
79
+ - `country`: string — Локализованное название страны.
80
+ - `language`: string Локализованное название языка.
81
+ - `standard`: string — Полный стандарт локали (например, `ru-RU`).
82
+ - `icon`: string — Имя иконки флага (префикс `f-`).
83
+ - `label`: string — Метка для отображения (по умолчанию совпадает с `country`).
84
+ - `value`: string — Код страны (ISO alpha-2).
69
85
 
70
- ### Список с национальными наименованиями
71
- ```javascript
72
- // Вернет название страны как на вашем языке, так и на языке самой страны
73
- const national = new GeoFlag('ru-RU').getNational(['US', 'FR', 'JP'])
86
+ ### `GeoFlagNational`
87
+ Расширяет `GeoFlagItem` дополнительными полями:
88
+ - `nationalCountry`: string Название страны на её родном языке.
89
+ - `nationalLanguage`: string Название языка на родном языке.
90
+ - `description`: string — Краткое описание (дублирует `nationalCountry`).
74
91
 
75
- national.forEach(item => {
76
- console.log(`${item.country} (${item.nationalCountry})`)
77
- })
78
- // США (United States), Франция (France), Япония (日本)
92
+ ## Примеры
93
+
94
+ ### Список популярных стран с национальными именами
95
+ ```javascript
96
+ const geo = new GeoFlag('ru-RU')
97
+ const list = geo.getNational(['RU', 'CN', 'JP'])
98
+
99
+ /*
100
+ Результат:
101
+ [
102
+ {
103
+ country: 'Россия',
104
+ nationalCountry: 'Россия',
105
+ icon: 'f-ru',
106
+ ...
107
+ },
108
+ {
109
+ country: 'Китай',
110
+ nationalCountry: '中国',
111
+ icon: 'f-cn',
112
+ ...
113
+ },
114
+ {
115
+ country: 'Япония',
116
+ nationalCountry: '日本',
117
+ icon: 'f-jp',
118
+ ...
119
+ }
120
+ ]
121
+ */
79
122
  ```