@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
@@ -18,15 +18,29 @@ Ngoài ra, hàm cho phép đính kèm một bộ chọn CSS vào chuỗi trả v
18
18
  ```typescript
19
19
  import { getElementId } from '@dxtmisha/functional-basic'
20
20
 
21
- // Phần tử ban đầu không có ID
21
+ // Phần tử không có ID
22
22
  const div = document.createElement('div')
23
23
  console.log(div.id) // ''
24
24
 
25
25
  const id = getElementId(div)
26
- console.log(id) // Ví dụ: 'id-123456'
27
- console.log(div.id) // 'id-123456' (tự động được gán)
26
+ console.log(id) // Ví dụ: 'id-100000'
27
+ console.log(div.id) // 'id-100000' (được gán tự động)
28
28
 
29
29
  // Sử dụng bộ chọn bổ sung
30
30
  const selector = getElementId(div, ' > span.active')
31
- console.log(selector) // '#id-123456 > span.active'
31
+ console.log(selector) // '#id-100000 > span.active'
32
+ ```
33
+
34
+ ## `initGetElementId`
35
+
36
+ Khởi tạo hàm để sử dụng trong môi trường SSR. Điều này là cần thiết để đảm bảo tính đồng bộ của các ID được tạo ra giữa máy chủ và máy khách.
37
+
38
+ Khi sử dụng **Vue 3.5+**, khuyến nghị sử dụng hàm `useId()` có sẵn.
39
+
40
+ ```typescript
41
+ import { useId } from 'vue'
42
+ import { initGetElementId } from '@dxtmisha/functional-basic'
43
+
44
+ // Khởi tạo (ví dụ: trong một plugin hoặc thành phần gốc)
45
+ initGetElementId(() => useId())
32
46
  ```
