@milaboratories/uikit 2.10.15 → 2.10.17
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/.oxfmtrc.json +4 -0
- package/.oxlintrc.json +3 -0
- package/.prettierrc +1 -1
- package/.turbo/turbo-build.log +191 -191
- package/.turbo/turbo-formatter$colon$check.log +12 -0
- package/.turbo/turbo-linter$colon$check.log +10 -0
- package/.turbo/{turbo-type-check.log → turbo-types$colon$check.log} +2 -2
- package/CHANGELOG.md +18 -0
- package/build.browser-lib.config.js +6 -6
- package/dist/base/BtnBase.vue.js.map +1 -1
- package/dist/colors/color.d.ts.map +1 -1
- package/dist/colors/color.js.map +1 -1
- package/dist/colors/gradient.d.ts.map +1 -1
- package/dist/colors/gradient.js.map +1 -1
- package/dist/colors/palette.js.map +1 -1
- package/dist/components/ContextProvider.vue.js.map +1 -1
- package/dist/components/DataTable/BaseCellComponent.vue.js.map +1 -1
- package/dist/components/DataTable/ColumnCaret.vue.js.map +1 -1
- package/dist/components/DataTable/ColumnsCommandMenu.vue.d.ts.map +1 -1
- package/dist/components/DataTable/ColumnsCommandMenu.vue.js.map +1 -1
- package/dist/components/DataTable/RowsCommandMenu.vue.d.ts.map +1 -1
- package/dist/components/DataTable/RowsCommandMenu.vue.js.map +1 -1
- package/dist/components/DataTable/TScroll.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TScroll.vue.js +6 -1
- package/dist/components/DataTable/TScroll.vue.js.map +1 -1
- package/dist/components/DataTable/TableComponent.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TableComponent.vue.js +1 -1
- package/dist/components/DataTable/TableComponent.vue.js.map +1 -1
- package/dist/components/DataTable/TdCell.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TdCell.vue.js +3 -1
- package/dist/components/DataTable/TdCell.vue.js.map +1 -1
- package/dist/components/DataTable/ThCell.vue.d.ts.map +1 -1
- package/dist/components/DataTable/ThCell.vue.js.map +1 -1
- package/dist/components/DataTable/TrBody.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TrBody.vue.js.map +1 -1
- package/dist/components/DataTable/adapters/AsyncData.d.ts +1 -1
- package/dist/components/DataTable/adapters/AsyncData.js.map +1 -1
- package/dist/components/DataTable/adapters/RawData.d.ts +1 -1
- package/dist/components/DataTable/adapters/RawData.js.map +1 -1
- package/dist/components/DataTable/assets/TableIcon.vue.d.ts.map +1 -1
- package/dist/components/DataTable/assets/TableIcon.vue.js.map +1 -1
- package/dist/components/DataTable/composition/useColumn.d.ts.map +1 -1
- package/dist/components/DataTable/composition/useColumn.js.map +1 -1
- package/dist/components/DataTable/composition/useMouseUp.js.map +1 -1
- package/dist/components/DataTable/composition/useResize.js.map +1 -1
- package/dist/components/DataTable/composition/useTableColumns.js.map +1 -1
- package/dist/components/DataTable/composition/useTableRows.js.map +1 -1
- package/dist/components/DataTable/domain.d.ts +1 -1
- package/dist/components/DataTable/domain.d.ts.map +1 -1
- package/dist/components/DataTable/domain.js.map +1 -1
- package/dist/components/DataTable/index.d.ts +1 -1
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DataTable/index.js +5 -1
- package/dist/components/DataTable/index.js.map +1 -1
- package/dist/components/DataTable/keys.js.map +1 -1
- package/dist/components/DataTable/state.d.ts.map +1 -1
- package/dist/components/DataTable/state.js +10 -4
- package/dist/components/DataTable/state.js.map +1 -1
- package/dist/components/DataTable/types.d.ts +3 -3
- package/dist/components/DropdownListItem.vue.d.ts +1 -1
- package/dist/components/DropdownListItem.vue.d.ts.map +1 -1
- package/dist/components/DropdownListItem.vue.js.map +1 -1
- package/dist/components/GridTable/domain.d.ts +1 -1
- package/dist/components/GridTable/domain.d.ts.map +1 -1
- package/dist/components/GridTable/types.d.ts +4 -4
- package/dist/components/GridTable/types.d.ts.map +1 -1
- package/dist/components/GridTable/useColumn.d.ts.map +1 -1
- package/dist/components/HScroll.vue.js.map +1 -1
- package/dist/components/InputRange.vue.d.ts.map +1 -1
- package/dist/components/InputRange.vue.js +3 -1
- package/dist/components/InputRange.vue.js.map +1 -1
- package/dist/components/LongText.vue.d.ts.map +1 -1
- package/dist/components/LongText.vue.js +9 -7
- package/dist/components/LongText.vue.js.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue.d.ts.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue.js +27 -0
- package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -0
- package/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue3.js +2 -2
- package/dist/components/PlAccordion/PlAccordion.vue.js.map +1 -1
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js +2 -2
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
- package/dist/components/PlAlert/PlAlert.vue.d.ts.map +1 -1
- package/dist/components/PlAlert/PlAlert.vue.js.map +1 -1
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.d.ts.map +1 -1
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js +40 -19
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts +2 -2
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts.map +1 -1
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js +22 -12
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js.map +1 -1
- package/dist/components/PlAutocompleteMulti/index.d.ts +1 -1
- package/dist/components/PlAutocompleteMulti/index.d.ts.map +1 -1
- package/dist/components/PlBtnAccent/PlBtnAccent.vue.js.map +1 -1
- package/dist/components/PlBtnDanger/PlBtnDanger.vue.js.map +1 -1
- package/dist/components/PlBtnGhost/PlBtnGhost.vue.js.map +1 -1
- package/dist/components/PlBtnGroup/PlBtnGroup.vue.js.map +1 -1
- package/dist/components/PlBtnLink/PlBtnLink.vue.d.ts.map +1 -1
- package/dist/components/PlBtnLink/PlBtnLink.vue.js.map +1 -1
- package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.js.map +1 -1
- package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js.map +1 -1
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.d.ts.map +1 -1
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.js +6 -4
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +8 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue3.js +4 -4
- package/dist/components/PlChartHistogram/createGridlines.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/createGridlines.js +5 -1
- package/dist/components/PlChartHistogram/createGridlines.js.map +1 -1
- package/dist/components/PlChartHistogram/createLabels.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/createLabels.js.map +1 -1
- package/dist/components/PlChartHistogram/createSvgContainer.js.map +1 -1
- package/dist/components/PlChartHistogram/drawBins.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/drawBins.js.map +1 -1
- package/dist/components/PlChartHistogram/drawThreshold.js.map +1 -1
- package/dist/components/PlChartHistogram/histogram.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/histogram.js +6 -2
- package/dist/components/PlChartHistogram/histogram.js.map +1 -1
- package/dist/components/PlChartHistogram/normalizeBins.js.map +1 -1
- package/dist/components/PlChartHistogram/types.d.ts +2 -2
- package/dist/components/PlChartHistogram/types.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +6 -4
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRow.vue.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRowCompact.vue.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
- package/dist/components/PlCheckbox/PlCheckbox.vue.js.map +1 -1
- package/dist/components/PlCheckbox/PlCheckboxBase.vue.d.ts.map +1 -1
- package/dist/components/PlCheckbox/PlCheckboxBase.vue.js.map +1 -1
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.d.ts.map +1 -1
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js +8 -2
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js.map +1 -1
- package/dist/components/PlChip/PlChip.vue.d.ts.map +1 -1
- package/dist/components/PlChip/PlChip.vue.js.map +1 -1
- package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
- package/dist/components/PlConfirmDialog.vue.d.ts.map +1 -1
- package/dist/components/PlConfirmDialog.vue.js.map +1 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.d.ts.map +1 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.js +4 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
- package/dist/components/PlDropdown/OptionList.vue.d.ts +1 -1
- package/dist/components/PlDropdown/OptionList.vue.d.ts.map +1 -1
- package/dist/components/PlDropdown/OptionList.vue.js.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
- package/dist/components/PlDropdown/types.d.ts.map +1 -1
- package/dist/components/PlDropdown/useGroupBy.d.ts.map +1 -1
- package/dist/components/PlDropdown/useGroupBy.js.map +1 -1
- package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +5 -3
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/ResizableInput.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLine/ResizableInput.vue.js.map +1 -1
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js.map +1 -1
- package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js.map +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts.map +1 -1
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue2.js +9 -2
- package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue3.js +4 -4
- package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue2.js +25 -13
- package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue3.js +20 -20
- package/dist/components/PlElementList/utils.d.ts.map +1 -1
- package/dist/components/PlElementList/utils.js +3 -1
- package/dist/components/PlElementList/utils.js.map +1 -1
- package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.d.ts.map +1 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js +4 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Local.vue.d.ts.map +1 -1
- package/dist/components/PlFileDialog/Local.vue.js +6 -2
- package/dist/components/PlFileDialog/Local.vue.js.map +1 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.d.ts.map +1 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.js +3 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Remote.vue.d.ts.map +1 -1
- package/dist/components/PlFileDialog/Remote.vue.js +6 -2
- package/dist/components/PlFileDialog/Remote.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
- package/dist/components/PlFileDialog/Shortcuts.vue3.js +4 -4
- package/dist/components/PlFileDialog/pl-file-dialog.module.scss.js +21 -21
- package/dist/components/PlFileDialog/remote.js.map +1 -1
- package/dist/components/PlFileDialog/utils.js.map +1 -1
- package/dist/components/PlFileInput/PlFileInput.vue.d.ts.map +1 -1
- package/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
- package/dist/components/PlIcon16/PlIcon16.vue2.js.map +1 -1
- package/dist/components/PlIcon24/PlIcon24.vue2.js.map +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts.map +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js +5 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js.map +1 -1
- package/dist/components/PlLoaderLogo.vue.d.ts.map +1 -1
- package/dist/components/PlLoaderLogo.vue2.js +8 -8
- package/dist/components/PlLoaderLogo.vue2.js.map +1 -1
- package/dist/components/PlLogView/PlLogView.vue.d.ts.map +1 -1
- package/dist/components/PlLogView/PlLogView.vue.js +11 -7
- package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
- package/dist/components/PlLogView/useLogHandle.d.ts.map +1 -1
- package/dist/components/PlLogView/useLogHandle.js +16 -3
- package/dist/components/PlLogView/useLogHandle.js.map +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts.map +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlNumberField/PlNumberField.vue.d.ts.map +1 -1
- package/dist/components/PlNumberField/PlNumberField.vue.js +4 -6
- package/dist/components/PlNumberField/PlNumberField.vue.js.map +1 -1
- package/dist/components/PlNumberField/parseNumber.d.ts.map +1 -1
- package/dist/components/PlNumberField/parseNumber.js.map +1 -1
- package/dist/components/PlProgressBar/PlProgressBar.vue.js.map +1 -1
- package/dist/components/PlProgressCell/PlProgressCell.vue.d.ts.map +1 -1
- package/dist/components/PlProgressCell/PlProgressCell.vue.js +11 -2
- package/dist/components/PlProgressCell/PlProgressCell.vue.js.map +1 -1
- package/dist/components/PlProgressCell/types.d.ts +1 -1
- package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
- package/dist/components/PlRadio/PlRadio.vue3.js +3 -3
- package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
- package/dist/components/PlRadio/PlRadioGroup.vue3.js +6 -6
- package/dist/components/PlRadio/keys.js.map +1 -1
- package/dist/components/PlSearchField/PlSearchField.vue.d.ts.map +1 -1
- package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
- package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
- package/dist/components/PlSectionSeparator/PlSectionSeparator.vue3.js +1 -1
- package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
- package/dist/components/PlSidebar/PlSidebarGroup.vue3.js +6 -6
- package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts +6 -6
- package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts.map +1 -1
- package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
- package/dist/components/PlSidebar/PlSidebarItem.vue3.js +8 -8
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.d.ts.map +1 -1
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js.map +1 -1
- package/dist/components/PlSlideModal/PlSlideModal.vue.d.ts.map +1 -1
- package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
- package/dist/components/PlSlideModal/props.d.ts +8 -8
- package/dist/components/PlSlideModal/props.d.ts.map +1 -1
- package/dist/components/PlSlideModal/props.js.map +1 -1
- package/dist/components/PlSplash/PlSplash.vue.d.ts +1 -1
- package/dist/components/PlSplash/PlSplash.vue.d.ts.map +1 -1
- package/dist/components/PlSplash/PlSplash.vue.js +4 -1
- package/dist/components/PlSplash/PlSplash.vue.js.map +1 -1
- package/dist/components/PlStatusTag/PlStatusTag.vue.d.ts.map +1 -1
- package/dist/components/PlStatusTag/PlStatusTag.vue.js.map +1 -1
- package/dist/components/PlStatusTag/types.d.ts +1 -1
- package/dist/components/PlSvg/PlSvg.vue.d.ts.map +1 -1
- package/dist/components/PlSvg/PlSvg.vue2.js +7 -2
- package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
- package/dist/components/PlSvg/registry.d.ts.map +1 -1
- package/dist/components/PlSvg/registry.js.map +1 -1
- package/dist/components/PlTabs/PlTabs.vue.d.ts.map +1 -1
- package/dist/components/PlTabs/PlTabs.vue.js +4 -1
- package/dist/components/PlTabs/PlTabs.vue.js.map +1 -1
- package/dist/components/PlTabs/Tab.vue.js.map +1 -1
- package/dist/components/PlTextArea/PlTextArea.vue.js.map +1 -1
- package/dist/components/PlTextField/PlTextField.vue.d.ts.map +1 -1
- package/dist/components/PlTextField/PlTextField.vue.js +3 -1
- package/dist/components/PlTextField/PlTextField.vue.js.map +1 -1
- package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js.map +1 -1
- package/dist/components/PlTooltip/Beak.vue.d.ts.map +1 -1
- package/dist/components/PlTooltip/Beak.vue.js.map +1 -1
- package/dist/components/PlTooltip/PlTooltip.vue.d.ts.map +1 -1
- package/dist/components/PlTooltip/PlTooltip.vue.js.map +1 -1
- package/dist/components/PlTooltip/useTooltipPosition.d.ts +1 -1
- package/dist/components/PlTooltip/useTooltipPosition.js.map +1 -1
- package/dist/components/Scrollable.vue.d.ts.map +1 -1
- package/dist/components/Scrollable.vue.js +10 -1
- package/dist/components/Scrollable.vue.js.map +1 -1
- package/dist/components/Slider.vue.d.ts.map +1 -1
- package/dist/components/Slider.vue.js +3 -1
- package/dist/components/Slider.vue.js.map +1 -1
- package/dist/components/SliderRange.vue.d.ts.map +1 -1
- package/dist/components/SliderRange.vue.js +15 -3
- package/dist/components/SliderRange.vue.js.map +1 -1
- package/dist/components/SliderRangeTriple.vue.d.ts.map +1 -1
- package/dist/components/SliderRangeTriple.vue.js +7 -1
- package/dist/components/SliderRangeTriple.vue.js.map +1 -1
- package/dist/components/TabItem.vue.js.map +1 -1
- package/dist/components/ThemeSwitcher.vue.js.map +1 -1
- package/dist/components/TransitionSlidePanel.vue.js.map +1 -1
- package/dist/components/VScroll.vue.js.map +1 -1
- package/dist/components/contextMenu/Menu.vue.js +1 -1
- package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
- package/dist/components/contextMenu/index.js.map +1 -1
- package/dist/composition/computedCached.js.map +1 -1
- package/dist/composition/filters/metadata.d.ts.map +1 -1
- package/dist/composition/filters/metadata.js.map +1 -1
- package/dist/composition/filters/types.d.ts +1 -19
- package/dist/composition/filters/types.d.ts.map +1 -1
- package/dist/composition/useClickOutside.js.map +1 -1
- package/dist/composition/useComponentProp.d.ts.map +1 -1
- package/dist/composition/useComponentProp.js.map +1 -1
- package/dist/composition/useConfirm.js.map +1 -1
- package/dist/composition/useDraggable.d.ts.map +1 -1
- package/dist/composition/useDraggable.js.map +1 -1
- package/dist/composition/useEventListener.d.ts.map +1 -1
- package/dist/composition/useEventListener.js +11 -7
- package/dist/composition/useEventListener.js.map +1 -1
- package/dist/composition/useFilteredList.d.ts.map +1 -1
- package/dist/composition/useFilteredList.js.map +1 -1
- package/dist/composition/useFormState.js.map +1 -1
- package/dist/composition/useHover.d.ts.map +1 -1
- package/dist/composition/useHover.js.map +1 -1
- package/dist/composition/useInterval.js.map +1 -1
- package/dist/composition/useLocalStorage.js.map +1 -1
- package/dist/composition/useMouse.js.map +1 -1
- package/dist/composition/useMouseCapture.d.ts.map +1 -1
- package/dist/composition/useMouseCapture.js.map +1 -1
- package/dist/composition/usePollingQuery.d.ts.map +1 -1
- package/dist/composition/usePollingQuery.js +4 -1
- package/dist/composition/usePollingQuery.js.map +1 -1
- package/dist/composition/usePosition.d.ts.map +1 -1
- package/dist/composition/usePosition.js.map +1 -1
- package/dist/composition/useQuery.js.map +1 -1
- package/dist/composition/useResizeObserver.d.ts.map +1 -1
- package/dist/composition/useResizeObserver.js.map +1 -1
- package/dist/composition/useRipple.js.map +1 -1
- package/dist/composition/useScroll.d.ts.map +1 -1
- package/dist/composition/useScroll.js.map +1 -1
- package/dist/composition/useSliderBreakpoints.d.ts.map +1 -1
- package/dist/composition/useSliderBreakpoints.js.map +1 -1
- package/dist/composition/useSortable.js.map +1 -1
- package/dist/composition/useSortable2.d.ts.map +1 -1
- package/dist/composition/useSortable2.js +8 -5
- package/dist/composition/useSortable2.js.map +1 -1
- package/dist/composition/useTheme.d.ts +1 -1
- package/dist/composition/useTheme.d.ts.map +1 -1
- package/dist/composition/useTheme.js.map +1 -1
- package/dist/composition/useTransformedModel.d.ts.map +1 -1
- package/dist/composition/useTransformedModel.js.map +1 -1
- package/dist/composition/useWatchFetch.js.map +1 -1
- package/dist/composition/utils.js.map +1 -1
- package/dist/composition/watchCached.d.ts.map +1 -1
- package/dist/composition/watchCached.js.map +1 -1
- package/dist/demo-site-data/all-css-variables.d.ts.map +1 -1
- package/dist/demo-site-data/all-css-variables.js +52 -13
- package/dist/demo-site-data/all-css-variables.js.map +1 -1
- package/dist/generated/icons-16.js.map +1 -1
- package/dist/generated/icons-24.js.map +1 -1
- package/dist/global/resizeObserver.js.map +1 -1
- package/dist/helpers/dom.d.ts.map +1 -1
- package/dist/helpers/dom.js.map +1 -1
- package/dist/helpers/downloadContent.d.ts +1 -1
- package/dist/helpers/downloadContent.d.ts.map +1 -1
- package/dist/helpers/downloadContent.js +3 -1
- package/dist/helpers/downloadContent.js.map +1 -1
- package/dist/helpers/error.js +4 -1
- package/dist/helpers/error.js.map +1 -1
- package/dist/helpers/functions.d.ts.map +1 -1
- package/dist/helpers/functions.js.map +1 -1
- package/dist/helpers/objects.js.map +1 -1
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue.d.ts.map +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue2.js.map +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue3.js +4 -4
- package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js.map +1 -1
- package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js.map +1 -1
- package/dist/layout/PlContainer/PlContainer.vue.d.ts.map +1 -1
- package/dist/layout/PlContainer/PlContainer.vue.js.map +1 -1
- package/dist/layout/PlGrid/PlGrid.vue.js.map +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts.map +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js +8 -8
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js.map +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue3.js +15 -15
- package/dist/layout/PlPlaceholder/index.d.ts +1 -1
- package/dist/layout/PlPlaceholder/index.d.ts.map +1 -1
- package/dist/layout/PlPlaceholder/index.js.map +1 -1
- package/dist/layout/PlPlaceholder/paint-worklet.js +6 -6
- package/dist/layout/PlPlaceholder/paint-worklet.js.map +1 -1
- package/dist/layout/PlRow/PlRow.vue.js.map +1 -1
- package/dist/layout/PlSpacer/PlSpacer.vue.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/DoubleContour.vue.d.ts.map +1 -1
- package/dist/utils/DoubleContour.vue.js.map +1 -1
- package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
- package/dist/utils/PlCloseModalBtn.vue.js.map +1 -1
- package/dist/utils/TextLabel.vue.js.map +1 -1
- package/dist/utils/useLabelNotch.d.ts.map +1 -1
- package/dist/utils/useLabelNotch.js.map +1 -1
- package/dist/utils/useValidation.js.map +1 -1
- package/package.json +23 -24
- package/scripts/parse-icons.js +20 -14
- package/src/__tests__/compositions/usePollingQuery.spec.ts +163 -165
- package/src/__tests__/compositions/useValidation.spec.ts +41 -28
- package/src/__tests__/setup.ts +1 -1
- package/src/__tests__/use-debounce-fn.test.ts +15 -11
- package/src/assets/animations.scss +5 -5
- package/src/assets/base-btn.scss +4 -3
- package/src/assets/base.scss +11 -8
- package/src/assets/common.scss +43 -43
- package/src/assets/dropdown-list-item.scss +53 -53
- package/src/assets/dropdown-tab-item.scss +4 -4
- package/src/assets/icons.scss +1 -1
- package/src/assets/input-range.scss +26 -27
- package/src/assets/layout.scss +1 -1
- package/src/assets/masks.scss +1 -1
- package/src/assets/mixins.scss +9 -17
- package/src/assets/scroll.scss +6 -6
- package/src/assets/slider.scss +6 -5
- package/src/assets/sortable.scss +1 -1
- package/src/assets/theme-switcher.scss +2 -2
- package/src/assets/typography.scss +16 -13
- package/src/assets/ui.scss +19 -19
- package/src/assets/utils.scss +19 -19
- package/src/assets/variables.scss +9 -10
- package/src/base/BtnBase.vue +6 -6
- package/src/colors/__tests__/colors.spec.ts +12 -10
- package/src/colors/color.ts +17 -12
- package/src/colors/gradient.ts +20 -17
- package/src/colors/index.ts +3 -3
- package/src/colors/palette.ts +194 -194
- package/src/components/ContextProvider.vue +1 -1
- package/src/components/DataTable/BaseCellComponent.vue +8 -8
- package/src/components/DataTable/ColumnCaret.vue +3 -3
- package/src/components/DataTable/ColumnsCommandMenu.vue +5 -3
- package/src/components/DataTable/RowsCommandMenu.vue +5 -3
- package/src/components/DataTable/TScroll.vue +11 -6
- package/src/components/DataTable/TableComponent.vue +41 -24
- package/src/components/DataTable/TdCell.vue +28 -15
- package/src/components/DataTable/ThCell.vue +14 -9
- package/src/components/DataTable/TrBody.vue +11 -4
- package/src/components/DataTable/adapters/AsyncData.ts +4 -4
- package/src/components/DataTable/adapters/RawData.ts +5 -5
- package/src/components/DataTable/assets/TableIcon.vue +6 -1
- package/src/components/DataTable/assets/data-table-style.scss +12 -10
- package/src/components/DataTable/composition/useColumn.ts +8 -5
- package/src/components/DataTable/composition/useMouseUp.ts +3 -3
- package/src/components/DataTable/composition/useResize.ts +16 -16
- package/src/components/DataTable/composition/useTableColumns.ts +8 -8
- package/src/components/DataTable/composition/useTableRows.ts +5 -5
- package/src/components/DataTable/domain.ts +8 -4
- package/src/components/DataTable/index.ts +26 -13
- package/src/components/DataTable/keys.ts +3 -3
- package/src/components/DataTable/state.ts +38 -18
- package/src/components/DataTable/types.ts +10 -10
- package/src/components/DropdownListItem.vue +18 -15
- package/src/components/GridTable/TdCell.vue +7 -7
- package/src/components/GridTable/ThCell.vue +14 -9
- package/src/components/GridTable/assets/TableIcon.vue +6 -1
- package/src/components/GridTable/assets/style.scss +6 -6
- package/src/components/GridTable/constants.ts +10 -10
- package/src/components/GridTable/domain.ts +8 -4
- package/src/components/GridTable/getColumnPositions.ts +4 -4
- package/src/components/GridTable/index.vue +41 -32
- package/src/components/GridTable/types.ts +14 -11
- package/src/components/GridTable/useColumn.ts +8 -5
- package/src/components/GridTable/useMouseUp.ts +3 -3
- package/src/components/GridTable/useResize.ts +13 -13
- package/src/components/HScroll.vue +10 -10
- package/src/components/InputRange.vue +9 -7
- package/src/components/LongText.vue +7 -5
- package/src/components/PlAccordion/ExpandTransition.vue +12 -6
- package/src/components/PlAccordion/PlAccordion.vue +3 -3
- package/src/components/PlAccordion/PlAccordionSection.vue +9 -9
- package/src/components/PlAccordion/index.ts +2 -2
- package/src/components/PlAlert/PlAlert.vue +21 -10
- package/src/components/PlAlert/index.ts +1 -1
- package/src/components/PlAlert/pl-alert.scss +1 -1
- package/src/components/PlAutocomplete/PlAutocomplete.vue +142 -82
- package/src/components/PlAutocomplete/__tests__/PlAutocomplete.spec.ts +19 -17
- package/src/components/PlAutocomplete/index.ts +1 -1
- package/src/components/PlAutocomplete/pl-autocomplete.scss +9 -7
- package/src/components/PlAutocompleteMulti/PlAutocompleteMulti.vue +92 -62
- package/src/components/PlAutocompleteMulti/__tests__/PlAutocompleteMulti.spec.ts +17 -16
- package/src/components/PlAutocompleteMulti/index.ts +4 -1
- package/src/components/PlAutocompleteMulti/pl-autocomplete-multi.scss +8 -6
- package/src/components/PlBtnAccent/PlBtnAccent.vue +4 -4
- package/src/components/PlBtnAccent/index.ts +1 -1
- package/src/components/PlBtnDanger/PlBtnDanger.vue +4 -4
- package/src/components/PlBtnDanger/index.ts +1 -1
- package/src/components/PlBtnDanger/pl-btn-danger.scss +1 -1
- package/src/components/PlBtnGhost/PlBtnGhost.vue +8 -8
- package/src/components/PlBtnGhost/index.ts +1 -1
- package/src/components/PlBtnGroup/PlBtnGroup.vue +10 -10
- package/src/components/PlBtnGroup/index.ts +1 -1
- package/src/components/PlBtnGroup/pl-btn-group.scss +4 -4
- package/src/components/PlBtnLink/PlBtnLink.vue +10 -5
- package/src/components/PlBtnLink/index.ts +1 -1
- package/src/components/PlBtnLink/pl-btn-link.scss +2 -1
- package/src/components/PlBtnPrimary/PlBtnPrimary.vue +4 -4
- package/src/components/PlBtnPrimary/__tests__/BtnPrimary.spec.ts +7 -7
- package/src/components/PlBtnPrimary/index.ts +1 -1
- package/src/components/PlBtnPrimary/pl-btn-primary.scss +2 -2
- package/src/components/PlBtnSecondary/PlBtnSecondary.vue +4 -4
- package/src/components/PlBtnSecondary/index.ts +1 -1
- package/src/components/PlBtnSecondary/pl-btn-secondary.scss +1 -1
- package/src/components/PlBtnSplit/PlBtnSplit.vue +42 -28
- package/src/components/PlBtnSplit/__tests__/PlBtnSplit.spec.ts +66 -66
- package/src/components/PlBtnSplit/index.ts +1 -1
- package/src/components/PlBtnSplit/pl-btn-split.scss +72 -75
- package/src/components/PlChartHistogram/PlChartHistogram.vue +29 -20
- package/src/components/PlChartHistogram/createGridlines.ts +28 -22
- package/src/components/PlChartHistogram/createLabels.ts +19 -17
- package/src/components/PlChartHistogram/createSvgContainer.ts +9 -9
- package/src/components/PlChartHistogram/drawBins.ts +27 -34
- package/src/components/PlChartHistogram/drawThreshold.ts +9 -9
- package/src/components/PlChartHistogram/histogram.ts +31 -34
- package/src/components/PlChartHistogram/index.ts +1 -1
- package/src/components/PlChartHistogram/normalizeBins.ts +3 -3
- package/src/components/PlChartHistogram/scales.spec.ts +5 -5
- package/src/components/PlChartHistogram/types.ts +6 -6
- package/src/components/PlChartStackedBar/Legends.vue +2 -2
- package/src/components/PlChartStackedBar/PlChartStackedBar.vue +16 -10
- package/src/components/PlChartStackedBar/PlChartStackedBarCompact.vue +4 -4
- package/src/components/PlChartStackedBar/StackedRow.vue +7 -9
- package/src/components/PlChartStackedBar/StackedRowCompact.vue +6 -8
- package/src/components/PlChartStackedBar/index.ts +3 -3
- package/src/components/PlChartStackedBar/types.ts +1 -1
- package/src/components/PlCheckbox/PlCheckbox.vue +5 -5
- package/src/components/PlCheckbox/PlCheckboxBase.vue +3 -5
- package/src/components/PlCheckbox/__tests__/PlCheckbox.spec.ts +15 -15
- package/src/components/PlCheckbox/index.ts +1 -1
- package/src/components/PlCheckbox/pl-checkbox-base.scss +13 -13
- package/src/components/PlCheckbox/pl-checkbox.scss +2 -2
- package/src/components/PlCheckboxGroup/PlCheckboxGroup.vue +24 -10
- package/src/components/PlCheckboxGroup/index.ts +1 -1
- package/src/components/PlCheckboxGroup/pl-checkbox-group.scss +1 -1
- package/src/components/PlChip/PlChip.vue +11 -5
- package/src/components/PlChip/index.ts +1 -1
- package/src/components/PlChip/pl-chip.scss +2 -2
- package/src/components/PlClipboard/PlClipboard.vue +7 -7
- package/src/components/PlClipboard/index.ts +1 -1
- package/src/components/PlConfirmDialog.vue +7 -6
- package/src/components/PlDialogModal/PlDialogModal.vue +52 -33
- package/src/components/PlDialogModal/index.ts +1 -1
- package/src/components/PlDialogModal/pl-dialog-modal.scss +2 -2
- package/src/components/PlDropdown/OptionList.vue +21 -10
- package/src/components/PlDropdown/PlDropdown.vue +65 -46
- package/src/components/PlDropdown/__tests__/PlDropdown.spec.ts +15 -15
- package/src/components/PlDropdown/index.ts +1 -1
- package/src/components/PlDropdown/pl-dropdown.scss +4 -2
- package/src/components/PlDropdown/types.ts +6 -2
- package/src/components/PlDropdown/useGroupBy.ts +7 -10
- package/src/components/PlDropdownLegacy/PlDropdownLegacy.vue +60 -43
- package/src/components/PlDropdownLegacy/__tests__/PlDropdownLegacy.spec.ts +16 -16
- package/src/components/PlDropdownLegacy/index.ts +1 -1
- package/src/components/PlDropdownLegacy/pl-dropdown-legacy.scss +6 -6
- package/src/components/PlDropdownLine/PlDropdownLine.vue +76 -54
- package/src/components/PlDropdownLine/ResizableInput.vue +15 -8
- package/src/components/PlDropdownLine/index.ts +1 -1
- package/src/components/PlDropdownLine/pl-dropdown-line.scss +132 -132
- package/src/components/PlDropdownLine/resizable-input.scss +38 -38
- package/src/components/PlDropdownMulti/PlDropdownMulti.vue +79 -45
- package/src/components/PlDropdownMulti/__tests__/PlDropdownMulti.spec.ts +15 -14
- package/src/components/PlDropdownMulti/index.ts +1 -1
- package/src/components/PlDropdownMulti/pl-dropdown-multi.scss +8 -6
- package/src/components/PlDropdownMultiRef/PlDropdownMultiRef.vue +5 -5
- package/src/components/PlDropdownMultiRef/__tests__/PlDropdownMultiRef.spec.ts +25 -24
- package/src/components/PlDropdownMultiRef/index.ts +1 -1
- package/src/components/PlDropdownRef/PlDropdownRef.vue +12 -12
- package/src/components/PlDropdownRef/__tests__/PlDropdownRef.spec.ts +23 -23
- package/src/components/PlDropdownRef/index.ts +1 -1
- package/src/components/PlEditableTitle/PlEditableTitle.vue +9 -10
- package/src/components/PlEditableTitle/index.ts +1 -1
- package/src/components/PlEditableTitle/pl-editable-title.module.scss +4 -4
- package/src/components/PlElementList/PlElementList.vue +60 -37
- package/src/components/PlElementList/PlElementListItem.vue +45 -29
- package/src/components/PlElementList/README.md +102 -119
- package/src/components/PlElementList/index.ts +1 -1
- package/src/components/PlElementList/utils.ts +3 -1
- package/src/components/PlErrorAlert/PlErrorAlert.vue +5 -5
- package/src/components/PlErrorAlert/index.ts +1 -1
- package/src/components/PlErrorBoundary/PlErrorBoundary.vue +8 -5
- package/src/components/PlErrorBoundary/index.ts +1 -1
- package/src/components/PlFileDialog/Local.vue +22 -16
- package/src/components/PlFileDialog/PlFileDialog.vue +27 -23
- package/src/components/PlFileDialog/Remote.vue +44 -34
- package/src/components/PlFileDialog/Shortcuts.vue +4 -4
- package/src/components/PlFileDialog/index.ts +1 -1
- package/src/components/PlFileDialog/pl-file-dialog.module.scss +15 -12
- package/src/components/PlFileDialog/remote.ts +9 -9
- package/src/components/PlFileDialog/utils.test.ts +20 -24
- package/src/components/PlFileDialog/utils.ts +8 -8
- package/src/components/PlFileInput/PlFileInput.vue +37 -26
- package/src/components/PlFileInput/index.ts +1 -1
- package/src/components/PlFileInput/pl-file-input.scss +3 -3
- package/src/components/PlFileInput/utils.ts +6 -6
- package/src/components/PlIcon16/PlIcon16.vue +7 -7
- package/src/components/PlIcon16/index.ts +1 -1
- package/src/components/PlIcon24/PlIcon24.vue +7 -7
- package/src/components/PlIcon24/index.ts +1 -1
- package/src/components/PlLoaderCircular/PlLoaderCircular.vue +24 -6
- package/src/components/PlLoaderCircular/index.ts +1 -1
- package/src/components/PlLoaderCircular/pl-loader-circular.scss +54 -50
- package/src/components/PlLoaderLogo.vue +8 -10
- package/src/components/PlLogView/PlLogView.vue +28 -22
- package/src/components/PlLogView/index.ts +1 -1
- package/src/components/PlLogView/pl-log-view.scss +10 -4
- package/src/components/PlLogView/useLogHandle.ts +32 -12
- package/src/components/PlMaskIcon16/index.ts +1 -1
- package/src/components/PlMaskIcon24/index.ts +1 -1
- package/src/components/PlNotificationAlert/PlNotificationAlert.vue +10 -5
- package/src/components/PlNotificationAlert/index.ts +1 -1
- package/src/components/PlNotificationAlert/pl-notification-alert.scss +43 -44
- package/src/components/PlNumberField/PlNumberField.vue +95 -68
- package/src/components/PlNumberField/__tests__/PlNumberField.spec.ts +71 -69
- package/src/components/PlNumberField/index.ts +1 -1
- package/src/components/PlNumberField/parseNumber.ts +20 -17
- package/src/components/PlProgressBar/PlProgressBar.vue +5 -5
- package/src/components/PlProgressBar/index.ts +1 -1
- package/src/components/PlProgressCell/PlProgressCell.vue +33 -14
- package/src/components/PlProgressCell/index.ts +2 -2
- package/src/components/PlProgressCell/pl-progress-cell.scss +70 -70
- package/src/components/PlProgressCell/types.ts +1 -1
- package/src/components/PlRadio/PlRadio.vue +54 -54
- package/src/components/PlRadio/PlRadioGroup.vue +16 -16
- package/src/components/PlRadio/__tests__/PlRadioGroup.spec.ts +50 -50
- package/src/components/PlRadio/index.ts +2 -2
- package/src/components/PlRadio/keys.ts +1 -1
- package/src/components/PlSearchField/PlSearchField.vue +21 -9
- package/src/components/PlSearchField/index.ts +1 -1
- package/src/components/PlSectionSeparator/PlSectionSeparator.vue +1 -1
- package/src/components/PlSectionSeparator/index.ts +1 -1
- package/src/components/PlSidebar/PlSidebarGroup.vue +2 -2
- package/src/components/PlSidebar/PlSidebarItem.vue +7 -7
- package/src/components/PlSidebar/index.ts +2 -2
- package/src/components/PlSlideModal/PlPureSlideModal.vue +18 -17
- package/src/components/PlSlideModal/PlSlideModal.vue +8 -12
- package/src/components/PlSlideModal/index.ts +2 -2
- package/src/components/PlSlideModal/pl-slide-modal.scss +2 -2
- package/src/components/PlSlideModal/props.ts +9 -9
- package/src/components/PlSpacer/PlSpacer.vue +1 -1
- package/src/components/PlSpacer/index.ts +1 -1
- package/src/components/PlSplash/PlSplash.vue +25 -17
- package/src/components/PlSplash/index.ts +1 -1
- package/src/components/PlSplash/pl-splash.module.scss +1 -1
- package/src/components/PlStatusTag/PlStatusTag.vue +13 -8
- package/src/components/PlStatusTag/index.ts +2 -2
- package/src/components/PlStatusTag/pl-status-tag.scss +18 -18
- package/src/components/PlStatusTag/types.ts +1 -1
- package/src/components/PlSvg/PlSvg.vue +24 -16
- package/src/components/PlSvg/index.ts +1 -1
- package/src/components/PlSvg/registry.ts +17 -21
- package/src/components/PlTabs/PlTabs.vue +10 -7
- package/src/components/PlTabs/Tab.vue +4 -4
- package/src/components/PlTabs/index.ts +2 -2
- package/src/components/PlTabs/pl-tabs.module.scss +3 -3
- package/src/components/PlTextArea/PlTextArea.vue +15 -15
- package/src/components/PlTextArea/__tests__/PlTextArea.spec.ts +12 -12
- package/src/components/PlTextArea/index.ts +1 -1
- package/src/components/PlTextArea/pl-textarea.scss +1 -1
- package/src/components/PlTextField/PlTextField.vue +48 -27
- package/src/components/PlTextField/__tests__/TextField.spec.ts +19 -19
- package/src/components/PlTextField/index.ts +1 -1
- package/src/components/PlToggleSwitch/PlToggleSwitch.vue +3 -3
- package/src/components/PlToggleSwitch/index.ts +1 -1
- package/src/components/PlToggleSwitch/pl-toggle-switch.scss +3 -2
- package/src/components/PlTooltip/Beak.vue +8 -1
- package/src/components/PlTooltip/PlTooltip.vue +33 -19
- package/src/components/PlTooltip/index.ts +1 -1
- package/src/components/PlTooltip/pl-tooltip.scss +4 -2
- package/src/components/PlTooltip/useTooltipPosition.ts +12 -12
- package/src/components/Scrollable.vue +17 -8
- package/src/components/Slider.vue +47 -23
- package/src/components/SliderRange.vue +72 -32
- package/src/components/SliderRangeTriple.vue +49 -31
- package/src/components/TabItem.vue +5 -5
- package/src/components/ThemeSwitcher.vue +1 -1
- package/src/components/TransitionSlidePanel.vue +2 -2
- package/src/components/VScroll.vue +10 -10
- package/src/components/contextMenu/Menu.vue +4 -4
- package/src/components/contextMenu/index.ts +6 -6
- package/src/composition/computedCached.ts +11 -7
- package/src/composition/filters/index.ts +2 -2
- package/src/composition/filters/metadata.ts +227 -220
- package/src/composition/filters/types.ts +44 -21
- package/src/composition/useClickOutside.ts +4 -4
- package/src/composition/useComponentProp.ts +5 -3
- package/src/composition/useConfirm.ts +5 -5
- package/src/composition/useDraggable.ts +16 -13
- package/src/composition/useEventListener.ts +13 -5
- package/src/composition/useFilteredList.ts +9 -6
- package/src/composition/useFormState.ts +3 -3
- package/src/composition/useHover.ts +10 -7
- package/src/composition/useInterval.ts +1 -1
- package/src/composition/useLocalStorage.ts +4 -4
- package/src/composition/useMouse.ts +3 -3
- package/src/composition/useMouseCapture.ts +10 -7
- package/src/composition/useNotificationPosition.ts +4 -4
- package/src/composition/usePollingQuery.ts +22 -20
- package/src/composition/usePosition.ts +13 -9
- package/src/composition/useQuery.ts +2 -2
- package/src/composition/useResizeObserver.ts +9 -6
- package/src/composition/useRipple.ts +6 -6
- package/src/composition/useScroll.ts +18 -12
- package/src/composition/useSliderBreakpoints.ts +6 -4
- package/src/composition/useSortable.ts +17 -17
- package/src/composition/useSortable2.ts +27 -24
- package/src/composition/useTheme.ts +11 -9
- package/src/composition/useTransformedModel.ts +6 -3
- package/src/composition/useWatchFetch.ts +3 -3
- package/src/composition/utils.ts +1 -1
- package/src/composition/watchCached.ts +2 -8
- package/src/demo-site-data/all-css-variables.ts +208 -169
- package/src/drafts/FileBaseInput.vue +35 -18
- package/src/generated/icons-16.ts +68 -68
- package/src/generated/icons-24.ts +211 -211
- package/src/global/resizeObserver.ts +1 -1
- package/src/helpers/dom.ts +12 -8
- package/src/helpers/downloadContent.ts +23 -21
- package/src/helpers/error.ts +6 -3
- package/src/helpers/functions.ts +5 -1
- package/src/helpers/objects.ts +1 -1
- package/src/helpers/utils.ts +23 -9
- package/src/index.ts +110 -110
- package/src/layout/PlBlockPage/PlBlockPage.vue +14 -19
- package/src/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.ts +1 -1
- package/src/layout/PlBlockPage/index.ts +2 -2
- package/src/layout/PlBlockPage/pl-block-page.scss +1 -1
- package/src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts +2 -2
- package/src/layout/PlContainer/PlContainer.vue +10 -5
- package/src/layout/PlContainer/index.ts +1 -1
- package/src/layout/PlContainer/pl-container.scss +1 -1
- package/src/layout/PlGrid/PlGrid.vue +3 -3
- package/src/layout/PlGrid/index.ts +1 -1
- package/src/layout/PlGrid/pl-grid.scss +1 -1
- package/src/layout/PlPlaceholder/PlPlaceholder.vue +19 -18
- package/src/layout/PlPlaceholder/index.ts +11 -14
- package/src/layout/PlPlaceholder/paint-worklet.js +6 -6
- package/src/layout/PlRow/PlRow.vue +2 -2
- package/src/layout/PlRow/index.ts +1 -1
- package/src/layout/PlRow/pl-row.scss +1 -1
- package/src/layout/PlSpacer/PlSpacer.vue +1 -1
- package/src/layout/PlSpacer/index.ts +1 -1
- package/src/types.ts +23 -17
- package/src/utils/DoubleContour.vue +18 -7
- package/src/utils/DropdownOverlay/DropdownOverlay.vue +13 -13
- package/src/utils/DropdownOverlay/index.ts +1 -1
- package/src/utils/PlCloseModalBtn.vue +1 -1
- package/src/utils/TextLabel.vue +1 -1
- package/src/utils/WebStopWatchElement.ts +5 -5
- package/src/utils/useLabelNotch.ts +12 -9
- package/src/utils/useValidation.ts +2 -2
- package/tsconfig.json +2 -7
- package/vitest.config.mts +9 -9
- package/.turbo/turbo-lint.log +0 -5
- package/eslint.config.mjs +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlToggleSwitch.vue.js","sources":["../../../src/components/PlToggleSwitch/PlToggleSwitch.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for manipulating a boolean value\n */\nexport default {\n name:
|
|
1
|
+
{"version":3,"file":"PlToggleSwitch.vue.js","sources":["../../../src/components/PlToggleSwitch/PlToggleSwitch.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for manipulating a boolean value\n */\nexport default {\n name: \"PlToggleSwitch\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-toggle-switch.scss\";\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated\n *\n * @param value - The new boolean value of the model\n */\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\ndefineProps<{\n /**\n * The label text for the component (optional)\n */\n label?: string;\n /**\n * The current boolean value of the component (represents 'on' | 'off' states generally).\n */\n modelValue?: boolean;\n}>();\n</script>\n\n<template>\n <div\n tabindex=\"0\"\n class=\"ui-toggle-switch\"\n :class=\"{ active: modelValue }\"\n @click=\"$emit('update:modelValue', !modelValue)\"\n @keydown.enter=\"$emit('update:modelValue', !modelValue)\"\n >\n <div class=\"ui-toggle-switch__body\">\n <div class=\"ui-toggle-switch__handle\" />\n </div>\n <span v-if=\"label\" class=\"label\">{{ label }}</span>\n </div>\n</template>\n"],"names":["__default__","_createElementBlock","_normalizeClass","__props","_cache","$event","$emit","_withKeys","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;GAIAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;2BA4BEC,EAWM,OAAA;AAAA,MAVJ,UAAS;AAAA,MACT,OAAKC,EAAA,CAAC,oBAAkB,EAAA,QACNC,EAAA,WAAA,CAAU,CAAA;AAAA,MAC3B,SAAKC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEC,EAAAA,MAAK,qBAAA,CAAuBH,EAAA,UAAU;AAAA,MAC7C,WAAOC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAG,EAAA,CAAAF,MAAQC,EAAAA,MAAK,qBAAA,CAAuBH,EAAA,UAAU,GAAA,CAAA,OAAA,CAAA;AAAA,IAAA;sBAEtDK,EAEM,OAAA,EAFD,OAAM,4BAAwB;AAAA,QACjCA,EAAwC,OAAA,EAAnC,OAAM,4BAA0B;AAAA,MAAA;MAE3BL,EAAA,cAAZF,EAAmD,QAAnDQ,GAAmDC,EAAfP,EAAA,KAAK,GAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Beak.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/Beak.vue"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Beak.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/Beak.vue"],"names":[],"mappings":";AA2DA,wBAMG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Beak.vue.js","sources":["../../../src/components/PlTooltip/Beak.vue"],"sourcesContent":["<template>\n <svg
|
|
1
|
+
{"version":3,"file":"Beak.vue.js","sources":["../../../src/components/PlTooltip/Beak.vue"],"sourcesContent":["<template>\n <svg\n class=\"beak\"\n width=\"5\"\n height=\"9\"\n viewBox=\"0 0 3 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.00222 8.00933L0 4.00711L4.00222 0.00488281L4.00222 8.00933Z\" fill=\"#24223D\" />\n </svg>\n</template>\n"],"names":["_hoisted_1","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode"],"mappings":";;cAEIA,IAAY;AAAA,EACZ,OAAM;AAAA,EACN;EACA;EACA,SAAK;AAAA,EACL;;;AANF,SAAAC,EAAAC,GAAAC,GAAA;SAQEC,EAAA,GAA0FC,EAAA,OAAAL,GAAA,CAAA,GAAAG,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,IAApFG,EAAE,QAAA;AAAA,MAAiE,GAAA;AAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlTooltip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlTooltip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"names":[],"mappings":"AAuLA,OAAO,mBAAmB,CAAC;AAS3B,kCAAkC;;IAO9B;;OAEG;gBACS,MAAM;IAClB;;OAEG;iBACU,MAAM;IACnB;;OAEG;eACQ,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;IAC9D;;OAEG;WACI,OAAO;IACd;;OAEG;UACG,MAAM;IACZ;;OAEG;cACO,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IACzD;;OAEG;eACQ,MAAM;;;;IA3BjB;;OAEG;gBACS,MAAM;IAClB;;OAEG;iBACU,MAAM;IACnB;;OAEG;eACQ,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;IAC9D;;OAEG;WACI,OAAO;IACd;;OAEG;UACG,MAAM;IACZ;;OAEG;cACO,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IACzD;;OAEG;eACQ,MAAM;;;;SARX,MAAM;eAhBA,MAAM;gBAIL,MAAM;cAIR,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW;aAYpD,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;cAI9C,MAAM;;;;;qBA4MS,GAAG;qBACH,GAAG;;AA9OjC,wBAmSK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlTooltip.vue.js","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Simple tooltip on mouseover */\nexport default {\n name:
|
|
1
|
+
{"version":3,"file":"PlTooltip.vue.js","sources":["../../../src/components/PlTooltip/PlTooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Simple tooltip on mouseover */\nexport default {\n name: \"PlTooltip\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-tooltip.scss\";\nimport { computed, onUnmounted, reactive, ref, toRef, watch } from \"vue\";\nimport { useTooltipPosition } from \"./useTooltipPosition\";\nimport * as utils from \"../../helpers/utils\";\nimport { useClickOutside } from \"../../composition/useClickOutside\";\nimport Beak from \"./Beak.vue\";\nimport { tMap } from \"./global\";\n\nconst emit = defineEmits([\"tooltip:close\"]);\n\nconst tKey = Symbol();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * delay in milliseconds before the tooltip opens\n */\n openDelay?: number;\n /**\n * delay in milliseconds before the tooltip disappears\n */\n closeDelay?: number;\n /**\n * Tooltip position\n */\n position?: \"top-left\" | \"left\" | \"right\" | \"top\" | \"southwest\";\n /**\n * external prop to hide tooltips\n */\n hide?: boolean;\n /**\n * The gap in pixels between the tooltip and the target element\n */\n gap?: number;\n /**\n * base html element for tooltip\n */\n element?: \"div\" | \"span\" | \"a\" | \"p\" | \"h1\" | \"h2\" | \"h3\";\n /**\n * Max width (css value) of the tooltip container (default is 300px)\n */\n maxWidth?: string;\n }>(),\n {\n openDelay: 100,\n closeDelay: 1000,\n gap: 8,\n position: \"top\",\n element: \"div\",\n maxWidth: \"300px\",\n },\n);\n\nconst data = reactive({\n open: false,\n over: false,\n tooltipOpen: false,\n key: Symbol(),\n});\n\ntMap.set(tKey, () => closeTooltip());\n\n// Hook to avoid the need to immediately teleport into the body (better performance)\nwatch(\n () => data.open,\n (v) => {\n requestAnimationFrame(() => {\n data.tooltipOpen = v;\n });\n },\n);\n\nlet clearTimeout = () => {};\n\nconst dispatchAdjust = utils.throttle(() => window.dispatchEvent(new CustomEvent(\"adjust\")), 1000);\n\nconst showTooltip = () => {\n data.open = true;\n\n for (const [k, f] of tMap.entries()) {\n if (k !== tKey) {\n f();\n }\n }\n};\n\nconst closeTooltip = () => {\n data.open = false;\n emit(\"tooltip:close\");\n};\n\nconst onOver = async () => {\n if (props.hide) {\n return;\n }\n\n dispatchAdjust();\n\n data.over = true;\n\n clearTimeout();\n\n await utils.delay(props.openDelay ?? 100);\n\n if (data.over) {\n showTooltip();\n }\n};\n\nconst onLeave = () => {\n data.over = false;\n clearTimeout = utils.timeout(() => {\n if (!data.over) {\n closeTooltip();\n }\n }, props.closeDelay);\n};\n\nwatch(\n () => props.hide,\n (hide) => {\n if (hide) {\n closeTooltip();\n }\n },\n);\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst tooltip = ref<HTMLElement | undefined>();\n\nconst style = useTooltipPosition(rootRef, toRef(props));\n\nuseClickOutside([rootRef, tooltip], () => closeTooltip());\n\nconst tooltipStyle = computed(() => ({\n \"--pl-tooltip-max-width\": props.maxWidth,\n}));\n\nonUnmounted(() => {\n tMap.delete(tKey);\n});\n</script>\n\n<template>\n <component\n :is=\"element\"\n v-bind=\"$attrs\"\n ref=\"rootRef\"\n @click=\"onOver\"\n @mouseover=\"onOver\"\n @mouseleave=\"onLeave\"\n >\n <slot />\n <Teleport v-if=\"$slots['tooltip'] && data.open\" to=\"body\">\n <Transition name=\"tooltip-transition\">\n <div v-if=\"data.tooltipOpen\" class=\"pl-tooltip__container\" :style=\"style\" @click.stop>\n <div\n ref=\"tooltip\"\n class=\"pl-tooltip\"\n :style=\"tooltipStyle\"\n :class=\"position\"\n @mouseover=\"onOver\"\n @mouseleave=\"onLeave\"\n >\n <!-- should be one line -->\n <div><slot name=\"tooltip\" /></div>\n <Beak />\n </div>\n </div>\n </Transition>\n </Teleport>\n </component>\n</template>\n"],"names":["__default__","emit","__emit","tKey","props","__props","data","reactive","tMap","closeTooltip","watch","v","clearTimeout","dispatchAdjust","utils.throttle","showTooltip","k","f","onOver","utils.delay","onLeave","utils.timeout","hide","rootRef","ref","tooltip","style","useTooltipPosition","toRef","useClickOutside","tooltipStyle","computed","onUnmounted","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","$attrs","_renderSlot","_ctx","$slots","_Teleport","_createVNode","_Transition","_createElementBlock","_unref","_createElementVNode","_normalizeClass","Beak"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTooltipPosition.js","sources":["../../../src/components/PlTooltip/useTooltipPosition.ts"],"sourcesContent":["import { computed, type Ref, ref, unref } from
|
|
1
|
+
{"version":3,"file":"useTooltipPosition.js","sources":["../../../src/components/PlTooltip/useTooltipPosition.ts"],"sourcesContent":["import { computed, type Ref, ref, unref } from \"vue\";\nimport { useElementPosition } from \"../../composition/usePosition\";\nimport type { ElementPosition } from \"../../types\";\n\ntype Options = {\n position: \"top-left\" | \"right\" | \"left\" | \"top\" | \"southwest\";\n gap: number;\n};\n\n/**\n * A custom hook that calculates and returns the CSS style needed to position a tooltip\n * relative to a target HTML element based on the specified position and gap.\n */\nexport function useTooltipPosition(el: Ref<HTMLElement | undefined>, optionsRef: Ref<Options>) {\n const posRef = ref<ElementPosition>();\n\n useElementPosition(el, (v) => {\n posRef.value = v;\n });\n\n return computed(() => {\n const pos = unref(posRef);\n\n const options = unref(optionsRef);\n\n const position = options.position ?? \"top\";\n\n const gap = options.gap ?? 8;\n\n if (!pos) {\n return \"\";\n }\n\n const offsetMiddleY = pos.offsetY + Math.floor(pos.height / 2);\n const offsetMiddleX = pos.offsetX + Math.floor(pos.width / 2);\n\n if (position === \"top-left\") {\n return `left: ${pos.offsetX}px; top: ${pos.offsetY - gap}px;`;\n }\n\n if (position === \"top\") {\n return `left: ${offsetMiddleX}px; top: ${pos.offsetY - gap}px;`;\n }\n\n if (position === \"right\") {\n return `left: ${pos.offsetX + pos.width + gap}px; top: ${offsetMiddleY}px;`;\n }\n\n if (position === \"left\") {\n return `right: ${pos.scrollWidth - pos.x + gap}px; top: ${offsetMiddleY}px;`;\n }\n\n if (position === \"southwest\") {\n return `left: ${pos.offsetX + pos.width}px; top: ${pos.offsetY + pos.height + gap}px;`;\n }\n\n return \"\";\n });\n}\n"],"names":["useTooltipPosition","el","optionsRef","posRef","ref","useElementPosition","v","computed","pos","unref","options","position","gap","offsetMiddleY","offsetMiddleX"],"mappings":";;AAaO,SAASA,EAAmBC,GAAkCC,GAA0B;AAC7F,QAAMC,IAASC,EAAA;AAEf,SAAAC,EAAmBJ,GAAI,CAACK,MAAM;AAC5B,IAAAH,EAAO,QAAQG;AAAA,EACjB,CAAC,GAEMC,EAAS,MAAM;AACpB,UAAMC,IAAMC,EAAMN,CAAM,GAElBO,IAAUD,EAAMP,CAAU,GAE1BS,IAAWD,EAAQ,YAAY,OAE/BE,IAAMF,EAAQ,OAAO;AAE3B,QAAI,CAACF;AACH,aAAO;AAGT,UAAMK,IAAgBL,EAAI,UAAU,KAAK,MAAMA,EAAI,SAAS,CAAC,GACvDM,IAAgBN,EAAI,UAAU,KAAK,MAAMA,EAAI,QAAQ,CAAC;AAE5D,WAAIG,MAAa,aACR,SAASH,EAAI,OAAO,YAAYA,EAAI,UAAUI,CAAG,QAGtDD,MAAa,QACR,SAASG,CAAa,YAAYN,EAAI,UAAUI,CAAG,QAGxDD,MAAa,UACR,SAASH,EAAI,UAAUA,EAAI,QAAQI,CAAG,YAAYC,CAAa,QAGpEF,MAAa,SACR,UAAUH,EAAI,cAAcA,EAAI,IAAII,CAAG,YAAYC,CAAa,QAGrEF,MAAa,cACR,SAASH,EAAI,UAAUA,EAAI,KAAK,YAAYA,EAAI,UAAUA,EAAI,SAASI,CAAG,QAG5E;AAAA,EACT,CAAC;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scrollable.vue.d.ts","sourceRoot":"","sources":["../../src/components/Scrollable.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Scrollable.vue.d.ts","sourceRoot":"","sources":["../../src/components/Scrollable.vue"],"names":[],"mappings":"AAiKA,iBAAS,cAAc;WAkFT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAcD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;kBAOnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -15,7 +15,16 @@ const E = { class: "ui-scrollable" }, B = /* @__PURE__ */ a({
|
|
|
15
15
|
scrollWidth: 0
|
|
16
16
|
});
|
|
17
17
|
function r(e) {
|
|
18
|
-
H(
|
|
18
|
+
H(
|
|
19
|
+
l,
|
|
20
|
+
e,
|
|
21
|
+
"scrollTop",
|
|
22
|
+
"scrollLeft",
|
|
23
|
+
"clientHeight",
|
|
24
|
+
"clientWidth",
|
|
25
|
+
"scrollHeight",
|
|
26
|
+
"scrollWidth"
|
|
27
|
+
);
|
|
19
28
|
}
|
|
20
29
|
const i = (e) => {
|
|
21
30
|
e.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scrollable.vue.js","sources":["../../src/components/Scrollable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport VScroll from
|
|
1
|
+
{"version":3,"file":"Scrollable.vue.js","sources":["../../src/components/Scrollable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport VScroll from \"./VScroll.vue\";\nimport HScroll from \"./HScroll.vue\";\nimport { onMounted, onUnmounted, reactive, ref, unref } from \"vue\";\nimport { tapIf, copyProps } from \"../helpers/functions\";\nimport { useResizeObserver } from \"../composition/useResizeObserver\";\n\nconst containerRef = ref<HTMLElement>();\n\nconst data = reactive({\n scrollTop: 0,\n scrollLeft: 0,\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollWidth: 0,\n});\n\nfunction updateState(container: HTMLElement) {\n copyProps(\n data,\n container,\n \"scrollTop\",\n \"scrollLeft\",\n \"clientHeight\",\n \"clientWidth\",\n \"scrollHeight\",\n \"scrollWidth\",\n );\n}\n\nconst onWheel = (e: WheelEvent) => {\n e.preventDefault();\n const root = e.currentTarget as HTMLElement;\n root.scrollTop += e.deltaY;\n root.scrollLeft += e.deltaX;\n updateState(root);\n};\n\nfunction updateTop(v: number) {\n tapIf(unref(containerRef), (el) => {\n el.scrollTop = v;\n updateState(el);\n });\n}\n\nfunction updateLeft(v: number) {\n tapIf(unref(containerRef), (el) => {\n el.scrollLeft = v;\n updateState(el);\n });\n}\n\nuseResizeObserver(containerRef, (el) => {\n tapIf(el, (el) => updateState(el));\n});\n\nonMounted(() => {\n tapIf(unref(containerRef), (root) => {\n updateState(root);\n root.addEventListener(\"wheel\", onWheel);\n });\n});\n\nonUnmounted(() => {\n tapIf(unref(containerRef), (root) => root.removeEventListener(\"wheel\", onWheel));\n});\n</script>\n\n<template>\n <div class=\"ui-scrollable\">\n <div ref=\"containerRef\" class=\"ui-scrollable__container\" @wheel=\"onWheel\">\n <slot />\n </div>\n <VScroll\n :scroll-top=\"data.scrollTop\"\n :client-height=\"data.clientHeight\"\n :scroll-height=\"data.scrollHeight\"\n @wheel.stop\n @update:scroll-top=\"updateTop\"\n />\n <HScroll\n :scroll-left=\"data.scrollLeft\"\n :client-width=\"data.clientWidth\"\n :scroll-width=\"data.scrollWidth\"\n @wheel.stop\n @update:scroll-left=\"updateLeft\"\n />\n </div>\n</template>\n"],"names":["containerRef","ref","data","reactive","updateState","container","copyProps","onWheel","root","updateTop","v","tapIf","unref","el","updateLeft","useResizeObserver","onMounted","onUnmounted","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_renderSlot","_ctx","_createVNode","VScroll","HScroll"],"mappings":";;;;;;;;AAOA,UAAMA,IAAeC,EAAA,GAEfC,IAAOC,EAAS;AAAA,MACpB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,cAAc;AAAA,MACd,aAAa;AAAA,IAAA,CACd;AAED,aAASC,EAAYC,GAAwB;AAC3C,MAAAC;AAAA,QACEJ;AAAA,QACAG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAME,IAAU,CAAC,MAAkB;AACjC,QAAE,eAAA;AACF,YAAMC,IAAO,EAAE;AACf,MAAAA,EAAK,aAAa,EAAE,QACpBA,EAAK,cAAc,EAAE,QACrBJ,EAAYI,CAAI;AAAA,IAClB;AAEA,aAASC,EAAUC,GAAW;AAC5B,MAAAC,EAAMC,EAAMZ,CAAY,GAAG,CAACa,MAAO;AACjC,QAAAA,EAAG,YAAYH,GACfN,EAAYS,CAAE;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,aAASC,EAAWJ,GAAW;AAC7B,MAAAC,EAAMC,EAAMZ,CAAY,GAAG,CAACa,MAAO;AACjC,QAAAA,EAAG,aAAaH,GAChBN,EAAYS,CAAE;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,WAAAE,EAAkBf,GAAc,CAACa,MAAO;AACtC,MAAAF,EAAME,GAAI,CAACA,MAAOT,EAAYS,CAAE,CAAC;AAAA,IACnC,CAAC,GAEDG,EAAU,MAAM;AACd,MAAAL,EAAMC,EAAMZ,CAAY,GAAG,CAACQ,MAAS;AACnC,QAAAJ,EAAYI,CAAI,GAChBA,EAAK,iBAAiB,SAASD,CAAO;AAAA,MACxC,CAAC;AAAA,IACH,CAAC,GAEDU,EAAY,MAAM;AAChB,MAAAN,EAAMC,EAAMZ,CAAY,GAAG,CAACQ,MAASA,EAAK,oBAAoB,SAASD,CAAO,CAAC;AAAA,IACjF,CAAC,cAICW,EAAA,GAAAC,EAkBM,OAlBNC,GAkBM;AAAA,MAjBJC,EAEM,OAAA;AAAA,iBAFG;AAAA,QAAJ,KAAIrB;AAAA,QAAe,OAAM;AAAA,QAA4B,SAAAO;AAAA,MAAA;QACxDe,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;MAEVC,EAMEC,GAAA;AAAA,QALC,cAAYvB,EAAK;AAAA,QACjB,iBAAeA,EAAK;AAAA,QACpB,iBAAeA,EAAK;AAAA,QACpB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QACV,sBAAmBO;AAAA,MAAA;MAEtBe,EAMEE,GAAA;AAAA,QALC,eAAaxB,EAAK;AAAA,QAClB,gBAAcA,EAAK;AAAA,QACnB,gBAAcA,EAAK;AAAA,QACnB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,QACV,uBAAoBY;AAAA,MAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.vue.d.ts","sourceRoot":"","sources":["../../src/components/Slider.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Slider.vue.d.ts","sourceRoot":"","sources":["../../src/components/Slider.vue"],"names":[],"mappings":"AAwNA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQ3C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAsIJ,iBAAS,cAAc;WAkIT,OAAO,IAA6B;;yBAZrB,GAAG;;;;;;;EAiB/B;AAqBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WA1ST,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;kBA+SvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -55,7 +55,9 @@ const W = { class: "ui-slider__wrapper" }, X = { class: "ui-slider__label-sectio
|
|
|
55
55
|
var o;
|
|
56
56
|
H((o = _(w)) == null ? void 0 : o.getBoundingClientRect(), (u) => {
|
|
57
57
|
const { dx: f } = t;
|
|
58
|
-
d.deltaValue = f / u.width * y.value, c.value = p(
|
|
58
|
+
d.deltaValue = f / u.width * y.value, c.value = p(
|
|
59
|
+
b((e.modelValue ?? 0) + d.deltaValue, e.min, e.max)
|
|
60
|
+
), t.stop && (V("update:modelValue", p(x.value)), d.deltaValue = 0);
|
|
59
61
|
});
|
|
60
62
|
});
|
|
61
63
|
function M(t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.vue.js","sources":["../../src/components/Slider.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from 'vue';\nimport { useMouseCapture } from '../composition/useMouseCapture';\nimport { tapIf } from '../helpers/functions';\nimport { clamp } from '../helpers/math';\nimport { PlTooltip } from './PlTooltip';\nimport type { SliderMode } from '../types';\nimport { useSliderBreakpoints } from '../composition/useSliderBreakpoints';\nimport { getErrorMessage } from '../helpers/error.ts';\n\nconst slots = useSlots();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: number;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: 'text',\n measure: '',\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue: 0,\n});\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue = computed(() => {\n return clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max);\n});\n\nconst realtimeVal = ref(props.modelValue);\n\nconst error = computed(() => {\n const v = props.modelValue;\n\n if (!Number.isFinite(v)) {\n return 'Not a number';\n }\n\n if (v < props.min) {\n return `Min value: ${props.min}`;\n }\n\n if (v > props.max) {\n return `Max value: ${props.max}`;\n }\n\n return getErrorMessage(props.error);\n});\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst position = computed(() => {\n return (localValue.value - props.min) / range.value;\n});\n\nconst progressStyle = computed(() => ({\n right: Math.ceil((1 - position.value) * 100) + '%',\n}));\n\nconst thumbStyle = computed(() => {\n const value = Math.ceil((1 - position.value) * 100);\n return {\n right: `calc(${value}%) `,\n };\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef = ref<HTMLElement>();\n\nwatch(\n () => props.modelValue,\n (val) => {\n realtimeVal.value = val;\n },\n);\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nuseMouseCapture(thumbRef, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue = (dx / rect.width) * range.value;\n\n realtimeVal.value = round(clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max));\n\n if (ev.stop) {\n emit('update:modelValue', round(localValue.value));\n data.deltaValue = 0;\n }\n });\n});\n\nfunction setModelValue(value: number) {\n emit('update:modelValue', round(value));\n}\n\nfunction updateModelValue(event: Event) {\n setModelValue(+(event.target as HTMLInputElement).value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Enter'].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep\n = e.code === 'ArrowUp' || e.code === 'ArrowRight' ? props.step * 1 : e.code === 'ArrowDown' || e.code === 'ArrowLeft' ? props.step * -1 : 0;\n\n setModelValue(props.modelValue + nextStep);\n}\n</script>\n\n<template>\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">{{ realtimeVal }}{{ measure }}</div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div v-for=\"(item, index) in breakpointsRef\" :key=\"index\" :style=\"{ right: `${item}%` }\" class=\"ui-slider__thumb-step\"/>\n </template>\n <div ref=\"thumbRef\" tabindex=\"0\" class=\"ui-slider__thumb ui-slider__thumb-active\" :style=\"thumbStyle\" @keydown=\"handleKeyPress\">\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <input v-if=\"props.mode === 'input'\" :value=\"realtimeVal\" class=\"ui-slider__value text-s\" @change=\"updateModelValue($event)\" />\n </div>\n </div>\n <!-- <div v-if=\"props.helper\" class=\"ui-slider__helper\">\n {{ props.helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","range","computed","localValue","clamp","realtimeVal","ref","error","v","getErrorMessage","propsRef","breakpointsRef","useSliderBreakpoints","position","progressStyle","thumbStyle","barRef","thumbRef","watch","val","round","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","setModelValue","updateModelValue","event","handleKeyPress","e","nextStep","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","index","_hoisted_8","_cache","$event","_hoisted_10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAMA,IAAQC,EAAA,GAERC,IAAOC,GAEPC,IAAQC,GA2BRC,IAAOC,EAAS;AAAA,MACpB,YAAY;AAAA,IAAA,CACb,GAEKC,IAAQC,EAAS,MAAML,EAAM,MAAMA,EAAM,GAAG,GAE5CM,IAAaD,EAAS,MACnBE,GAAOP,EAAM,cAAc,KAAKE,EAAK,YAAYF,EAAM,KAAKA,EAAM,GAAG,CAC7E,GAEKQ,IAAcC,EAAIT,EAAM,UAAU,GAElCU,IAAQL,EAAS,MAAM;AAC3B,YAAMM,IAAIX,EAAM;AAEhB,aAAK,OAAO,SAASW,CAAC,IAIlBA,IAAIX,EAAM,MACL,cAAcA,EAAM,GAAG,KAG5BW,IAAIX,EAAM,MACL,cAAcA,EAAM,GAAG,KAGzBY,EAAgBZ,EAAM,KAAK,IAXzB;AAAA,IAYX,CAAC,GAEKa,IAAWR,EAAS,MAAML,CAAK,GAE/Bc,IAAiBC,EAAqBF,CAAQ,GAE9CG,IAAWX,EAAS,OAChBC,EAAW,QAAQN,EAAM,OAAOI,EAAM,KAC/C,GAEKa,IAAgBZ,EAAS,OAAO;AAAA,MACpC,OAAO,KAAK,MAAM,IAAIW,EAAS,SAAS,GAAG,IAAI;AAAA,IAAA,EAC/C,GAEIE,IAAab,EAAS,OAEnB;AAAA,MACL,OAAO,QAFK,KAAK,MAAM,IAAIW,EAAS,SAAS,GAAG,CAE5B;AAAA,IAAA,EAEvB,GAEKG,IAASV,EAAA,GACTW,IAAWX,EAAA;AAEjB,IAAAY;AAAA,MACE,MAAMrB,EAAM;AAAA,MACZ,CAACsB,MAAQ;AACP,QAAAd,EAAY,QAAQc;AAAA,MACtB;AAAA,IAAA;AAGF,aAASC,EAAMC,GAAe;AAC5B,YAAMb,IAAIJ,EAAMiB,GAAOxB,EAAM,KAAKA,EAAM,GAAG;AAE3C,aAAO,KAAK,OAAOW,IAAI,OAAO,YAAY,IAAIX,EAAM,KAAK,KAAK,IAAIA,EAAM;AAAA,IAC1E;AAEA,IAAAyB,EAAgBL,GAAU,CAACM,MAAO;;AAChC,MAAAC,GAAMC,IAAAC,EAAMV,CAAM,MAAZ,gBAAAS,EAAe,yBAAyB,CAACE,MAAS;AACtD,cAAM,EAAE,IAAAC,MAAOL;AAEf,QAAAxB,EAAK,aAAc6B,IAAKD,EAAK,QAAS1B,EAAM,OAE5CI,EAAY,QAAQe,EAAMhB,GAAOP,EAAM,cAAc,KAAKE,EAAK,YAAYF,EAAM,KAAKA,EAAM,GAAG,CAAC,GAE5F0B,EAAG,SACL5B,EAAK,qBAAqByB,EAAMjB,EAAW,KAAK,CAAC,GACjDJ,EAAK,aAAa;AAAA,MAEtB,CAAC;AAAA,IACH,CAAC;AAED,aAAS8B,EAAcR,GAAe;AACpC,MAAA1B,EAAK,qBAAqByB,EAAMC,CAAK,CAAC;AAAA,IACxC;AAEA,aAASS,EAAiBC,GAAc;AACtC,MAAAF,EAAc,CAAEE,EAAM,OAA4B,KAAK;AAAA,IACzD;AAEA,aAASC,EAAeC,GAA6C;AACnE,MAAI,CAAC,aAAa,WAAW,cAAc,aAAa,OAAO,EAAE,SAASA,EAAE,IAAI,KAC9EA,EAAE,eAAA;AAGJ,YAAMC,IACFD,EAAE,SAAS,aAAaA,EAAE,SAAS,eAAepC,EAAM,OAAO,IAAIoC,EAAE,SAAS,eAAeA,EAAE,SAAS,cAAcpC,EAAM,OAAO,KAAK;AAE5I,MAAAgC,EAAchC,EAAM,aAAaqC,CAAQ;AAAA,IAC3C;2BAIEC,EAyCM,OAAA;AAAA,MAzCA,UAAOtC,EAAM,WAAQ,wBAA2B,QAAiB,qBAAqB,CAAA;AAAA,IAAA;MAC1FuC,EAiCM,OAAA;AAAA,QAjCA,OAAKC,EAAA,CAAA,mBAAqBxC,EAAM,IAAI,IAAU,WAAW,CAAA;AAAA,MAAA;QAC7DuC,EA2BM,OA3BNE,GA2BM;AAAA,UA1BJF,EAUM,OAVNG,GAUM;AAAA,YATSzC,EAAA,SAAb0C,EAAA,GAAAL,EAOQ,SAPRM,GAOQ;AAAA,cANNL,EAAwB,gBAAftC,EAAA,KAAK,GAAA,CAAA;AAAA,cACG4C,EAAAjD,CAAA,EAAM,gBAAvBkD,EAIYD,EAAAE,CAAA,GAAA;AAAA;gBAJoB,OAAM;AAAA,gBAAO,UAAS;AAAA,cAAA;gBACzC,WACT,MAAuB;AAAA,kBAAvBC,EAAuBC,EAAA,QAAA,SAAA;AAAA,gBAAA;;;;YAIlBjD,EAAM,SAAI,UAArB2C,EAAA,GAAAL,EAA6G,OAA7GY,GAA6GC,EAAjC3C,EAAA,KAAW,MAAMP,EAAA,OAAO,GAAA,CAAA;;UAEtGsC,EAcM,OAdNa,IAcM;AAAA,YAbJb,EAIM,OAJNc,IAIM;AAAA,cAHJd,EAEM,OAAA;AAAA,yBAFG;AAAA,gBAAJ,KAAIpB;AAAA,gBAAS,OAAM;AAAA,cAAA;gBACtBoB,EAA0D,OAAA;AAAA,kBAArD,OAAM;AAAA,kBAAuB,SAAOtB,EAAA,KAAa;AAAA,gBAAA;;;YAG1DsB,EAOM,OAPNe,IAOM;AAAA,cANYtD,EAAM,eACpB2C,EAAA,EAAA,GAAAL,EAAwHiB,GAAA,EAAA,KAAA,EAAA,GAAAC,EAA3FX,EAAA/B,CAAA,GAAc,CAA9B2C,GAAMC,YAAnBpB,EAAwH,OAAA;AAAA,gBAA1E,KAAKoB;AAAA,gBAAQ,qBAAmBD,CAAI,KAAA;AAAA,gBAAO,OAAM;AAAA,cAAA;cAEjGlB,EAEM,OAAA;AAAA,yBAFG;AAAA,gBAAJ,KAAInB;AAAA,gBAAW,UAAS;AAAA,gBAAI,OAAM;AAAA,gBAA4C,SAAOF,EAAA,KAAU;AAAA,gBAAG,WAASiB;AAAA,cAAA;gBAC9GI,EAAgD,OAAA,EAA3C,OAAM,mCAAA,GAAkC,MAAA,EAAA;AAAA,cAAA;;;;QAMrDA,EAEM,OAFNoB,IAEM;AAAA,UADS3D,EAAM,SAAI,gBAAvBsC,EAA+H,SAAA;AAAA;YAAzF,OAAO9B,EAAA;AAAA,YAAa,OAAM;AAAA,YAA2B,UAAMoD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAE5B,EAAiB4B,CAAM;AAAA,UAAA;;;MAMnHnD,EAAA,cAAX4B,EAEM,OAFNwB,IAEMX,EADDzC,EAAA,KAAK,GAAA,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"Slider.vue.js","sources":["../../src/components/Slider.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from \"vue\";\nimport { useMouseCapture } from \"../composition/useMouseCapture\";\nimport { tapIf } from \"../helpers/functions\";\nimport { clamp } from \"../helpers/math\";\nimport { PlTooltip } from \"./PlTooltip\";\nimport type { SliderMode } from \"../types\";\nimport { useSliderBreakpoints } from \"../composition/useSliderBreakpoints\";\nimport { getErrorMessage } from \"../helpers/error.ts\";\n\nconst slots = useSlots();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: number;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: \"text\",\n measure: \"\",\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue: 0,\n});\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue = computed(() => {\n return clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max);\n});\n\nconst realtimeVal = ref(props.modelValue);\n\nconst error = computed(() => {\n const v = props.modelValue;\n\n if (!Number.isFinite(v)) {\n return \"Not a number\";\n }\n\n if (v < props.min) {\n return `Min value: ${props.min}`;\n }\n\n if (v > props.max) {\n return `Max value: ${props.max}`;\n }\n\n return getErrorMessage(props.error);\n});\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst position = computed(() => {\n return (localValue.value - props.min) / range.value;\n});\n\nconst progressStyle = computed(() => ({\n right: Math.ceil((1 - position.value) * 100) + \"%\",\n}));\n\nconst thumbStyle = computed(() => {\n const value = Math.ceil((1 - position.value) * 100);\n return {\n right: `calc(${value}%) `,\n };\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef = ref<HTMLElement>();\n\nwatch(\n () => props.modelValue,\n (val) => {\n realtimeVal.value = val;\n },\n);\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nuseMouseCapture(thumbRef, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue = (dx / rect.width) * range.value;\n\n realtimeVal.value = round(\n clamp((props.modelValue ?? 0) + data.deltaValue, props.min, props.max),\n );\n\n if (ev.stop) {\n emit(\"update:modelValue\", round(localValue.value));\n data.deltaValue = 0;\n }\n });\n});\n\nfunction setModelValue(value: number) {\n emit(\"update:modelValue\", round(value));\n}\n\nfunction updateModelValue(event: Event) {\n setModelValue(+(event.target as HTMLInputElement).value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if ([\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep =\n e.code === \"ArrowUp\" || e.code === \"ArrowRight\"\n ? props.step * 1\n : e.code === \"ArrowDown\" || e.code === \"ArrowLeft\"\n ? props.step * -1\n : 0;\n\n setModelValue(props.modelValue + nextStep);\n}\n</script>\n\n<template>\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">\n {{ realtimeVal }}{{ measure }}\n </div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div\n v-for=\"(item, index) in breakpointsRef\"\n :key=\"index\"\n :style=\"{ right: `${item}%` }\"\n class=\"ui-slider__thumb-step\"\n />\n </template>\n <div\n ref=\"thumbRef\"\n tabindex=\"0\"\n class=\"ui-slider__thumb ui-slider__thumb-active\"\n :style=\"thumbStyle\"\n @keydown=\"handleKeyPress\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <input\n v-if=\"props.mode === 'input'\"\n :value=\"realtimeVal\"\n class=\"ui-slider__value text-s\"\n @change=\"updateModelValue($event)\"\n />\n </div>\n </div>\n <!-- <div v-if=\"props.helper\" class=\"ui-slider__helper\">\n {{ props.helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","range","computed","localValue","clamp","realtimeVal","ref","error","v","getErrorMessage","propsRef","breakpointsRef","useSliderBreakpoints","position","progressStyle","thumbStyle","barRef","thumbRef","watch","val","round","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","setModelValue","updateModelValue","event","handleKeyPress","e","nextStep","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","index","_hoisted_8","_cache","$event","_hoisted_10"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderRange.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRange.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SliderRange.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRange.vue"],"names":[],"mappings":"AAgRA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAS3C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAmLJ,iBAAS,cAAc;WA6JT,OAAO,IAA6B;;yBAbrB,GAAG;;;;;;;;EAkB/B;AAyBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WAtXT,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;;OA0XvB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -35,7 +35,11 @@ const re = { class: "ui-slider__wrapper" }, ue = { class: "ui-slider__label-sect
|
|
|
35
35
|
const I = W(), P = F, e = g, r = X({
|
|
36
36
|
deltaValue1: 0,
|
|
37
37
|
deltaValue2: 0
|
|
38
|
-
}), x = d(), S = d(), B = d(), f = d(e.modelValue), v = d(e.modelValue[0]), _ = d(e.modelValue[1]), j = a(() => e), O = ae(j), q = a(
|
|
38
|
+
}), x = d(), S = d(), B = d(), f = d(e.modelValue), v = d(e.modelValue[0]), _ = d(e.modelValue[1]), j = a(() => e), O = ae(j), q = a(
|
|
39
|
+
() => [v.value, _.value].sort((t, l) => t - l).join("-")
|
|
40
|
+
), h = a(() => e.max - e.min), w = a(() => p((e.modelValue[0] ?? 0) + r.deltaValue1, e.min, e.max)), k = a(
|
|
41
|
+
() => p((e.modelValue[1] ?? 0) + r.deltaValue2, e.min, e.max)
|
|
42
|
+
), C = a(() => {
|
|
39
43
|
const t = e.modelValue;
|
|
40
44
|
return Array.isArray(t) && t.length === 2 && t.every((o) => Number.isFinite(o)) ? ie(e.error) : "Expected model [number, number]";
|
|
41
45
|
}), D = a(() => (w.value - e.min) / h.value), E = a(() => (k.value - e.min) / h.value), L = a(() => Q()), G = a(() => ({
|
|
@@ -56,13 +60,21 @@ const re = { class: "ui-slider__wrapper" }, ue = { class: "ui-slider__label-sect
|
|
|
56
60
|
var l;
|
|
57
61
|
z((l = b(x)) == null ? void 0 : l.getBoundingClientRect(), (o) => {
|
|
58
62
|
const { dx: i } = t;
|
|
59
|
-
r.deltaValue1 = i / o.width * h.value, v.value = n(
|
|
63
|
+
r.deltaValue1 = i / o.width * h.value, v.value = n(
|
|
64
|
+
p((e.modelValue[0] ?? 0) + r.deltaValue1, e.min, e.max)
|
|
65
|
+
), f.value = [v.value, _.value].sort(
|
|
66
|
+
(R, A) => R - A
|
|
67
|
+
), t.stop && (V([n(w.value), n(k.value)]), r.deltaValue1 = 0);
|
|
60
68
|
});
|
|
61
69
|
}), U(B, (t) => {
|
|
62
70
|
var l;
|
|
63
71
|
z((l = b(x)) == null ? void 0 : l.getBoundingClientRect(), (o) => {
|
|
64
72
|
const { dx: i } = t;
|
|
65
|
-
r.deltaValue2 = i / o.width * h.value, _.value = n(
|
|
73
|
+
r.deltaValue2 = i / o.width * h.value, _.value = n(
|
|
74
|
+
p((e.modelValue[1] ?? 0) + r.deltaValue2, e.min, e.max)
|
|
75
|
+
), f.value = [v.value, _.value].sort(
|
|
76
|
+
(R, A) => R - A
|
|
77
|
+
), t.stop && (V([n(w.value), n(k.value)]), r.deltaValue2 = 0);
|
|
66
78
|
});
|
|
67
79
|
});
|
|
68
80
|
function Q() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderRange.vue.js","sources":["../../src/components/SliderRange.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from 'vue';\nimport { useMouseCapture } from '../composition/useMouseCapture';\nimport { tapIf } from '../helpers/functions';\nimport { clamp } from '../helpers/math';\nimport { PlTooltip } from './PlTooltip';\nimport type { SliderMode } from '../types';\nimport InputRange from './InputRange.vue';\nimport { useSliderBreakpoints } from '../composition/useSliderBreakpoints';\nimport { getErrorMessage } from '../helpers/error.ts';\n\nconst slots = useSlots();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: [number, number];\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: 'text',\n measure: '',\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst inputRange = ref<[number, number]>(props.modelValue);\nconst leftDelta = ref(props.modelValue[0]);\nconst rightDelta = ref(props.modelValue[1]);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst textModelValue = computed(() => [leftDelta.value, rightDelta.value].sort((a, b) => a - b).join('-'));\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue1 = computed(() => {\n return clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max);\n});\n\nconst localValue2 = computed(() => clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max));\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 2 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return 'Expected model [number, number]';\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + '%',\n left: 100 - leftRight.value[1] + '%',\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + '%',\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + '%',\n}));\n\nwatch(\n () => props.modelValue,\n (value: [number, number]) => {\n inputRange.value = value;\n leftDelta.value = +value[0];\n rightDelta.value = +value[1];\n },\n { immediate: true },\n);\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n leftDelta.value = round(clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max));\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort((a, b) => a - b);\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n rightDelta.value = round(clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max));\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort((a, b) => a - b);\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n return [point1, point2].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: [number, number]) {\n emit('update:modelValue', value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Enter'].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep\n = e.code === 'ArrowUp' || e.code === 'ArrowRight' ? props.step * 1 : e.code === 'ArrowDown' || e.code === 'ArrowLeft' ? props.step * -1 : 0;\n\n const arr: [number, number] = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n}\n</script>\n\n<template>\n <!-- {{ leftDelta }} {{ rightDelta }} -->\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">{{ textModelValue }}</div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div v-for=\"(item, index) in breakpointsRef\" :key=\"index\" :style=\"{ right: `${item}%` }\" class=\"ui-slider__thumb-step\"/>\n </template>\n <div ref=\"thumbRef1\" :style=\"thumbStyle1\" class=\"ui-slider__thumb\" tabindex=\"0\" @keydown=\"handleKeyPress($event, 0)\">\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div ref=\"thumbRef2\" :style=\"thumbStyle2\" class=\"ui-slider__thumb\" tabindex=\"0\" @keydown=\"handleKeyPress($event, 1)\">\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <InputRange v-if=\"props.mode === 'input'\" v-model=\"inputRange\" class=\"ui-focused-border\" @change=\"setModelValue\" />\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","inputRange","leftDelta","rightDelta","propsRef","computed","breakpointsRef","useSliderBreakpoints","textModelValue","a","b","range","localValue1","clamp","localValue2","error","v","it","getErrorMessage","position1","position2","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","watch","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","round","setModelValue","point1","point2","handleKeyPress","e","index","nextStep","arr","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","_cache","$event","_hoisted_8","InputRange","_hoisted_9"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SliderRange.vue.js","sources":["../../src/components/SliderRange.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, reactive, ref, unref, useSlots, watch } from \"vue\";\nimport { useMouseCapture } from \"../composition/useMouseCapture\";\nimport { tapIf } from \"../helpers/functions\";\nimport { clamp } from \"../helpers/math\";\nimport { PlTooltip } from \"./PlTooltip\";\nimport type { SliderMode } from \"../types\";\nimport InputRange from \"./InputRange.vue\";\nimport { useSliderBreakpoints } from \"../composition/useSliderBreakpoints\";\nimport { getErrorMessage } from \"../helpers/error.ts\";\n\nconst slots = useSlots();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: [number, number];\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: \"text\",\n measure: \"\",\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst inputRange = ref<[number, number]>(props.modelValue);\nconst leftDelta = ref(props.modelValue[0]);\nconst rightDelta = ref(props.modelValue[1]);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst textModelValue = computed(() =>\n [leftDelta.value, rightDelta.value].sort((a, b) => a - b).join(\"-\"),\n);\n\nconst range = computed(() => props.max - props.min);\n\nconst localValue1 = computed(() => {\n return clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max);\n});\n\nconst localValue2 = computed(() =>\n clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max),\n);\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 2 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return \"Expected model [number, number]\";\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + \"%\",\n left: 100 - leftRight.value[1] + \"%\",\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + \"%\",\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + \"%\",\n}));\n\nwatch(\n () => props.modelValue,\n (value: [number, number]) => {\n inputRange.value = value;\n leftDelta.value = +value[0];\n rightDelta.value = +value[1];\n },\n { immediate: true },\n);\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n leftDelta.value = round(\n clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max),\n );\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort(\n (a, b) => a - b,\n );\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n rightDelta.value = round(\n clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max),\n );\n\n inputRange.value = ([leftDelta.value, rightDelta.value] as [number, number]).sort(\n (a, b) => a - b,\n );\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n return [point1, point2].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: [number, number]) {\n emit(\"update:modelValue\", value);\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if ([\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep =\n e.code === \"ArrowUp\" || e.code === \"ArrowRight\"\n ? props.step * 1\n : e.code === \"ArrowDown\" || e.code === \"ArrowLeft\"\n ? props.step * -1\n : 0;\n\n const arr: [number, number] = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n}\n</script>\n\n<template>\n <!-- {{ leftDelta }} {{ rightDelta }} -->\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"props.mode === 'text'\" class=\"ui-slider__value-static text-s\">\n {{ textModelValue }}\n </div>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div\n v-for=\"(item, index) in breakpointsRef\"\n :key=\"index\"\n :style=\"{ right: `${item}%` }\"\n class=\"ui-slider__thumb-step\"\n />\n </template>\n <div\n ref=\"thumbRef1\"\n :style=\"thumbStyle1\"\n class=\"ui-slider__thumb\"\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 0)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef2\"\n :style=\"thumbStyle2\"\n class=\"ui-slider__thumb\"\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 1)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <InputRange\n v-if=\"props.mode === 'input'\"\n v-model=\"inputRange\"\n class=\"ui-focused-border\"\n @change=\"setModelValue\"\n />\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","inputRange","leftDelta","rightDelta","propsRef","computed","breakpointsRef","useSliderBreakpoints","textModelValue","a","b","range","localValue1","clamp","localValue2","error","v","it","getErrorMessage","position1","position2","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","watch","value","useMouseCapture","ev","tapIf","_a","unref","rect","dx","round","setModelValue","point1","point2","handleKeyPress","e","index","nextStep","arr","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","item","_cache","$event","_hoisted_8","InputRange","_hoisted_9"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderRangeTriple.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRangeTriple.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SliderRangeTriple.vue.d.ts","sourceRoot":"","sources":["../../src/components/SliderRangeTriple.vue"],"names":[],"mappings":"AA+UA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,KAAK,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAK1C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,SAAS,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAsOJ,iBAAS,cAAc;WAyJT,OAAO,IAA6B;;yBAdrB,GAAG;;;;;;;;;EAmB/B;AAuBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;WAnaT,MAAM;;cAMH,OAAO;UAHX,UAAU;SANX,MAAM;UAEL,MAAM;YAEJ,MAAM;aAGL,MAAM;iBACF,OAAO;;;;;;kBAwavB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -32,7 +32,13 @@ const ue = { class: "ui-slider__wrapper" }, ne = { class: "ui-slider__label-sect
|
|
|
32
32
|
deltaValue1: 0,
|
|
33
33
|
deltaValue2: 0,
|
|
34
34
|
deltaValue3: 0
|
|
35
|
-
}), b = w(), p = w(), v = w(), f = w(), n = r(() => e.max - e.min), O = r(() => e), q = re(O), g = r(
|
|
35
|
+
}), b = w(), p = w(), v = w(), f = w(), n = r(() => e.max - e.min), O = r(() => e), q = re(O), g = r(
|
|
36
|
+
() => c((e.modelValue[0] ?? 0) + s.deltaValue1, e.min, e.max)
|
|
37
|
+
), V = r(
|
|
38
|
+
() => c((e.modelValue[1] ?? 0) + s.deltaValue2, e.min, e.max)
|
|
39
|
+
), y = r(
|
|
40
|
+
() => c((e.modelValue[2] ?? 0) + s.deltaValue3, e.min, e.max)
|
|
41
|
+
), L = r(() => {
|
|
36
42
|
const l = e.modelValue;
|
|
37
43
|
if (!(Array.isArray(l) && l.length === 3 && l.every((a) => Number.isFinite(a))))
|
|
38
44
|
return "Expected model [number, number, number]";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderRangeTriple.vue.js","sources":["../../src/components/SliderRangeTriple.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, unref, useSlots } from 'vue';\nimport { useMouseCapture } from '../composition/useMouseCapture';\nimport { tapIf } from '../helpers/functions';\nimport { clamp } from '../helpers/math';\nimport { PlTooltip } from './PlTooltip';\nimport type { SliderMode } from '../types';\nimport { useSliderBreakpoints } from '../composition/useSliderBreakpoints';\nimport { getErrorMessage } from '../helpers/error.ts';\n\ntype ModelType = [number, number, number];\nconst slots = useSlots();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: ModelType;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: 'text',\n measure: '%',\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n deltaValue3: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst thumbRef3 = ref<HTMLElement>();\n\nconst range = computed(() => props.max - props.min);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst localValue1 = computed(() => clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max));\nconst localValue2 = computed(() => clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max));\nconst localValue3 = computed(() => clamp((props.modelValue[2] ?? 0) + data.deltaValue3, props.min, props.max));\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 3 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return 'Expected model [number, number, number]';\n }\n\n const errors: string[] = [];\n\n [...props.modelValue].forEach((v) => {\n if (v > props.max) {\n errors.push(`Max model value must be lower than max props ${props.max}.`);\n }\n if (v < props.min) {\n errors.push('Min model value must be greater than max props.');\n }\n });\n\n if (errors.length > 0) {\n return errors.join(' ');\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst position3 = computed(() => {\n return (localValue3.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + '%',\n left: 100 - leftRight.value[2] + '%',\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + '%',\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + '%',\n}));\n\nconst thumbStyle3 = computed(() => ({\n right: Math.ceil((1 - position3.value) * 100) + '%',\n}));\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n if (thumbRef1.value) {\n updateDatasetForThumb(thumbRef1.value, props.modelValue[0], data.deltaValue1);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n if (thumbRef2.value) {\n updateDatasetForThumb(thumbRef2.value, props.modelValue[1], data.deltaValue2);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef3, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue3 = (dx / rect.width) * range.value;\n\n if (thumbRef3.value) {\n updateDatasetForThumb(thumbRef3.value, props.modelValue[2], data.deltaValue3);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue3 = 0;\n }\n });\n});\n\nfunction updateDatasetForThumb(thumb: HTMLElement, modelVal: number, delta: number) {\n const value = round(clamp((modelVal ?? 0) + delta, props.min, props.max));\n thumb.dataset.percent = `${value}${props.measure}`;\n getHint();\n}\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n const point3 = Math.ceil((1 - position3.value) * 100);\n return [point1, point2, point3].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: ModelType) {\n emit('update:modelValue', value);\n}\n\nfunction getHint() {\n const right1 = Number(thumbStyle1.value.right.substring(0, thumbStyle1.value.right.length - 1));\n const right2 = Number(thumbStyle2.value.right.substring(0, thumbStyle2.value.right.length - 1));\n const right3 = Number(thumbStyle3.value.right.substring(0, thumbStyle3.value.right.length - 1));\n\n const arr = [\n { r: right1, th: thumbRef1 },\n { r: right2, th: thumbRef2 },\n { r: right3, th: thumbRef3 },\n ].sort((a, b) => a.r - b.r);\n\n if (arr[0].th.value) {\n arr[0].th.value.dataset.hint = 'high';\n }\n if (arr[1].th.value) {\n arr[1].th.value.dataset.hint = 'mid';\n }\n\n if (arr[2].th.value) {\n arr[2].th.value.dataset.hint = 'low';\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', 'Enter'].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep\n = e.code === 'ArrowUp' || e.code === 'ArrowRight' ? props.step * 1 : e.code === 'ArrowDown' || e.code === 'ArrowLeft' ? props.step * -1 : 0;\n\n const arr: ModelType = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n getHint();\n}\n\nonMounted(() => {\n getHint();\n});\n</script>\n\n<template>\n <div :class=\"props.disabled ? 'ui-slider__disabled' : undefined\" class=\"ui-slider__envelope ui-slider__triple\">\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div v-for=\"(item, index) in breakpointsRef\" :key=\"index\" :style=\"{ right: `${item}%` }\" class=\"ui-slider__thumb-step\"/>\n </template>\n <div\n ref=\"thumbRef1\"\n :style=\"thumbStyle1\"\n :data-percent=\"props.modelValue[0] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r1\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 0)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef2\"\n :style=\"thumbStyle2\"\n :data-percent=\"props.modelValue[1] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r2\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 1)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef3\"\n :style=\"thumbStyle3\"\n :data-percent=\"props.modelValue[2] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r3\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 2)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <!-- {{ props.modelValue }} -->\n <!-- <InputRange v-if=\"props.mode === 'input'\" v-model=\"inputRange\" class=\"ui-focused-border\" /> -->\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n\n<style></style>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","thumbRef3","range","computed","propsRef","breakpointsRef","useSliderBreakpoints","localValue1","clamp","localValue2","localValue3","error","v","it","errors","getErrorMessage","position1","position2","position3","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","thumbStyle3","useMouseCapture","ev","tapIf","_a","unref","rect","dx","updateDatasetForThumb","setModelValue","round","thumb","modelVal","delta","value","getHint","point1","point2","point3","b","right1","right2","right3","arr","a","handleKeyPress","e","index","nextStep","onMounted","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","item","_cache","$event","_hoisted_10","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SliderRangeTriple.vue.js","sources":["../../src/components/SliderRangeTriple.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, onMounted, reactive, ref, unref, useSlots } from \"vue\";\nimport { useMouseCapture } from \"../composition/useMouseCapture\";\nimport { tapIf } from \"../helpers/functions\";\nimport { clamp } from \"../helpers/math\";\nimport { PlTooltip } from \"./PlTooltip\";\nimport type { SliderMode } from \"../types\";\nimport { useSliderBreakpoints } from \"../composition/useSliderBreakpoints\";\nimport { getErrorMessage } from \"../helpers/error.ts\";\n\ntype ModelType = [number, number, number];\nconst slots = useSlots();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n modelValue: ModelType;\n min?: number;\n max: number;\n step?: number;\n label?: string;\n helper?: string;\n error?: unknown;\n mode?: SliderMode;\n measure?: string;\n breakpoints?: boolean;\n disabled?: boolean;\n }>(),\n {\n label: undefined,\n helper: undefined,\n error: undefined,\n min: 0,\n step: 1,\n mode: \"text\",\n measure: \"%\",\n breakpoints: false,\n disabled: false,\n },\n);\n\nconst data = reactive({\n deltaValue1: 0,\n deltaValue2: 0,\n deltaValue3: 0,\n});\n\nconst barRef = ref<HTMLElement>();\nconst thumbRef1 = ref<HTMLElement>();\nconst thumbRef2 = ref<HTMLElement>();\nconst thumbRef3 = ref<HTMLElement>();\n\nconst range = computed(() => props.max - props.min);\n\nconst propsRef = computed(() => props);\n\nconst breakpointsRef = useSliderBreakpoints(propsRef);\n\nconst localValue1 = computed(() =>\n clamp((props.modelValue[0] ?? 0) + data.deltaValue1, props.min, props.max),\n);\nconst localValue2 = computed(() =>\n clamp((props.modelValue[1] ?? 0) + data.deltaValue2, props.min, props.max),\n);\nconst localValue3 = computed(() =>\n clamp((props.modelValue[2] ?? 0) + data.deltaValue3, props.min, props.max),\n);\n\nconst error = computed(() => {\n const v = props.modelValue as unknown;\n\n const isValidModel = Array.isArray(v) && v.length === 3 && v.every((it) => Number.isFinite(it));\n\n if (!isValidModel) {\n return \"Expected model [number, number, number]\";\n }\n\n const errors: string[] = [];\n\n [...props.modelValue].forEach((v) => {\n if (v > props.max) {\n errors.push(`Max model value must be lower than max props ${props.max}.`);\n }\n if (v < props.min) {\n errors.push(\"Min model value must be greater than max props.\");\n }\n });\n\n if (errors.length > 0) {\n return errors.join(\" \");\n }\n\n return getErrorMessage(props.error);\n});\n\nconst position1 = computed(() => {\n return (localValue1.value - props.min) / range.value;\n});\n\nconst position2 = computed(() => {\n return (localValue2.value - props.min) / range.value;\n});\n\nconst position3 = computed(() => {\n return (localValue3.value - props.min) / range.value;\n});\n\nconst leftRight = computed(() => getLeftAndRight());\n\nconst progressStyle = computed(() => ({\n right: leftRight.value[0] + \"%\",\n left: 100 - leftRight.value[2] + \"%\",\n}));\n\nconst thumbStyle1 = computed(() => ({\n right: Math.ceil((1 - position1.value) * 100) + \"%\",\n}));\n\nconst thumbStyle2 = computed(() => ({\n right: Math.ceil((1 - position2.value) * 100) + \"%\",\n}));\n\nconst thumbStyle3 = computed(() => ({\n right: Math.ceil((1 - position3.value) * 100) + \"%\",\n}));\n\nuseMouseCapture(thumbRef1, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue1 = (dx / rect.width) * range.value;\n\n if (thumbRef1.value) {\n updateDatasetForThumb(thumbRef1.value, props.modelValue[0], data.deltaValue1);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue1 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef2, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue2 = (dx / rect.width) * range.value;\n\n if (thumbRef2.value) {\n updateDatasetForThumb(thumbRef2.value, props.modelValue[1], data.deltaValue2);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue2 = 0;\n }\n });\n});\n\nuseMouseCapture(thumbRef3, (ev) => {\n tapIf(unref(barRef)?.getBoundingClientRect(), (rect) => {\n const { dx } = ev;\n data.deltaValue3 = (dx / rect.width) * range.value;\n\n if (thumbRef3.value) {\n updateDatasetForThumb(thumbRef3.value, props.modelValue[2], data.deltaValue3);\n }\n\n if (ev.stop) {\n setModelValue([round(localValue1.value), round(localValue2.value), round(localValue3.value)]);\n data.deltaValue3 = 0;\n }\n });\n});\n\nfunction updateDatasetForThumb(thumb: HTMLElement, modelVal: number, delta: number) {\n const value = round(clamp((modelVal ?? 0) + delta, props.min, props.max));\n thumb.dataset.percent = `${value}${props.measure}`;\n getHint();\n}\n\nfunction getLeftAndRight() {\n const point1 = Math.ceil((1 - position1.value) * 100);\n const point2 = Math.ceil((1 - position2.value) * 100);\n const point3 = Math.ceil((1 - position3.value) * 100);\n return [point1, point2, point3].sort((a, b) => a - b);\n}\n\nfunction round(value: number) {\n const v = clamp(value, props.min, props.max);\n // This is the same as Math.round(v / props.step) * props.step but here we need this magic to avoid numbers like 3.00000000000000000004\n return Math.round((v + Number.EPSILON) * (1 / props.step)) / (1 / props.step);\n}\n\nfunction setModelValue(value: ModelType) {\n emit(\"update:modelValue\", value);\n}\n\nfunction getHint() {\n const right1 = Number(thumbStyle1.value.right.substring(0, thumbStyle1.value.right.length - 1));\n const right2 = Number(thumbStyle2.value.right.substring(0, thumbStyle2.value.right.length - 1));\n const right3 = Number(thumbStyle3.value.right.substring(0, thumbStyle3.value.right.length - 1));\n\n const arr = [\n { r: right1, th: thumbRef1 },\n { r: right2, th: thumbRef2 },\n { r: right3, th: thumbRef3 },\n ].sort((a, b) => a.r - b.r);\n\n if (arr[0].th.value) {\n arr[0].th.value.dataset.hint = \"high\";\n }\n if (arr[1].th.value) {\n arr[1].th.value.dataset.hint = \"mid\";\n }\n\n if (arr[2].th.value) {\n arr[2].th.value.dataset.hint = \"low\";\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }, index: number) {\n if ([\"ArrowDown\", \"ArrowUp\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"].includes(e.code)) {\n e.preventDefault();\n }\n\n const nextStep =\n e.code === \"ArrowUp\" || e.code === \"ArrowRight\"\n ? props.step * 1\n : e.code === \"ArrowDown\" || e.code === \"ArrowLeft\"\n ? props.step * -1\n : 0;\n\n const arr: ModelType = [...props.modelValue];\n arr[index] = clamp(arr[index] + nextStep, props.min, props.max);\n setModelValue(arr);\n getHint();\n}\n\nonMounted(() => {\n getHint();\n});\n</script>\n\n<template>\n <div\n :class=\"props.disabled ? 'ui-slider__disabled' : undefined\"\n class=\"ui-slider__envelope ui-slider__triple\"\n >\n <div :class=\"`ui-slider__mode-${props.mode}`\" class=\"ui-slider\">\n <div class=\"ui-slider__wrapper\">\n <div class=\"ui-slider__label-section\">\n <label v-if=\"label\" class=\"text-s\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n </div>\n <div class=\"ui-slider__base\">\n <div class=\"ui-slider__container\">\n <div ref=\"barRef\" class=\"ui-slider__bar\">\n <div class=\"ui-slider__progress\" :style=\"progressStyle\" />\n </div>\n </div>\n <div class=\"ui-slider__container ui-slider__container-thumb\">\n <template v-if=\"props.breakpoints\">\n <div\n v-for=\"(item, index) in breakpointsRef\"\n :key=\"index\"\n :style=\"{ right: `${item}%` }\"\n class=\"ui-slider__thumb-step\"\n />\n </template>\n <div\n ref=\"thumbRef1\"\n :style=\"thumbStyle1\"\n :data-percent=\"props.modelValue[0] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r1\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 0)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef2\"\n :style=\"thumbStyle2\"\n :data-percent=\"props.modelValue[1] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r2\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 1)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n <div\n ref=\"thumbRef3\"\n :style=\"thumbStyle3\"\n :data-percent=\"props.modelValue[2] + '%'\"\n class=\"ui-slider__thumb ui-slider__triple-thumb\"\n r3\n tabindex=\"0\"\n @keydown=\"handleKeyPress($event, 2)\"\n >\n <div class=\"ui-slider__thumb-focused-contour\" />\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ui-slider__input-wrapper d-flex\">\n <!-- {{ props.modelValue }} -->\n <!-- <InputRange v-if=\"props.mode === 'input'\" v-model=\"inputRange\" class=\"ui-focused-border\" /> -->\n </div>\n </div>\n <!-- <div v-if=\"helper\" class=\"ui-slider__helper\">\n {{ helper }}\n </div> -->\n <div v-if=\"error\" class=\"ui-slider__error\">\n {{ error }}\n </div>\n </div>\n</template>\n\n<style></style>\n"],"names":["slots","useSlots","emit","__emit","props","__props","data","reactive","barRef","ref","thumbRef1","thumbRef2","thumbRef3","range","computed","propsRef","breakpointsRef","useSliderBreakpoints","localValue1","clamp","localValue2","localValue3","error","v","it","errors","getErrorMessage","position1","position2","position3","leftRight","getLeftAndRight","progressStyle","thumbStyle1","thumbStyle2","thumbStyle3","useMouseCapture","ev","tapIf","_a","unref","rect","dx","updateDatasetForThumb","setModelValue","round","thumb","modelVal","delta","value","getHint","point1","point2","point3","b","right1","right2","right3","arr","a","handleKeyPress","e","index","nextStep","onMounted","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_1","_hoisted_2","_openBlock","_hoisted_3","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","item","_cache","$event","_hoisted_10","_toDisplayString"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabItem.vue.js","sources":["../../src/components/TabItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from
|
|
1
|
+
{"version":3,"file":"TabItem.vue.js","sources":["../../src/components/TabItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport type { ListOptionNormalized } from \"../types\";\n\nconst props = withDefaults(\n defineProps<{\n option: ListOptionNormalized;\n isSelected: boolean;\n isHovered: boolean;\n }>(),\n {\n isSelected: false,\n isHovered: false,\n },\n);\n\nconst label = computed(() => props.option.label);\n\nconst classes = computed<string>(() => {\n const classList: string[] = [];\n if (props.isSelected) {\n classList.push(\"dropdown-tab-item__selected\");\n }\n if (props.isHovered) {\n classList.push(\"hovered-item\");\n }\n return classList.join(\" \");\n});\n</script>\n<template>\n <div :class=\"classes\" class=\"dropdown-tab-item\">\n <div class=\"dropdown-tab-item__title text-caps13\">\n {{ label }}\n </div>\n </div>\n</template>\n"],"names":["props","__props","label","computed","classes","classList","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;;;;;AAIA,UAAMA,IAAQC,GAYRC,IAAQC,EAAS,MAAMH,EAAM,OAAO,KAAK,GAEzCI,IAAUD,EAAiB,MAAM;AACrC,YAAME,IAAsB,CAAA;AAC5B,aAAIL,EAAM,cACRK,EAAU,KAAK,6BAA6B,GAE1CL,EAAM,aACRK,EAAU,KAAK,cAAc,GAExBA,EAAU,KAAK,GAAG;AAAA,IAC3B,CAAC;2BAGCC,EAIM,OAAA;AAAA,MAJA,OAAKC,EAAA,CAAEH,EAAA,OAAe,mBAAmB,CAAA;AAAA,IAAA;MAC7CI,EAEM,OAFNC,GAEMC,EADDR,EAAA,KAAK,GAAA,CAAA;AAAA,IAAA;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeSwitcher.vue.js","sources":["../../src/components/ThemeSwitcher.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useTheme } from
|
|
1
|
+
{"version":3,"file":"ThemeSwitcher.vue.js","sources":["../../src/components/ThemeSwitcher.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useTheme } from \"../composition/useTheme\";\nconst [theme, toggleTheme] = useTheme();\n</script>\n\n<template>\n <div class=\"ui-theme-switcher\" :class=\"theme\" @click=\"toggleTheme\">\n <div />\n </div>\n</template>\n"],"names":["theme","toggleTheme","useTheme","_createElementBlock","_normalizeClass","_unref","_cache","args","_createElementVNode"],"mappings":";;;;;AAEA,UAAM,CAACA,GAAOC,CAAW,IAAIC,EAAA;2BAI3BC,EAEM,OAAA;AAAA,MAFD,OAAKC,EAAA,CAAC,qBAA4BC,EAAAL,CAAA,CAAK,CAAA;AAAA,MAAG,SAAKM,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,gBAAED,EAAAJ,CAAA,KAAAI,EAAAJ,CAAA,EAAA,GAAAM,CAAA;AAAA,IAAA;MACpDC,EAAO,OAAA,MAAA,MAAA,EAAA;AAAA,IAAA;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransitionSlidePanel.vue.js","sources":["../../src/components/TransitionSlidePanel.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nfunction onAfterEnter() {\n window.dispatchEvent(new CustomEvent(
|
|
1
|
+
{"version":3,"file":"TransitionSlidePanel.vue.js","sources":["../../src/components/TransitionSlidePanel.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nfunction onAfterEnter() {\n window.dispatchEvent(new CustomEvent(\"adjust\"));\n}\n\nfunction onAfterLeave() {\n window.dispatchEvent(new CustomEvent(\"adjust\"));\n}\n</script>\n\n<template>\n <Transition name=\"slide-panel\" @after-enter=\"onAfterEnter\" @after-leave=\"onAfterLeave\">\n <slot />\n </Transition>\n</template>\n"],"names":["onAfterEnter","onAfterLeave","_createBlock","_Transition","_renderSlot","_ctx"],"mappings":";;;;AACA,aAASA,IAAe;AACtB,aAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,IAChD;AAEA,aAASC,IAAe;AACtB,aAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,IAChD;2BAIEC,EAEaC,GAAA;AAAA,MAFD,MAAK;AAAA,MAAe,cAAAH;AAAA,MAA4B,cAAAC;AAAA,IAAA;iBAC1D,MAAQ;AAAA,QAARG,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VScroll.vue.js","sources":["../../src/components/VScroll.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, unref } from
|
|
1
|
+
{"version":3,"file":"VScroll.vue.js","sources":["../../src/components/VScroll.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, unref } from \"vue\";\nimport { useEventListener } from \"../composition/useEventListener\";\nimport { eventListener } from \"../helpers/dom\";\n\nconst emit = defineEmits([\"update:scrollTop\"]);\n\nconst props = defineProps<{\n scrollTop: number;\n clientHeight: number;\n scrollHeight: number;\n}>();\n\nconst scrollRef = ref<EventTarget>();\n\nconst ratioRef = computed(() => props.clientHeight / (props.scrollHeight || 1));\n\nconst visibleRef = computed(() => {\n return ratioRef.value < 1;\n});\n\nconst scrollbarStyle = computed(() => {\n const ratio = unref(ratioRef);\n return {\n top: props.scrollTop * ratio + \"px\",\n height: Math.floor(props.clientHeight * ratio) + \"px\",\n };\n});\n\nuseEventListener(scrollRef, \"pointerdown\", (down: PointerEvent) => {\n const s = {\n clientY: down.clientY,\n };\n\n const update = (e: MouseEvent) => {\n const dy = (e.clientY - s.clientY) / ratioRef.value;\n emit(\"update:scrollTop\", props.scrollTop + dy);\n s.clientY = e.clientY;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const removePointerMove = eventListener(document as any, \"mousemove\", update);\n\n [\"mouseup\", \"pointercancel\"].forEach((eventType) => {\n document.addEventListener(eventType, removePointerMove, { once: true });\n });\n});\n</script>\n\n<template>\n <div v-if=\"visibleRef\" ref=\"scrollRef\" class=\"v-scroll\">\n <div class=\"v-scroll__scrollbar\" :style=\"scrollbarStyle\" />\n </div>\n</template>\n"],"names":["emit","__emit","props","__props","scrollRef","ref","ratioRef","computed","visibleRef","scrollbarStyle","ratio","unref","useEventListener","down","s","removePointerMove","eventListener","e","dy","eventType","_createElementBlock","_createElementVNode"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAOC,GAEPC,IAAQC,GAMRC,IAAYC,EAAA,GAEZC,IAAWC,EAAS,MAAML,EAAM,gBAAgBA,EAAM,gBAAgB,EAAE,GAExEM,IAAaD,EAAS,MACnBD,EAAS,QAAQ,CACzB,GAEKG,IAAiBF,EAAS,MAAM;AACpC,YAAMG,IAAQC,EAAML,CAAQ;AAC5B,aAAO;AAAA,QACL,KAAKJ,EAAM,YAAYQ,IAAQ;AAAA,QAC/B,QAAQ,KAAK,MAAMR,EAAM,eAAeQ,CAAK,IAAI;AAAA,MAAA;AAAA,IAErD,CAAC;AAED,WAAAE,EAAiBR,GAAW,eAAe,CAACS,MAAuB;AACjE,YAAMC,IAAI;AAAA,QACR,SAASD,EAAK;AAAA,MAAA,GAUVE,IAAoBC,EAAc,UAAiB,aAP1C,CAACC,MAAkB;AAChC,cAAMC,KAAMD,EAAE,UAAUH,EAAE,WAAWR,EAAS;AAC9C,QAAAN,EAAK,oBAAoBE,EAAM,YAAYgB,CAAE,GAC7CJ,EAAE,UAAUG,EAAE;AAAA,MAChB,CAG4E;AAE5E,OAAC,WAAW,eAAe,EAAE,QAAQ,CAACE,MAAc;AAClD,iBAAS,iBAAiBA,GAAWJ,GAAmB,EAAE,MAAM,IAAM;AAAA,MACxE,CAAC;AAAA,IACH,CAAC,aAIYP,EAAA,cAAXY,EAEM,OAAA;AAAA;eAFqB;AAAA,MAAJ,KAAIhB;AAAA,MAAY,OAAM;AAAA,IAAA;MAC3CiB,EAA2D,OAAA;AAAA,QAAtD,OAAM;AAAA,QAAuB,SAAOZ,EAAA,KAAc;AAAA,MAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./Menu.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
4
|
+
const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-1bb3001b"]]);
|
|
5
5
|
export {
|
|
6
6
|
_ as default
|
|
7
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.vue2.js","sources":["../../../src/components/contextMenu/Menu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextOption } from
|
|
1
|
+
{"version":3,"file":"Menu.vue2.js","sources":["../../../src/components/contextMenu/Menu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextOption } from \"./types\";\n\nconst emit = defineEmits([\"close\"]);\n\ndefineProps<{\n options: readonly ContextOption[];\n}>();\n\nconst onClickOption = (opt: ContextOption) => {\n opt.cb();\n emit(\"close\");\n};\n</script>\n\n<template>\n <div class=\"context-menu\">\n <div v-for=\"(opt, i) in options\" :key=\"i\" @click.stop=\"onClickOption(opt)\">\n <span>{{ opt.text }}</span>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.context-menu {\n display: block;\n position: absolute;\n top: 50px;\n left: 50px;\n z-index: var(--z-context-menu);\n\n margin: 0;\n padding: 3px 0 4px;\n\n background: rgba(255, 255, 255, 0.95);\n box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.35);\n border-radius: 4px;\n\n font-family:\n Lucida Grande,\n sans-serif;\n font-size: 14px;\n line-height: 15px;\n\n &::before {\n display: block;\n position: absolute;\n content: \"\";\n top: -1px;\n left: -1px;\n bottom: -1px;\n right: -1px;\n\n border-radius: 4px;\n border: 1px solid rgba(0, 0, 0, 0.125);\n z-index: -1;\n }\n\n hr {\n border: none;\n height: 1px;\n background: rgba(0, 0, 0, 0.1);\n margin: 6px 1px 5px;\n padding: 0;\n }\n\n > div {\n display: block;\n padding: 0 20px;\n border-top: 1px solid rgba(0, 0, 0, 0);\n border-bottom: 1px solid rgba(0, 0, 0, 0);\n\n span {\n vertical-align: 2px;\n user-select: none;\n }\n\n &:hover {\n background: -webkit-linear-gradient(top, #648bf5, #2866f2);\n background: linear-gradient(to bottom, #648bf5 0%, #2866f2 100%);\n border-top: 1px solid #5a82eb;\n border-bottom: 1px solid #1758e7;\n }\n\n &:hover::after {\n color: #fff;\n }\n }\n}\n</style>\n"],"names":["emit","__emit","onClickOption","opt","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","__props","i","_withModifiers","$event","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;;AAGA,UAAMA,IAAOC,GAMPC,IAAgB,CAACC,MAAuB;AAC5C,MAAAA,EAAI,GAAA,GACJH,EAAK,OAAO;AAAA,IACd;sBAIEI,EAAA,GAAAC,EAIM,OAJNC,GAIM;AAAA,OAHJF,EAAA,EAAA,GAAAC,EAEME,GAAA,MAAAC,EAFkBC,EAAA,SAAO,CAAlBN,GAAKO,YAAlBL,EAEM,OAAA;AAAA,QAF4B,KAAKK;AAAA,QAAI,SAAKC,EAAA,CAAAC,MAAOV,EAAcC,CAAG,GAAA,CAAA,MAAA,CAAA;AAAA,MAAA;QACtEU,EAA2B,QAAA,MAAAC,EAAlBX,EAAI,IAAI,GAAA,CAAA;AAAA,MAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/contextMenu/index.ts"],"sourcesContent":["import Menu from
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/contextMenu/index.ts"],"sourcesContent":["import Menu from \"./Menu.vue\";\nimport { h, render } from \"vue\";\nimport type { ContextOption } from \"./types\";\n\nexport function showContextMenu(ev: MouseEvent, options: readonly ContextOption[]) {\n ev.preventDefault();\n\n const destroy = () => {\n render(null, document.body);\n };\n\n const vNode = h(Menu, {\n options,\n onClose: () => {\n destroy();\n },\n });\n\n render(vNode, document.body);\n\n const el = vNode.el as HTMLElement;\n\n el.style.top = ev.clientY + \"px\";\n el.style.left = ev.clientX + \"px\";\n\n document.addEventListener(\"click\", (ev: Event) => {\n if (!el.contains(ev.target as HTMLElement)) {\n destroy();\n }\n });\n\n return destroy;\n}\n"],"names":["showContextMenu","ev","options","destroy","render","vNode","h","Menu","el"],"mappings":";;AAIO,SAASA,EAAgBC,GAAgBC,GAAmC;AACjF,EAAAD,EAAG,eAAA;AAEH,QAAME,IAAU,MAAM;AACpB,IAAAC,EAAO,MAAM,SAAS,IAAI;AAAA,EAC5B,GAEMC,IAAQC,EAAEC,GAAM;AAAA,IACpB,SAAAL;AAAA,IACA,SAAS,MAAM;AACb,MAAAC,EAAA;AAAA,IACF;AAAA,EAAA,CACD;AAED,EAAAC,EAAOC,GAAO,SAAS,IAAI;AAE3B,QAAMG,IAAKH,EAAM;AAEjB,SAAAG,EAAG,MAAM,MAAMP,EAAG,UAAU,MAC5BO,EAAG,MAAM,OAAOP,EAAG,UAAU,MAE7B,SAAS,iBAAiB,SAAS,CAACA,MAAc;AAChD,IAAKO,EAAG,SAASP,EAAG,MAAqB,KACvCE,EAAA;AAAA,EAEJ,CAAC,GAEMA;AACT;"}
|