@dxtmisha/wiki 0.24.3 → 0.25.1
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/package.json +7 -7
- package/src/classes/WikiStorybookItem.ts +24 -0
- package/src/media/descriptions/wikiDescriptions.ts +28 -0
- package/src/media/descriptions/wikiDescriptionsAccordion.ts +158 -0
- package/src/media/descriptions/wikiDescriptionsActionSheet.ts +211 -0
- package/src/media/descriptions/wikiDescriptionsActions.ts +161 -0
- package/src/media/descriptions/wikiDescriptionsAnchor.ts +42 -0
- package/src/media/descriptions/wikiDescriptionsArrow.ts +181 -0
- package/src/media/descriptions/wikiDescriptionsBlock.ts +97 -0
- package/src/media/descriptions/wikiDescriptionsButton.ts +0 -1
- package/src/media/descriptions/wikiDescriptionsCell.ts +2 -1
- package/src/media/descriptions/wikiDescriptionsChipGroup.ts +168 -0
- package/src/media/descriptions/wikiDescriptionsDialog.ts +182 -0
- package/src/media/descriptions/wikiDescriptionsField.ts +2 -0
- package/src/media/descriptions/wikiDescriptionsImage.ts +41 -6
- package/src/media/descriptions/wikiDescriptionsInput.ts +257 -0
- package/src/media/descriptions/wikiDescriptionsMenu.ts +123 -0
- package/src/media/descriptions/wikiDescriptionsModal.ts +145 -0
- package/src/media/descriptions/wikiDescriptionsMotionTransform.ts +2 -6
- package/src/media/descriptions/wikiDescriptionsSelect.ts +209 -0
- package/src/media/descriptions/wikiDescriptionsSelectValue.ts +78 -0
- package/src/media/descriptions/wikiDescriptionsTextareaAutosize.ts +50 -0
- package/src/media/descriptions/wikiDescriptionsTooltip.ts +89 -0
- package/src/media/functional/en/conversions.mdx +67 -0
- package/src/media/functional/en/dataUtils.mdx +25 -0
- package/src/media/functional/en/datetimeRef.mdx +1 -1
- package/src/media/functional/en/eventRef.mdx +1 -1
- package/src/media/functional/en/executionUtils.mdx +58 -0
- package/src/media/functional/en/geoFlagRef.mdx +1 -1
- package/src/media/functional/en/geoIntlRef.mdx +1 -1
- package/src/media/functional/en/geoRef.mdx +2 -2
- package/src/media/functional/en/meta.mdx +1206 -0
- package/src/media/functional/en/metaManager.mdx +376 -0
- package/src/media/functional/en/metaOg.mdx +694 -0
- package/src/media/functional/en/metaTwitter.mdx +853 -0
- package/src/media/functional/en/reactive.mdx +40 -0
- package/src/media/functional/en/refTypes.mdx +1 -1
- package/src/media/functional/en/useApiRef.mdx +5 -5
- package/src/media/functional/en/useMeta.mdx +431 -0
- package/src/media/functional/en/validationUtils.mdx +11 -0
- package/src/media/functional/ru/conversions.mdx +67 -0
- package/src/media/functional/ru/dataUtils.mdx +25 -0
- package/src/media/functional/ru/datetimeRef.mdx +2 -2
- package/src/media/functional/ru/eventRef.mdx +1 -1
- package/src/media/functional/ru/executionUtils.mdx +58 -0
- package/src/media/functional/ru/geoFlagRef.mdx +1 -1
- package/src/media/functional/ru/geoIntl.mdx +2 -2
- package/src/media/functional/ru/geoIntlRef.mdx +1 -1
- package/src/media/functional/ru/geoRef.mdx +2 -2
- package/src/media/functional/ru/listTypes.mdx +1 -1
- package/src/media/functional/ru/meta.mdx +1330 -0
- package/src/media/functional/ru/metaManager.mdx +376 -0
- package/src/media/functional/ru/metaOg.mdx +694 -0
- package/src/media/functional/ru/metaTwitter.mdx +853 -0
- package/src/media/functional/ru/reactive.mdx +40 -0
- package/src/media/functional/ru/refTypes.mdx +2 -2
- package/src/media/functional/ru/useApiRef.mdx +5 -5
- package/src/media/functional/ru/useMeta.mdx +431 -0
- package/src/media/functional/ru/validationUtils.mdx +11 -0
- package/src/media/mdx/Accordion/accordion.en.mdx +59 -0
- package/src/media/mdx/Accordion/accordion.ru.mdx +59 -0
- package/src/media/mdx/Accordion/slots.en.mdx +6 -0
- package/src/media/mdx/Accordion/slots.ru.mdx +6 -0
- package/src/media/mdx/Accordion/wikiMdxAccordion.ts +25 -0
- package/src/media/mdx/ActionSheet/actionSheet.en.mdx +61 -0
- package/src/media/mdx/ActionSheet/actionSheet.ru.mdx +61 -0
- package/src/media/mdx/ActionSheet/touchClose.en.mdx +21 -0
- package/src/media/mdx/ActionSheet/touchClose.ru.mdx +21 -0
- package/src/media/mdx/ActionSheet/wikiMdxActionSheet.ts +25 -0
- package/src/media/mdx/Actions/actions.en.mdx +48 -0
- package/src/media/mdx/Actions/actions.ru.mdx +48 -0
- package/src/media/mdx/Actions/flexible.en.mdx +19 -0
- package/src/media/mdx/Actions/flexible.ru.mdx +19 -0
- package/src/media/mdx/Actions/list.en.mdx +50 -0
- package/src/media/mdx/Actions/list.ru.mdx +50 -0
- package/src/media/mdx/Actions/wikiMdxActions.ts +31 -0
- package/src/media/mdx/Anchor/anchor.en.mdx +34 -0
- package/src/media/mdx/Anchor/anchor.ru.mdx +34 -0
- package/src/media/mdx/Anchor/expose.go.en.mdx +6 -0
- package/src/media/mdx/Anchor/expose.go.ru.mdx +6 -0
- package/src/media/mdx/Anchor/hide.en.mdx +28 -0
- package/src/media/mdx/Anchor/hide.ru.mdx +28 -0
- package/src/media/mdx/Anchor/isCopy.en.mdx +23 -0
- package/src/media/mdx/Anchor/isCopy.ru.mdx +23 -0
- package/src/media/mdx/Anchor/scroll.en.mdx +34 -0
- package/src/media/mdx/Anchor/scroll.ru.mdx +35 -0
- package/src/media/mdx/Anchor/wikiMdxAnchor.ts +43 -0
- package/src/media/mdx/Arrow/arrow.en.mdx +33 -0
- package/src/media/mdx/Arrow/arrow.ru.mdx +33 -0
- package/src/media/mdx/Arrow/wikiMdxArrow.ts +19 -0
- package/src/media/mdx/Block/block.en.mdx +42 -0
- package/src/media/mdx/Block/block.ru.mdx +42 -0
- package/src/media/mdx/Block/wikiMdxBlock.ts +19 -0
- package/src/media/mdx/ChipGroup/chipGroup.en.mdx +51 -0
- package/src/media/mdx/ChipGroup/chipGroup.ru.mdx +51 -0
- package/src/media/mdx/ChipGroup/selected.en.mdx +50 -0
- package/src/media/mdx/ChipGroup/selected.ru.mdx +50 -0
- package/src/media/mdx/ChipGroup/wikiMdxChipGroup.ts +25 -0
- package/src/media/mdx/Dialog/buttons.en.mdx +45 -0
- package/src/media/mdx/Dialog/buttons.ru.mdx +45 -0
- package/src/media/mdx/Dialog/dialog.en.mdx +66 -0
- package/src/media/mdx/Dialog/dialog.ru.mdx +65 -0
- package/src/media/mdx/Dialog/events.en.mdx +63 -0
- package/src/media/mdx/Dialog/events.ru.mdx +63 -0
- package/src/media/mdx/Dialog/states.en.mdx +58 -0
- package/src/media/mdx/Dialog/states.ru.mdx +57 -0
- package/src/media/mdx/Dialog/wikiMdxDialog.ts +37 -0
- package/src/media/mdx/Field/arrows.en.mdx +22 -6
- package/src/media/mdx/Field/arrows.ru.mdx +22 -6
- package/src/media/mdx/Field/slots.en.mdx +0 -13
- package/src/media/mdx/Field/slots.ru.mdx +0 -13
- package/src/media/mdx/Image/img-tag.en.mdx +105 -0
- package/src/media/mdx/Image/img-tag.ru.mdx +105 -0
- package/src/media/mdx/Image/wikiMdxImage.ts +6 -0
- package/src/media/mdx/Input/currency.en.mdx +38 -0
- package/src/media/mdx/Input/currency.ru.mdx +38 -0
- package/src/media/mdx/Input/date.en.mdx +53 -0
- package/src/media/mdx/Input/date.ru.mdx +53 -0
- package/src/media/mdx/Input/input.en.mdx +143 -0
- package/src/media/mdx/Input/input.ru.mdx +71 -0
- package/src/media/mdx/Input/mask.en.mdx +30 -0
- package/src/media/mdx/Input/mask.ru.mdx +30 -0
- package/src/media/mdx/Input/number.en.mdx +41 -0
- package/src/media/mdx/Input/number.ru.mdx +41 -0
- package/src/media/mdx/Input/type.en.mdx +26 -0
- package/src/media/mdx/Input/type.ru.mdx +26 -0
- package/src/media/mdx/Input/wikiMdxInput.ts +49 -0
- package/src/media/mdx/Menu/event.updateValue.en.mdx +29 -0
- package/src/media/mdx/Menu/event.updateValue.ru.mdx +30 -0
- package/src/media/mdx/Menu/expose.navigation.en.mdx +12 -0
- package/src/media/mdx/Menu/expose.navigation.ru.mdx +12 -0
- package/src/media/mdx/Menu/navigation.en.mdx +56 -0
- package/src/media/mdx/Menu/navigation.ru.mdx +56 -0
- package/src/media/mdx/Menu/slots.control.en.mdx +65 -0
- package/src/media/mdx/Menu/slots.control.ru.mdx +65 -0
- package/src/media/mdx/Menu/slots.en.mdx +2 -24
- package/src/media/mdx/Menu/slots.ru.mdx +2 -24
- package/src/media/mdx/Menu/wikiMdxMenu.ts +27 -3
- package/src/media/mdx/Modal/differences.en.mdx +130 -0
- package/src/media/mdx/Modal/differences.ru.mdx +65 -0
- package/src/media/mdx/Modal/modal.en.mdx +63 -0
- package/src/media/mdx/Modal/modal.ru.mdx +63 -0
- package/src/media/mdx/Modal/wikiMdxModal.ts +25 -0
- package/src/media/mdx/MotionTransform/expose.motionTransformElement.en.mdx +13 -0
- package/src/media/mdx/MotionTransform/expose.motionTransformElement.ru.mdx +14 -0
- package/src/media/mdx/MotionTransform/wikiMdxMotionTransform.ts +6 -0
- package/src/media/mdx/Select/select.en.mdx +69 -0
- package/src/media/mdx/Select/select.ru.mdx +69 -0
- package/src/media/mdx/Select/wikiMdxSelect.ts +19 -0
- package/src/media/mdx/SelectValue/selectValue.en.mdx +64 -0
- package/src/media/mdx/SelectValue/selectValue.ru.mdx +64 -0
- package/src/media/mdx/SelectValue/wikiMdxSelectValue.ts +19 -0
- package/src/media/mdx/TextareaAutosize/textarea-autosize.en.mdx +65 -0
- package/src/media/mdx/TextareaAutosize/textarea-autosize.ru.mdx +65 -0
- package/src/media/mdx/TextareaAutosize/wikiMdxTextareaAutosize.ts +19 -0
- package/src/media/mdx/Tooltip/event.tooltip.en.mdx +7 -0
- package/src/media/mdx/Tooltip/event.tooltip.ru.mdx +8 -0
- package/src/media/mdx/Tooltip/slot.control.en.mdx +14 -0
- package/src/media/mdx/Tooltip/slot.control.ru.mdx +14 -0
- package/src/media/mdx/Tooltip/tooltip.en.mdx +34 -0
- package/src/media/mdx/Tooltip/tooltip.ru.mdx +34 -0
- package/src/media/mdx/Tooltip/wikiMdxTooltip.ts +31 -0
- package/src/media/mdx/Window/classes.ru.mdx +1 -1
- package/src/media/mdx/event/events.actions.en.mdx +44 -0
- package/src/media/mdx/event/events.actions.ru.mdx +44 -0
- package/src/media/mdx/event/events.inputStandard.en.mdx +6 -0
- package/src/media/mdx/event/events.inputStandard.ru.mdx +6 -0
- package/src/media/mdx/event/wikiMdxEvent.ts +20 -8
- package/src/media/mdx/expose/expose.descriptionId.en.mdx +6 -0
- package/src/media/mdx/expose/expose.descriptionId.ru.mdx +6 -0
- package/src/media/mdx/expose/expose.id.en.mdx +6 -0
- package/src/media/mdx/expose/expose.id.ru.mdx +6 -0
- package/src/media/mdx/expose/expose.labelId.en.mdx +6 -0
- package/src/media/mdx/expose/expose.labelId.ru.mdx +6 -0
- package/src/media/mdx/expose/wikiMdxExpose.ts +18 -0
- package/src/media/mdx/slot/body.en.mdx +6 -0
- package/src/media/mdx/slot/body.ru.mdx +6 -0
- package/src/media/mdx/slot/headline.en.mdx +7 -0
- package/src/media/mdx/slot/headline.ru.mdx +6 -0
- package/src/media/mdx/slot/leading.en.mdx +7 -0
- package/src/media/mdx/slot/leading.ru.mdx +7 -0
- package/src/media/mdx/slot/secondary.en.mdx +5 -0
- package/src/media/mdx/slot/secondary.ru.mdx +5 -0
- package/src/media/mdx/slot/trailing.en.mdx +7 -0
- package/src/media/mdx/slot/trailing.ru.mdx +7 -0
- package/src/media/mdx/slot/wikiMdxSlot.ts +30 -0
- package/src/media/mdx/style/isSkeleton.en.mdx +2 -2
- package/src/media/mdx/style/isSkeleton.ru.mdx +2 -2
- package/src/media/mdx/value/v-model-selected.en.mdx +28 -0
- package/src/media/mdx/value/v-model-selected.ru.mdx +28 -0
- package/src/media/mdx/value/v-model.en.mdx +26 -0
- package/src/media/mdx/value/v-model.ru.mdx +26 -0
- package/src/media/mdx/value/wikiMdxValue.ts +24 -3
- package/src/media/mdx/wikiMdx.ts +29 -1
- package/src/media/props/wiki.ts +42 -0
- package/src/media/props/wikiActions.ts +43 -0
- package/src/media/props/wikiActionsInclude.ts +62 -0
- package/src/media/props/wikiAnchor.ts +84 -0
- package/src/media/props/wikiAria.ts +102 -0
- package/src/media/props/wikiArrow.ts +24 -0
- package/src/media/props/wikiArrowInclude.ts +45 -0
- package/src/media/props/wikiBarsInclude.ts +80 -0
- package/src/media/props/wikiChipGroup.ts +39 -0
- package/src/media/props/wikiDialog.ts +34 -0
- package/src/media/props/wikiField.ts +0 -21
- package/src/media/props/wikiFieldCounterInclude.ts +78 -0
- package/src/media/props/wikiForm.ts +248 -0
- package/src/media/props/wikiHook.ts +20 -0
- package/src/media/props/wikiIcon.ts +3 -3
- package/src/media/props/wikiIconInclude.ts +319 -0
- package/src/media/props/wikiImage.ts +71 -19
- package/src/media/props/wikiInformation.ts +160 -0
- package/src/media/props/wikiInput.ts +34 -0
- package/src/media/props/wikiListItem.ts +20 -0
- package/src/media/props/wikiMask.ts +0 -10
- package/src/media/props/wikiMaskInclude.ts +54 -0
- package/src/media/props/wikiMenu.ts +0 -10
- package/src/media/props/wikiMotionTransform.ts +0 -10
- package/src/media/props/wikiOption.ts +113 -0
- package/src/media/props/wikiSelect.ts +68 -0
- package/src/media/props/wikiSelectValue.ts +30 -0
- package/src/media/props/wikiStatus.ts +29 -41
- package/src/media/props/wikiStyle.ts +154 -243
- package/src/media/props/wikiTechnical.ts +65 -0
- package/src/media/props/wikiText.ts +57 -0
- package/src/media/props/wikiTooltip.ts +53 -0
- package/src/media/props/wikiValue.ts +14 -203
- package/src/media/props/wikiWindow.ts +0 -31
- package/src/styles/storybookStyle.scss +3 -1
- package/src/types/storybookTypes.ts +26 -4
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { StorybookComponentsDescriptionItem } from '../../types/storybookTypes'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Descriptions for Tooltip component properties
|
|
5
|
+
*
|
|
6
|
+
* Описания свойств компонента Tooltip
|
|
7
|
+
*/
|
|
8
|
+
export const wikiDescriptionsTooltip: StorybookComponentsDescriptionItem = {
|
|
9
|
+
name: 'Tooltip',
|
|
10
|
+
description: {
|
|
11
|
+
en: 'Component for displaying a popup hint when hovering over an element',
|
|
12
|
+
ru: 'Компонент для отображения всплывающей подсказки при наведении на элемент'
|
|
13
|
+
},
|
|
14
|
+
possibilities: {
|
|
15
|
+
en: [
|
|
16
|
+
'displaying text or other content in a popup window',
|
|
17
|
+
'automatic positioning relative to the element',
|
|
18
|
+
'support for delay before showing and hiding',
|
|
19
|
+
'customizable indentation and padding',
|
|
20
|
+
'ability to control the open state',
|
|
21
|
+
'support for an arrow pointing to the element'
|
|
22
|
+
],
|
|
23
|
+
ru: [
|
|
24
|
+
'отображение текста или другого контента во всплывающем окне',
|
|
25
|
+
'автоматическое позиционирование относительно элемента',
|
|
26
|
+
'поддержка задержки перед показом и скрытием',
|
|
27
|
+
'настраиваемые отступы и поля',
|
|
28
|
+
'возможность управления состоянием открытия',
|
|
29
|
+
'поддержка стрелки, указывающей на элемент'
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
import: [],
|
|
33
|
+
render: `
|
|
34
|
+
<DesignComponent v-bind="args">
|
|
35
|
+
<template #control="{ binds }">
|
|
36
|
+
<span v-bind="binds">
|
|
37
|
+
Hover me
|
|
38
|
+
</span>
|
|
39
|
+
</template>
|
|
40
|
+
</DesignComponent>
|
|
41
|
+
`,
|
|
42
|
+
stories: [
|
|
43
|
+
{
|
|
44
|
+
id: 'TooltipAllSlots',
|
|
45
|
+
name: {
|
|
46
|
+
en: 'All slots demonstration',
|
|
47
|
+
ru: 'Демонстрация всех слотов'
|
|
48
|
+
},
|
|
49
|
+
template: `
|
|
50
|
+
<DesignComponent>
|
|
51
|
+
<template #control="{ binds }">
|
|
52
|
+
<button class="wiki-storybook-button" v-bind="binds">
|
|
53
|
+
Hover me (All Slots)
|
|
54
|
+
</button>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<template #default>
|
|
58
|
+
Default Slot
|
|
59
|
+
</template>
|
|
60
|
+
|
|
61
|
+
<template #description>
|
|
62
|
+
Description Slot
|
|
63
|
+
</template>
|
|
64
|
+
|
|
65
|
+
<template #body>
|
|
66
|
+
<div class="wiki-storybook-item--padding">
|
|
67
|
+
Body Slot Content
|
|
68
|
+
</div>
|
|
69
|
+
</template>
|
|
70
|
+
</DesignComponent>
|
|
71
|
+
`
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
documentation: {
|
|
75
|
+
body: `
|
|
76
|
+
<StorybookDescriptions componentName={'Tooltip'} type={'tooltip'}/>
|
|
77
|
+
`,
|
|
78
|
+
events: `
|
|
79
|
+
<StorybookDescriptions componentName={'Tooltip'} type={'event.tooltip'}/>
|
|
80
|
+
`,
|
|
81
|
+
slots: `
|
|
82
|
+
<Canvas of={Component.TooltipAllSlots}/>
|
|
83
|
+
<StorybookDescriptions componentName={'Tooltip'} type={'slot.control'}/>
|
|
84
|
+
<StorybookDescriptions componentName={'Slot'} type={'default'}/>
|
|
85
|
+
<StorybookDescriptions componentName={'Slot'} type={'description'}/>
|
|
86
|
+
<StorybookDescriptions componentName={'Slot'} type={'body'}/>
|
|
87
|
+
`
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -45,6 +45,42 @@ applyTemplate('This is [bold]bold text[/bold]', { bold: '<b>[content]</b>' }) //
|
|
|
45
45
|
applyTemplate('Text with [red]colored[/red] word', { red: '<span style="color:red">[content]</span>' })
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
## `blobToBase64`
|
|
49
|
+
|
|
50
|
+
Converts a Blob to a Base64 string (data URL).
|
|
51
|
+
|
|
52
|
+
**Parameters:**
|
|
53
|
+
- `blob: Blob` — Blob object to convert
|
|
54
|
+
|
|
55
|
+
```javascript
|
|
56
|
+
import { blobToBase64 } from '@dxtmisha/functional'
|
|
57
|
+
|
|
58
|
+
const blob = new Blob(['Hello World'], { type: 'text/plain' })
|
|
59
|
+
const base64 = await blobToBase64(blob)
|
|
60
|
+
// 'data:text/plain;base64,SGVsbG8gV29ybGQ='
|
|
61
|
+
|
|
62
|
+
// Using with images
|
|
63
|
+
const imageBlob = new Blob([imageData], { type: 'image/png' })
|
|
64
|
+
const imageBase64 = await blobToBase64(imageBlob)
|
|
65
|
+
// 'data:image/png;base64,iVBORw0KGgo...'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
## `encodeAttribute`
|
|
70
|
+
|
|
71
|
+
Encodes special characters in a string for safe use in HTML attributes. Converts characters `&`, `<`, `>`, `"`, `'` into corresponding HTML entities to prevent XSS attacks and ensure correct display.
|
|
72
|
+
|
|
73
|
+
**Parameters:**
|
|
74
|
+
- `text: string` — text to encode
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
import { encodeAttribute } from '@dxtmisha/functional'
|
|
78
|
+
|
|
79
|
+
encodeAttribute('Hello & "World"') // 'Hello & "World"'
|
|
80
|
+
encodeAttribute('<script>alert("XSS")</script>') // '<script>alert("XSS")</script>'
|
|
81
|
+
encodeAttribute("It's a test") // 'It's a test'
|
|
82
|
+
```
|
|
83
|
+
|
|
48
84
|
## `replaceRecursive`
|
|
49
85
|
|
|
50
86
|
Recursively replaces values in an object or array.
|
|
@@ -78,6 +114,37 @@ replaceTemplate('User [id]: [name]', {id: '123', name: 'John'}) // 'User 123: Jo
|
|
|
78
114
|
replaceTemplate('Time: [time]', {time: () => new Date().toLocaleString()}) // with function
|
|
79
115
|
```
|
|
80
116
|
|
|
117
|
+
## `resizeImageByMax`
|
|
118
|
+
|
|
119
|
+
Resizes an image to fit within a maximum size constraint.
|
|
120
|
+
|
|
121
|
+
**Parameters:**
|
|
122
|
+
- `image: HTMLImageElement | string` — image element or URL
|
|
123
|
+
- `maxSize: number` — maximum size for width or height
|
|
124
|
+
- `type: 'auto' | 'width' | 'height'` — resize type (default 'auto')
|
|
125
|
+
- `typeData?: string` — data type for the resulting image (e.g., 'image/png', 'image/jpeg')
|
|
126
|
+
|
|
127
|
+
```javascript
|
|
128
|
+
import { resizeImageByMax } from '@dxtmisha/functional'
|
|
129
|
+
|
|
130
|
+
// Automatic scaling (by larger dimension)
|
|
131
|
+
const image = document.querySelector('img')
|
|
132
|
+
const resized = resizeImageByMax(image, 800) // data URL
|
|
133
|
+
// Image 1200x800 becomes 800x533
|
|
134
|
+
|
|
135
|
+
// Scale by width
|
|
136
|
+
resizeImageByMax(image, 600, 'width')
|
|
137
|
+
// Width will be 600px, height proportional
|
|
138
|
+
|
|
139
|
+
// Scale by height
|
|
140
|
+
resizeImageByMax(image, 400, 'height')
|
|
141
|
+
// Height will be 400px, width proportional
|
|
142
|
+
|
|
143
|
+
// With specified data type
|
|
144
|
+
resizeImageByMax(image, 1024, 'auto', 'image/jpeg')
|
|
145
|
+
// Returns JPEG data URL
|
|
146
|
+
```
|
|
147
|
+
|
|
81
148
|
## `secondToTime`
|
|
82
149
|
|
|
83
150
|
Converts seconds to time format (hours:minutes:seconds).
|
|
@@ -37,6 +37,31 @@ const copy = copyObject(original)
|
|
|
37
37
|
copy.data.age = 25 // original.data.age remains 30
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
## `copyObjectLite`
|
|
41
|
+
|
|
42
|
+
Creates a shallow copy of a simple object. If the `source` parameter is passed, creates a new object and merges `value` and `source`.
|
|
43
|
+
|
|
44
|
+
**Parameters:**
|
|
45
|
+
- `value: T` — object to copy
|
|
46
|
+
- `source?: any` — additional properties to copy (optional)
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
import { copyObjectLite } from '@dxtmisha/functional'
|
|
50
|
+
|
|
51
|
+
const original = { name: 'John', age: 30 }
|
|
52
|
+
const copy = copyObjectLite(original) // { name: 'John', age: 30 }
|
|
53
|
+
|
|
54
|
+
// With additional properties
|
|
55
|
+
const extended = copyObjectLite(original, { city: 'Moscow' })
|
|
56
|
+
// { name: 'John', age: 30, city: 'Moscow' }
|
|
57
|
+
|
|
58
|
+
// Overriding properties
|
|
59
|
+
const overridden = copyObjectLite(original, { age: 25 })
|
|
60
|
+
// { name: 'John', age: 25 }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Note:** This is a shallow copy — nested objects retain references to the originals. For deep cloning use `copyObject`, `structuredClone` or `_.cloneDeep`.
|
|
64
|
+
|
|
40
65
|
## `forEach`
|
|
41
66
|
|
|
42
67
|
Universal iteration function for arrays, objects and Map.
|
|
@@ -259,7 +259,7 @@ const eventRef = new EventRef(buttonRef, containerRef, 'click')
|
|
|
259
259
|
|
|
260
260
|
### Vue Component with Reactive Events
|
|
261
261
|
|
|
262
|
-
```
|
|
262
|
+
```html
|
|
263
263
|
<template>
|
|
264
264
|
<button ref="buttonEl" @click="handleClick">Click me</button>
|
|
265
265
|
<input ref="inputEl" placeholder="Type...">
|
|
@@ -6,6 +6,62 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
6
6
|
|
|
7
7
|
A set of functions for universal execution of synchronous and asynchronous operations.
|
|
8
8
|
|
|
9
|
+
## `computedByLanguage`
|
|
10
|
+
|
|
11
|
+
Creates a reactive computed property whose value depends on the current language and specified conditions.
|
|
12
|
+
|
|
13
|
+
**Parameters:**
|
|
14
|
+
- `getter: ComputedGetter<R>` — function that returns the main value depending on the language
|
|
15
|
+
- `getterNone: R | (() => R)` — alternative value if conditions are not met or getter returns undefined (default undefined)
|
|
16
|
+
- `conditions: () => boolean` — condition for calling the main getter (optional)
|
|
17
|
+
- `debugOptions: DebuggerOptions` — Vue debug options (optional)
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
import { computedByLanguage } from '@dxtmisha/functional'
|
|
21
|
+
import { ref } from 'vue'
|
|
22
|
+
|
|
23
|
+
// Simple example with translations
|
|
24
|
+
const title = computedByLanguage(
|
|
25
|
+
() => {
|
|
26
|
+
const lang = GeoRef.get().value
|
|
27
|
+
return lang === 'ru' ? 'Заголовок' : 'Title'
|
|
28
|
+
},
|
|
29
|
+
'Default Title'
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
// With condition
|
|
33
|
+
const description = computedByLanguage(
|
|
34
|
+
() => {
|
|
35
|
+
const lang = GeoRef.get().value
|
|
36
|
+
const translations = {
|
|
37
|
+
ru: 'Описание на русском',
|
|
38
|
+
en: 'Description in English'
|
|
39
|
+
}
|
|
40
|
+
return translations[lang]
|
|
41
|
+
},
|
|
42
|
+
() => 'Default description',
|
|
43
|
+
() => showDescription.value // show condition
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
// Usage in component
|
|
47
|
+
export default {
|
|
48
|
+
setup() {
|
|
49
|
+
const showText = ref(true)
|
|
50
|
+
|
|
51
|
+
const greeting = computedByLanguage(
|
|
52
|
+
() => {
|
|
53
|
+
const lang = GeoRef.get().value
|
|
54
|
+
return lang === 'ru' ? 'Привет, мир!' : 'Hello, world!'
|
|
55
|
+
},
|
|
56
|
+
'Greeting',
|
|
57
|
+
() => showText.value
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
return { greeting }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
9
65
|
## `executeFunction`
|
|
10
66
|
|
|
11
67
|
Executes a function and returns its result, or returns input data if it's not a function.
|
|
@@ -127,3 +183,5 @@ export default {
|
|
|
127
183
|
}
|
|
128
184
|
}
|
|
129
185
|
```
|
|
186
|
+
|
|
187
|
+
|
|
@@ -141,7 +141,7 @@ const flag = new GeoFlagRef() // will use de-DE
|
|
|
141
141
|
|
|
142
142
|
### Vue Component with Global Geolocation
|
|
143
143
|
|
|
144
|
-
```
|
|
144
|
+
```html
|
|
145
145
|
<template>
|
|
146
146
|
<div class="geo-info">
|
|
147
147
|
<h2>Current Location</h2>
|
|
@@ -202,7 +202,7 @@ GeoRef.set(userLocale)
|
|
|
202
202
|
|
|
203
203
|
### Global Locale Provider
|
|
204
204
|
|
|
205
|
-
```
|
|
205
|
+
```html
|
|
206
206
|
<!-- App.vue -->
|
|
207
207
|
<template>
|
|
208
208
|
<div class="app">
|