@@ -0,0 +1,31 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Functions/getElementSafeScript - Generation of a safe script for hydration'/>
4
+
5
+ # `getElementSafeScript`
6
+
7
+ A utility for generating a safe `<script type="application/json">` tag, which is used for transferring data from the server to the client (hydration).
8
+
9
+ This function automatically serializes data into JSON and escapes closing `</script>` tags, preventing XSS attacks and HTML parsing errors when embedding data.
10
+
11
+ **Parameters:**
12
+ - `id: string` — The unique identifier (ID) for the script tag.
13
+ - `data: any` — The data that needs to be serialized and stored in the tag.
14
+
15
+ **Returns:**
16
+ `string` — A string containing the ready HTML script tag.
17
+
18
+ ```typescript
19
+ import { getElementSafeScript } from '@dxtmisha/functional-basic'
20
+
21
+ const data = {
22
+ user: 'Misha',
23
+ content: '</script><script>alert(1)</script>'
24
+ }
25
+
26
+ console.log(getElementSafeScript('hydration-data', data))
27
+ // Result:
28
+ // <script id="hydration-data" type="application/json">
29
+ // {"user":"Misha","content":"<\\/script><script>alert(1)<\\/script>"}
30
+ // </script>
31
+ ```
@@ -0,0 +1,31 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Functions/getElementSafeScript - Генерация безопасного скрипта для гидратации'/>
4
+
5
+ # `getElementSafeScript`
6
+
7
+ Утилита для генерации безопасного тега `<script type="application/json">`, который используется для передачи данных с сервера на клиент (гидратации).
8
+
9
+ Эта функция автоматически сериализует данные в JSON и экранирует закрывающие теги `</script>`, предотвращая XSS-атаки и ошибки парсинга HTML при встраивании данных.
10
+
11
+ **Параметры:**
12
+ - `id: string` — Уникальный идентификатор (ID) тега скрипта.
13
+ - `data: any` — Данные, которые необходимо сериализовать и сохранить в теге.
14
+
15
+ **Возвращает:**
16
+ `string` — Готовая строка с HTML-тегом скрипта.
17
+
18
+ ```typescript
19
+ import { getElementSafeScript } from '@dxtmisha/functional-basic'
20
+
21
+ const data = {
22
+ user: 'Misha',
23
+ content: '</script><script>alert(1)</script>'
24
+ }
25
+
26
+ console.log(getElementSafeScript('hydration-data', data))
27
+ // Результат:
28
+ // <script id="hydration-data" type="application/json">
29
+ // {"user":"Misha","content":"<\\/script><script>alert(1)<\\/script>"}
30
+ // </script>
31
+ ```
@@ -0,0 +1,31 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Functions/getElementSafeScript - Tạo một script an toàn cho hydration'/>
4
+
5
+ # `getElementSafeScript`
6
+
7
+ Một tiện ích để tạo thẻ `<script type="application/json">` an toàn, được sử dụng để chuyển dữ liệu từ máy chủ sang máy khách (hydration).
8
+
9
+ Hàm này tự động tuần tự hóa dữ liệu thành JSON và thoát các thẻ đóng `</script>`, ngăn chặn các cuộc tấn công XSS và lỗi phân tích cú pháp HTML khi nhúng dữ liệu.
10
+
11
+ **Tham số:**
12
+ - `id: string` — Mã định danh duy nhất (ID) cho thẻ script.
13
+ - `data: any` — Dữ liệu cần được tuần tự hóa và lưu trữ trong thẻ.
14
+
15
+ **Trả về:**
16
+ `string` — Một chuỗi chứa thẻ script HTML đã sẵn sàng.
17
+
18
+ ```typescript
19
+ import { getElementSafeScript } from '@dxtmisha/functional-basic'
20
+
21
+ const data = {
22
+ user: 'Misha',
23
+ content: '</script><script>alert(1)</script>'
24
+ }
25
+
26
+ console.log(getElementSafeScript('hydration-data', data))
27
+ // Kết quả:
28
+ // <script id="hydration-data" type="application/json">
29
+ // {"user":"Misha","content":"<\\/script><script>alert(1)<\\/script>"}
30
+ // </script>
31
+ ```
@@ -0,0 +1,25 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Functions/getOnlyText - Extraction of letters, numbers and spaces from a string'/>
4
+
5
+ # `getOnlyText`
6
+
7
+ A utility that extracts only letters, numbers, and spaces from any given input, removing punctuation, special characters, and other symbols.
8
+
9
+ This is useful for cleaning up user input or preparing text for simplified processing where only alphanumeric content and basic spacing are required.
10
+
11
+ **Parameters:**
12
+ - `text: any` — The value to process.
13
+
14
+ **Returns:**
15
+ `string` — A string containing only the characters that are letters, numbers, or spaces.
16
+
17
+ ```typescript
18
+ import { getOnlyText } from '@dxtmisha/functional-basic'
19
+
20
+ console.log(getOnlyText('Hello, World!')) // 'Hello World'
21
+ console.log(getOnlyText('Price: $100.00')) // 'Price 10000'
22
+ console.log(getOnlyText('Text with symbols: #@!%')) // 'Text with symbols'
23
+ console.log(getOnlyText(12345)) // '12345'
24
+ console.log(getOnlyText(null)) // ''
25
+ ```
@@ -0,0 +1,25 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Functions/getOnlyText - Извлечение букв, цифр и пробелов из строки'/>
4
+
5
+ # `getOnlyText`
6
+
7
+ Утилита, которая возвращает из строки только буквы, цифры и пробелы, удаляя знаки препинания, специальные символы и прочие знаки.
8
+
9
+ Это полезно для очистки пользовательского ввода или подготовки текста к упрощенной обработке, когда требуется только алфавитно-цифровое содержимое.
10
+
11
+ **Параметры:**
12
+ - `text: any` — Текст для обработки.
13
+
14
+ **Возвращает:**
15
+ `string` — Строка, содержащая только буквы, цифры или пробелы.
16
+
17
+ ```typescript
18
+ import { getOnlyText } from '@dxtmisha/functional-basic'
19
+
20
+ console.log(getOnlyText('Hello, World!')) // 'Hello World'
21
+ console.log(getOnlyText('Цена: 100 руб.')) // 'Цена 100 руб'
22
+ console.log(getOnlyText('Текст с символами: #@!%')) // 'Текст с символами'
23
+ console.log(getOnlyText(12345)) // '12345'
24
+ console.log(getOnlyText(null)) // ''
25
+ ```
@@ -0,0 +1,25 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Functions/getOnlyText - Trích xuất các chữ cái, số và dấu cách từ một chuỗi'/>
4
+
5
+ # `getOnlyText`
6
+
7
+ Một tiện ích giúp trích xuất chỉ các chữ cái, con số và dấu cách từ bất kỳ dữ liệu đầu vào nào, loại bỏ các dấu câu, ký tự đặc biệt và các ký hiệu khác.
8
+
9
+ Điều này rất hữu ích để làm sạch dữ liệu nhập từ người dùng hoặc chuẩn bị văn bản để xử lý đơn giản hơn khi chỉ cần nội dung chữ và số.
10
+
11
+ **Tham số:**
12
+ - `text: any` — Giá trị cần xử lý.
13
+
14
+ **Trả về:**
15
+ `string` — Một chuỗi chỉ chứa các ký tự là chữ cái, số hoặc dấu cách.
16
+
17
+ ```typescript
18
+ import { getOnlyText } from '@dxtmisha/functional-basic'
19
+
20
+ console.log(getOnlyText('Hello, World!')) // 'Hello World'
21
+ console.log(getOnlyText('Giá: 100.000đ')) // 'Giá 100000'
22
+ console.log(getOnlyText('Văn bản với ký tự: #@!%')) // 'Văn bản với ký tự'
23
+ console.log(getOnlyText(12345)) // '12345'
24
+ console.log(getOnlyText(null)) // ''
25
+ ```
@@ -4,27 +4,34 @@ import { Meta } from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # `getSearchExp`
6
6
 
