@dxtmisha/wiki 0.24.2 → 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/library.ts +7 -7
- 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/wikiDescriptionsBars.ts +1 -3
- package/src/media/descriptions/wikiDescriptionsBlock.ts +97 -0
- package/src/media/descriptions/wikiDescriptionsButton.ts +0 -1
- package/src/media/descriptions/wikiDescriptionsCell.ts +3 -3
- package/src/media/descriptions/wikiDescriptionsChip.ts +0 -1
- package/src/media/descriptions/wikiDescriptionsChipGroup.ts +168 -0
- package/src/media/descriptions/wikiDescriptionsDialog.ts +182 -0
- package/src/media/descriptions/wikiDescriptionsField.ts +3 -4
- package/src/media/descriptions/wikiDescriptionsFieldCounter.ts +6 -6
- package/src/media/descriptions/wikiDescriptionsFieldMessage.ts +1 -2
- package/src/media/descriptions/wikiDescriptionsImage.ts +43 -8
- package/src/media/descriptions/wikiDescriptionsInput.ts +257 -0
- package/src/media/descriptions/wikiDescriptionsList.ts +1 -5
- package/src/media/descriptions/wikiDescriptionsListGroup.ts +2 -3
- package/src/media/descriptions/wikiDescriptionsListItem.ts +1 -3
- package/src/media/descriptions/wikiDescriptionsListMenu.ts +2 -9
- package/src/media/descriptions/wikiDescriptionsMask.ts +12 -0
- package/src/media/descriptions/wikiDescriptionsMenu.ts +126 -14
- package/src/media/descriptions/wikiDescriptionsModal.ts +145 -0
- package/src/media/descriptions/wikiDescriptionsMotionTransform.ts +4 -10
- package/src/media/descriptions/wikiDescriptionsScrollbar.ts +1 -7
- package/src/media/descriptions/wikiDescriptionsSelect.ts +209 -0
- package/src/media/descriptions/wikiDescriptionsSelectValue.ts +78 -0
- package/src/media/descriptions/wikiDescriptionsSkeleton.ts +1 -0
- package/src/media/descriptions/wikiDescriptionsTextareaAutosize.ts +50 -0
- package/src/media/descriptions/wikiDescriptionsTooltip.ts +89 -0
- package/src/media/descriptions/wikiDescriptionsWindow.ts +5 -22
- package/src/media/functional/en/broadcastMessage.mdx +307 -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/broadcastMessage.mdx +305 -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/Badge/badge.en.mdx +85 -7
- package/src/media/mdx/Badge/badge.ru.mdx +85 -7
- package/src/media/mdx/Badge/dot.en.mdx +16 -12
- package/src/media/mdx/Badge/dot.ru.mdx +16 -12
- package/src/media/mdx/Badge/outline.en.mdx +12 -13
- package/src/media/mdx/Badge/outline.ru.mdx +12 -13
- package/src/media/mdx/Badge/primary.en.mdx +12 -12
- package/src/media/mdx/Badge/primary.ru.mdx +12 -12
- package/src/media/mdx/Badge/secondary.en.mdx +12 -13
- package/src/media/mdx/Badge/secondary.ru.mdx +12 -13
- package/src/media/mdx/Bars/action.en.mdx +72 -28
- package/src/media/mdx/Bars/action.ru.mdx +73 -29
- package/src/media/mdx/Bars/bars.en.mdx +90 -15
- package/src/media/mdx/Bars/bars.ru.mdx +91 -15
- package/src/media/mdx/Bars/slots.en.mdx +33 -0
- package/src/media/mdx/Bars/slots.ru.mdx +33 -0
- package/src/media/mdx/Bars/v-model.en.mdx +23 -14
- package/src/media/mdx/Bars/v-model.ru.mdx +23 -14
- package/src/media/mdx/Bars/wikiMdxBars.ts +5 -11
- 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/Button/button.en.mdx +89 -1
- package/src/media/mdx/Button/button.ru.mdx +89 -1
- package/src/media/mdx/Button/outline.en.mdx +12 -14
- package/src/media/mdx/Button/outline.ru.mdx +12 -14
- package/src/media/mdx/Button/primary.en.mdx +12 -19
- package/src/media/mdx/Button/primary.ru.mdx +12 -19
- package/src/media/mdx/Button/secondary.en.mdx +12 -17
- package/src/media/mdx/Button/secondary.ru.mdx +12 -17
- package/src/media/mdx/Button/text.en.mdx +12 -11
- package/src/media/mdx/Button/text.ru.mdx +12 -11
- package/src/media/mdx/Cell/cell.en.mdx +50 -9
- package/src/media/mdx/Cell/cell.ru.mdx +50 -9
- package/src/media/mdx/Cell/slots.en.mdx +82 -0
- package/src/media/mdx/Cell/slots.ru.mdx +83 -0
- package/src/media/mdx/Cell/wikiMdxCell.ts +6 -12
- package/src/media/mdx/Chip/assistive.en.mdx +12 -14
- package/src/media/mdx/Chip/assistive.ru.mdx +12 -14
- package/src/media/mdx/Chip/chip.en.mdx +69 -9
- package/src/media/mdx/Chip/chip.ru.mdx +69 -9
- package/src/media/mdx/Chip/input.en.mdx +12 -19
- package/src/media/mdx/Chip/input.ru.mdx +12 -19
- 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 +83 -17
- package/src/media/mdx/Field/arrows.ru.mdx +83 -17
- package/src/media/mdx/Field/cancel.en.mdx +47 -10
- package/src/media/mdx/Field/cancel.ru.mdx +47 -10
- package/src/media/mdx/Field/field.en.mdx +45 -15
- package/src/media/mdx/Field/field.ru.mdx +45 -15
- package/src/media/mdx/Field/slots.en.mdx +138 -0
- package/src/media/mdx/Field/slots.ru.mdx +138 -0
- package/src/media/mdx/Field/value.en.mdx +49 -28
- package/src/media/mdx/Field/value.ru.mdx +49 -28
- package/src/media/mdx/Field/width.en.mdx +21 -19
- package/src/media/mdx/Field/width.ru.mdx +21 -19
- package/src/media/mdx/Field/wikiMdxField.ts +14 -26
- package/src/media/mdx/FieldCounter/fieldCounter.en.mdx +52 -14
- package/src/media/mdx/FieldCounter/fieldCounter.ru.mdx +55 -14
- package/src/media/mdx/FieldCounter/templates.en.mdx +26 -6
- package/src/media/mdx/FieldCounter/templates.ru.mdx +25 -5
- package/src/media/mdx/FieldLabel/fieldLabel.en.mdx +56 -14
- package/src/media/mdx/FieldLabel/fieldLabel.ru.mdx +56 -14
- package/src/media/mdx/FieldMessage/fieldMessage.en.mdx +58 -14
- package/src/media/mdx/FieldMessage/fieldMessage.ru.mdx +58 -14
- package/src/media/mdx/FieldMessage/slots.en.mdx +45 -0
- package/src/media/mdx/FieldMessage/slots.ru.mdx +45 -0
- package/src/media/mdx/FieldMessage/wikiMdxFieldMessage.ts +6 -12
- package/src/media/mdx/Icon/expose.isActive.en.mdx +2 -10
- package/src/media/mdx/Icon/expose.isActive.ru.mdx +2 -10
- package/src/media/mdx/Icon/icon.en.mdx +43 -9
- package/src/media/mdx/Icon/icon.ru.mdx +27 -28
- package/src/media/mdx/Image/adaptive.en.mdx +63 -20
- package/src/media/mdx/Image/adaptive.ru.mdx +62 -25
- package/src/media/mdx/Image/event.load.en.mdx +37 -2
- package/src/media/mdx/Image/event.load.ru.mdx +34 -7
- package/src/media/mdx/Image/{expose.type.ru.mdx → expose.en.mdx} +11 -1
- package/src/media/mdx/Image/expose.ru.mdx +31 -0
- package/src/media/mdx/Image/image.en.mdx +46 -0
- package/src/media/mdx/Image/image.ru.mdx +47 -0
- 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/size.en.mdx +19 -19
- package/src/media/mdx/Image/size.ru.mdx +19 -23
- package/src/media/mdx/Image/value.en.mdx +10 -27
- package/src/media/mdx/Image/value.ru.mdx +10 -29
- package/src/media/mdx/Image/wikiMdxImage.ts +17 -11
- 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/List/event.close.en.mdx +5 -8
- package/src/media/mdx/List/event.close.ru.mdx +5 -8
- package/src/media/mdx/List/list.en.mdx +56 -14
- package/src/media/mdx/List/list.ru.mdx +56 -14
- package/src/media/mdx/List/lite.en.mdx +17 -12
- package/src/media/mdx/List/lite.ru.mdx +17 -12
- package/src/media/mdx/List/slot.html.en.mdx +72 -21
- package/src/media/mdx/List/slot.html.ru.mdx +72 -21
- package/src/media/mdx/ListGroup/listGroup.en.mdx +55 -1
- package/src/media/mdx/ListGroup/listGroup.ru.mdx +55 -1
- package/src/media/mdx/ListGroup/slots.en.mdx +10 -0
- package/src/media/mdx/ListGroup/slots.ru.mdx +10 -0
- package/src/media/mdx/ListGroup/wikiMdxListGroup.ts +6 -12
- package/src/media/mdx/ListItem/basic.en.mdx +47 -10
- package/src/media/mdx/ListItem/basic.ru.mdx +46 -9
- package/src/media/mdx/ListItem/fill.en.mdx +22 -8
- package/src/media/mdx/ListItem/fill.ru.mdx +22 -8
- package/src/media/mdx/ListItem/slots.en.mdx +7 -0
- package/src/media/mdx/ListItem/slots.ru.mdx +7 -0
- package/src/media/mdx/ListItem/wikiMdxListItem.ts +7 -13
- package/src/media/mdx/ListMenu/listMenu.en.mdx +62 -1
- package/src/media/mdx/ListMenu/listMenu.ru.mdx +62 -1
- package/src/media/mdx/Mask/basic.en.mdx +68 -16
- package/src/media/mdx/Mask/basic.ru.mdx +70 -11
- package/src/media/mdx/Mask/dateTypes.en.mdx +82 -68
- package/src/media/mdx/Mask/dateTypes.ru.mdx +82 -68
- package/src/media/mdx/Mask/expose.en.mdx +20 -0
- package/src/media/mdx/Mask/expose.ru.mdx +20 -0
- package/src/media/mdx/Mask/groupSave.en.mdx +13 -46
- package/src/media/mdx/Mask/groupSave.ru.mdx +13 -46
- package/src/media/mdx/Mask/mask.en.mdx +12 -66
- package/src/media/mdx/Mask/mask.ru.mdx +12 -66
- package/src/media/mdx/Mask/match.en.mdx +16 -24
- package/src/media/mdx/Mask/match.ru.mdx +16 -24
- package/src/media/mdx/Mask/numberTypes.en.mdx +64 -52
- package/src/media/mdx/Mask/numberTypes.ru.mdx +64 -52
- package/src/media/mdx/Mask/pattern.en.mdx +63 -75
- package/src/media/mdx/Mask/pattern.ru.mdx +63 -75
- package/src/media/mdx/Mask/special.en.mdx +174 -97
- package/src/media/mdx/Mask/special.ru.mdx +174 -97
- package/src/media/mdx/Mask/type.en.mdx +12 -36
- package/src/media/mdx/Mask/type.ru.mdx +11 -35
- package/src/media/mdx/Mask/visible.en.mdx +33 -41
- package/src/media/mdx/Mask/visible.ru.mdx +32 -40
- package/src/media/mdx/Mask/wikiMdxMask.ts +6 -0
- package/src/media/mdx/Menu/ajax.en.mdx +44 -51
- package/src/media/mdx/Menu/ajax.ru.mdx +44 -52
- 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/menu.en.mdx +63 -1
- package/src/media/mdx/Menu/menu.ru.mdx +64 -1
- 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 +100 -0
- package/src/media/mdx/Menu/slots.ru.mdx +100 -0
- package/src/media/mdx/Menu/wikiMdxMenu.ts +27 -28
- 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/animationHeadPosition.en.mdx +10 -22
- package/src/media/mdx/MotionTransform/animationHeadPosition.ru.mdx +10 -22
- package/src/media/mdx/MotionTransform/classes.en.mdx +18 -25
- package/src/media/mdx/MotionTransform/classes.ru.mdx +18 -25
- package/src/media/mdx/MotionTransform/events.en.mdx +31 -43
- package/src/media/mdx/MotionTransform/events.ru.mdx +31 -43
- package/src/media/mdx/MotionTransform/expose.isShow.en.mdx +2 -4
- package/src/media/mdx/MotionTransform/expose.isShow.ru.mdx +2 -4
- 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/ignore.en.mdx +22 -24
- package/src/media/mdx/MotionTransform/ignore.ru.mdx +22 -24
- package/src/media/mdx/MotionTransform/motionTransform.en.mdx +44 -15
- package/src/media/mdx/MotionTransform/motionTransform.ru.mdx +44 -15
- package/src/media/mdx/MotionTransform/slots.en.mdx +92 -0
- package/src/media/mdx/MotionTransform/slots.ru.mdx +92 -0
- package/src/media/mdx/MotionTransform/v-model.en.mdx +23 -14
- package/src/media/mdx/MotionTransform/v-model.ru.mdx +23 -14
- package/src/media/mdx/MotionTransform/wikiMdxMotionTransform.ts +11 -17
- package/src/media/mdx/Progress/circular.en.mdx +7 -20
- package/src/media/mdx/Progress/circular.ru.mdx +7 -20
- package/src/media/mdx/Progress/delays.en.mdx +6 -13
- package/src/media/mdx/Progress/delays.ru.mdx +6 -13
- package/src/media/mdx/Progress/linear.en.mdx +9 -23
- package/src/media/mdx/Progress/linear.ru.mdx +9 -23
- package/src/media/mdx/Progress/progress.en.mdx +67 -5
- package/src/media/mdx/Progress/progress.ru.mdx +67 -5
- package/src/media/mdx/Progress/values.en.mdx +6 -28
- package/src/media/mdx/Progress/values.ru.mdx +6 -29
- package/src/media/mdx/Ripple/ripple.en.mdx +34 -40
- package/src/media/mdx/Ripple/ripple.ru.mdx +34 -40
- package/src/media/mdx/Scrollbar/emits-include.en.mdx +38 -0
- package/src/media/mdx/Scrollbar/emits-include.ru.mdx +38 -0
- package/src/media/mdx/Scrollbar/emits.en.mdx +38 -0
- package/src/media/mdx/Scrollbar/emits.ru.mdx +38 -0
- package/src/media/mdx/Scrollbar/scrollbar.en.mdx +38 -2
- package/src/media/mdx/Scrollbar/scrollbar.ru.mdx +38 -2
- package/src/media/mdx/Scrollbar/wikiMdxScrollbar.ts +12 -43
- 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/Skeleton/classes.en.mdx +13 -0
- package/src/media/mdx/Skeleton/classes.ru.mdx +13 -0
- package/src/media/mdx/Skeleton/expose.isActive.en.mdx +7 -28
- package/src/media/mdx/Skeleton/expose.isActive.ru.mdx +7 -28
- package/src/media/mdx/Skeleton/skeleton.en.mdx +37 -36
- package/src/media/mdx/Skeleton/skeleton.ru.mdx +37 -36
- package/src/media/mdx/Skeleton/wikiMdxSkeleton.ts +7 -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/axis.en.mdx +11 -19
- package/src/media/mdx/Window/axis.ru.mdx +11 -19
- package/src/media/mdx/Window/classes.en.mdx +9 -26
- package/src/media/mdx/Window/classes.ru.mdx +9 -26
- package/src/media/mdx/Window/event.window.en.mdx +26 -8
- package/src/media/mdx/Window/event.window.ru.mdx +26 -8
- package/src/media/mdx/Window/expose.en.mdx +44 -0
- package/src/media/mdx/Window/expose.ru.mdx +44 -0
- package/src/media/mdx/Window/hooks.en.mdx +29 -50
- package/src/media/mdx/Window/hooks.ru.mdx +31 -52
- package/src/media/mdx/Window/slots.en.mdx +168 -0
- package/src/media/mdx/Window/slots.ru.mdx +168 -0
- package/src/media/mdx/Window/v-model.en.mdx +20 -11
- package/src/media/mdx/Window/v-model.ru.mdx +19 -11
- package/src/media/mdx/Window/wikiMdxWindow.ts +11 -41
- package/src/media/mdx/Window/window.en.mdx +55 -1
- package/src/media/mdx/Window/window.ru.mdx +55 -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.bars.en.mdx +50 -0
- package/src/media/mdx/event/events.bars.ru.mdx +50 -0
- package/src/media/mdx/event/events.beforeinput.en.mdx +13 -0
- package/src/media/mdx/event/events.beforeinput.ru.mdx +13 -0
- package/src/media/mdx/event/events.click.en.mdx +36 -0
- package/src/media/mdx/event/events.click.ru.mdx +36 -0
- package/src/media/mdx/event/events.focus.en.mdx +13 -0
- package/src/media/mdx/event/events.focus.ru.mdx +13 -0
- package/src/media/mdx/event/events.input.en.mdx +89 -0
- package/src/media/mdx/event/events.input.ru.mdx +90 -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/events.keyboard.en.mdx +13 -0
- package/src/media/mdx/event/events.keyboard.ru.mdx +13 -0
- package/src/media/mdx/event/events.paste.en.mdx +6 -0
- package/src/media/mdx/event/events.paste.ru.mdx +6 -0
- package/src/media/mdx/event/events.reset.en.mdx +6 -0
- package/src/media/mdx/event/events.reset.ru.mdx +6 -0
- package/src/media/mdx/event/wikiMdxEvent.ts +50 -73
- package/src/media/mdx/expose/expose.clear.en.mdx +3 -0
- package/src/media/mdx/expose/expose.clear.ru.mdx +3 -0
- 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.detail.en.mdx +5 -0
- package/src/media/mdx/expose/{detail.ru.mdx → expose.detail.ru.mdx} +1 -3
- 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/expose.open.en.mdx +5 -0
- package/src/media/mdx/expose/expose.open.ru.mdx +5 -0
- package/src/media/mdx/expose/expose.selected.en.mdx +23 -0
- package/src/media/mdx/expose/expose.selected.ru.mdx +23 -0
- package/src/media/mdx/expose/{value.en.mdx → expose.value.en.mdx} +1 -3
- package/src/media/mdx/expose/{value.ru.mdx → expose.value.ru.mdx} +1 -3
- package/src/media/mdx/expose/wikiMdxExpose.ts +41 -29
- 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/caption.en.mdx +2 -7
- package/src/media/mdx/slot/caption.ru.mdx +2 -7
- package/src/media/mdx/slot/control.en.mdx +4 -5
- package/src/media/mdx/slot/control.ru.mdx +4 -5
- package/src/media/mdx/slot/default.en.mdx +2 -7
- package/src/media/mdx/slot/default.ru.mdx +2 -7
- package/src/media/mdx/slot/description.en.mdx +2 -7
- package/src/media/mdx/slot/description.ru.mdx +2 -7
- package/src/media/mdx/slot/footer.en.mdx +4 -5
- package/src/media/mdx/slot/footer.ru.mdx +4 -5
- 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/label.en.mdx +2 -8
- package/src/media/mdx/slot/label.ru.mdx +2 -8
- 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/prefix.en.mdx +1 -4
- package/src/media/mdx/slot/prefix.ru.mdx +1 -4
- 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/suffix.en.mdx +1 -4
- package/src/media/mdx/slot/suffix.ru.mdx +1 -4
- 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 +29 -5
- package/src/media/mdx/style/adaptive.en.mdx +6 -16
- package/src/media/mdx/style/adaptive.ru.mdx +6 -16
- package/src/media/mdx/style/asPalette.en.mdx +13 -5
- package/src/media/mdx/style/asPalette.ru.mdx +13 -5
- package/src/media/mdx/style/dir.en.mdx +14 -7
- package/src/media/mdx/style/dir.ru.mdx +14 -7
- package/src/media/mdx/style/isSkeleton.en.mdx +20 -6
- package/src/media/mdx/style/isSkeleton.ru.mdx +19 -5
- package/src/media/mdx/value/highlight.en.mdx +19 -12
- package/src/media/mdx/value/highlight.ru.mdx +19 -12
- package/src/media/mdx/value/labelNumber.en.mdx +39 -20
- package/src/media/mdx/value/labelNumber.ru.mdx +39 -20
- 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/value.en.mdx +6 -12
- package/src/media/mdx/value/value.ru.mdx +6 -12
- 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/media/styles/color.md +1 -0
- package/src/media/styles/en/about.mdx +79 -0
- package/src/media/styles/en/color.mdx +711 -0
- package/src/media/styles/en/content.mdx +29 -0
- package/src/media/styles/en/dimension.mdx +233 -0
- package/src/media/styles/en/dir.mdx +193 -0
- package/src/media/styles/en/flex.mdx +249 -0
- package/src/media/styles/en/font.mdx +171 -0
- package/src/media/styles/en/margin.mdx +115 -0
- package/src/media/styles/en/media.mdx +133 -0
- package/src/media/styles/en/padding.mdx +115 -0
- package/src/media/styles/en/position.mdx +183 -0
- package/src/media/styles/en/rules.mdx +117 -0
- package/src/media/styles/en/scrollbar.mdx +27 -0
- package/src/media/styles/en/selector.mdx +153 -0
- package/src/media/styles/en/transform.mdx +114 -0
- package/src/media/styles/ru/about.mdx +78 -0
- package/src/media/styles/ru/color.mdx +711 -0
- package/src/media/styles/ru/content.mdx +30 -0
- package/src/media/styles/ru/dimension.mdx +233 -0
- package/src/media/styles/ru/dir.mdx +193 -0
- package/src/media/styles/ru/flex.mdx +249 -0
- package/src/media/styles/ru/font.mdx +171 -0
- package/src/media/styles/ru/margin.mdx +115 -0
- package/src/media/styles/ru/media.mdx +133 -0
- package/src/media/styles/ru/padding.mdx +115 -0
- package/src/media/styles/ru/position.mdx +183 -0
- package/src/media/styles/ru/rules.mdx +117 -0
- package/src/media/styles/ru/scrollbar.mdx +27 -0
- package/src/media/styles/ru/selector.mdx +153 -0
- package/src/media/styles/ru/transform.mdx +114 -0
- package/src/styles/storybookStyle.scss +4 -1
- package/src/types/storybookTypes.ts +26 -4
- package/src/media/mdx/Bars/slot.actionBars.en.mdx +0 -12
- package/src/media/mdx/Bars/slot.actionBars.ru.mdx +0 -11
- package/src/media/mdx/Bars/slot.bars.en.mdx +0 -12
- package/src/media/mdx/Bars/slot.bars.ru.mdx +0 -11
- package/src/media/mdx/Cell/slot.body.en.mdx +0 -7
- package/src/media/mdx/Cell/slot.body.ru.mdx +0 -7
- package/src/media/mdx/Cell/slot.trailing.en.mdx +0 -7
- package/src/media/mdx/Cell/slot.trailing.ru.mdx +0 -7
- package/src/media/mdx/Field/slot.default.en.mdx +0 -9
- package/src/media/mdx/Field/slot.default.ru.mdx +0 -9
- package/src/media/mdx/Field/slot.leading.en.mdx +0 -10
- package/src/media/mdx/Field/slot.leading.ru.mdx +0 -10
- package/src/media/mdx/Field/slot.trailing.en.mdx +0 -10
- package/src/media/mdx/Field/slot.trailing.ru.mdx +0 -10
- package/src/media/mdx/FieldMessage/slot.helper.en.mdx +0 -12
- package/src/media/mdx/FieldMessage/slot.helper.ru.mdx +0 -12
- package/src/media/mdx/FieldMessage/slot.validation.en.mdx +0 -12
- package/src/media/mdx/FieldMessage/slot.validation.ru.mdx +0 -12
- package/src/media/mdx/Image/expose.data.en.mdx +0 -13
- package/src/media/mdx/Image/expose.data.ru.mdx +0 -13
- package/src/media/mdx/Image/expose.type.en.mdx +0 -21
- package/src/media/mdx/ListGroup/slot.head.en.mdx +0 -8
- package/src/media/mdx/ListGroup/slot.head.ru.mdx +0 -8
- package/src/media/mdx/ListGroup/slot.list.en.mdx +0 -8
- package/src/media/mdx/ListGroup/slot.list.ru.mdx +0 -8
- package/src/media/mdx/ListItem/slot.body.en.mdx +0 -7
- package/src/media/mdx/ListItem/slot.body.ru.mdx +0 -7
- package/src/media/mdx/ListItem/slot.trailing.en.mdx +0 -7
- package/src/media/mdx/ListItem/slot.trailing.ru.mdx +0 -7
- package/src/media/mdx/Menu/slot.contextBottom.en.mdx +0 -9
- package/src/media/mdx/Menu/slot.contextBottom.ru.mdx +0 -9
- package/src/media/mdx/Menu/slot.contextTop.en.mdx +0 -9
- package/src/media/mdx/Menu/slot.contextTop.ru.mdx +0 -9
- package/src/media/mdx/Menu/slot.control.en.mdx +0 -9
- package/src/media/mdx/Menu/slot.control.ru.mdx +0 -9
- package/src/media/mdx/Menu/slot.footer.en.mdx +0 -9
- package/src/media/mdx/Menu/slot.footer.ru.mdx +0 -9
- package/src/media/mdx/Menu/slot.title.en.mdx +0 -9
- package/src/media/mdx/Menu/slot.title.ru.mdx +0 -9
- package/src/media/mdx/MotionTransform/slot.body.en.mdx +0 -11
- package/src/media/mdx/MotionTransform/slot.body.ru.mdx +0 -11
- package/src/media/mdx/MotionTransform/slot.head.en.mdx +0 -11
- package/src/media/mdx/MotionTransform/slot.head.ru.mdx +0 -11
- package/src/media/mdx/MotionTransform/slot.params.en.mdx +0 -61
- package/src/media/mdx/MotionTransform/slot.params.ru.mdx +0 -61
- package/src/media/mdx/Scrollbar/event.bottom.en.mdx +0 -12
- package/src/media/mdx/Scrollbar/event.bottom.ru.mdx +0 -12
- package/src/media/mdx/Scrollbar/event.edge.en.mdx +0 -14
- package/src/media/mdx/Scrollbar/event.edge.ru.mdx +0 -14
- package/src/media/mdx/Scrollbar/event.leaveBottom.en.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.leaveBottom.ru.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.leaveTop.en.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.leaveTop.ru.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.reachBottom.en.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.reachBottom.ru.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.reachTop.en.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.reachTop.ru.mdx +0 -11
- package/src/media/mdx/Scrollbar/event.top.en.mdx +0 -12
- package/src/media/mdx/Scrollbar/event.top.ru.mdx +0 -12
- package/src/media/mdx/Window/expose.control.en.mdx +0 -15
- package/src/media/mdx/Window/expose.control.ru.mdx +0 -15
- package/src/media/mdx/Window/expose.id.en.mdx +0 -7
- package/src/media/mdx/Window/expose.id.ru.mdx +0 -7
- package/src/media/mdx/Window/expose.open.en.mdx +0 -7
- package/src/media/mdx/Window/expose.open.ru.mdx +0 -7
- package/src/media/mdx/Window/expose.setOpen.en.mdx +0 -7
- package/src/media/mdx/Window/expose.setOpen.ru.mdx +0 -7
- package/src/media/mdx/Window/expose.toClose.en.mdx +0 -7
- package/src/media/mdx/Window/expose.toClose.ru.mdx +0 -7
- package/src/media/mdx/Window/expose.toOpen.en.mdx +0 -7
- package/src/media/mdx/Window/expose.toOpen.ru.mdx +0 -7
- package/src/media/mdx/Window/expose.toggle.en.mdx +0 -7
- package/src/media/mdx/Window/expose.toggle.ru.mdx +0 -7
- package/src/media/mdx/event/bars.en.mdx +0 -17
- package/src/media/mdx/event/bars.ru.mdx +0 -14
- package/src/media/mdx/event/barsBack.en.mdx +0 -14
- package/src/media/mdx/event/barsBack.ru.mdx +0 -16
- package/src/media/mdx/event/barsLite.en.mdx +0 -14
- package/src/media/mdx/event/barsLite.ru.mdx +0 -14
- package/src/media/mdx/event/click.en.mdx +0 -18
- package/src/media/mdx/event/click.ru.mdx +0 -18
- package/src/media/mdx/event/clickLite.en.mdx +0 -18
- package/src/media/mdx/event/clickLite.ru.mdx +0 -18
- package/src/media/mdx/event/scrollbarBottom.en.mdx +0 -13
- package/src/media/mdx/event/scrollbarBottom.ru.mdx +0 -13
- package/src/media/mdx/event/scrollbarEdge.en.mdx +0 -15
- package/src/media/mdx/event/scrollbarEdge.ru.mdx +0 -15
- package/src/media/mdx/event/scrollbarLeaveBottom.en.mdx +0 -12
- package/src/media/mdx/event/scrollbarLeaveBottom.ru.mdx +0 -12
- package/src/media/mdx/event/scrollbarLeaveTop.en.mdx +0 -12
- package/src/media/mdx/event/scrollbarLeaveTop.ru.mdx +0 -12
- package/src/media/mdx/event/scrollbarReachBottom.en.mdx +0 -12
- package/src/media/mdx/event/scrollbarReachBottom.ru.mdx +0 -12
- package/src/media/mdx/event/scrollbarReachTop.en.mdx +0 -12
- package/src/media/mdx/event/scrollbarReachTop.ru.mdx +0 -12
- package/src/media/mdx/event/scrollbarTop.en.mdx +0 -13
- package/src/media/mdx/event/scrollbarTop.ru.mdx +0 -13
- package/src/media/mdx/event/window.en.mdx +0 -20
- package/src/media/mdx/event/window.ru.mdx +0 -20
- package/src/media/mdx/expose/detail.en.mdx +0 -7
- package/src/media/mdx/expose/isSelected.en.mdx +0 -8
- package/src/media/mdx/expose/isSelected.ru.mdx +0 -8
- package/src/media/mdx/expose/selectedList.en.mdx +0 -7
- package/src/media/mdx/expose/selectedList.ru.mdx +0 -7
- package/src/media/mdx/expose/selectedNames.en.mdx +0 -7
- package/src/media/mdx/expose/selectedNames.ru.mdx +0 -7
- package/src/media/mdx/expose/selectedValues.en.mdx +0 -8
- package/src/media/mdx/expose/selectedValues.ru.mdx +0 -8
- package/src/media/mdx/slot/title.en.mdx +0 -9
- package/src/media/mdx/slot/title.ru.mdx +0 -9
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/functional/en/Classes/BroadcastMessage'/>
|
|
4
|
+
|
|
5
|
+
# BroadcastMessage Class
|
|
6
|
+
|
|
7
|
+
A class for handling BroadcastChannel messaging between browser tabs/windows. Enables real-time communication across different contexts of the same origin with automatic channel naming and message handling.
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
|
|
11
|
+
- **Cross-tab communication** — send and receive messages between browser tabs and windows
|
|
12
|
+
- **Automatic channel naming** — unique channel names per browser instance stored in localStorage
|
|
13
|
+
- **Type-safe messaging** — full TypeScript support with generic message types
|
|
14
|
+
- **Callback-based handling** — flexible message handling through callback functions
|
|
15
|
+
- **Error handling** — graceful error handling with console logging
|
|
16
|
+
- **SSR-safe** — automatically detects DOM runtime environment
|
|
17
|
+
|
|
18
|
+
## Basic Usage
|
|
19
|
+
|
|
20
|
+
### Constructor
|
|
21
|
+
|
|
22
|
+
Creates a new BroadcastMessage instance with specified channel name and optional callback.
|
|
23
|
+
|
|
24
|
+
**Parameters:**
|
|
25
|
+
- `name: string` — channel name identifier
|
|
26
|
+
- `callback?: (event: MessageEvent<Message>) => void` — optional callback for received messages
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
30
|
+
|
|
31
|
+
// Create channel with callback
|
|
32
|
+
const channel = new BroadcastMessage('user-updates', (event) => {
|
|
33
|
+
console.log('Received message:', event.data)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// Create channel without callback (can be set later)
|
|
37
|
+
const notifications = new BroadcastMessage('notifications')
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### `post`
|
|
41
|
+
|
|
42
|
+
Sends a message to all connected tabs/windows on the same channel.
|
|
43
|
+
|
|
44
|
+
**Parameters:**
|
|
45
|
+
- `message: Message` — message to broadcast
|
|
46
|
+
|
|
47
|
+
**Returns:** `this` — for method chaining
|
|
48
|
+
|
|
49
|
+
```javascript
|
|
50
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
51
|
+
|
|
52
|
+
const userChannel = new BroadcastMessage('user-updates')
|
|
53
|
+
|
|
54
|
+
// Send simple message
|
|
55
|
+
userChannel.post({ type: 'login', userId: 123 })
|
|
56
|
+
|
|
57
|
+
// Method chaining
|
|
58
|
+
userChannel
|
|
59
|
+
.post({ type: 'status', value: 'online' })
|
|
60
|
+
.post({ type: 'activity', timestamp: Date.now() })
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `setCallback`
|
|
64
|
+
|
|
65
|
+
Sets or updates the callback function for handling received messages.
|
|
66
|
+
|
|
67
|
+
**Parameters:**
|
|
68
|
+
- `callback: (event: MessageEvent<Message>) => void` — callback function
|
|
69
|
+
|
|
70
|
+
**Returns:** `this` — for method chaining
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
74
|
+
|
|
75
|
+
const channel = new BroadcastMessage('app-events')
|
|
76
|
+
|
|
77
|
+
// Set callback later
|
|
78
|
+
channel.setCallback((event) => {
|
|
79
|
+
console.log('Event received:', event.data)
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
// Update callback
|
|
83
|
+
channel.setCallback((event) => {
|
|
84
|
+
if (event.data.type === 'refresh') {
|
|
85
|
+
location.reload()
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Advanced Examples
|
|
91
|
+
|
|
92
|
+
### Cross-Tab State Synchronization
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
96
|
+
import { ref } from 'vue'
|
|
97
|
+
|
|
98
|
+
// Create reactive state
|
|
99
|
+
const userStatus = ref('offline')
|
|
100
|
+
|
|
101
|
+
// Create broadcast channel
|
|
102
|
+
const statusChannel = new BroadcastMessage('user-status', (event) => {
|
|
103
|
+
// Update local state when other tabs broadcast changes
|
|
104
|
+
userStatus.value = event.data.status
|
|
105
|
+
console.log('Status updated from another tab:', event.data.status)
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
// Function to update status and broadcast to other tabs
|
|
109
|
+
function updateStatus(newStatus) {
|
|
110
|
+
userStatus.value = newStatus
|
|
111
|
+
statusChannel.post({ status: newStatus, timestamp: Date.now() })
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Usage
|
|
115
|
+
updateStatus('online') // Updates this tab and notifies others
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Multi-Tab Shopping Cart
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
122
|
+
|
|
123
|
+
// Define message types
|
|
124
|
+
interface CartMessage {
|
|
125
|
+
action: 'add' | 'remove' | 'clear'
|
|
126
|
+
productId?: number
|
|
127
|
+
quantity?: number
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Create channel with typed messages
|
|
131
|
+
const cartChannel = new BroadcastMessage<CartMessage>('shopping-cart')
|
|
132
|
+
|
|
133
|
+
// Set up message handler
|
|
134
|
+
cartChannel.setCallback((event) => {
|
|
135
|
+
const { action, productId, quantity } = event.data
|
|
136
|
+
|
|
137
|
+
switch (action) {
|
|
138
|
+
case 'add':
|
|
139
|
+
console.log(`Adding ${quantity} of product ${productId}`)
|
|
140
|
+
addToCart(productId, quantity)
|
|
141
|
+
break
|
|
142
|
+
case 'remove':
|
|
143
|
+
console.log(`Removing product ${productId}`)
|
|
144
|
+
removeFromCart(productId)
|
|
145
|
+
break
|
|
146
|
+
case 'clear':
|
|
147
|
+
console.log('Clearing cart')
|
|
148
|
+
clearCart()
|
|
149
|
+
break
|
|
150
|
+
}
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
// Broadcast cart updates
|
|
154
|
+
function addProduct(productId, quantity) {
|
|
155
|
+
addToCart(productId, quantity)
|
|
156
|
+
cartChannel.post({ action: 'add', productId, quantity })
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Authentication State Sync
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
164
|
+
|
|
165
|
+
interface AuthMessage {
|
|
166
|
+
type: 'login' | 'logout' | 'token-refresh'
|
|
167
|
+
userId?: number
|
|
168
|
+
token?: string
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const authChannel = new BroadcastMessage<AuthMessage>('auth-events', (event) => {
|
|
172
|
+
switch (event.data.type) {
|
|
173
|
+
case 'login':
|
|
174
|
+
console.log('User logged in:', event.data.userId)
|
|
175
|
+
location.reload()
|
|
176
|
+
break
|
|
177
|
+
|
|
178
|
+
case 'logout':
|
|
179
|
+
console.log('User logged out, redirecting...')
|
|
180
|
+
localStorage.removeItem('auth-token')
|
|
181
|
+
window.location.href = '/login'
|
|
182
|
+
break
|
|
183
|
+
|
|
184
|
+
case 'token-refresh':
|
|
185
|
+
console.log('Token refreshed')
|
|
186
|
+
localStorage.setItem('auth-token', event.data.token)
|
|
187
|
+
break
|
|
188
|
+
}
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
// Broadcast login
|
|
192
|
+
function handleLogin(userId, token) {
|
|
193
|
+
localStorage.setItem('auth-token', token)
|
|
194
|
+
authChannel.post({ type: 'login', userId, token })
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Broadcast logout
|
|
198
|
+
function handleLogout() {
|
|
199
|
+
localStorage.removeItem('auth-token')
|
|
200
|
+
authChannel.post({ type: 'logout' })
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Real-Time Notifications
|
|
205
|
+
|
|
206
|
+
```javascript
|
|
207
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
208
|
+
|
|
209
|
+
interface Notification {
|
|
210
|
+
id: string
|
|
211
|
+
title: string
|
|
212
|
+
message: string
|
|
213
|
+
type: 'info' | 'warning' | 'error' | 'success'
|
|
214
|
+
timestamp: number
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const notificationChannel = new BroadcastMessage<Notification>('notifications')
|
|
218
|
+
|
|
219
|
+
// Set up notification handler
|
|
220
|
+
notificationChannel.setCallback((event) => {
|
|
221
|
+
const notification = event.data
|
|
222
|
+
|
|
223
|
+
// Display notification in all tabs
|
|
224
|
+
showNotification(notification.title, notification.message, notification.type)
|
|
225
|
+
|
|
226
|
+
if (notification.type === 'error') {
|
|
227
|
+
playErrorSound()
|
|
228
|
+
}
|
|
229
|
+
})
|
|
230
|
+
|
|
231
|
+
// Send notification to all tabs
|
|
232
|
+
function broadcastNotification(title, message, type = 'info') {
|
|
233
|
+
const notification = {
|
|
234
|
+
id: crypto.randomUUID(),
|
|
235
|
+
title,
|
|
236
|
+
message,
|
|
237
|
+
type,
|
|
238
|
+
timestamp: Date.now()
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
notificationChannel.post(notification)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Usage
|
|
245
|
+
broadcastNotification('New Message', 'You have a new message from John', 'info')
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Implementation Details
|
|
249
|
+
|
|
250
|
+
### Unique Channel Naming
|
|
251
|
+
|
|
252
|
+
Each browser instance generates a unique identifier stored in localStorage (`__broadcast-name`). This ensures that channels are isolated between different browser instances while allowing communication within the same instance across tabs.
|
|
253
|
+
|
|
254
|
+
```javascript
|
|
255
|
+
// Channel name format: name_{random_7_digits}__your-channel-name
|
|
256
|
+
// Example: name_1234567__user-updates
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Error Handling
|
|
260
|
+
|
|
261
|
+
BroadcastMessage gracefully handles errors and logs them to console:
|
|
262
|
+
|
|
263
|
+
```javascript
|
|
264
|
+
const channel = new BroadcastMessage('my-channel')
|
|
265
|
+
// If BroadcastChannel is not supported or initialization fails,
|
|
266
|
+
// error is logged: "BroadcastMessage my-channel: [error details]"
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### SSR Compatibility
|
|
270
|
+
|
|
271
|
+
The class automatically detects DOM runtime environment using `isDomRuntime()`, making it safe to use in SSR/SSG contexts where BroadcastChannel API is not available.
|
|
272
|
+
|
|
273
|
+
## Type Safety
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
import { BroadcastMessage } from '@dxtmisha/functional'
|
|
277
|
+
|
|
278
|
+
// Define your message structure
|
|
279
|
+
interface UserUpdate {
|
|
280
|
+
userId: number
|
|
281
|
+
action: 'online' | 'offline' | 'typing'
|
|
282
|
+
timestamp: number
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Create typed channel
|
|
286
|
+
const channel = new BroadcastMessage<UserUpdate>('users')
|
|
287
|
+
|
|
288
|
+
// TypeScript ensures type safety
|
|
289
|
+
channel.post({
|
|
290
|
+
userId: 123,
|
|
291
|
+
action: 'online',
|
|
292
|
+
timestamp: Date.now()
|
|
293
|
+
}) // ✓ Valid
|
|
294
|
+
|
|
295
|
+
channel.post({ invalid: 'data' }) // ✗ TypeScript error
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Browser Compatibility
|
|
299
|
+
|
|
300
|
+
BroadcastChannel API is supported in:
|
|
301
|
+
- Chrome/Edge 54+
|
|
302
|
+
- Firefox 38+
|
|
303
|
+
- Safari 15.4+
|
|
304
|
+
- Opera 41+
|
|
305
|
+
|
|
306
|
+
For older browsers, consider using a polyfill or fallback mechanism.
|
|
307
|
+
|
|
@@ -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">
|