@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
package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/ru/functional-basic/Functions/executeFunction -
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Functions/executeFunction - Выполнить функцию или вернуть значение'/>
|
|
4
4
|
|
|
5
5
|
# `executeFunction`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Универсальная утилита для обработки аргументов, которые могут быть как статическим значением, так и функцией. Если переданный аргумент является функцией, `executeFunction` выполняет его с указанными аргументами и возвращает результат. В противном случае возвращается сам аргумент.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Этот паттерн крайне эффективен для реализации «ленивых» вычислений, динамических значений по умолчанию или свойств конфигурации, которые могут быть как фиксированными, так и вычисляемыми.
|
|
10
10
|
|
|
11
11
|
**Параметры:**
|
|
12
|
-
- `callback: T |
|
|
12
|
+
- `callback: T | ((...args: any[]) => T)` — Значение для обработки. Может быть литералом или функцией, возвращающей тип `T`.
|
|
13
|
+
- `...args: any[]` (опционально) — Аргументы, которые будут переданы в функцию, если `callback` является вызываемым.
|
|
13
14
|
|
|
14
15
|
**Возвращает:**
|
|
15
|
-
`T` — Результат выполнения функции или
|
|
16
|
+
`T` — Результат выполнения функции или само исходное значение.
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { executeFunction } from '@dxtmisha/functional-basic'
|
|
19
20
|
|
|
20
|
-
//
|
|
21
|
+
// 1. Обработка статического значения
|
|
21
22
|
console.log(executeFunction('Привет')) // 'Привет'
|
|
22
23
|
|
|
23
|
-
//
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
// 2. Динамическое выполнение
|
|
25
|
+
const getLabel = (prefix: string) => `${prefix}: Текст`
|
|
26
|
+
console.log(executeFunction(getLabel, 'Админ')) // 'Админ: Текст'
|
|
27
|
+
|
|
28
|
+
// 3. Гибкая логика вызова
|
|
29
|
+
const value = Math.random() > 0.5 ? 'Статика' : () => 'Вычислено'
|
|
30
|
+
console.log(executeFunction(value)) // 'Статика' или 'Вычислено'
|
|
28
31
|
```
|
package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx
CHANGED
|
@@ -4,12 +4,13 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# `executeFunction`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Một tiện ích linh hoạt được thiết kế để xử lý các đối số có thể là giá trị tĩnh hoặc hàm. Nếu đối số được cung cấp là một hàm, `executeFunction` sẽ gọi hàm đó với các đối số đã chỉ định và trả về kết quả. Nếu không, nó sẽ trả về chính đối số đó.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Mô hình này rất hiệu quả để triển khai tính toán lười biếng (lazy evaluation), các giá trị mặc định động hoặc các thuộc tính cấu hình có thể cố định hoặc được tính toán.
|
|
10
10
|
|
|
11
11
|
**Tham số:**
|
|
12
|
-
- `callback: T |
|
|
12
|
+
- `callback: T | ((...args: any[]) => T)` — Giá trị cần xử lý. Có thể là một giá trị cụ thể hoặc một hàm trả về kiểu `T`.
|
|
13
|
+
- `...args: any[]` (tùy chọn) — Các đối số được truyền vào hàm nếu `callback` có thể gọi được.
|
|
13
14
|
|
|
14
15
|
**Trả về:**
|
|
15
16
|
`T` — Kết quả của việc thực thi hàm hoặc chính giá trị ban đầu.
|
|
@@ -17,12 +18,14 @@ Tiện ích kiểm tra đối số được cung cấp. Nếu đối số đó l
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { executeFunction } from '@dxtmisha/functional-basic'
|
|
19
20
|
|
|
20
|
-
//
|
|
21
|
+
// 1. Xử lý giá trị tĩnh
|
|
21
22
|
console.log(executeFunction('Xin chào')) // 'Xin chào'
|
|
22
23
|
|
|
23
|
-
//
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
// 2. Thực thi động
|
|
25
|
+
const getLabel = (prefix: string) => `${prefix}: Nhãn động`
|
|
26
|
+
console.log(executeFunction(getLabel, 'Admin')) // 'Admin: Nhãn động'
|
|
27
|
+
|
|
28
|
+
// 3. Logic điều kiện trong cuộc gọi
|
|
29
|
+
const value = Math.random() > 0.5 ? 'Tĩnh' : () => 'Đã tính toán'
|
|
30
|
+
console.log(executeFunction(value)) // 'Tĩnh' hoặc 'Đã tính toán'
|
|
28
31
|
```
|
package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx
CHANGED
|
@@ -4,29 +4,30 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# `executePromise`
|
|
6
6
|
|
|
7
|
-
A utility
|
|
7
|
+
A robust utility for safely executing and awaiting results from flexible sources. It handles synchronous values, Promises, and functions (both synchronous and asynchronous) by ensuring the final result is always resolved and returned as a Promise.
|
|
8
8
|
|
|
9
|
-
Under the hood, it
|
|
9
|
+
Under the hood, it leverages `executeFunction` to resolve callables and then ensures that if the result is a `Promise`, it is properly awaited.
|
|
10
10
|
|
|
11
11
|
**Parameters:**
|
|
12
|
-
- `callback: (() => Promise<T>) | (() => T) | T` —
|
|
12
|
+
- `callback: ((...args: any[]) => Promise<T>) | ((...args: any[]) => T) | T` — The source to execute or resolve.
|
|
13
|
+
- `...args: any[]` (optional) — Arguments to pass to the function if `callback` is callable.
|
|
13
14
|
|
|
14
15
|
**Returns:**
|
|
15
|
-
`Promise<T>` — A promise
|
|
16
|
+
`Promise<T>` — A promise that resolves to the final computed or provided value.
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { executePromise } from '@dxtmisha/functional-basic'
|
|
19
20
|
|
|
20
|
-
//
|
|
21
|
-
const fetchData = async () => {
|
|
22
|
-
return await fetch(
|
|
21
|
+
// 1. Awaiting an async function
|
|
22
|
+
const fetchData = async (id: number) => {
|
|
23
|
+
return await fetch(`/api/user/${id}`).then(res => res.json())
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
+
const user = await executePromise(fetchData, 123)
|
|
25
26
|
|
|
26
|
-
//
|
|
27
|
-
const
|
|
28
|
-
const
|
|
27
|
+
// 2. Handling a synchronous function
|
|
28
|
+
const getName = () => 'John Doe'
|
|
29
|
+
const name = await executePromise(getName) // returns Promise resolving to 'John Doe'
|
|
29
30
|
|
|
30
|
-
//
|
|
31
|
-
const
|
|
31
|
+
// 3. Resolving a static value
|
|
32
|
+
const result = await executePromise('Immediate Data')
|
|
32
33
|
```
|
package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/ru/functional-basic/Functions/executePromise -
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Functions/executePromise - Выполнить Promise или функцию'/>
|
|
4
4
|
|
|
5
5
|
# `executePromise`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Надежная утилита для безопасного выполнения и ожидания результатов из различных источников. Она обрабатывает синхронные значения, промисы (Promises) и функции (как синхронные, так и асинхронные), гарантируя, что конечный результат всегда будет разрешен и возвращен в виде промиса.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Внутренне она использует `executeFunction` для вызова функций, а затем проверяет, является ли результат промисом, чтобы дождаться его завершения.
|
|
10
10
|
|
|
11
11
|
**Параметры:**
|
|
12
|
-
- `callback: (() => Promise<T>) | (() => T) | T` —
|
|
12
|
+
- `callback: ((...args: any[]) => Promise<T>) | ((...args: any[]) => T) | T` — Источник для выполнения или разрешения.
|
|
13
|
+
- `...args: any[]` (опционально) — Аргументы, которые будут переданы в функцию, если `callback` является вызываемым.
|
|
13
14
|
|
|
14
15
|
**Возвращает:**
|
|
15
|
-
`Promise<T>` — Промис, разрешающийся
|
|
16
|
+
`Promise<T>` — Промис, разрешающийся финальным вычисленным или предоставленным значением.
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { executePromise } from '@dxtmisha/functional-basic'
|
|
19
20
|
|
|
20
|
-
//
|
|
21
|
-
const fetchData = async () => {
|
|
22
|
-
return await fetch(
|
|
21
|
+
// 1. Ожидание асинхронной функции
|
|
22
|
+
const fetchData = async (id: number) => {
|
|
23
|
+
return await fetch(`/api/user/${id}`).then(res => res.json())
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
+
const user = await executePromise(fetchData, 123)
|
|
25
26
|
|
|
26
|
-
//
|
|
27
|
-
const
|
|
28
|
-
const
|
|
27
|
+
// 2. Обработка синхронной функции
|
|
28
|
+
const getName = () => 'Иван Иванов'
|
|
29
|
+
const name = await executePromise(getName) // возвращает Promise, разрешающийся в 'Иван Иванов'
|
|
29
30
|
|
|
30
|
-
//
|
|
31
|
-
const
|
|
31
|
+
// 3. Разрешение статического значения
|
|
32
|
+
const result = await executePromise('Мгновенные данные')
|
|
32
33
|
```
|
package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx
CHANGED
|
@@ -4,29 +4,30 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# `executePromise`
|
|
6
6
|
|
|
7
|
-
Một tiện ích thực thi an toàn
|
|
7
|
+
Một tiện ích mạnh mẽ để thực thi và chờ đợi kết quả từ các nguồn linh hoạt một cách an toàn. Nó xử lý các giá trị đồng bộ, Promise và các hàm (cả đồng bộ và bất đồng bộ) bằng cách đảm bảo kết quả cuối cùng luôn được giải quyết và trả về dưới dạng Promise.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Bên dưới, nó tận dụng `executeFunction` để thực thi các hàm và sau đó đảm bảo rằng nếu kết quả là một `Promise`, nó sẽ được chờ đợi (await) đúng cách.
|
|
10
10
|
|
|
11
11
|
**Tham số:**
|
|
12
|
-
- `callback: (() => Promise<T>) | (() => T) | T` —
|
|
12
|
+
- `callback: ((...args: any[]) => Promise<T>) | ((...args: any[]) => T) | T` — Nguồn để thực thi hoặc giải quyết.
|
|
13
|
+
- `...args: any[]` (tùy chọn) — Các đối số được truyền vào hàm nếu `callback` có thể gọi được.
|
|
13
14
|
|
|
14
15
|
**Trả về:**
|
|
15
|
-
`Promise<T>` — Một promise
|
|
16
|
+
`Promise<T>` — Một promise giải quyết thành giá trị cuối cùng được tính toán hoặc được cung cấp.
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { executePromise } from '@dxtmisha/functional-basic'
|
|
19
20
|
|
|
20
|
-
//
|
|
21
|
-
const fetchData = async () => {
|
|
22
|
-
return await fetch(
|
|
21
|
+
// 1. Chờ đợi một hàm bất đồng bộ
|
|
22
|
+
const fetchData = async (id: number) => {
|
|
23
|
+
return await fetch(`/api/user/${id}`).then(res => res.json())
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
+
const user = await executePromise(fetchData, 123)
|
|
25
26
|
|
|
26
|
-
//
|
|
27
|
-
const
|
|
28
|
-
const
|
|
27
|
+
// 2. Xử lý một hàm đồng bộ
|
|
28
|
+
const getName = () => 'John Doe'
|
|
29
|
+
const name = await executePromise(getName) // trả về Promise giải quyết thành 'John Doe'
|
|
29
30
|
|
|
30
|
-
//
|
|
31
|
-
const
|
|
31
|
+
// 3. Giải quyết một giá trị tĩnh
|
|
32
|
+
const result = await executePromise('Dữ liệu tức thời')
|
|
32
33
|
```
|
|
@@ -19,7 +19,7 @@ The function performs the specified function once for each element in the object
|
|
|
19
19
|
The function is a universal tool for iterating over various data structures and collecting results into an array.
|
|
20
20
|
|
|
21
21
|
**Features:**
|
|
22
|
-
- **Type Support** — works with `Array`, `Map`, and standard `Object`.
|
|
22
|
+
- **Type Support** — works with `Array`, `Map`, `Set`, and standard `Object`.
|
|
23
23
|
- **Result Collection** — unlike the standard `forEach`, this function collects the values returned from the `callback` into a new array.
|
|
24
24
|
- **Undefined Filtering** — by default, all `undefined` values (e.g., if the callback returned nothing for an element) are filtered out of the resulting array.
|
|
25
25
|
- **saveUndefined Parameter** — if `true` is passed as the third argument, the array will preserve all results, including `undefined`.
|
|
@@ -19,7 +19,7 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
19
19
|
Функция является универсальным инструментом для перебора различных структур данных и сбора результатов в массив.
|
|
20
20
|
|
|
21
21
|
**Особенности:**
|
|
22
|
-
- **Поддержка типов** — работает с `Array`, `Map` и обычными объектами (`Object`).
|
|
22
|
+
- **Поддержка типов** — работает с `Array`, `Map`, `Set` и обычными объектами (`Object`).
|
|
23
23
|
- **Сбор результатов** — в отличие от стандартного `forEach`, эта функция собирает значения, возвращаемые из `callback`, в новый массив.
|
|
24
24
|
- **Фильтрация undefined** — по умолчанию все значения `undefined` (например, если callback ничего не вернул для элемента) отфильтровываются из итогового массива.
|
|
25
25
|
- **Параметр saveUndefined** — если передать `true` третьим аргументом, массив сохранит все результаты, включая `undefined`.
|
|
@@ -19,7 +19,7 @@ Hàm thực hiện chức năng được chỉ định một lần cho mỗi ph
|
|
|
19
19
|
Hàm này là một công cụ vạn năng để lặp qua các cấu trúc dữ liệu khác nhau và thu thập kết quả vào một mảng.
|
|
20
20
|
|
|
21
21
|
**Tính năng:**
|
|
22
|
-
- **Hỗ trợ kiểu dữ liệu** — hoạt động với `Array`, `Map` và các đối tượng thông thường (`Object`).
|
|
22
|
+
- **Hỗ trợ kiểu dữ liệu** — hoạt động với `Array`, `Map`, `Set` và các đối tượng thông thường (`Object`).
|
|
23
23
|
- **Thu thập kết quả** — khác với `forEach` tiêu chuẩn, hàm này thu thập các giá trị được trả về từ `callback` vào một mảng mới.
|
|
24
24
|
- **Lọc undefined** — theo mặc định, tất cả các giá trị `undefined` (ví dụ: nếu callback không trả về gì cho một phần tử) sẽ bị lọc bỏ khỏi mảng kết quả.
|
|
25
25
|
- **Tham số saveUndefined** — nếu truyền `true` làm đối số thứ ba, mảng sẽ giữ lại tất cả các kết quả, bao gồm cả `undefined`.
|
|
@@ -6,12 +6,15 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
A utility that cyclically calls `requestAnimationFrame` to perform frame-by-frame animation in the browser.
|
|
8
8
|
|
|
9
|
-
It's useful for creating smooth animations because the browser automatically optimizes the frame rate (typically 60 FPS) and pauses the animation when the tab is inactive.
|
|
9
|
+
It's useful for creating smooth animations because the browser automatically optimizes the frame rate (typically 60 FPS) and pauses the animation when the tab is inactive.
|
|
10
|
+
|
|
11
|
+
**SSR Behavior:**
|
|
12
|
+
In non-DOM environments (such as SSR), `requestAnimationFrame` is not used. The function executes the `callback` once synchronously and immediately calls `end` (the loop via `next` is not started) to prevent stack overflow and thread blocking on the server.
|
|
10
13
|
|
|
11
14
|
**Parameters:**
|
|
12
|
-
- `callback: () => void` — The function to call
|
|
13
|
-
- `next?: () => boolean` — A condition function. If it returns `true
|
|
14
|
-
- `end?: () => void` — A callback function that is executed once the animation loop ends
|
|
15
|
+
- `callback: () => void` — The function to call to update your animation.
|
|
16
|
+
- `next?: () => boolean` — A condition function. If it returns `true` (only in browser), the animation loop continues.
|
|
17
|
+
- `end?: () => void` — A callback function that is executed once the animation loop ends.
|
|
15
18
|
|
|
16
19
|
**Returns:**
|
|
17
20
|
`void`
|
|
@@ -6,12 +6,15 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
Утилита, которая циклически вызывает `requestAnimationFrame` для выполнения покадровой анимации в браузере.
|
|
8
8
|
|
|
9
|
-
Она полезна для создания плавных анимаций, поскольку браузер самостоятельно оптимизирует частоту кадров (обычно 60 FPS) и не рисует анимацию, когда вкладка неактивна.
|
|
9
|
+
Она полезна для создания плавных анимаций, поскольку браузер самостоятельно оптимизирует частоту кадров (обычно 60 FPS) и не рисует анимацию, когда вкладка неактивна.
|
|
10
|
+
|
|
11
|
+
**SSR поведение:**
|
|
12
|
+
В средах без DOM (например, SSR) `requestAnimationFrame` не используется. Функция выполняет `callback` один раз синхронно и сразу вызывает `end` (цикл через `next` не запускается), чтобы предотвратить переполнение стека и блокировку потока на сервере.
|
|
10
13
|
|
|
11
14
|
**Параметры:**
|
|
12
15
|
- `callback: () => void` — Функция, которая отрисовывает или обновляет анимацию на каждом кадре.
|
|
13
|
-
- `next?: () => boolean` — Функция-условие. Если она возвращает `true
|
|
14
|
-
- `end?: () => void` — Функция, которая будет вызвана один раз, когда
|
|
16
|
+
- `next?: () => boolean` — Функция-условие. Если она возвращает `true` (только в браузере), анимация продолжится в следующем кадре.
|
|
17
|
+
- `end?: () => void` — Функция, которая будет вызвана один раз, когда цикл анимации завершен.
|
|
15
18
|
|
|
16
19
|
**Возвращает:**
|
|
17
20
|
`void`
|
|
@@ -6,12 +6,15 @@ import { Meta } from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
Tiện ích này sẽ gọi vòng lặp `requestAnimationFrame` để thực hiện hoạt ảnh theo từng khung hình (frame-by-frame) trong trình duyệt.
|
|
8
8
|
|
|
9
|
-
Trình duyệt tự động tối ưu hóa tốc độ khung hình (thường là 60 FPS) và dừng hoạt ảnh khi tab không hoạt động, giúp hiển thị mượt mà.
|
|
9
|
+
Trình duyệt tự động tối ưu hóa tốc độ khung hình (thường là 60 FPS) và dừng hoạt ảnh khi tab không hoạt động, giúp hiển thị mượt mà.
|
|
10
|
+
|
|
11
|
+
**Hành vi trong SSR:**
|
|
12
|
+
Trong các môi trường không có DOM (chẳng hạn như SSR), `requestAnimationFrame` sẽ không được sử dụng. Hàm thực thi `callback` một lần đồng bộ và gọi ngay lập tức hàm `end` (vòng lặp qua `next` không được bắt đầu) để ngăn chặn tràn ngăn xếp (stack overflow) và chặn luồng trên máy chủ (server thread blocking).
|
|
10
13
|
|
|
11
14
|
**Tham số:**
|
|
12
|
-
- `callback: () => void` — Hàm được gọi
|
|
13
|
-
- `next?: () => boolean` — Hàm điều kiện. Nếu trả về `true
|
|
14
|
-
- `end?: () => void` — Hàm được thực thi một lần khi vòng lặp hoạt ảnh
|
|
15
|
+
- `callback: () => void` — Hàm được gọi để cập nhật hoạt ảnh.
|
|
16
|
+
- `next?: () => boolean` — Hàm điều kiện. Nếu trả về `true` (chỉ trong trình duyệt), vòng lặp hoạt ảnh tiếp tục.
|
|
17
|
+
- `end?: () => void` — Hàm được thực thi một lần khi vòng lặp hoạt ảnh kết thúc.
|
|
15
18
|
|
|
16
19
|
**Trả về:**
|
|
17
20
|
`void`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Functions/getArrayHighlightMatch - Structured highlight matches'/>
|
|
4
|
+
|
|
5
|
+
# `getArrayHighlightMatch`
|
|
6
|
+
|
|
7
|
+
A utility for splitting a string into an array of objects for highlighting matches. Each object contains the `text` and a boolean `isMatch` indicating if it matches the search query. This is useful for UI frameworks like Vue or React to render highlighted text without using `v-html`.
|
|
8
|
+
|
|
9
|
+
**Parameters:**
|
|
10
|
+
- `value: string` — The initial string to process.
|
|
11
|
+
- `search?: string` — The search string (supports space-separated multi-word search).
|
|
12
|
+
|
|
13
|
+
**Returns:**
|
|
14
|
+
`{ text: string, isMatch: boolean }[]` — An array of text segments with match status.
|
|
15
|
+
|
|
16
|
+
<Source
|
|
17
|
+
language='typescript'
|
|
18
|
+
code={`
|
|
19
|
+
import { getArrayHighlightMatch } from '@dxtmisha/functional-basic'
|
|
20
|
+
|
|
21
|
+
const result = getArrayHighlightMatch('Hello world', 'hello')
|
|
22
|
+
/*
|
|
23
|
+
[
|
|
24
|
+
{ text: 'Hello', isMatch: true },
|
|
25
|
+
{ text: ' world', isMatch: false }
|
|
26
|
+
]
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// Example in Vue template:
|
|
30
|
+
// <template v-for="item in getArrayHighlightMatch(text, search)">
|
|
31
|
+
// <span :class="{ 'sys-highlight-match': item.isMatch }">{{ item.text }}</span>
|
|
32
|
+
// </template>
|
|
33
|
+
`}
|
|
34
|
+
/>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Functions/getArrayHighlightMatch - Структурированное выделение совпадений'/>
|
|
4
|
+
|
|
5
|
+
# `getArrayHighlightMatch`
|
|
6
|
+
|
|
7
|
+
Утилита для разделения строки на массив объектов для выделения совпадений. Каждый объект содержит `text` и логическое значение `isMatch`, указывающее, соответствует ли фрагмент поисковому запросу. Это полезно для UI-фреймворков (Vue, React), чтобы отрисовывать подсвеченный текст без использования `v-html`.
|
|
8
|
+
|
|
9
|
+
**Параметры:**
|
|
10
|
+
- `value: string` — Исходная строка для обработки.
|
|
11
|
+
- `search?: string` — Строка поиска (поддерживает поиск по нескольким словам через пробел).
|
|
12
|
+
|
|
13
|
+
**Возвращает:**
|
|
14
|
+
`{ text: string, isMatch: boolean }[]` — Массив текстовых сегментов со статусом совпадения.
|
|
15
|
+
|
|
16
|
+
<Source
|
|
17
|
+
language='typescript'
|
|
18
|
+
code={`
|
|
19
|
+
import { getArrayHighlightMatch } from '@dxtmisha/functional-basic'
|
|
20
|
+
|
|
21
|
+
const result = getArrayHighlightMatch('Привет мир', 'привет')
|
|
22
|
+
/*
|
|
23
|
+
[
|
|
24
|
+
{ text: 'Привет', isMatch: true },
|
|
25
|
+
{ text: ' мир', isMatch: false }
|
|
26
|
+
]
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// Пример в шаблоне Vue:
|
|
30
|
+
// <template v-for="item in getArrayHighlightMatch(text, search)">
|
|
31
|
+
// <span :class="{ 'sys-highlight-match': item.isMatch }">{{ item.text }}</span>
|
|
32
|
+
// </template>
|
|
33
|
+
`}
|
|
34
|
+
/>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Functions/getArrayHighlightMatch - Làm nổi bật kết quả khớp dạng cấu trúc'/>
|
|
4
|
+
|
|
5
|
+
# `getArrayHighlightMatch`
|
|
6
|
+
|
|
7
|
+
Tiện ích để chia một chuỗi thành một mảng các đối tượng để làm nổi bật các kết quả khớp. Mỗi đối tượng chứa `text` và giá trị boolean `isMatch` cho biết đoạn văn bản đó có khớp với truy vấn tìm kiếm hay không. Điều này rất hữu ích cho các UI framework như Vue hoặc React để hiển thị văn bản được làm nổi bật mà không cần dùng `v-html`.
|
|
8
|
+
|
|
9
|
+
**Tham số:**
|
|
10
|
+
- `value: string` — Chuỗi ban đầu để xử lý.
|
|
11
|
+
- `search?: string` — Chuỗi tìm kiếm (hỗ trợ tìm kiếm nhiều từ phân tách bằng dấu cách).
|
|
12
|
+
|
|
13
|
+
**Trả về:**
|
|
14
|
+
`{ text: string, isMatch: boolean }[]` — Một mảng các đoạn văn bản với trạng thái khớp.
|
|
15
|
+
|
|
16
|
+
<Source
|
|
17
|
+
language='typescript'
|
|
18
|
+
code={`
|
|
19
|
+
import { getArrayHighlightMatch } from '@dxtmisha/functional-basic'
|
|
20
|
+
|
|
21
|
+
const result = getArrayHighlightMatch('Xin chào thế giới', 'chào')
|
|
22
|
+
/*
|
|
23
|
+
[
|
|
24
|
+
{ text: 'Xin ', isMatch: false },
|
|
25
|
+
{ text: 'chào', isMatch: true },
|
|
26
|
+
{ text: ' thế giới', isMatch: false }
|
|
27
|
+
]
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
// Ví dụ trong Vue template:
|
|
31
|
+
// <template v-for="item in getArrayHighlightMatch(text, search)">
|
|
32
|
+
// <span :class="{ 'sys-highlight-match': item.isMatch }">{{ item.text }}</span>
|
|
33
|
+
// </template>
|
|
34
|
+
`}
|
|
35
|
+
/>
|
package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx
CHANGED
|
@@ -6,6 +6,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
Returns the current date in the specified format. The function is a wrapper around the `Datetime` class and allows you to quickly get a formatted string of the current time.
|
|
8
8
|
|
|
9
|
+
> **Warning (SSR):** Using this function for rendering in SSR may lead to hydration mismatches because the time or time zone on the server may differ from the time on the client. It is recommended to use this function inside client-side hooks only (e.g., `onMounted` in Vue or `useEffect` in React).
|
|
10
|
+
|
|
9
11
|
**Parameters:**
|
|
10
12
|
- `format: GeoDate` — type of date format for output (default `'datetime'`). Supports values: `'date'`, `'time'`, `'datetime'`, `'full'`, and others.
|
|
11
13
|
|
package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx
CHANGED
|
@@ -6,6 +6,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
Возвращает текущую дату в указанном формате. Функция является оберткой над классом `Datetime` и позволяет быстро получить отформатированную строку текущего времени.
|
|
8
8
|
|
|
9
|
+
> **Внимание (SSR):** Использование этой функции для отрисовки в SSR может привести к ошибкам гидратации, так как время или часовой пояс сервера могут отличаться от времени на стороне клиента. Рекомендуется использовать эту функцию только внутри хуков, выполняющихся на клиенте (например, `onMounted` в Vue или `useEffect` в React).
|
|
10
|
+
|
|
9
11
|
**Параметры:**
|
|
10
12
|
- `format: GeoDate` — тип формата даты вывода (по умолчанию `'datetime'`). Поддерживает значения: `'date'`, `'time'`, `'datetime'`, `'full'` и другие.
|
|
11
13
|
|
package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx
CHANGED
|
@@ -6,6 +6,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
Trả về ngày hiện tại theo định dạng được chỉ định. Hàm này là một wrapper bao quanh lớp `Datetime` và cho phép bạn nhanh chóng lấy chuỗi thời gian hiện tại đã được định dạng.
|
|
8
8
|
|
|
9
|
+
> **Cảnh báo (SSR):** Việc sử dụng hàm này để render trong SSR có thể dẫn đến lỗi hydration mismatch vì thời gian hoặc múi giờ trên máy chủ có thể khác với thời gian trên máy khách. Khuyến khích chỉ sử dụng hàm này bên trong các hook phía máy khách (ví dụ: `onMounted` trong Vue hoặc `useEffect` trong React).
|
|
10
|
+
|
|
9
11
|
**Tham số:**
|
|
10
12
|
- `format: GeoDate` — loại định dạng ngày đầu ra (mặc định là `'datetime'`). Hỗ trợ các giá trị: `'date'`, `'time'`, `'datetime'`, `'full'` và các giá trị khác.
|
|
11
13
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Functions/getCurrentTime - Get current time'/>
|
|
4
|
+
|
|
5
|
+
# `getCurrentTime`
|
|
6
|
+
|
|
7
|
+
Returns the current time in milliseconds.
|
|
8
|
+
|
|
9
|
+
> **Warning (SSR):** Using this function for rendering in SSR will almost certainly lead to hydration mismatches because the timestamp on the server will differ from the timestamp on the client.
|
|
10
|
+
|
|
11
|
+
The function is a wrapper around `Date.now()` and allows you to quickly get a timestamp.
|
|
12
|
+
|
|
13
|
+
**Returns:**
|
|
14
|
+
Current time in milliseconds (number).
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { getCurrentTime } from '@dxtmisha/functional-basic'
|
|
18
|
+
|
|
19
|
+
const time = getCurrentTime()
|
|
20
|
+
// Result: 1710498600000 (example)
|
|
21
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Functions/getCurrentTime - Получение текущего времени'/>
|
|
4
|
+
|
|
5
|
+
# `getCurrentTime`
|
|
6
|
+
|
|
7
|
+
Возвращает текущее время в миллисекундах.
|
|
8
|
+
|
|
9
|
+
> **Внимание (SSR):** Использование этой функции для отрисовки в SSR практически наверняка приведет к ошибкам гидратации, так как временная метка (timestamp) сервера будет отличаться от метки на стороне клиента.
|
|
10
|
+
|
|
11
|
+
Функция является оберткой над `new Date().getTime()` и позволяет быстро получить временную метку (timestamp).
|
|
12
|
+
|
|
13
|
+
**Возвращает:**
|
|
14
|
+
Текущее время в миллисекундах (number).
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { getCurrentTime } from '@dxtmisha/functional-basic'
|
|
18
|
+
|
|
19
|
+
const time = getCurrentTime()
|
|
20
|
+
// Результат: 1710498600000 (пример)
|
|
21
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Functions/getCurrentTime - Lấy thời gian hiện tại'/>
|
|
4
|
+
|
|
5
|
+
# `getCurrentTime`
|
|
6
|
+
|
|
7
|
+
Trả về thời gian hiện tại tính bằng mili giây.
|
|
8
|
+
|
|
9
|
+
> **Cảnh báo (SSR):** Việc sử dụng hàm này để render trong SSR gần như chắc chắn sẽ dẫn đến lỗi hydration mismatch vì dấu thời gian (timestamp) trên máy chủ sẽ khác với dấu thời gian trên máy khách.
|
|
10
|
+
|
|
11
|
+
Hàm này là một wrapper bao quanh `Date.now()` và cho phép bạn nhanh chóng lấy dấu thời gian (timestamp).
|
|
12
|
+
|
|
13
|
+
**Trả về:**
|
|
14
|
+
Thời gian hiện tại tính bằng mili giây (number).
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { getCurrentTime } from '@dxtmisha/functional-basic'
|
|
18
|
+
|
|
19
|
+
const time = getCurrentTime()
|
|
20
|
+
// Kết quả: 1710498600000 (ví dụ)
|
|
21
|
+
```
|
|
@@ -23,10 +23,24 @@ const div = document.createElement('div')
|
|
|
23
23
|
console.log(div.id) // ''
|
|
24
24
|
|
|
25
25
|
const id = getElementId(div)
|
|
26
|
-
console.log(id) // For example: 'id-
|
|
27
|
-
console.log(div.id) // 'id-
|
|
26
|
+
console.log(id) // For example: 'id-100000'
|
|
27
|
+
console.log(div.id) // 'id-100000' (assigned automatically)
|
|
28
28
|
|
|
29
29
|
// Using an additional selector
|
|
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
|
+
Initializes the function for use in an SSR environment. This is necessary to ensure synchronization of generated IDs between the server and the client.
|
|
37
|
+
|
|
38
|
+
When using **Vue 3.5+**, it is recommended to use the built-in `useId()` function.
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { useId } from 'vue'
|
|
42
|
+
import { initGetElementId } from '@dxtmisha/functional-basic'
|
|
43
|
+
|
|
44
|
+
// Initialization (e.g., in a plugin or root component)
|
|
45
|
+
initGetElementId(() => useId())
|
|
32
46
|
```
|
|
@@ -23,10 +23,24 @@ const div = document.createElement('div')
|
|
|
23
23
|
console.log(div.id) // ''
|
|
24
24
|
|
|
25
25
|
const id = getElementId(div)
|
|
26
|
-
console.log(id) // Например: 'id-
|
|
27
|
-
console.log(div.id) // 'id-
|
|
26
|
+
console.log(id) // Например: 'id-100000'
|
|
27
|
+
console.log(div.id) // 'id-100000' (назначился автоматически)
|
|
28
28
|
|
|
29
29
|
// Использование дополнительного селектора
|
|
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
|
+
Инициализирует функцию для работы в SSR-окружении. Это необходимо для обеспечения синхронности генерируемых ID между сервером и клиентом.
|
|
37
|
+
|
|
38
|
+
При использовании **Vue 3.5+** рекомендуется использовать встроенную функцию `useId()`.
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { useId } from 'vue'
|
|
42
|
+
import { initGetElementId } from '@dxtmisha/functional-basic'
|
|
43
|
+
|
|
44
|
+
// Инициализация (например, в плагине или в корневом компоненте)
|
|
45
|
+
initGetElementId(() => useId())
|
|
32
46
|
```
|