7
- A utility that builds a case-insensitive global `RegExp` matching strings that contain **all** words from the search string (in any order).
7
+ A utility that builds a case-insensitive `RegExp` matching strings that contain **all** words from the search string (in any order).
8
8
 
9
- Each word is split by spaces, escaped, and wrapped in a lookahead `(?=.*?word)`. This makes it ideal for live search or multi-word filtering UIs.
9
+ Each word is split by spaces, escaped, and wrapped in a positive lookahead `(?=.*?word)`. This makes it ideal for live search or multi-word filtering UIs.
10
10
 
11
11
  **Parameters:**
12
12
  - `search: string` — A search string consisting of one or more space-separated words.
13
+ - `limit: number` (optional, default: `128`) — The maximum allowed length of the search string.
13
14
 
14
15
  **Returns:**
15
- `RegExp` — A regular expression with flags `ig` (global, case-insensitive).
16
+ `RegExp` — A regular expression with the `i` flag (case-insensitive).
17
+ - If the `search` string is empty, not a string, or exceeds the `limit`, it returns `/^/` (matching the start of any string).
16
18
 
17
19
  ```typescript
18
20
  import { getSearchExp } from '@dxtmisha/functional-basic'
19
21
 
22
+ // Basic usage
20
23
  const regex = getSearchExp('foo bar')
21
24
 
22
25
  regex.test('foo bar baz') // true — contains both words
23
26
  regex.test('bar foo') // true — order doesn't matter
24
- regex.test('foo only') // false — word bar is missing
27
+ regex.test('foo only') // false — word "bar" is missing
25
28
 
26
29
  // Special characters are escaped automatically
27
30
  const regex2 = getSearchExp('price $10.00')
28
31
  regex2.test('price $10.00') // true
29
32
  regex2.test('price X10Y00') // false
33
+
34
+ // Using a custom limit
35
+ const regex3 = getSearchExp('very long search string', 10)
36
+ regex3.test('any string') // true — returns /^/ because search length > 10
30
37
  ```
