@dxtmisha/wiki 0.39.7 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{defineProperty-DblGXmzD.js → defineProperty-149Ahniv.js} +4 -4
- package/dist/library.js +1 -1
- package/dist/media/descriptions/wikiDescriptionsArea.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsClientOnly.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsContainer.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsHeader.d.ts +7 -0
- package/dist/media/descriptions/wikiDescriptionsPageArea.d.ts +7 -0
- package/dist/media/mdx/Area/wikiMdxArea.d.ts +7 -0
- package/dist/media/mdx/ClientOnly/wikiMdxClientOnly.d.ts +7 -0
- package/dist/media/mdx/Container/wikiMdxContainer.d.ts +7 -0
- package/dist/media/mdx/Header/wikiMdxHeader.d.ts +7 -0
- package/dist/media/mdx/PageArea/wikiMdxPageArea.d.ts +7 -0
- package/dist/media.d.ts +1 -1
- package/dist/media.js +127 -68
- package/dist/storybook.js +2707 -1841
- package/dist/{wikiDescriptions-Cv4WzSNL.js → wikiDescriptions-7XaHU3Yk.js} +182 -0
- package/package.json +1 -1
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +43 -0
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +43 -0
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +41 -0
- package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +20 -4
- package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +21 -3
- package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +20 -2
- package/src/media/functional/functional/functions/computedAsync/computedAsync.en.mdx +8 -0
- package/src/media/functional/functional/functions/computedAsync/computedAsync.ru.mdx +8 -0
- package/src/media/functional/functional/functions/computedAsync/computedAsync.vi.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.en.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.ru.mdx +8 -0
- package/src/media/functional/functional/functions/computedEternity/computedEternity.vi.mdx +8 -0
- package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
- package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +57 -54
- package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +57 -54
- package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +57 -54
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +106 -51
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +107 -52
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +103 -49
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +59 -21
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +63 -25
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +64 -26
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
- package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +178 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +178 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +178 -0
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
- package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
- package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
- package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
- package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.en.mdx +16 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.ru.mdx +16 -0
- package/src/media/functional/functional-basic/classes/Meta/Meta.vi.mdx +17 -1
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.en.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.ru.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.vi.mdx +9 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +79 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +79 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +79 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
- package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
- package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
- package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
- package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
- package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
- package/src/media/functional/functional-basic/icons/icons.en.mdx +3 -0
- package/src/media/functional/functional-basic/icons/icons.ru.mdx +3 -0
- package/src/media/functional/functional-basic/icons/icons.vi.mdx +3 -0
- package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -0
- package/src/media/functional/ui/about/about.en.mdx +45 -0
- package/src/media/functional/ui/about/about.ru.mdx +45 -0
- package/src/media/functional/ui/about/about.vi.mdx +45 -0
- package/src/media/functional/ui/component/component.en.mdx +104 -0
- package/src/media/functional/ui/component/component.ru.mdx +106 -0
- package/src/media/functional/ui/component/component.vi.mdx +104 -0
- package/src/media/functional/ui/setup/setup.en.mdx +72 -0
- package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
- package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
- package/src/media/functional/ui/wiki-data.en.mdx +114 -0
- package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
- package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
|
@@ -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ử
|
|
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-
|
|
27
|
-
console.log(div.id) // 'id-
|
|
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-
|
|
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
|
|
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
|
|
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
|
-
Утилита, строящая регистронезависимое
|
|
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` — Регулярное выражение с
|
|
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('
|
|
28
|
-
regex2.test('
|
|
29
|
-
regex2.test('
|
|
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ờ `
|
|
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('
|
|
28
|
-
regex2.test('
|
|
29
|
-
regex2.test('
|
|
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` —
|
|
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
|
-
|
|
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?:
|
|
10
|
+
- `value?: NumberOrString` — The input value for conversion.
|
|
11
11
|
|
|
12
12
|
**Returns:**
|
|
13
|
-
`number` — The
|
|
13
|
+
`number` — The parsed float number or `0` if conversion fails or the value is non-finite.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Examples
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
language='typescript'
|
|
19
|
+
code={`
|
|
16
20
|
import { toNumber } from '@dxtmisha/functional-basic'
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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?:
|
|
10
|
+
- `value?: NumberOrString` — Входное значение для преобразования.
|
|
11
11
|
|
|
12
12
|
**Возвращает:**
|
|
13
|
-
`number` —
|
|
13
|
+
`number` — Распарсенное число float или `0`, если преобразование не удалось или значение не является конечным числом.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Примеры
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
language='typescript'
|
|
19
|
+
code={`
|
|
16
20
|
import { toNumber } from '@dxtmisha/functional-basic'
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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?:
|
|
10
|
+
- `value?: NumberOrString` — Giá trị đầu vào cần chuyển đổi.
|
|
11
11
|
|
|
12
12
|
**Trả về:**
|
|
13
|
-
`number` — Số thực
|
|
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ị là vô hạn.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Ví dụ
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
language='typescript'
|
|
19
|
+
code={`
|
|
16
20
|
import { toNumber } from '@dxtmisha/functional-basic'
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
// 1. Xử lý 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
|
+
/>
|