@@ -4,27 +4,34 @@ import { Meta } from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # `getSearchExp`
6
6
 
7
- Утилита, строящая регистронезависимое глобальное регулярное выражение `RegExp` для поиска строк, содержащих **все** слова из поисковой строки (в любом порядке).
7
+ Утилита, строящая регистронезависимое регулярное выражение `RegExp` для поиска строк, содержащих **все** слова из поисковой строки (в любом порядке).
8
8
 
9
- Каждое слово разбивается пробелами, экранируется и оборачивается в lookahead `(?=.*?слово)`. Это удобно для реализации живого поиска/фильтрации по нескольким словам одновременно.
9
+ Каждое слово разбивается пробелами, экранируется и оборачивается в positive lookahead `(?=.*?слово)`. Это удобно для реализации живого поиска или фильтрации по нескольким словам одновременно.
10
10
 
11
11
  **Параметры:**
12
12
  - `search: string` — Строка поиска, состоящая из одного или нескольких слов, разделённых пробелами.
13
+ - `limit: number` (необязательно, по умолчанию: `128`) — Максимально допустимая длина строки поиска.
13
14
 
14
15
  **Возвращает:**
15
- `RegExp` — Регулярное выражение с флагами `ig` (глобальный, без учёта регистра).
16
+ `RegExp` — Регулярное выражение с флагом `i` (без учёта регистра).
17
+ - Если строка `search` пустая, не является строкой или превышает `limit`, возвращается `/^/` (совпадает с началом любой строки).
16
18
 
17
19
  ```typescript
18
20
  import { getSearchExp } from '@dxtmisha/functional-basic'
19
21
 
22
+ // Базовое использование
20
23
  const regex = getSearchExp('foo bar')
21
24
 
22
25
  regex.test('foo bar baz') // true — содержит оба слова
23
26
  regex.test('bar foo') // true — порядок не важен
24
- regex.test('foo only') // false — слово bar отсутствует
27
+ regex.test('foo only') // false — слово "bar" отсутствует
25
28
 
26
29
  // Специальные символы экранируются автоматически
27
- const regex2 = getSearchExp('price $10.00')
28
- regex2.test('price $10.00') // true
29
- regex2.test('price X10Y00') // false
30
+ const regex2 = getSearchExp('цена $10.00')
31
+ regex2.test('цена $10.00') // true
32
+ regex2.test('цена X10Y00') // false
33
+
34
+ // Использование пользовательского лимита
35
+ const regex3 = getSearchExp('очень длинная строка поиска', 10)
36
+ regex3.test('любая строка') // true — возвращает /^/, так как длина поиска > 10
30
37
  ```
@@ -6,25 +6,32 @@ import { Meta } from '@storybook/addon-docs/blocks'
6
6
 
7
7
  Tiện ích tạo một `RegExp` không phân biệt chữ hoa/thường, khớp với chuỗi chứa **tất cả** các từ trong chuỗi tìm kiếm (theo bất kỳ thứ tự nào).
8
8
 
9
- Mỗi từ được tách bởi khoảng trắng, escape và bọc trong lookahead `(?=.*?từ)`. Rất phù hợp để xây dựng tính năng tìm kiếm trực tiếp hoặc lọc theo nhiều từ.
9
+ Mỗi từ được tách bởi khoảng trắng, escape và bọc trong positive lookahead `(?=.*?từ)`. Rất phù hợp để xây dựng tính năng tìm kiếm trực tiếp hoặc lọc theo nhiều từ.
10
10
 
11
11
  **Tham số:**
12
12
  - `search: string` — Chuỗi tìm kiếm gồm một hoặc nhiều từ phân cách bởi khoảng trắng.
13
+ - `limit: number` (tùy chọn, mặc định: `128`) — Độ dài tối đa cho phép của chuỗi tìm kiếm.
13
14
 
14
15
  **Trả về:**
15
- `RegExp` — Biểu thức chính quy với cờ `ig` (toàn cục, không phân biệt chữ hoa/thường).
16
+ `RegExp` — Biểu thức chính quy với cờ `i` (không phân biệt chữ hoa/thường).
17
+ - Nếu chuỗi `search` trống, không phải là chuỗi hoặc vượt quá `limit`, nó trả về `/^/` (khớp với vị trí bắt đầu của bất kỳ chuỗi nào).
16
18
 
17
19
  ```typescript
18
20
  import { getSearchExp } from '@dxtmisha/functional-basic'
19
21
 
22
+ // Cách dùng cơ bản
20
23
  const regex = getSearchExp('foo bar')
21
24
 
22
25
  regex.test('foo bar baz') // true — chứa cả hai từ
23
26
  regex.test('bar foo') // true — thứ tự không quan trọng
24
- regex.test('foo only') // false — thiếu từ bar
27
+ regex.test('foo only') // false — thiếu từ "bar"
25
28
 
26
29
  // Các ký tự đặc biệt được escape tự động
27
- const regex2 = getSearchExp('price $10.00')
28
- regex2.test('price $10.00') // true
29
- regex2.test('price X10Y00') // false
30
+ const regex2 = getSearchExp('giá $10.00')
31
+ regex2.test('giá $10.00') // true
32
+ regex2.test('giá X10Y00') // false
33
+
34
+ // Sử dụng giới hạn tùy chỉnh
35
+ const regex3 = getSearchExp('một chuỗi tìm kiếm rất dài', 10)
36
+ regex3.test('bất kỳ chuỗi nào') // true — trả về /^/ vì độ dài tìm kiếm > 10
30
37
  ```
@@ -9,10 +9,11 @@ A utility that builds a case-insensitive global `RegExp` for searching strings c
9
9
  Each word is split by spaces, escaped, and joined with the OR operator `|`. This is useful when you want to find a match for at least one of the entered words.
10
10
 
11
11
  **Parameters:**
12
- - `search: string` — A search string consisting of one or more space-separated words.
12
+ - `search: string | RegExp` — A search string consisting of one or more space-separated words, or a `RegExp` object.
13
+ - `limit: number = 128` — The maximum allowed length of the search string (ignored if a `RegExp` is passed).
13
14
 
14
15
  **Returns:**
15
- `RegExp` — A regular expression with flags `ig` (global, case-insensitive).
16
+ `RegExp` — A regular expression with flags `ig` (global, case-insensitive). If the search string is empty or exceeds the limit, a regex that matches nothing is returned.
16
17
 
17
18
  ```typescript
18
19
  import { getSeparatingSearchExp } from '@dxtmisha/functional-basic'
@@ -9,10 +9,11 @@ import { Meta } from '@storybook/addon-docs/blocks'
9
9
  Каждое слово разбивается пробелами, экранируется и объединяется символом "или" `|`. Это полезно, когда нужно найти совпадение хотя бы по одному из введённых слов.
10
10
 
11
11
  **Параметры:**
12
- - `search: string` — Строка поиска, состоящая из одного или нескольких слов, разделённых пробелами.
12
+ - `search: string | RegExp` — Строка поиска, состоящая из одного или нескольких слов, разделённых пробелами, или объект `RegExp`.
13
+ - `limit: number = 128` — Максимальная длина строки поиска (игнорируется, если передан `RegExp`).
13
14
 
14
15
  **Возвращает:**
15
- `RegExp` — Регулярное выражение с флагами `ig` (глобальный, без учёта регистра).
16
+ `RegExp` — Регулярное выражение с флагами `ig` (глобальный, без учёта регистра). Если строка поиска пуста или превышает лимит, возвращается регулярное выражение, которое ничего не находит.
16
17
 
17
18
  ```typescript
18
19
  import { getSeparatingSearchExp } from '@dxtmisha/functional-basic'
@@ -9,10 +9,11 @@ Tiện ích tạo một `RegExp` toàn cục, không phân biệt chữ hoa/thư
9
9
  Mỗi từ được tách bởi dấu cách, escape và nối với nhau bằng toán tử OR `|`. Điều này hữu ích khi bạn muốn tìm kết quả khớp với ít nhất một trong các từ đã nhập.
10
10
 
11
11
  **Tham số:**
12
- - `search: string` — Chuỗi tìm kiếm gồm một hoặc nhiều từ phân cách bởi dấu cách.
12
+ - `search: string | RegExp` — Chuỗi tìm kiếm gồm một hoặc nhiều từ phân cách bởi dấu cách, hoặc đối tượng `RegExp`.
13
+ - `limit: number = 128` — Độ dài tối đa cho phép của chuỗi tìm kiếm (bị bỏ qua nếu một `RegExp` được truyền vào).
13
14
 
14
15
  **Trả về:**
15
- `RegExp` — Biểu thức chính quy với cờ `ig` (toàn cục, không phân biệt chữ hoa/thường).
16
+ `RegExp` — Biễu thức chính quy với cờ `ig` (toàn cục, không phân biệt chữ hoa/thường). Nếu chuỗi tìm kiếm trống hoặc vượt quá giới hạn, một regex không khớp với bất kỳ thứ gì sẽ được trả về.
16
17
 
17
18
  ```typescript
18
19
  import { getSeparatingSearchExp } from '@dxtmisha/functional-basic'
@@ -1,21 +1,37 @@
1
- import { Meta } from '@storybook/addon-docs/blocks'
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks'
2
2
 
3
3
  <Meta title='@dxtmisha/en/functional-basic/Functions/toNumber - Converting a value to a number'/>
4
4
 
5
5
  # `toNumber`
6
6
 
7
- Extracts a numeric value from a string or a number. The function removes extra characters and correctly handles various thousands and decimal separators (spaces, commas, periods).
7
+ Converts a string or number into a finite floating-point number. The function is designed to handle various formatting styles, including thousands separators and different decimal markers.
8
8
 
9
9
  **Parameters:**
10
- - `value?: T` — The input value (a string or a number).
10
+ - `value?: NumberOrString` — The input value for conversion.
11
11
 
12
12
  **Returns:**
13
- `number` — The transformed float number. If the value is empty or invalid, `0` is returned.
13
+ `number` — The parsed float number or `0` if conversion fails or the value is non-finite.
14
14
 
15
- ```typescript
15
+ ## Examples
16
+
17
+ <Source
18
+ language='typescript'
19
+ code={`
16
20
  import { toNumber } from '@dxtmisha/functional-basic'
17
21
 
18
- console.log(toNumber('1 250,50')) // 1250.5
19
- console.log(toNumber('1,000,000.99')) // 1000000.99
20
- console.log(toNumber('abc-12.5')) // 12.5
21
- ```
22
+ // 1. Handling various separators
23
+ toNumber('1 250,50') // 1250.5
24
+ toNumber('1,000,000.99') // 1000000.99
25
+ toNumber('1.250,50') // 1250.5
26
+
27
+ // 2. Stripping non-numeric characters
28
+ toNumber('abc-12.5') // -12.5
29
+ toNumber('$1,234.56') // 1234.56
30
+
31
+ // 3. Numbers and special values
32
+ toNumber(123.45) // 123.45
33
+ toNumber(-0) // 0 (normalized)
34
+ toNumber(Infinity) // 0
35
+ toNumber(undefined) // 0
36
+ `}
37
+ />
@@ -1,21 +1,37 @@
1
- import { Meta } from '@storybook/addon-docs/blocks'
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks'
2
2
 
3
3
  <Meta title='@dxtmisha/ru/functional-basic/Functions/toNumber - Преобразование значения в число'/>
4
4
 
5
5
  # `toNumber`
6
6
 
7
- Извлекает числовое значение из строки или числа. Функция удаляет лишние символы и корректно обрабатывает различные разделители тысяч и дробной части (пробелы, запятые, точки).
7
+ Преобразует строку или число в конечное число с плавающей точкой. Функция разработана для обработки различных стилей форматирования, включая разделители тысяч и различные десятичные маркеры.
8
8
 
9
9
  **Параметры:**
10
- - `value?: T` — Входное значение (строка или число).
10
+ - `value?: NumberOrString` — Входное значение для преобразования.
11
11
 
12
12
  **Возвращает:**
13
- `number` — Преобразованное число типа float. Если значение пустое или невалидное, возвращается `0`.
13
+ `number` — Распарсенное число float или `0`, если преобразование не удалось или значение не является конечным числом.
14
14
 
15
- ```typescript
15
+ ## Примеры
16
+
17
+ <Source
18
+ language='typescript'
19
+ code={`
16
20
  import { toNumber } from '@dxtmisha/functional-basic'
17
21
 
18
- console.log(toNumber('1 250,50')) // 1250.5
19
- console.log(toNumber('1,000,000.99')) // 1000000.99
20
- console.log(toNumber('abc-12.5')) // 12.5
21
- ```
22
+ // 1. Обработка различных разделителей
23
+ toNumber('1 250,50') // 1250.5
24
+ toNumber('1,000,000.99') // 1000000.99
25
+ toNumber('1.250,50') // 1250.5
26
+
27
+ // 2. Очистка от нечисловых символов
28
+ toNumber('abc-12.5') // -12.5
29
+ toNumber('$1,234.56') // 1234.56
30
+
31
+ // 3. Числа и специальные значения
32
+ toNumber(123.45) // 123.45
33
+ toNumber(-0) // 0 (нормализовано)
34
+ toNumber(Infinity) // 0
35
+ toNumber(undefined) // 0
36
+ `}
37
+ />
@@ -1,21 +1,37 @@
1
- import { Meta } from '@storybook/addon-docs/blocks'
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks'
2
2
 
3
3
  <Meta title='@dxtmisha/vi/functional-basic/Functions/toNumber - Chuyển đổi giá trị sang kiểu số'/>
4
4
 
5
5
  # `toNumber`
6
6
 
7
- Trích xuất giá trị số từ một chuỗi hoặc một số. Hàm loại bỏ các tự thừa xử lý chính xác các ký hiệu phân cách phần nghìn và phần thập phân khác nhau (khoảng trắng, dấu phẩy, dấu chấm).
7
+ Chuyển đổi một chuỗi hoặc một số thành một số thực (float) hữu hạn. Hàm được thiết kế để xử lý nhiều kiểu định dạng khác nhau, bao gồm các ký tự phân cách phần nghìn và các dấu thập phân khác nhau.
8
8
 
9
9
  **Tham số:**
10
- - `value?: T` — Giá trị đầu vào (chuỗi hoặc số).
10
+ - `value?: NumberOrString` — Giá trị đầu vào cần chuyển đổi.
11
11
 
12
12
  **Trả về:**
13
- `number` — Số thực (float) sau khi chuyển đổi. Nếu giá trị trống hoặc không hợp lệ, hàm trả về `0`.
13
+ `number` — Số thực sau khi phân tách hoặc `0` nếu chuyển đổi thất bại hoặc giá trị vô hạn.
14
14
 
15
- ```typescript
15
+ ## Ví dụ
16
+
17
+ <Source
18
+ language='typescript'
19
+ code={`
16
20
  import { toNumber } from '@dxtmisha/functional-basic'
17
21
 
18
- console.log(toNumber('1 250,50')) // 1250.5
19
- console.log(toNumber('1,000,000.99')) // 1000000.99
20
- console.log(toNumber('abc-12.5')) // 12.5
21
- ```
22
+ // 1. Xử các loại dấu phân cách
23
+ toNumber('1 250,50') // 1250.5
24
+ toNumber('1,000,000.99') // 1000000.99
25
+ toNumber('1.250,50') // 1250.5
26
+
27
+ // 2. Loại bỏ các ký tự không phải số
28
+ toNumber('abc-12.5') // -12.5
29
+ toNumber('$1,234.56') // 1234.56
30
+
31
+ // 3. Số và các giá trị đặc biệt
32
+ toNumber(123.45) // 123.45
33
+ toNumber(-0) // 0 (đã chuẩn hóa)
34
+ toNumber(Infinity) // 0
35
+ toNumber(undefined) // 0
36
+ `}
37
+ />
@@ -0,0 +1,28 @@
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Functions/toString - Conversion of a value to a string'/>
4
+
5
+ # `toString`
6
+
7
+ A utility for converting a value to a string. Returns an empty string if the value is null or undefined.
8
+
9
+ **Parameters:**
10
+ - `value: string | null | undefined` — The value for conversion.
11
+
12
+ **Returns:**
13
+ `string` — The string representation of the value.
14
+
15
+
16
+ ## Examples
17
+
18
+ <Source
19
+ language='typescript'
20
+ code={`
21
+ import { toString } from '@dxtmisha/functional-basic'
22
+
23
+ toString('Hello') // 'Hello'
24
+ toString(null) // ''
25
+ toString(undefined) // ''
26
+
27
+ `}
28
+ />
@@ -0,0 +1,28 @@
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Functions/toString - Преобразование значения в строку'/>
4
+
5
+ # `toString`
6
+
7
+ Утилита для преобразования значения в строку. Возвращает пустую строку, если значение равно null или undefined.
8
+
9
+ **Параметры:**
10
+ - `value: string | null | undefined` — Значение для преобразования.
11
+
12
+ **Возвращает:**
13
+ `string` — Строковое представление значения.
14
+
15
+
16
+ ## Примеры
17
+
18
+ <Source
19
+ language='typescript'
20
+ code={`
21
+ import { toString } from '@dxtmisha/functional-basic'
22
+
23
+ toString('Привет') // 'Привет'
24
+ toString(null) // ''
25
+ toString(undefined) // ''
26
+
27
+ `}
28
+ />
@@ -0,0 +1,28 @@
1
+ import { Meta, Source } from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Functions/toString - Chuyển đổi một giá trị thành chuỗi'/>
4
+
5
+ # `toString`
6
+
7
+ Một tiện ích để chuyển đổi một giá trị thành chuỗi. Trả về một chuỗi rỗng nếu giá trị là null hoặc undefined.
8
+
9
+ **Tham số:**
10
+ - `value: string | null | undefined` — Giá trị cần chuyển đổi.
11
+
12
+ **Trả về:**
13
+ `string` — Biểu diễn chuỗi của giá trị.
14
+
15
+
16
+ ## Ví dụ
17
+
18
+ <Source
19
+ language='typescript'
20
+ code={`
21
+ import { toString } from '@dxtmisha/functional-basic'
22
+
23
+ toString('Xin chào') // 'Xin chào'
24
+ toString(null) // ''
25
+ toString(undefined) // ''
26
+
27
+ `}
28
+ />
@@ -23,6 +23,9 @@ Icons.addByList({
23
23
  if (Icons.is('home')) {
24
24
  const path = await Icons.get('home')
25
25
  }
26
+
27
+ // 4. Synchronous retrieval
28
+ const fastPath = Icons.getAsync('search') // returns string or empty string
26
29
  ```
27
30
 
28
31
  ## Lazy Loading
@@ -23,6 +23,9 @@ Icons.addByList({
23
23
  if (Icons.is('home')) {
24
24
  const path = await Icons.get('home')
25
25
  }
26
+
27
+ // 4. Синхронное получение
28
+ const fastPath = Icons.getAsync('search') // возвращает строку или пустую строку
26
29
  ```
27
30
 
28
31
  ## Ленивая загрузка