mediacube-ui-v2 0.0.17 → 0.0.19

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.
Files changed (80) hide show
  1. package/dist/index.cjs +3 -1390
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +1622 -1081
  4. package/dist/index.js.map +1 -1
  5. package/dist/style.css +1 -12275
  6. package/dist/types/src/components/elements/McAvatar/McAvatar.vue.d.ts +2 -2
  7. package/dist/types/src/components/elements/McAvatar/McAvatar.vue.d.ts.map +1 -1
  8. package/dist/types/src/components/elements/McButton/McButton.vue.d.ts +1 -1
  9. package/dist/types/src/components/elements/McDatepicker/McDatepicker.vue.d.ts.map +1 -1
  10. package/dist/types/src/components/elements/McFieldRadio/McFieldRadio.vue.d.ts +2 -2
  11. package/dist/types/src/components/elements/McFieldRadio/McFieldRadio.vue.d.ts.map +1 -1
  12. package/dist/types/src/components/elements/McFieldRadioGroup/McFieldRadioGroup.vue.d.ts.map +1 -1
  13. package/dist/types/src/components/elements/McFieldSelect/McFieldSelect.vue.d.ts +4 -4
  14. package/dist/types/src/components/elements/McFieldSelect/McFieldSelect.vue.d.ts.map +1 -1
  15. package/dist/types/src/components/elements/McFieldText/McFieldText.vue.d.ts +3 -3
  16. package/dist/types/src/components/elements/McFieldText/McFieldText.vue.d.ts.map +1 -1
  17. package/dist/types/src/components/elements/McFieldToggle/McFieldToggle.vue.d.ts +1 -1
  18. package/dist/types/src/components/elements/McFieldToggle/McFieldToggle.vue.d.ts.map +1 -1
  19. package/dist/types/src/components/elements/McNodata/McNoData.vue.d.ts +2 -2
  20. package/dist/types/src/components/elements/McNodata/McNoData.vue.d.ts.map +1 -1
  21. package/dist/types/src/components/elements/McNotification/McNotification.vue.d.ts.map +1 -1
  22. package/dist/types/src/components/elements/McSlideUpDown/McSlideUpDown.vue.d.ts +1 -1
  23. package/dist/types/src/components/elements/McSvgIcon/McSvgIcon.vue.d.ts +3 -3
  24. package/dist/types/src/components/elements/McSvgIcon/McSvgIcon.vue.d.ts.map +1 -1
  25. package/dist/types/src/components/elements/McTitle/McTitle.vue.d.ts +1 -1
  26. package/dist/types/src/components/elements/McTitle/McTitle.vue.d.ts.map +1 -1
  27. package/dist/types/src/components/index.d.ts +69 -61
  28. package/dist/types/src/components/index.d.ts.map +1 -1
  29. package/dist/types/src/components/patterns/McCollapse/McCollapse.vue.d.ts.map +1 -1
  30. package/dist/types/src/components/patterns/McFilter/McFilter.vue.d.ts +2 -2
  31. package/dist/types/src/components/patterns/McFilter/McFilter.vue.d.ts.map +1 -1
  32. package/dist/types/src/components/patterns/McFilter/McFilterChip/McFilterChip.vue.d.ts.map +1 -1
  33. package/dist/types/src/components/patterns/McFilter/McFilterTags/McFilterTags.vue.d.ts.map +1 -1
  34. package/dist/types/src/components/patterns/McFilter/McFilterTypeRelation/McFilterTypeRelation.vue.d.ts.map +1 -1
  35. package/dist/types/src/components/patterns/McGridRow/McGridRow.vue.d.ts.map +1 -1
  36. package/dist/types/src/components/patterns/McSideBar/McSideBar.vue.d.ts +5 -5
  37. package/dist/types/src/components/patterns/McSideBar/McSideBar.vue.d.ts.map +1 -1
  38. package/dist/types/src/components/patterns/McSideBar/McSideBarButton/McSideBarButton.vue.d.ts.map +1 -1
  39. package/dist/types/src/components/patterns/McSideBar/McSideBarCenter/McSideBarCenter.vue.d.ts.map +1 -1
  40. package/dist/types/src/components/patterns/McSideBar/McSideBarTop/McSideBarTop.vue.d.ts +2 -2
  41. package/dist/types/src/components/patterns/McSideBar/McSideBarTop/McSideBarTop.vue.d.ts.map +1 -1
  42. package/dist/types/src/components/patterns/McTab/McTab.vue.d.ts.map +1 -1
  43. package/dist/types/src/components/patterns/McTabs/McTabs.vue.d.ts +1 -1
  44. package/dist/types/src/components/patterns/McTabs/McTabs.vue.d.ts.map +1 -1
  45. package/dist/types/src/components/templates/McDrawer/McDrawer.vue.d.ts +1 -1
  46. package/dist/types/src/components/templates/McDrawer/McDrawerContainer.vue.d.ts +1 -1
  47. package/dist/types/src/components/templates/McDrawer/McDrawerContainer.vue.d.ts.map +1 -1
  48. package/dist/types/src/components/templates/McModal/McModal.vue.d.ts +2 -2
  49. package/dist/types/src/components/templates/McModal/McModalContainer.vue.d.ts +1 -1
  50. package/dist/types/src/components/templates/McModal/McModalContainer.vue.d.ts.map +1 -1
  51. package/dist/types/src/components/templates/McTable/McTable/McTable.vue.d.ts +2 -2
  52. package/dist/types/src/components/templates/McTable/McTable/McTable.vue.d.ts.map +1 -1
  53. package/dist/types/src/components/templates/McTable/McTableCard/McTableCardHeader/McTableCardHeader.vue.d.ts.map +1 -1
  54. package/dist/types/src/components/templates/McTopBar/McTopBar.vue.d.ts.map +1 -1
  55. package/dist/types/src/composables/index.d.ts +7 -8
  56. package/dist/types/src/composables/index.d.ts.map +1 -1
  57. package/dist/types/src/consts/index.d.ts +2 -0
  58. package/dist/types/src/consts/index.d.ts.map +1 -0
  59. package/dist/types/src/index.d.ts +2 -0
  60. package/dist/types/src/index.d.ts.map +1 -1
  61. package/dist/types/src/mocks/categories.d.ts +9 -0
  62. package/dist/types/src/mocks/categories.d.ts.map +1 -0
  63. package/dist/types/src/utils/dayjs.d.ts +12 -0
  64. package/dist/types/src/utils/dayjs.d.ts.map +1 -0
  65. package/dist/types/src/utils/index.d.ts +3 -0
  66. package/dist/types/src/utils/index.d.ts.map +1 -0
  67. package/dist/vue-C68lofEO.cjs +2 -0
  68. package/dist/vue-C68lofEO.cjs.map +1 -0
  69. package/dist/vue-LDLBiXPq.js +17903 -0
  70. package/dist/vue-LDLBiXPq.js.map +1 -0
  71. package/package.json +1 -1
  72. package/dist/.vite/ssr-manifest.json +0 -879
  73. package/dist/dayjs-CAmwdbhW.js +0 -1665
  74. package/dist/dayjs-CAmwdbhW.js.map +0 -1
  75. package/dist/dayjs-RhyhJ68u.cjs +0 -1668
  76. package/dist/dayjs-RhyhJ68u.cjs.map +0 -1
  77. package/dist/vue-ClUN1lBG.js +0 -12425
  78. package/dist/vue-ClUN1lBG.js.map +0 -1
  79. package/dist/vue-qI5e4HjB.cjs +0 -12486
  80. package/dist/vue-qI5e4HjB.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue-C68lofEO.cjs","sources":["../src/components/elements/McAvatar/McAvatar.vue","../src/components/elements/McBadge/McBadge.vue","../src/components/elements/McBottomLoader/McBottomLoader.vue","../src/components/templates/McDrawer/McDrawerContainer.vue","../src/components/templates/McModal/McModalContainer.vue","../node_modules/@vueuse/shared/index.mjs","../node_modules/@vueuse/core/index.mjs","../src/components/elements/McButton/McButton.vue","../src/components/elements/McChip/McChip.vue","../node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js","../src/components/elements/McDatepicker/McDatepicker.vue","../src/components/elements/McDraggable/McDraggable.vue","../src/components/elements/McFieldCheckbox/McFieldCheckbox.vue","../src/components/elements/McFieldRadio/McFieldRadio.vue","../src/components/elements/McFieldRadioGroup/McFieldRadioGroup.vue","../node_modules/vue-3-slider-component/dist/vue-3-slider-component.mjs","../src/components/elements/McFieldRange/McFieldRange.vue","../node_modules/vue-multiselect/dist/vue-multiselect.esm.js","../src/components/elements/McFieldSelect/McFieldSelect.vue","../node_modules/vue-imask/esm/props.js","../node_modules/vue-imask/esm/composable.js","../node_modules/vue-imask/esm/utils.js","../node_modules/vue-imask/esm/component3-composition.js","../node_modules/vue-imask/esm/component2.js","../node_modules/vue-imask/esm/component.js","../src/components/elements/McFieldText/McFieldText.vue","../src/components/elements/McFieldToggle/McFieldToggle.vue","../src/components/elements/McInfinityLoadingTrigger/McInfinityLoadingTrigger.vue","../src/components/elements/McNodata/McNoData.vue","../src/components/elements/McNotification/McNotification.vue","../src/components/elements/McProgress/McProgress.vue","../src/components/elements/McSeparator/McSeparator.vue","../src/components/elements/McSlideUpDown/McSlideUpDown.vue","../src/components/elements/McStack/McStack.vue","../src/components/elements/McSvgIcon/McSvgIcon.vue","../src/components/elements/McTitle/McTitle.vue","../src/components/elements/McTooltip/McTooltip.vue","../src/components/patterns/McAccordion/McAccordion.vue","../src/components/patterns/McCell/McCell.vue","../src/components/patterns/McCollapse/McCollapse.vue","../src/components/patterns/McDropdown/McDropdown.vue","../src/components/patterns/McDropdown/McDropdownPanel.vue","../src/components/patterns/McFilter/McFilter.vue","../src/components/patterns/McFilter/McFilterChip/McFilterChip.vue","../src/components/patterns/McFilter/McFilterTags/McFilterTags.vue","../src/components/patterns/McFilter/McFilterTypeDate/McFilterTypeDate.vue","../src/components/patterns/McFilter/McFilterTypeRange/McFilterTypeRange.vue","../src/components/patterns/McFilter/McFilterTypeRelation/McFilterTypeRelation.vue","../src/components/patterns/McFilter/McFilterTypeText/McFilterTypeText.vue","../src/components/patterns/McGridCol/McGridCol.vue","../src/components/patterns/McGridRow/McGridRow.vue","../src/components/patterns/McOverlay/McOverlay.vue","../src/components/patterns/McPreview/McPreview.vue","../src/components/patterns/McSideBar/McSideBar.vue","../src/components/patterns/McSideBar/McSideBarBottom/McSideBarBottom.vue","../src/components/patterns/McSideBar/McSideBarButton/McSideBarButton.vue","../src/components/patterns/McSideBar/McSideBarCenter/McSideBarCenter.vue","../src/components/patterns/McSideBar/McSideBarTop/McSideBarTop.vue","../src/components/patterns/McTab/McTab.vue","../src/components/patterns/McWrapScroll/McWrapScroll.vue","../src/components/patterns/McTabs/McTabs.vue","../src/components/templates/McDrawer/McDrawer.vue","../src/components/templates/McDrawer/McDrawerContentTemplate/McDrawerContentTemplate.vue","../src/components/templates/McModal/McModal.vue","../src/components/templates/McTable/McTable/McTable.vue","../src/components/templates/McTable/McTableCard/McTableCardHeader/McTableCardHeader.vue","../src/components/templates/McTable/McTableCard/McTableCard.vue","../src/components/templates/McTable/McTableSkeletonLoading/McTableSkeletonLoading.vue","../src/components/templates/McTable/McTableSort/McTableSort.vue","../src/components/templates/McTopBar/McTopBar.vue","../src/components/templates/McVirtualScroll/McVirtualScroll.vue"],"sourcesContent":["<script setup lang=\"ts\">\n//@ts-ignore\nimport defaultImage from '@/assets/img/no_user.png'\nimport { computed, ref, watch } from 'vue'\nimport { AvatarSizes, type AvatarSizeTypes } from '@/types/styles/AvatarSizes'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { Sizes } from '@/types/styles/Sizes'\nimport { Radiuses } from '@/types'\n\nconst props = defineProps({\n /**\n * Путь до изображения\n *\n */\n src: {\n type: String,\n default: defaultImage\n },\n /**\n * Отложенная подгрузка\n *\n */\n lazy: {\n type: Boolean,\n default: false\n },\n /**\n * Атрибут alt\n */\n alt: {\n type: String,\n default: ''\n },\n /**\n * Размеры\n */\n size: {\n type: String as () => AvatarSizeTypes,\n default: '300'\n },\n /**\n * Круглый\n *\n */\n rounded: {\n type: Boolean,\n default: false\n },\n /**\n * Цвет рамки\n *\n */\n borderColor: {\n type: String as () => ColorTypes,\n default: ''\n },\n /**\n * Цвет точки\n *\n */\n dotColor: {\n type: String as () => ColorTypes,\n default: ''\n },\n /**\n * Цвет точки\n *\n */\n shadow: {\n type: Boolean,\n default: false\n },\n /**\n * Перетаскивание изображения\n *\n */\n draggable: {\n type: Boolean,\n default: true\n }\n})\n\nconst style = ref<{ [key: string]: string }>({})\nconst wrapperStyle = ref<{ [key: string]: string }>({})\nconst hasStatus = computed((): boolean => !!props.borderColor || !!props.dotColor)\n\nconst classes = computed((): { [key: string]: boolean } => ({\n 'mc-avatar': true,\n 'mc-avatar--rounded': props.rounded,\n 'mc-avatar--bordered': !!props.borderColor,\n 'mc-avatar--shadow': props.shadow && !hasStatus.value,\n [`mc-avatar--size-${props.size}`]: !!props.size\n}))\n\nconst wrapperClasses = computed((): { [key: string]: boolean } => {\n return {\n 'mc-avatar__wrapper': true,\n 'mc-avatar__wrapper-status--shadow': !!props.shadow,\n [`mc-avatar__wrapper-status--size-${props.size}`]: !!props.size,\n 'mc-avatar__wrapper--has-dot': !!props.dotColor\n }\n})\n\nwatch(\n () => props.dotColor,\n () => {\n if (hasStatus.value) {\n if (props.dotColor) wrapperStyle.value['--mc-avatar-dot-color'] = Colors[props.dotColor]\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.borderColor,\n () => {\n if (hasStatus.value) {\n if (props.borderColor) style.value['--mc-avatar-border-color'] = Colors[props.borderColor]\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.size,\n () => {\n if (props.size) {\n style.value['--mc-avatar-avatar-size'] = AvatarSizes[props.size]\n if (+props.size < 500) {\n wrapperStyle.value['--mc-avatar-dot-size'] = Sizes['100']\n style.value['--mc-avatar-avatar-radius'] = Radiuses['50']\n }\n switch (+props.size) {\n case 500:\n case 600: {\n wrapperStyle.value['--mc-avatar-dot-size'] = Sizes['150']\n break\n }\n case 700:\n case 800:\n case 900:\n case 1000: {\n wrapperStyle.value['--mc-avatar-dot-size'] = Sizes['200']\n wrapperStyle.value['--mc-avatar-dot-border-width'] = '2px'\n break\n }\n }\n }\n },\n { immediate: true }\n)\nconst handleOnError = (e: Event): void => {\n if (!e.target) return\n //@ts-ignore\n e.target.src = defaultImage\n}\n</script>\n\n<template>\n <div :class=\"wrapperClasses\" :style=\"wrapperStyle\">\n <div :class=\"classes\" :style=\"style\">\n <img\n :src=\"props.src || defaultImage\"\n :alt=\"props.alt\"\n :draggable=\"props.draggable\"\n :lazy=\"props.lazy\"\n class=\"mc-avatar__img\"\n @onerror=\"handleOnError\"\n />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/border-radius' as *;\n$color-borders: $token-colors;\n$dot-colors: $token-colors;\n\n.mc-avatar {\n $avatar-name: &;\n --mc-avatar-avatar-size: #{$size-300};\n --mc-avatar-border-color: initial;\n @include reset();\n position: relative;\n display: inline-block;\n width: var(--mc-avatar-avatar-size);\n height: var(--mc-avatar-avatar-size);\n min-width: var(--mc-avatar-avatar-size);\n border-radius: $radius-100;\n border: var(--mc-avatar-dot-border-width) solid $color-white;\n overflow: hidden;\n background-color: $color-hover-gray;\n transition: box-shadow $duration-s;\n &--bordered {\n border: 2px solid var(--mc-avatar-border-color);\n }\n &__img {\n width: 100%;\n height: 100%;\n }\n &--rounded {\n border-radius: $radius-circle;\n }\n\n &--shadow {\n &:hover,\n &:focus {\n box-shadow: 0 0 0 $space-100 $color-hover-gray;\n }\n }\n\n &:hover,\n &:focus {\n .mc-avatar {\n box-shadow: none;\n }\n }\n\n &--shadow {\n &:hover,\n &:focus {\n background-color: $color-hover-gray;\n box-shadow: 0 0 0 $space-50 $color-hover-gray;\n }\n }\n &__wrapper {\n --mc-avatar-dot-color: transparent;\n --mc-avatar-dot-border-width: 1px;\n --mc-avatar-dot-size: #{$space-100};\n position: relative;\n width: max-content;\n height: max-content;\n border: none !important;\n &--has-dot {\n &::after {\n width: var(--mc-avatar-dot-size);\n height: var(--mc-avatar-dot-size);\n @include pseudo();\n left: 0;\n bottom: 0;\n background-color: var(--mc-avatar-dot-color);\n z-index: 2;\n border-radius: 50%;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { computed } from 'vue'\n\ninterface ISetProperty {\n property?: string | undefined\n value?: string | undefined\n newColor?: ColorTypes\n}\n\nconst props = defineProps({\n /**\n * Дизайн:\n * `purple, purple-outline т.д.`\n */\n variation: {\n type: String as () => ColorTypes,\n default: 'purple'\n },\n /**\n * Вертикальная черта (в таблице, к примеру)\n */\n verticalLine: {\n type: Boolean,\n default: false\n },\n modern: {\n type: Boolean,\n default: false\n }\n})\n\nconst classes = computed((): { [key: string]: boolean } => ({\n 'mc-badge': true,\n 'mc-badge--vertical-line': props.verticalLine,\n 'mc-badge--modern': props.modern\n}))\n\nconst rootStyles = computed((): { [key: string]: string } => {\n const variation = `${props.variation}${props.modern ? '-modern' : ''}` as ColorTypes\n\n let style = {} as { [key: string]: string }\n const texts = variation.split('-')\n const currentStyle: string = texts[texts.length - 1]\n const color = (props.variation ? variation.replace(`-${currentStyle}`, '') : variation) as ColorTypes\n const setProperty = ({ property = '--mc-badge-color', value, newColor = color }: ISetProperty = {}) => {\n style[property] = value || newColor && Colors[newColor]\n }\n\n switch (currentStyle) {\n case 'outline': {\n setProperty()\n setProperty({ property: '--mc-badge-border-color' })\n setProperty({ property: '--mc-badge-background-color', newColor: 'white' as ColorTypes })\n setProperty({ property: '--mc-badge-background-opacity', value: '0.4' })\n break\n }\n case 'invert':\n case 'modern': {\n setProperty()\n setProperty({ property: '--mc-badge-background-color' })\n setProperty({ property: '--mc-badge-background-opacity', value: '0.1' })\n break\n }\n default: {\n const lightColors = [\n 'hover-gray',\n 'white',\n 'lighter-blue',\n 'lighter-purple',\n 'toxic',\n 'transparent'\n ] as ColorTypes[]\n lightColors.includes(variation) && setProperty({ newColor: 'black' })\n setProperty({ property: '--mc-badge-background-color', newColor: variation as ColorTypes })\n break\n }\n }\n return style\n})\n</script>\n\n<template>\n <div :class=\"classes\" :style=\"rootStyles\" v-bind=\"$attrs\">\n <div class=\"mc-badge__text\">\n <slot />\n </div>\n <div class=\"mc-badge__background\"></div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/letter-spacings' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-badge {\n $block-name: &;\n --mc-badge-color: #{$color-white};\n --mc-badge-background-color: inherit;\n --mc-badge-background-opacity: initial;\n --mc-badge-border-color: #{$color-transparent};\n @include ellipsis(100%, inline-flex);\n align-items: center;\n color: var(--mc-badge-color);\n position: relative;\n font-family: $font-family-main;\n font-size: $font-size-100;\n line-height: $line-height-150;\n height: $line-height-200;\n font-weight: $font-weight-medium;\n text-transform: uppercase;\n letter-spacing: $letter-spacing-m;\n vertical-align: middle;\n padding: 2px $space-100;\n border-radius: $radius-50;\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n @include size(100%);\n background-color: var(--mc-badge-background-color);\n opacity: var(--mc-badge-background-opacity);\n border: 1px solid var(--mc-badge-border-color);\n border-radius: inherit;\n }\n &__text {\n z-index: 1;\n }\n &--modern {\n border-radius: $radius-50;\n }\n &--vertical-line {\n padding: 0;\n border-radius: 0;\n width: 5px;\n #{$block-name} {\n &__text {\n display: none;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n center: {\n type: Boolean,\n default: false\n }\n})\n\nconst classes = computed(() => {\n return {\n 'mc-bottom-loader': true,\n 'mc-bottom-loader--center': props.center\n }\n})\n</script>\n\n<template>\n <section :class=\"classes\">\n <section class=\"mc-bottom-loader__spinner\"></section>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/z-indexes' as *;\n.mc-bottom-loader {\n position: sticky;\n bottom: 0;\n width: 100%;\n height: 1px;\n background-color: transparent;\n z-index: $z-index-overlay;\n &::before {\n @include pseudo();\n position: absolute;\n top: auto;\n bottom: 0;\n left: 0;\n width: 100%;\n height: $space-700;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(to top, $color-bg-gray, rgba($color-bg-gray, 0));\n z-index: 11;\n }\n &__spinner {\n position: absolute;\n top: auto;\n bottom: calc(#{$space-350} - calc(#{$space-400} / 2));\n left: calc(50% - #{$space-200});\n transform: translateX(-50%);\n display: block;\n width: $space-300;\n height: $space-300;\n border: 2px solid $color-purple;\n border-left-color: transparent;\n border-radius: 50%;\n animation: rotate 1.5s infinite linear;\n z-index: $z-index-overlay;\n @keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n }\n\n &--center {\n top: calc(50% - #{$space-200});\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue'\nimport { McDrawer } from '@/components'\nimport type { IDrawerServiceState, IDrawerState } from '@/types/IDrawer'\n\nconst props = defineProps({\n drawerServiceState: {\n type: Object as PropType<IDrawerServiceState>,\n default: () => ({})\n },\n reactiveProps: {\n type: Object as () => { drawers: IDrawerState[] },\n default: () => ({})\n }\n})\n\nconst containerStyle = computed((): { [key: string]: string | number } => ({\n zIndex: props.reactiveProps.drawers.length ? 99 : -1,\n visibility: props.reactiveProps.drawers.length ? 'visible' : 'hidden'\n}))\nconst closeDrawer = (value: IDrawerState) => {\n value.close()\n setTimeout(() => {\n if (props.reactiveProps.drawers.every((d) => !d.modelValue)) {\n props.drawerServiceState.closeServiceState()\n }\n }, value?.drawerProps?.duration || 300)\n}\n</script>\n\n<template>\n <div class=\"mc-drawer-container\" :style=\"containerStyle\">\n <mc-drawer\n v-for=\"(drawer, i) in props.reactiveProps.drawers\"\n :key=\"drawer.id\"\n v-model=\"drawer.modelValue\"\n v-bind=\"drawer.drawerProps\"\n :show-overlay=\"i + 1 === props.reactiveProps.drawers.length\"\n @close=\"() => closeDrawer(drawer)\"\n >\n <component :is=\"drawer.component\" v-bind=\"drawer.componentProps\" @close-drawer=\"() => closeDrawer(drawer)\" />\n </mc-drawer>\n </div>\n</template>\n\n<style>\n.mc-drawer-container {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue'\nimport type { IModalServiceState, IModalState } from '@/types/IModal'\n\nconst props = defineProps({\n modalServiceState: {\n type: Object as PropType<IModalServiceState>,\n default: () => ({})\n },\n reactiveProps: {\n type: Object as () => { modals: IModalState[] },\n default: () => ({})\n }\n})\n\nconst containerStyle = computed((): { [key: string]: string | number } => ({\n zIndex: props.reactiveProps.modals.length ? 99 : -1,\n visibility: props.reactiveProps.modals.length ? 'visible' : 'hidden'\n}))\nconst closeModal = (value: IModalState) => {\n value.close()\n setTimeout(() => {\n if (props.reactiveProps.modals.every((d) => !d.modelValue)) {\n props.modalServiceState.closeServiceState()\n }\n }, 300)\n}\n</script>\n\n<template>\n <div class=\"mc-modal-container\" :style=\"containerStyle\">\n <div v-for=\"modal in props.reactiveProps.modals\" :key=\"modal.id\" @close=\"() => closeModal(modal)\">\n <component\n v-model=\"modal.modelValue\"\n :is=\"modal.component\"\n v-bind=\"modal.componentProps\"\n @closed=\"() => closeModal(modal)\"\n />\n </div>\n </div>\n</template>\n\n<style>\n.mc-modal-container {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n}\n</style>\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, inject, provide, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = ref(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"injectLocal must be called in setup\");\n if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n return;\n }\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst directiveHooks = {\n mounted: isVue3 ? \"mounted\" : \"inserted\",\n updated: isVue3 ? \"updated\" : \"componentUpdated\",\n unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n const filter = (invoke) => {\n const duration = toValue(ms);\n const maxDuration = toValue(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(invoke());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue(defaultValue);\n trigger();\n }, toValue(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n if (isVue2) {\n set$1(...args);\n } else {\n const [target, key, value] = args;\n target[key] = value;\n }\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n if (!Array.isArray(targets))\n targets = [targets];\n return watch(\n source,\n (newValue) => targets.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue(\n toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue(\n !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n toValue(element),\n toValue(value),\n index,\n toValue(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n return computed(() => {\n const resolved = toValue(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue(list).map((element) => toValue(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = ref(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true)\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = ref(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = ref(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = ref((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true\n } = options;\n const isPending = ref(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue(value);\n if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = ref(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue(truthyValue);\n _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = ref(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = ref(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = ref(0);\n const syncCounter = ref(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue(item));\n return toValue(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, notNullish, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, tryOnBeforeUnmount, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, isVue2, readonly, reactive, toRaw, nextTick, markRaw, unref, getCurrentScope, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = ref(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n if (!isVue3 && !version.startsWith(\"2.7.\")) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n return;\n }\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /* #__PURE__ */ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /* #__PURE__ */ defineComponent({\n inheritAttrs,\n setup(_, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n if (!isVue3) {\n if (process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n return;\n }\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n if (!window)\n return noop;\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n window.document.documentElement.addEventListener(\"click\", noop);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n const listener = (event) => {\n const el = unrefElement(target);\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n if (keyCode >= 97 && keyCode <= 122)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useMounted() {\n const isMounted = ref(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, isVue2 ? void 0 : instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = ref();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n useEventListener(window, \"blur\", (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n }, true);\n useEventListener(window, \"focus\", trigger, true);\n }\n if (triggerOnRemoval) {\n useMutationObserver(document, (mutations) => {\n mutations.filter((m) => m.removedNodes.length).map((n) => Array.from(n.removedNodes)).flat().forEach((node) => {\n if (node === activeElement.value)\n trigger();\n });\n }, {\n childList: true,\n subtree: true\n });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow\n } = options;\n const isActive = ref(false);\n const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit && delta < intervalLimit) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el)\n update();\n });\n watch(() => keyframes, (value) => {\n if (animate.value)\n update();\n if (!unrefElement(target) && animate.value) {\n animate.value.effect = new KeyframeEffect(\n unrefElement(target),\n toValue(value),\n animateOptions\n );\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n });\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = ref(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = ref(false);\n const isLoading = ref(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate)\n execute(delay);\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = ref(\"\");\n const promise = ref();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => base64.value = res);\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = ref(false);\n const chargingTime = ref(0);\n const dischargingTime = ref(0);\n const level = ref(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef(void 0);\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = ref();\n const isConnected = computed(() => {\n var _a;\n return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n });\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n device.value.addEventListener(\"gattserverdisconnected\", () => {\n });\n try {\n server.value = await device.value.gatt.connect();\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected,\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n let mediaQuery;\n const matches = ref(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n const cleanup = () => {\n if (!mediaQuery)\n return;\n if (\"removeEventListener\" in mediaQuery)\n mediaQuery.removeEventListener(\"change\", handler);\n else\n mediaQuery.removeListener(handler);\n };\n const stopWatch = watchEffect(() => {\n if (!isSupported.value)\n return;\n cleanup();\n mediaQuery = window.matchMedia(toValue(query));\n if (\"addEventListener\" in mediaQuery)\n mediaQuery.addEventListener(\"change\", handler);\n else\n mediaQuery.addListener(handler);\n matches.value = mediaQuery.matches;\n });\n tryOnScopeDispose(() => {\n stopWatch();\n cleanup();\n mediaQuery = void 0;\n });\n return matches;\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\" } = options;\n function match(query) {\n if (!window)\n return false;\n return window.matchMedia(query).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(`(min-width: ${getValue(k, 0.1)})`);\n },\n isGreaterOrEqual(k) {\n return match(`(min-width: ${getValue(k)})`);\n },\n isSmaller(k) {\n return match(`(max-width: ${getValue(k, -0.1)})`);\n },\n isSmallerOrEqual(k) {\n return match(`(max-width: ${getValue(k)})`);\n },\n isInBetween(a, b) {\n return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(-1));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = ref(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n channel.value.addEventListener(\"message\", (e) => {\n data.value = e.data;\n }, { passive: true });\n channel.value.addEventListener(\"messageerror\", (e) => {\n error.value = e;\n }, { passive: true });\n channel.value.addEventListener(\"close\", () => {\n isClosed.value = true;\n });\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref2] of objectEntries(refs)) {\n watch(ref2, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n const cachedValue = ref(refValue.value);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update);\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = ref(\"\");\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateText() {\n if (isClipboardApiSupported.value && isAllowed(permissionRead.value)) {\n navigator.clipboard.readText().then((value) => {\n text.value = value;\n });\n } else {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n if (isClipboardApiSupported.value && isAllowed(permissionWrite.value))\n await navigator.clipboard.writeText(value);\n else\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = ref(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent);\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n function sync() {\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update);\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(key);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(key);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(key, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(key);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(key, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== key)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n try {\n return Object.assign(auto, { store, system, state });\n } catch (e) {\n return auto;\n }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = ref(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n variable,\n (val) => {\n var _a;\n const raw_prop = toValue(prop);\n if (((_a = elRef.value) == null ? void 0 : _a.style) && raw_prop) {\n if (val == null)\n elRef.value.style.removeProperty(raw_prop);\n else\n elRef.value.style.setProperty(raw_prop, val);\n }\n }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\",\n window = defaultWindow\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => {\n if (mode.system) {\n return mode.system.value;\n } else {\n const preferredDark = usePreferredDark({ window });\n return preferredDark.value ? \"dark\" : \"light\";\n }\n });\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n eventFilter = bypassFilter\n } = options;\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = ref(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n acceleration.value = event.acceleration;\n accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n rotationRate.value = event.rotationRate;\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion);\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = ref(false);\n const alpha = ref(null);\n const beta = ref(null);\n const gamma = ref(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = ref(1);\n if (window) {\n let observe2 = function() {\n pixelRatio.value = window.devicePixelRatio;\n cleanup2();\n media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n media.addEventListener(\"change\", observe2, { once: true });\n }, cleanup2 = function() {\n media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n };\n let media;\n observe2();\n tryOnScopeDispose(cleanup2);\n }\n return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = ref(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(\"camera\", { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update);\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.addEventListener(\"ended\", stop));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return ref(\"visible\");\n const visibility = ref(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a, _b;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = { capture: (_b = options.capture) != null ? _b : true };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = ref(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n if (_options.dataTypes) {\n const dataTypes = unref(_options.dataTypes);\n return typeof dataTypes === \"function\" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true;\n }\n return true;\n };\n const checkValidity = (event) => {\n var _a2, _b2;\n const items = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items) != null ? _b2 : []);\n const types = items.map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d;\n isValid = checkValidity(event);\n if (!isValid) {\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_a2 = _options.onEnter) == null ? void 0 : _a2.call(_options, null, event);\n break;\n case \"over\":\n (_b2 = _options.onOver) == null ? void 0 : _b2.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_c = _options.onLeave) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_d = _options.onDrop) == null ? void 0 : _d.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = ref(0);\n const bottom = ref(0);\n const left = ref(0);\n const right = ref(0);\n const top = ref(0);\n const width = ref(0);\n const x = ref(0);\n const y = ref(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = ref(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n window = defaultWindow\n } = options;\n const isHovered = ref(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = ref(initialSize.width);\n const height = ref(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = ref(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n const elementIsVisible = ref(false);\n useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n },\n {\n root: scrollTarget,\n window,\n threshold\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = ref(null);\n const data = ref(null);\n const status = ref(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && options.autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(options.autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n watch(urlRef, open, { immediate: true });\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = ref(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n const callback = callbacks[callbacks.length - 1];\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = ref(false);\n const isFetching = ref(false);\n const aborted = ref(false);\n const statusCode = ref(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n if (config.payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const payload = toValue(config.payload);\n if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n return `${start}/${end}`;\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(null);\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = ref();\n const data = ref();\n const file = ref();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = ref(false);\n const targetElement = computed(() => unrefElement(target));\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n });\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = ref(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => _focused.value = false);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = ref(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n });\n const isFullscreen = ref(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n useEventListener(document, eventHandlers, handlerCallback, false);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = ref(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = ref(initialState);\n const lastActive = ref(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n for (const event of events)\n useEventListener(window, event, onEvent, { passive: true });\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n });\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n img.src = src;\n if (srcset)\n img.srcset = srcset;\n if (sizes)\n img.sizes = sizes;\n if (clazz)\n img.className = clazz;\n if (loading)\n img.loading = loading;\n if (crossorigin)\n img.crossOrigin = crossorigin;\n if (referrerPolicy)\n img.referrerPolicy = referrerPolicy;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = ref(0);\n const internalY = ref(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = ref(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection } = getComputedStyle(el);\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft) <= (offset.left || 0);\n const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = ref(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive: true });\n useEventListener(\"focus\", reset, { passive: true });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n } else {\n refs[prop] = ref(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const currentTime = ref(0);\n const duration = ref(0);\n const seeking = ref(false);\n const volume = ref(1);\n const waiting = ref(false);\n const ended = ref(false);\n const playing = ref(false);\n const rate = ref(1);\n const stalled = ref(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = ref(-1);\n const isPictureInPicture = ref(false);\n const muted = ref(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n e.remove();\n });\n sources.forEach(({ src: src2, type }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.addEventListener(\"error\", sourceErrorEvent.trigger);\n el.appendChild(source);\n });\n el.load();\n });\n tryOnScopeDispose(() => {\n const el = toValue(target);\n if (!el)\n return;\n el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n useEventListener(target, \"seeking\", () => seeking.value = true);\n useEventListener(target, \"seeked\", () => seeking.value = false);\n useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n });\n useEventListener(target, \"loadeddata\", () => waiting.value = false);\n useEventListener(target, \"playing\", () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n });\n useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n useEventListener(target, \"stalled\", () => stalled.value = true);\n useEventListener(target, \"ended\", () => ended.value = true);\n useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n useEventListener(target, \"volumechange\", () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n });\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction getMapVue2Compat() {\n const data = shallowReactive({});\n return {\n get: (key) => data[key],\n set: (key, value) => set(data, key, value),\n has: (key) => hasOwn(data, key),\n delete: (key) => del(data, key),\n clear: () => {\n Object.keys(data).forEach((key) => {\n del(data, key);\n });\n }\n };\n}\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n if (isVue2)\n return getMapVue2Compat();\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n const x = ref(initialValue.x);\n const y = ref(initialValue.y);\n const sourceType = ref(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX;\n y.value = pos[1] + window.scrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = ref(0);\n const elementY = ref(0);\n const elementPositionX = ref(0);\n const elementPositionY = ref(0);\n const elementHeight = ref(0);\n const elementWidth = ref(0);\n const isOutside = ref(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(document, \"mouseleave\", () => {\n isOutside.value = true;\n });\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = ref(initialValue);\n const sourceType = ref(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => () => {\n pressed.value = true;\n sourceType.value = srcType;\n };\n const onReleased = () => {\n pressed.value = false;\n sourceType.value = null;\n };\n const target = computed(() => unrefElement(options.target) || window);\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = ref(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = ref(true);\n const saveData = ref(false);\n const offlineAt = ref(void 0);\n const onlineAt = ref(void 0);\n const downlink = ref(void 0);\n const downlinkMax = ref(void 0);\n const rtt = ref(void 0);\n const effectiveType = ref(void 0);\n const type = ref(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n });\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n });\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, false);\n updateNetworkInformation();\n return {\n isSupported: readonly(isSupported),\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = ref();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = ref(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n useEventListener(window, \"mouseout\", handler, { passive: true });\n useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = ref(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = ref(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = ref();\n const triggerElement = ref();\n let targetElement;\n if (isSupported.value) {\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n });\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n });\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = ref(false);\n const isPointerDown = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n })\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = ref(\"\");\n const right = ref(\"\");\n const bottom = ref(\"\");\n const left = ref(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update));\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = ref(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n el.addEventListener(\"error\", (event) => reject(event));\n el.addEventListener(\"abort\", (event) => reject(event));\n el.addEventListener(\"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n });\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = ref(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = ref(false);\n const isFinal = ref(false);\n const result = ref(\"\");\n const error = shallowRef(void 0);\n const toggle = (value = !isListening.value) => {\n isListening.value = value;\n };\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n let recognition;\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, () => {\n if (isListening.value)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n isListening.value = false;\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = ref(false);\n const status = ref(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(initialValue);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = ref(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = ref(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true,\n window = defaultWindow\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = ref(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n let listenerOptions;\n const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n if (!passive)\n listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n else\n listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n if (listenerOptions.capture && !listenerOptions.passive)\n e.preventDefault();\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isPassiveEventSupported,\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop\n };\n}\nfunction checkPassiveEventSupport(document) {\n if (!document)\n return false;\n let supportsPassive = false;\n const optionsBlock = {\n get passive() {\n supportsPassive = true;\n return false;\n }\n };\n document.addEventListener(\"x\", noop, optionsBlock);\n document.removeEventListener(\"x\", noop);\n return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange);\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction useTextareaAutosize(options) {\n var _a;\n const textarea = ref(options == null ? void 0 : options.element);\n const input = ref(options == null ? void 0 : options.input);\n const styleProp = (_a = options == null ? void 0 : options.styleProp) != null ? _a : \"height\";\n const textareaScrollHeight = ref(1);\n const textareaOldWidth = ref(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n const { start } = useTimeoutFn(loop, interval, { immediate: false });\n const isActive = ref(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n loop();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = ref(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = newTitle && typeof newTitle === \"function\";\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (t, o) => {\n if (t !== o && document)\n document.title = format(typeof t === \"string\" ? t : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnBeforeUnmount(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n useEventListener(window, \"popstate\", onChanged, false);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, false);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = ref((_a = options.enabled) != null ? _a : false);\n const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c, _d, _e;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n if (isVue2) {\n const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n if (!eventName)\n event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n } else {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = ref(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = ref(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n try {\n new Notification(\"\");\n } catch (e) {\n return false;\n }\n return true;\n });\n const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = ref(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n if (!isClient || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n if (typeof retries === \"number\" && (retries < 0 || retried < retries)) {\n retried += 1;\n setTimeout(_init, delay);\n } else if (typeof retries === \"function\" && retries()) {\n setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === responseMessage)\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(message, false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close());\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = ref(\"PENDING\");\n const promise = ref({});\n const timeoutId = ref();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref(false);\n const focused = ref(window.document.hasFocus());\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n });\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n });\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, behavior = \"auto\" } = options;\n if (!window) {\n return {\n x: ref(0),\n y: ref(0)\n };\n }\n const internalX = ref(window.scrollX);\n const internalY = ref(window.scrollY);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo({ left: x2, behavior });\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo({ top: y2, behavior });\n }\n });\n useEventListener(\n window,\n \"scroll\",\n () => {\n internalX.value = window.scrollX;\n internalY.value = window.scrollY;\n },\n {\n capture: false,\n passive: true\n }\n );\n return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = ref(initialWidth);\n const height = ref(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n useEventListener(\"resize\", update, { passive: true });\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","<script setup lang=\"ts\">\nimport { computed, type PropType, ref } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { FontWeights } from '@/types/styles/FontWeights'\nimport { useTooltip } from '@/composables'\nimport type { ITooltip, TooltipPositionsUnion } from '@/types/ITooltip'\nimport type { ButtonVariationUnion, IButtonStyleOptions } from '@/types/IButton'\nimport { TooltipPositions, TooltipSizes } from '@/enums/Tooltip'\nimport { McSvgIcon } from '@/components'\nimport type { ButtonSizeUnion, ButtonTypeUnion } from '@/types/IButton'\nimport type { HorizontalAlignmentUnion } from '@/types/styles/Alignment'\nimport type { WeightsUnion } from '@/types/styles/Weights'\nimport type { ColorsUnion } from '@/types/styles/Colors'\nimport type { FontWeightsUnion } from '@/types/styles/FontWeights'\nimport { ButtonModifiers } from '@/enums'\n\ninterface ElButtonTagBind {\n to?: string | null\n href?: string | null\n disabled: boolean\n rel: string\n type: ButtonTypeUnion\n tabindex: number | string | undefined | null\n}\n\nconst vTooltip = useTooltip()\n\nconst buttonTooltip = computed((): ITooltip => {\n let payload = {} as ITooltip\n if (props.tooltip) {\n payload = {\n content: props.tooltip,\n size: TooltipSizes.M,\n placement: props.tooltipPlacement || TooltipPositions.Top,\n }\n }\n return payload\n})\n\nconst props = defineProps({\n /**\n * Если нужна ссылка внутри приложения:\n */\n to: {\n type: String as PropType<string>,\n },\n /**\n * Если нужна обычная ссылка:\n * `https://mediacube.agency/`\n */\n href: {\n type: String as PropType<string>,\n },\n /**\n * По умолчанию ожидается использование в `Nuxt`\n *\n */\n nuxt: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Отключенное состояние\n *\n */\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Дизэйблить не меняя внешнего вида\n *\n */\n inactive: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Индикация загрузки\n *\n */\n loading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Индикация загрузки\n * вращением иконки\n */\n iconLoading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Типы:\n * `button, submit, reset`\n */\n type: {\n type: String as () => ButtonTypeUnion,\n default: null\n },\n /**\n * Дизайн:\n * `purple, red, purple-outline, purple-invert, purple-flat и т.д.`\n */\n variation: {\n type: String as () => ButtonVariationUnion,\n default: 'purple'\n },\n /**\n * Размеры:\n * `xs, xs-compact, s, s-compact, m, m-compact, l, l-compact`\n */\n size: {\n type: String as () => ButtonSizeUnion,\n default: 'm'\n },\n /**\n * Тень\n *\n */\n shadow: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Круглая (применимо для *-compact size)\n *\n */\n rounded: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Закругленная\n *\n */\n semiRounded: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Позиция текста внутри кнопки:\n * `left, center, right`\n */\n textAlign: {\n type: String as () => HorizontalAlignmentUnion,\n default: 'center'\n },\n /**\n * На всю ширину\n *\n */\n fullWidth: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Если нужно активное состояние\n *\n */\n isActive: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * exact\n *\n */\n exact: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Заглавные буквы\n */\n uppercase: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Тег по умолчанию\n */\n defaultTag: {\n type: String as PropType<string>,\n default: 'button'\n },\n /**\n * Если нужен другой цвет при взаимодействии\n */\n secondaryColor: {\n type: String as () => ColorTypes,\n default: null\n },\n /**\n * Если нужна подчёркнутая ссылка\n */\n underlineLink: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Если нужен постоянный\n * фон у типа 'flat'\n */\n bgFlat: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Жирность шрифта:\n * `normal, medium, semi-bold`\n */\n weight: {\n type: String as () => WeightsUnion,\n default: 'semi-bold'\n },\n /**\n * Тултип при наличии\n */\n tooltip: {\n type: String as PropType<string>,\n default: null\n },\n tooltipPlacement: {\n type: String as () => TooltipPositionsUnion,\n default: null,\n },\n\n /**\n * Атрибут tabindex для главного элемента\n *\n */\n tabindex: {\n type: [String, Number]\n }\n})\n\nconst mcButton = ref(null)\nconst emit = defineEmits(['blur', 'click'])\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n [`mc-button--variation-${props.variation}`]: !!props.variation,\n [`mc-button--size-${props.size}`]: !!props.size,\n [`mc-button--text-align-${props.textAlign}`]: !!props.textAlign,\n 'mc-button--loading': !!props.loading,\n 'mc-button--icon-loading': !!props.iconLoading,\n 'mc-button--is-active': !!props.isActive,\n 'mc-button--disabled': !!props.disabled,\n 'mc-button--rounded': props.rounded && /-compact$/.test(props.size),\n 'mc-button--semi-rounded': !!props.semiRounded,\n 'mc-button--full-width': !!props.fullWidth,\n 'mc-button--uppercase': !!props.uppercase,\n 'mc-button--shadow': !!props.shadow,\n 'mc-button--secondary-color': !!props.secondaryColor,\n 'mc-button--underline-link': !!props.underlineLink,\n 'mc-button--bg-flat': !!props.bgFlat,\n [`mc-button--type-${buttonVariation.value.type}`]: !!buttonVariation.value.type,\n 'mc-button--inactive': !!props.inactive\n }\n})\n\nconst buttonVariation = computed((): IButtonStyleOptions => {\n const variation = props.variation\n const texts = variation.split('-')\n const currentStyle = texts[texts.length - 1]\n let color = variation.replace(`-${currentStyle}`, '')\n switch (currentStyle) {\n case ButtonModifiers.Link:\n case ButtonModifiers.Flat:\n case ButtonModifiers.Outline:\n case ButtonModifiers.Invert: {\n break\n }\n default: {\n color = variation\n break\n }\n }\n return {\n color: color as ColorTypes,\n type: currentStyle\n }\n})\n\nconst styles = computed((): { [key: string]: ColorsUnion | FontWeightsUnion | string | undefined } => {\n let hoverBrightness: string | undefined\n let textColor: ColorTypes | undefined\n switch (buttonVariation.value.type) {\n case ButtonModifiers.Link:\n case ButtonModifiers.Flat:\n case ButtonModifiers.Outline:\n case ButtonModifiers.Invert: {\n break\n }\n default: {\n switch (buttonVariation.value.color) {\n case 'yellow':\n case 'white': {\n hoverBrightness = '0.9'\n break\n }\n case 'toxic': {\n break\n }\n default: {\n textColor = 'white' as ColorTypes\n }\n }\n break\n }\n }\n\n return {\n '--mc-button-secondary-color': props.secondaryColor && Colors[props.secondaryColor],\n '--mc-button-background-color':\n props.variation && Colors[buttonVariation.value.color as ColorTypes],\n '--mc-button-font-weight': props.weight && FontWeights[props.weight],\n '--mc-button-hover-brightness': hoverBrightness,\n '--mc-button-text-color': textColor && Colors[textColor]\n }\n})\n\nconst tag = computed((): string => {\n if (props.to) {\n return props.nuxt ? 'nuxt-link' : 'router-link'\n } else if (props.href) {\n return 'a'\n }\n return props.defaultTag\n})\n\nconst isVariationLink = computed((): boolean => {\n return buttonVariation.value.type === ButtonModifiers.Link\n})\n\nconst tagBind = computed((): ElButtonTagBind => {\n let result:ElButtonTagBind = {\n to: props.to,\n href: props.href,\n disabled: false,\n rel: '',\n type: props.type,\n tabindex: props.tabindex\n }\n\n if (props.to) {\n delete result.href\n } else if (props.href) {\n delete result.to\n } else if (props.disabled || props.loading) {\n result.disabled = true\n }\n\n if (isVariationLink.value) result.rel = 'noreferrer'\n\n return result\n})\n\nconst handleBlur = (e: Event): void => {\n emit('blur', e)\n}\nconst handleClick = (e: Event): void => {\n emit('click', e)\n}\n</script>\n\n<template>\n <component\n v-tooltip=\"buttonTooltip\"\n :is=\"tag\"\n :ref=\"mcButton\"\n v-bind=\"{ ...tagBind }\"\n class=\"mc-button\"\n :class=\"classes\"\n :exact=\"exact\"\n :style=\"styles\"\n @blur=\"handleBlur\"\n @click=\"handleClick\"\n >\n <span v-if=\"$slots['icon-prepend']\" class=\"mc-button__prepend\">\n <!-- @slot Слот для вставки в начало -->\n <slot name=\"icon-prepend\" />\n </span>\n <span v-if=\"loading\" class=\"mc-button__loader\">\n <mc-svg-icon class=\"mc-button__loader-icon\" type=\"div\" name=\"loader\" />\n </span>\n <span v-if=\"$slots.default\" class=\"mc-button__text\">\n <!-- @slot Слот по умолчанию -->\n <slot />\n </span>\n <span v-if=\"$slots['icon-append']\" class=\"mc-button__append\">\n <!-- @slot Слот для вставки в конец -->\n <slot name=\"icon-append\" />\n </span>\n <div v-if=\"!isVariationLink\" class=\"mc-button__background\" />\n </component>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/styles/tooltip' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/opacities' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/letter-spacings' as *;\n@use '../../../assets/tokens/animations' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/media-queries' as *;\n@use '../../../assets/tokens/border-radius' as *;\n\n.mc-button {\n $block-name: &;\n @include reset();\n --mc-button-background-color: #{$color-transparent};\n --mc-button-font-weight: #{$font-weight-normal};\n --mc-button-text-color: #{$color-black};\n --mc-button-hover-brightness: 0.9;\n --mc-button-secondary-color: initial;\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n border: none;\n flex-wrap: nowrap;\n max-width: 100%;\n font-family: $font-family-main;\n border-radius: $radius-100;\n white-space: nowrap;\n user-select: none;\n text-decoration: none;\n text-transform: none;\n background: none;\n cursor: pointer;\n outline: 0;\n transition: all $duration-s;\n font-weight: var(--mc-button-font-weight);\n color: var(--mc-button-text-color);\n -webkit-appearance: none;\n -webkit-text-fill-color: currentColor;\n z-index: 0;\n\n &__loader {\n display: none;\n line-height: 0;\n @include align(true, true, absolute);\n top: unset;\n left: unset;\n transform: unset;\n z-index: 1;\n &-icon {\n animation: $animation-spinner;\n }\n }\n &__prepend,\n &__append {\n display: inline-flex;\n align-items: center;\n z-index: 1;\n }\n\n &__text {\n @include ellipsis($display: inline-block);\n @include layout-flex-fix();\n z-index: 1;\n &:empty {\n display: none;\n }\n }\n @mixin hoverMixin {\n @media #{$media-desktop} {\n &:hover {\n #{$block-name}__background {\n @content;\n }\n }\n }\n\n &:active {\n #{$block-name}__background {\n @content;\n }\n }\n }\n @include hoverMixin {\n filter: brightness(var(--mc-button-hover-brightness));\n }\n\n &--size {\n &-xxs {\n height: $size-300;\n padding: 0 $space-100;\n letter-spacing: normal;\n font-size: $font-size-200;\n line-height: $line-height-200;\n\n &-compact {\n @include size($size-300);\n padding: $space-50;\n .mc-svg-icon {\n @include size($size-200);\n }\n }\n .mc-svg-icon {\n @include size($size-200);\n }\n\n #{$block-name} {\n &__prepend {\n margin-inline-end: $space-50;\n }\n &__append {\n margin-inline-start: $space-50;\n }\n }\n }\n &-xs {\n height: $size-400;\n padding: 0 $space-150;\n letter-spacing: normal;\n font-size: $font-size-200;\n line-height: $line-height-200;\n\n &-compact {\n @include size($size-400);\n padding: 6px;\n .mc-svg-icon {\n @include size($size-250);\n }\n }\n .mc-svg-icon {\n @include size($size-250);\n }\n\n #{$block-name} {\n &__prepend {\n margin-inline-end: $space-50;\n }\n &__append {\n margin-inline-start: $space-50;\n }\n }\n }\n &-s {\n height: $size-500;\n padding: 0 $space-200;\n letter-spacing: normal;\n font-size: $font-size-200;\n line-height: $line-height-200;\n\n &-compact {\n @include size($size-500);\n padding: $space-150;\n .mc-svg-icon {\n @include size($size-250);\n }\n }\n .mc-svg-icon {\n @include size($size-250);\n }\n\n #{$block-name} {\n &__prepend {\n margin-inline-end: $space-50;\n }\n &__append {\n margin-inline-start: $space-50;\n }\n }\n }\n &-m {\n height: $size-500;\n padding: 0 $space-200;\n font-size: $font-size-200;\n line-height: $line-height-200;\n\n &-compact {\n @include size($size-500);\n padding: $space-100;\n .mc-svg-icon {\n @include size($size-300);\n }\n }\n .mc-svg-icon {\n @include size($size-300);\n }\n\n #{$block-name} {\n &__prepend {\n margin-inline-end: $space-50;\n }\n &__append {\n margin-inline-start: $space-50;\n }\n }\n }\n &-l {\n height: $size-600;\n padding: $space-150 $space-300;\n font-size: $font-size-200;\n line-height: $line-height-200;\n\n &-compact {\n @include size($size-600);\n padding: $space-150;\n .mc-svg-icon {\n @include size($size-300);\n }\n }\n .mc-svg-icon {\n @include size($size-300);\n }\n\n #{$block-name} {\n &__prepend {\n margin-inline-end: $space-100;\n }\n &__append {\n margin-inline-start: $space-100;\n }\n }\n }\n\n &-s,\n &-m,\n &-l {\n &-compact {\n #{$block-name} {\n &__prepend,\n &__append {\n margin: 0 !important;\n }\n }\n }\n }\n }\n\n &__background {\n position: absolute;\n top: 0;\n left: 0;\n @include size(100%);\n max-height: -webkit-fill-available;\n max-width: -webkit-fill-available;\n opacity: 1 !important;\n border: 1px solid $color-transparent;\n border-radius: inherit;\n background-color: var(--mc-button-background-color);\n transition: all $duration-s;\n }\n &--type {\n &-outline {\n color: var(--mc-button-background-color);\n #{$block-name}__background {\n opacity: 0.6 !important;\n background-color: $color-transparent;\n border-color: var(--mc-button-background-color);\n }\n @media #{$media-desktop} {\n &:hover {\n #{$block-name}__background {\n background-color: var(--mc-button-background-color);\n opacity: 0.2 !important;\n }\n }\n &:active {\n #{$block-name}__background {\n background-color: var(--mc-button-background-color);\n border: none;\n }\n }\n }\n }\n &-invert {\n color: var(--mc-button-background-color);\n #{$block-name} {\n &__background {\n opacity: 0.1 !important;\n }\n }\n @include hoverMixin {\n opacity: 0.2 !important;\n }\n }\n &-flat {\n color: var(--mc-button-background-color);\n #{$block-name}__background {\n opacity: 0 !important;\n }\n @include hoverMixin {\n opacity: 0.1 !important;\n }\n }\n &-link {\n color: var(--mc-button-background-color);\n padding: 0;\n @include size(auto);\n border: none;\n user-select: text;\n &#{$block-name}--size-l {\n line-height: $line-height-250;\n }\n &#{$block-name} {\n &--disabled {\n opacity: $opacity-disabled;\n background-color: transparent !important;\n color: var(--mc-button-background-color) !important;\n border-color: transparent !important;\n }\n }\n @media #{$media-desktop} {\n &:hover {\n filter: brightness(0.85);\n }\n }\n\n &:active {\n filter: brightness(0.85);\n }\n #{$block-name} {\n &__background {\n display: none;\n }\n }\n }\n }\n &--bg-flat {\n #{$block-name} {\n &__background {\n opacity: 0.1 !important;\n }\n }\n }\n &--shadow {\n box-shadow: 0 3px 10px var(--mc-button-background-color);\n }\n &--underline-link {\n #{$block-name}__text {\n text-decoration: underline !important;\n }\n }\n\n &--secondary-color {\n @media #{$media-desktop} {\n &:hover {\n color: var(--mc-button-secondary-color);\n }\n }\n &:active {\n color: var(--mc-button-secondary-color);\n }\n }\n\n &--uppercase {\n text-transform: uppercase;\n letter-spacing: $letter-spacing-m;\n }\n\n &--is-active,\n &.nuxt-link-active {\n color: $color-purple;\n background-color: transparent;\n border-color: transparent;\n pointer-events: none;\n }\n\n &--rounded {\n border-radius: $radius-circle;\n }\n\n &--semi-rounded {\n border-radius: 50px;\n }\n\n &--full-width {\n width: 100%;\n }\n\n &--text-align {\n &-left {\n justify-content: flex-start;\n }\n &-center {\n justify-content: center;\n }\n &-right {\n justify-content: flex-end;\n }\n }\n\n &--loading,\n &--icon-loading,\n &--disabled {\n pointer-events: none;\n }\n\n &--loading {\n #{$block-name} {\n &__loader {\n display: inline-block;\n }\n }\n\n > *:not(#{$block-name}__loader) {\n opacity: 0;\n }\n }\n &--icon-loading {\n #{$block-name} {\n &__append,\n &__prepend {\n .mc-svg-icon {\n animation: $animation-spinner;\n }\n }\n }\n #{$block-name}__loader {\n transform-origin: center center;\n animation: $animation-spinner;\n }\n }\n\n &--disabled {\n color: $color-outline-gray;\n cursor: not-allowed;\n #{$block-name} {\n &__background {\n background-color: $color-hover-gray;\n border-color: $color-hover-gray;\n }\n }\n }\n\n &--inactive {\n pointer-events: none;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McSvgIcon } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport type { ChipVariationUnion, IChipStyleOptions } from '@/types/IChip'\nimport { type ChipSizeUnion } from '@/types/IChip'\nimport type { ColorsUnion } from '@/types/styles/Colors'\nimport { ChipModifiers } from '@/enums'\n\nconst emit = defineEmits(['close', 'click'])\nconst props = defineProps({\n /**\n * Text content\n *\n */\n title: {\n type: [String, Number] as PropType<string | number>,\n default: '',\n },\n /**\n * Кнопка закрытия\n *\n */\n closable: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n /**\n * Дизайн:\n * `purple, purple-invert т.д.`\n */\n variation: {\n type: String as () => ChipVariationUnion,\n default: 'transparent',\n },\n /**\n * Счетчик\n *\n */\n counter: {\n type: [String, Number] as PropType<string | number>,\n default: null,\n },\n /**\n * Размер\n */\n size: {\n type: String as () => ChipSizeUnion,\n default: 'm',\n },\n /**\n * Если нужен\n * иной цвет текста\n */\n textColor: {\n type: String as () => ColorTypes,\n default: '',\n },\n})\n\nconst classes = computed((): { [key: string]: boolean } => ({\n [`mc-chip--variation-${chipOptions.value.variation}`]: !!props.variation,\n [`mc-chip--size-${props.size}`]: !!props.size,\n}))\n\nconst chipOptions = computed((): IChipStyleOptions => {\n const variationProps = props.variation?.split('-')\n const currentVariation = variationProps[variationProps.length - 1]\n let color\n let variation\n switch (currentVariation) {\n case ChipModifiers.Outline:\n case ChipModifiers.Invert: {\n variation = currentVariation\n color = props.variation.replace(`-${currentVariation}`, '')\n break\n }\n default: {\n variation = 'default'\n color = props.variation\n break\n }\n }\n return {\n color: color as ColorTypes,\n variation,\n }\n})\n\nconst styles = computed((): { [key: string]: ColorsUnion } => {\n const textColor = props.textColor || 'white'\n return {\n '--mc-chip-color': Colors[chipOptions.value.color as ColorTypes],\n '--mc-chip-text-color': Colors[textColor],\n }\n})\n\nconst handleCloseClick = (e: Event): void => {\n emit('close', e)\n}\nconst handleClick = (e: Event): void => {\n emit('click', e)\n}\n</script>\n\n<template>\n <section class=\"mc-chip\" tabindex=\"0\" :class=\"classes\" :style=\"styles\" @click=\"handleClick\">\n <div v-if=\"$slots.icon\" class=\"mc-chip__icon\">\n <!-- @slot Слот для иконки -->\n <slot name=\"icon\" />\n </div>\n <div v-if=\"title || $slots.default\" class=\"mc-chip__title\">\n <!-- @slot Слот для контента -->\n <slot>\n {{ title }}\n </slot>\n </div>\n <div v-if=\"counter || counter === 0\" class=\"mc-chip__counter\">\n {{ counter }}\n </div>\n <button v-if=\"closable\" class=\"mc-chip__button\" type=\"button\" @click.stop=\"handleCloseClick\">\n <!-- @slot Слот для пользовательской кнопки -->\n <slot name=\"button\">\n <mc-svg-icon size=\"200\" name=\"cancel\" />\n </slot>\n </button>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use 'sass:color' as sasscolor;\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n\n.mc-chip {\n $block-name: &;\n --mc-chip-text-color: #{$color-black};\n --mc-chip-color: #{$color-white};\n display: inline-flex;\n position: relative;\n align-items: center;\n color: var(--mc-chip-color);\n font-family: $font-family-main;\n font-size: $font-size-200;\n line-height: $line-height-200;\n max-width: 100%;\n border-radius: 100px;\n vertical-align: middle;\n outline: none;\n z-index: 0;\n flex-shrink: 0;\n overflow: visible;\n &:before {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n z-index: 0;\n @include size(100%);\n border-radius: inherit;\n background-color: var(--mc-chip-color);\n }\n > * {\n margin-right: $space-50;\n z-index: 1;\n }\n > *:first-child {\n margin-left: $space-50;\n }\n\n &--size {\n @mixin padding-x($space, $space-compact) {\n padding-right: $space;\n padding-left: $space;\n &-compact {\n padding-right: $space-compact;\n padding-left: $space-compact;\n }\n }\n &-m {\n @include padding-x($space-100, $space-50);\n &,\n &-compact {\n height: $size-400;\n }\n }\n &-s {\n @include padding-x($space-100, $space-50);\n &,\n &-compact {\n height: $size-300;\n }\n }\n &-xs {\n @include padding-x($space-50, 0);\n &,\n &-compact {\n height: $space-200;\n font-size: $font-size-100;\n line-height: $line-height-150;\n }\n }\n }\n &__icon {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: 0;\n }\n &__title {\n @include ellipsis();\n @include layout-flex-fix();\n color: var(--mc-chip-text-color);\n &:empty {\n display: none;\n }\n }\n &__counter {\n flex: 0 0 auto;\n font-family: $font-family-main;\n font-size: $font-size-200;\n line-height: $line-height-200;\n color: $color-dark-gray;\n\n &:empty {\n display: none;\n }\n }\n &__button {\n @include size($size-200);\n position: relative;\n display: flex;\n flex: 0 0 auto;\n justify-content: center;\n align-items: center;\n padding: 0;\n margin-right: 0;\n border-radius: 0;\n user-select: none;\n text-decoration: none;\n text-transform: none;\n background-color: transparent;\n background-image: none;\n cursor: pointer;\n outline: 0;\n border: none;\n transition: all $duration-s;\n flex-wrap: nowrap;\n -webkit-appearance: none;\n -webkit-text-fill-color: currentColor;\n color: $color-dark-gray;\n opacity: 0.2;\n\n &:hover {\n opacity: 1;\n color: $color-red;\n }\n\n &:active {\n color: sasscolor.adjust($color-red, $lightness: 15%);\n }\n }\n\n &--variation {\n &-default {\n #{$block-name} {\n &__button {\n color: var(--mc-chip-color);\n &:hover {\n opacity: 1;\n color: $color-white;\n }\n &:active {\n color: sasscolor.adjust($color-white, $lightness: 15%);\n }\n }\n &__title {\n color: var(--mc-chip-text-color);\n }\n &__counter {\n color: var(--mc-chip-text-color);\n opacity: 0.5;\n }\n }\n }\n &-outline {\n color: var(--mc-chip-color);\n border: 1px solid var(--mc-chip-color);\n &:before {\n display: none;\n }\n }\n &-invert {\n color: $color-black;\n &:before {\n background-color: var(--mc-chip-color);\n opacity: 0.15;\n }\n }\n }\n}\n</style>\n","import { useAttrs as jn, openBlock as T, createElementBlock as K, createElementVNode as ye, unref as o, reactive as Qt, computed as J, ref as ne, toRef as Vt, watch as at, defineComponent as Le, onMounted as We, onUnmounted as ua, renderSlot as ie, normalizeProps as Ne, mergeProps as Ee, Fragment as be, normalizeStyle as tt, createCommentVNode as Z, createTextVNode as ct, toDisplayString as Ue, onBeforeUpdate as Kn, nextTick as xe, normalizeClass as we, withModifiers as Wt, renderList as Re, withDirectives as na, vShow as la, createBlock as $e, withCtx as ke, withKeys as Gn, createVNode as Ze, Transition as Nt, createSlots as Ve, useSlots as Pt, guardReactiveProps as Qe, resolveDynamicComponent as ia, h as Qn, render as xa, getCurrentScope as qn, onScopeDispose as Xn, isRef as en, Teleport as Jn } from \"vue\";\nimport { format as ut, isEqual as Ot, set as Te, startOfMonth as Zn, isAfter as _t, getYear as pe, getMonth as De, setMonth as xn, setYear as st, addMonths as At, subMonths as jt, isValid as ra, isBefore as Kt, eachDayOfInterval as pn, setHours as el, setMinutes as tl, setSeconds as yn, setMilliseconds as gn, getHours as ft, getMinutes as ht, getSeconds as Bt, startOfWeek as La, endOfWeek as hn, parse as Ia, isDate as al, addHours as nl, addYears as bn, subYears as kn, endOfYear as wn, startOfYear as oa, differenceInYears as ll, add as Dn, sub as rl, getWeek as ol, getISOWeek as sl, addDays as $t, isSameQuarter as tn, eachQuarterOfInterval as ul, startOfQuarter as il, endOfQuarter as an, getQuarter as nn, getDay as dl, differenceInCalendarDays as cl } from \"date-fns\";\nfunction Et() {\n const e = jn();\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\",\n ...e\n },\n [\n ye(\"path\", {\n d: \"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z\"\n }),\n ye(\"path\", {\n d: \"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n ye(\"path\", {\n d: \"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n ye(\"path\", {\n d: \"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z\"\n })\n ]\n );\n}\nEt.compatConfig = {\n MODE: 3\n};\nfunction Mn() {\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n ye(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n }),\n ye(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nMn.compatConfig = {\n MODE: 3\n};\nfunction za() {\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n ye(\"path\", {\n d: \"M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nza.compatConfig = {\n MODE: 3\n};\nfunction Ha() {\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n ye(\"path\", {\n d: \"M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z\"\n })\n ]\n );\n}\nHa.compatConfig = {\n MODE: 3\n};\nfunction Ua() {\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n ye(\"path\", {\n d: \"M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z\"\n }),\n ye(\"path\", {\n d: \"M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n })\n ]\n );\n}\nUa.compatConfig = {\n MODE: 3\n};\nfunction Va() {\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n ye(\"path\", {\n d: \"M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nVa.compatConfig = {\n MODE: 3\n};\nfunction Wa() {\n return T(), K(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n ye(\"path\", {\n d: \"M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nWa.compatConfig = {\n MODE: 3\n};\nconst qe = (e, t) => t ? new Date(e.toLocaleString(\"en-US\", { timeZone: t })) : new Date(e), ja = (e, t, l) => {\n const a = Na(e, t, l);\n return a || G();\n}, fl = (e, t, l) => {\n const a = t.dateInTz ? qe(new Date(e), t.dateInTz) : G(e);\n return l ? Ge(a, !0) : a;\n}, Na = (e, t, l) => {\n if (!e) return null;\n const a = l ? Ge(G(e), !0) : G(e);\n return t ? t.exactMatch ? fl(e, t, l) : qe(a, t.timezone) : a;\n}, vl = (e) => {\n if (!e) return 0;\n const t = /* @__PURE__ */ new Date(), l = new Date(t.toLocaleString(\"en-US\", { timeZone: \"UTC\" })), a = new Date(t.toLocaleString(\"en-US\", { timeZone: e })), n = a.getTimezoneOffset() / 60;\n return (+l - +a) / (1e3 * 60 * 60) - n;\n};\nvar nt = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e))(nt || {}), Mt = /* @__PURE__ */ ((e) => (e.top = \"top\", e.bottom = \"bottom\", e))(Mt || {}), Tt = /* @__PURE__ */ ((e) => (e.header = \"header\", e.calendar = \"calendar\", e.timePicker = \"timePicker\", e))(Tt || {}), He = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e.calendar = \"calendar\", e.time = \"time\", e.minutes = \"minutes\", e.hours = \"hours\", e.seconds = \"seconds\", e))(He || {});\nconst ml = [\"timestamp\", \"date\", \"iso\"];\nvar je = /* @__PURE__ */ ((e) => (e.up = \"up\", e.down = \"down\", e.left = \"left\", e.right = \"right\", e))(je || {}), Pe = /* @__PURE__ */ ((e) => (e.arrowUp = \"ArrowUp\", e.arrowDown = \"ArrowDown\", e.arrowLeft = \"ArrowLeft\", e.arrowRight = \"ArrowRight\", e.enter = \"Enter\", e.space = \" \", e.esc = \"Escape\", e.tab = \"Tab\", e.home = \"Home\", e.end = \"End\", e.pageUp = \"PageUp\", e.pageDown = \"PageDown\", e))(Pe || {});\nfunction ln(e) {\n return (t) => new Intl.DateTimeFormat(e, { weekday: \"short\", timeZone: \"UTC\" }).format(/* @__PURE__ */ new Date(`2017-01-0${t}T00:00:00+00:00`)).slice(0, 2);\n}\nfunction pl(e) {\n return (t) => ut(qe(/* @__PURE__ */ new Date(`2017-01-0${t}T00:00:00+00:00`), \"UTC\"), \"EEEEEE\", { locale: e });\n}\nconst yl = (e, t, l) => {\n const a = [1, 2, 3, 4, 5, 6, 7];\n let n;\n if (e !== null)\n try {\n n = a.map(pl(e));\n } catch {\n n = a.map(ln(t));\n }\n else\n n = a.map(ln(t));\n const i = n.slice(0, l), d = n.slice(l + 1, n.length);\n return [n[l]].concat(...d).concat(...i);\n}, Ka = (e, t, l) => {\n const a = [];\n for (let n = +e[0]; n <= +e[1]; n++)\n a.push({ value: +n, text: Sn(n, t) });\n return l ? a.reverse() : a;\n}, $n = (e, t, l) => {\n const a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((i) => {\n const d = i < 10 ? `0${i}` : i;\n return /* @__PURE__ */ new Date(`2017-${d}-01T00:00:00+00:00`);\n });\n if (e !== null)\n try {\n const i = l === \"long\" ? \"LLLL\" : \"LLL\";\n return a.map((d, b) => {\n const c = ut(qe(d, \"UTC\"), i, { locale: e });\n return {\n text: c.charAt(0).toUpperCase() + c.substring(1),\n value: b\n };\n });\n } catch {\n }\n const n = new Intl.DateTimeFormat(t, { month: l, timeZone: \"UTC\" });\n return a.map((i, d) => {\n const b = n.format(i);\n return {\n text: b.charAt(0).toUpperCase() + b.substring(1),\n value: d\n };\n });\n}, gl = (e) => [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11][e], Ie = (e) => {\n const t = o(e);\n return t != null && t.$el ? t == null ? void 0 : t.$el : t;\n}, hl = (e) => ({ type: \"dot\", ...e ?? {} }), An = (e) => Array.isArray(e) ? !!e[0] && !!e[1] : !1, Ga = {\n prop: (e) => `\"${e}\" prop must be enabled!`,\n dateArr: (e) => `You need to use array as \"model-value\" binding in order to support \"${e}\"`\n}, Ye = (e) => e, rn = (e) => e === 0 ? e : !e || isNaN(+e) ? null : +e, on = (e) => e === null, Tn = (e) => {\n if (e)\n return [...e.querySelectorAll(\"input, button, select, textarea, a[href]\")][0];\n}, bl = (e) => {\n const t = [], l = (a) => a.filter((n) => n);\n for (let a = 0; a < e.length; a += 3) {\n const n = [e[a], e[a + 1], e[a + 2]];\n t.push(l(n));\n }\n return t;\n}, Gt = (e, t, l) => {\n const a = l != null, n = t != null;\n if (!a && !n) return !1;\n const i = +l, d = +t;\n return a && n ? +e > i || +e < d : a ? +e > i : n ? +e < d : !1;\n}, Yt = (e, t) => bl(e).map((l) => l.map((a) => {\n const { active: n, disabled: i, isBetween: d, highlighted: b } = t(a);\n return {\n ...a,\n active: n,\n disabled: i,\n className: {\n dp__overlay_cell_active: n,\n dp__overlay_cell: !n,\n dp__overlay_cell_disabled: i,\n dp__overlay_cell_pad: !0,\n dp__overlay_cell_active_disabled: i && n,\n dp__cell_in_between: d,\n \"dp--highlighted\": b\n }\n };\n})), yt = (e, t, l = !1) => {\n e && t.allowStopPropagation && (l && e.stopImmediatePropagation(), e.stopPropagation());\n}, kl = () => [\n \"a[href]\",\n \"area[href]\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[data-datepicker-instance]\"\n].join(\", \");\nfunction wl(e, t) {\n let l = [...document.querySelectorAll(kl())];\n l = l.filter((n) => !e.contains(n) || n.hasAttribute(\"data-datepicker-instance\"));\n const a = l.indexOf(e);\n if (a >= 0 && (t ? a - 1 >= 0 : a + 1 <= l.length))\n return l[a + (t ? -1 : 1)];\n}\nconst Ea = (e, t) => e == null ? void 0 : e.querySelector(`[data-dp-element=\"${t}\"]`), Sn = (e, t) => new Intl.NumberFormat(t, { useGrouping: !1, style: \"decimal\" }).format(e), Qa = (e) => ut(e, \"dd-MM-yyyy\"), $a = (e) => Array.isArray(e), sa = (e, t) => t.get(Qa(e)), Dl = (e, t) => e ? t ? t instanceof Map ? !!sa(e, t) : t(G(e)) : !1 : !0, Ke = (e, t, l = !1, a) => {\n if (e.key === Pe.enter || e.key === Pe.space)\n return l && e.preventDefault(), t();\n if (a) return a(e);\n}, sn = () => [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].some(\n (e) => navigator.userAgent.includes(e)\n) || navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document, un = (e, t, l, a, n, i) => {\n const d = Ia(e, t.slice(0, e.length), /* @__PURE__ */ new Date(), { locale: i });\n return ra(d) && al(d) ? a || n ? d : Te(d, {\n hours: +l.hours,\n minutes: +(l == null ? void 0 : l.minutes),\n seconds: +(l == null ? void 0 : l.seconds),\n milliseconds: 0\n }) : null;\n}, Ml = (e, t, l, a, n, i) => {\n const d = Array.isArray(l) ? l[0] : l;\n if (typeof t == \"string\")\n return un(e, t, d, a, n, i);\n if (Array.isArray(t)) {\n let b = null;\n for (const c of t)\n if (b = un(e, c, d, a, n, i), b)\n break;\n return b;\n }\n return typeof t == \"function\" ? t(e) : null;\n}, G = (e) => e ? new Date(e) : /* @__PURE__ */ new Date(), $l = (e, t, l) => {\n if (t) {\n const n = (e.getMonth() + 1).toString().padStart(2, \"0\"), i = e.getDate().toString().padStart(2, \"0\"), d = e.getHours().toString().padStart(2, \"0\"), b = e.getMinutes().toString().padStart(2, \"0\"), c = l ? e.getSeconds().toString().padStart(2, \"0\") : \"00\";\n return `${e.getFullYear()}-${n}-${i}T${d}:${b}:${c}.000Z`;\n }\n const a = Date.UTC(\n e.getUTCFullYear(),\n e.getUTCMonth(),\n e.getUTCDate(),\n e.getUTCHours(),\n e.getUTCMinutes(),\n e.getUTCSeconds()\n );\n return new Date(a).toISOString();\n}, Ge = (e, t) => {\n const l = G(JSON.parse(JSON.stringify(e))), a = Te(l, { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 });\n return t ? Zn(a) : a;\n}, gt = (e, t, l, a) => {\n let n = e ? G(e) : G();\n return (t || t === 0) && (n = el(n, +t)), (l || l === 0) && (n = tl(n, +l)), (a || a === 0) && (n = yn(n, +a)), gn(n, 0);\n}, Oe = (e, t) => !e || !t ? !1 : Kt(Ge(e), Ge(t)), Me = (e, t) => !e || !t ? !1 : Ot(Ge(e), Ge(t)), Be = (e, t) => !e || !t ? !1 : _t(Ge(e), Ge(t)), da = (e, t, l) => e != null && e[0] && (e != null && e[1]) ? Be(l, e[0]) && Oe(l, e[1]) : e != null && e[0] && t ? Be(l, e[0]) && Oe(l, t) || Oe(l, e[0]) && Be(l, t) : !1, lt = (e) => {\n const t = Te(new Date(e), { date: 1 });\n return Ge(t);\n}, Aa = (e, t, l) => t && (l || l === 0) ? Object.fromEntries(\n [\"hours\", \"minutes\", \"seconds\"].map((a) => a === t ? [a, l] : [a, isNaN(+e[a]) ? void 0 : +e[a]])\n) : {\n hours: isNaN(+e.hours) ? void 0 : +e.hours,\n minutes: isNaN(+e.minutes) ? void 0 : +e.minutes,\n seconds: isNaN(+e.seconds) ? void 0 : +e.seconds\n}, St = (e) => ({\n hours: ft(e),\n minutes: ht(e),\n seconds: Bt(e)\n}), Pn = (e, t) => {\n if (t) {\n const l = pe(G(t));\n if (l > e) return 12;\n if (l === e) return De(G(t));\n }\n}, Rn = (e, t) => {\n if (t) {\n const l = pe(G(t));\n return l < e ? -1 : l === e ? De(G(t)) : void 0;\n }\n}, It = (e) => {\n if (e) return pe(G(e));\n}, Cn = (e, t) => {\n const l = Be(e, t) ? t : e, a = Be(t, e) ? t : e;\n return pn({ start: l, end: a });\n}, Al = (e) => {\n const t = At(e, 1);\n return { month: De(t), year: pe(t) };\n}, it = (e, t) => {\n const l = La(e, { weekStartsOn: +t }), a = hn(e, { weekStartsOn: +t });\n return [l, a];\n}, On = (e, t) => {\n const l = {\n hours: ft(G()),\n minutes: ht(G()),\n seconds: t ? Bt(G()) : 0\n };\n return Object.assign(l, e);\n}, pt = (e, t, l) => [Te(G(e), { date: 1 }), Te(G(), { month: t, year: l, date: 1 })], dt = (e, t, l) => {\n let a = e ? G(e) : G();\n return (t || t === 0) && (a = xn(a, t)), l && (a = st(a, l)), a;\n}, _n = (e, t, l, a, n) => {\n if (!a || n && !t || !n && !l) return !1;\n const i = n ? At(e, 1) : jt(e, 1), d = [De(i), pe(i)];\n return n ? !Sl(...d, t) : !Tl(...d, l);\n}, Tl = (e, t, l) => Oe(...pt(l, e, t)) || Me(...pt(l, e, t)), Sl = (e, t, l) => Be(...pt(l, e, t)) || Me(...pt(l, e, t)), Bn = (e, t, l, a, n, i, d) => {\n if (typeof t == \"function\" && !d) return t(e);\n const b = l ? { locale: l } : void 0;\n return Array.isArray(e) ? `${ut(e[0], i, b)}${n && !e[1] ? \"\" : a}${e[1] ? ut(e[1], i, b) : \"\"}` : ut(e, i, b);\n}, Rt = (e) => {\n if (e) return null;\n throw new Error(Ga.prop(\"partial-range\"));\n}, ta = (e, t) => {\n if (t) return e();\n throw new Error(Ga.prop(\"range\"));\n}, Fa = (e) => Array.isArray(e) ? ra(e[0]) && (e[1] ? ra(e[1]) : !0) : e ? ra(e) : !1, Pl = (e, t) => Te(t ?? G(), {\n hours: +e.hours || 0,\n minutes: +e.minutes || 0,\n seconds: +e.seconds || 0\n}), Ta = (e, t, l, a) => {\n if (!e) return !0;\n if (a) {\n const n = l === \"max\" ? Kt(e, t) : _t(e, t), i = { seconds: 0, milliseconds: 0 };\n return n || Ot(Te(e, i), Te(t, i));\n }\n return l === \"max\" ? e.getTime() <= t.getTime() : e.getTime() >= t.getTime();\n}, Sa = (e, t, l) => e ? Pl(e, t) : G(l ?? t), dn = (e, t, l, a, n) => {\n if (Array.isArray(a)) {\n const d = Sa(e, a[0], t), b = Sa(e, a[1], t);\n return Ta(a[0], d, l, !!t) && Ta(a[1], b, l, !!t) && n;\n }\n const i = Sa(e, a, t);\n return Ta(a, i, l, !!t) && n;\n}, Pa = (e) => Te(G(), St(e)), Rl = (e, t) => e instanceof Map ? Array.from(e.values()).filter((l) => pe(G(l)) === t).map((l) => De(l)) : [], Yn = (e, t, l) => typeof e == \"function\" ? e({ month: t, year: l }) : !!e.months.find((a) => a.month === t && a.year === l), qa = (e, t) => typeof e == \"function\" ? e(t) : e.years.includes(t), In = (e) => ut(e, \"yyyy-MM-dd\"), Ht = Qt({\n menuFocused: !1,\n shiftKeyInMenu: !1\n}), Nn = () => {\n const e = (a) => {\n Ht.menuFocused = a;\n }, t = (a) => {\n Ht.shiftKeyInMenu !== a && (Ht.shiftKeyInMenu = a);\n };\n return {\n control: J(() => ({ shiftKeyInMenu: Ht.shiftKeyInMenu, menuFocused: Ht.menuFocused })),\n setMenuFocused: e,\n setShiftKey: t\n };\n}, Se = Qt({\n monthYear: [],\n calendar: [],\n time: [],\n actionRow: [],\n selectionGrid: [],\n timePicker: {\n 0: [],\n 1: []\n },\n monthPicker: []\n}), Ra = ne(null), aa = ne(!1), Ca = ne(!1), Oa = ne(!1), _a = ne(!1), ze = ne(0), _e = ne(0), bt = () => {\n const e = J(() => aa.value ? [...Se.selectionGrid, Se.actionRow].filter((f) => f.length) : Ca.value ? [\n ...Se.timePicker[0],\n ...Se.timePicker[1],\n _a.value ? [] : [Ra.value],\n Se.actionRow\n ].filter((f) => f.length) : Oa.value ? [...Se.monthPicker, Se.actionRow] : [Se.monthYear, ...Se.calendar, Se.time, Se.actionRow].filter((f) => f.length)), t = (f) => {\n ze.value = f ? ze.value + 1 : ze.value - 1;\n let B = null;\n e.value[_e.value] && (B = e.value[_e.value][ze.value]), !B && e.value[_e.value + (f ? 1 : -1)] ? (_e.value = _e.value + (f ? 1 : -1), ze.value = f ? 0 : e.value[_e.value].length - 1) : B || (ze.value = f ? ze.value - 1 : ze.value + 1);\n }, l = (f) => {\n if (_e.value === 0 && !f || _e.value === e.value.length && f) return;\n _e.value = f ? _e.value + 1 : _e.value - 1, e.value[_e.value] ? e.value[_e.value] && !e.value[_e.value][ze.value] && ze.value !== 0 && (ze.value = e.value[_e.value].length - 1) : _e.value = f ? _e.value - 1 : _e.value + 1;\n }, a = (f) => {\n let B = null;\n e.value[_e.value] && (B = e.value[_e.value][ze.value]), B ? B.focus({ preventScroll: !aa.value }) : ze.value = f ? ze.value - 1 : ze.value + 1;\n }, n = () => {\n t(!0), a(!0);\n }, i = () => {\n t(!1), a(!1);\n }, d = () => {\n l(!1), a(!0);\n }, b = () => {\n l(!0), a(!0);\n }, c = (f, B) => {\n Se[B] = f;\n }, L = (f, B) => {\n Se[B] = f;\n }, v = () => {\n ze.value = 0, _e.value = 0;\n };\n return {\n buildMatrix: c,\n buildMultiLevelMatrix: L,\n setTimePickerBackRef: (f) => {\n Ra.value = f;\n },\n setSelectionGrid: (f) => {\n aa.value = f, v(), f || (Se.selectionGrid = []);\n },\n setTimePicker: (f, B = !1) => {\n Ca.value = f, _a.value = B, v(), f || (Se.timePicker[0] = [], Se.timePicker[1] = []);\n },\n setTimePickerElements: (f, B = 0) => {\n Se.timePicker[B] = f;\n },\n arrowRight: n,\n arrowLeft: i,\n arrowUp: d,\n arrowDown: b,\n clearArrowNav: () => {\n Se.monthYear = [], Se.calendar = [], Se.time = [], Se.actionRow = [], Se.selectionGrid = [], Se.timePicker[0] = [], Se.timePicker[1] = [], aa.value = !1, Ca.value = !1, _a.value = !1, Oa.value = !1, v(), Ra.value = null;\n },\n setMonthPicker: (f) => {\n Oa.value = f, v();\n },\n refSets: Se\n // exposed for testing\n };\n}, cn = (e) => ({\n menuAppearTop: \"dp-menu-appear-top\",\n menuAppearBottom: \"dp-menu-appear-bottom\",\n open: \"dp-slide-down\",\n close: \"dp-slide-up\",\n next: \"calendar-next\",\n previous: \"calendar-prev\",\n vNext: \"dp-slide-up\",\n vPrevious: \"dp-slide-down\",\n ...e ?? {}\n}), Cl = (e) => ({\n toggleOverlay: \"Toggle overlay\",\n menu: \"Datepicker menu\",\n input: \"Datepicker input\",\n openTimePicker: \"Open time picker\",\n closeTimePicker: \"Close time Picker\",\n incrementValue: (t) => `Increment ${t}`,\n decrementValue: (t) => `Decrement ${t}`,\n openTpOverlay: (t) => `Open ${t} overlay`,\n amPmButton: \"Switch AM/PM mode\",\n openYearsOverlay: \"Open years overlay\",\n openMonthsOverlay: \"Open months overlay\",\n nextMonth: \"Next month\",\n prevMonth: \"Previous month\",\n nextYear: \"Next year\",\n prevYear: \"Previous year\",\n day: void 0,\n weekDay: void 0,\n clearInput: \"Clear value\",\n calendarIcon: \"Calendar icon\",\n timePicker: \"Time picker\",\n monthPicker: (t) => `Month picker${t ? \" overlay\" : \"\"}`,\n yearPicker: (t) => `Year picker${t ? \" overlay\" : \"\"}`,\n timeOverlay: (t) => `${t} overlay`,\n ...e ?? {}\n}), fn = (e) => e ? typeof e == \"boolean\" ? e ? 2 : 0 : +e >= 2 ? +e : 2 : 0, Ol = (e) => {\n const t = typeof e == \"object\" && e, l = {\n static: !0,\n solo: !1\n };\n if (!e) return { ...l, count: fn(!1) };\n const a = t ? e : {}, n = t ? a.count ?? !0 : e, i = fn(n);\n return Object.assign(l, a, { count: i });\n}, _l = (e, t, l) => e || (typeof l == \"string\" ? l : t), Bl = (e) => typeof e == \"boolean\" ? e ? cn({}) : !1 : cn(e), Yl = (e) => {\n const t = {\n enterSubmit: !0,\n tabSubmit: !0,\n openMenu: \"open\",\n selectOnFocus: !1,\n rangeSeparator: \" - \"\n };\n return typeof e == \"object\" ? { ...t, ...e ?? {}, enabled: !0 } : { ...t, enabled: e };\n}, Il = (e) => ({\n months: [],\n years: [],\n times: { hours: [], minutes: [], seconds: [] },\n ...e ?? {}\n}), Nl = (e) => ({\n showSelect: !0,\n showCancel: !0,\n showNow: !1,\n showPreview: !0,\n ...e ?? {}\n}), El = (e) => {\n const t = { input: !1 };\n return typeof e == \"object\" ? { ...t, ...e ?? {}, enabled: !0 } : {\n enabled: e,\n ...t\n };\n}, Fl = (e) => ({ ...{\n allowStopPropagation: !0,\n closeOnScroll: !1,\n modeHeight: 255,\n allowPreventDefault: !1,\n closeOnClearValue: !0,\n closeOnAutoApply: !0,\n noSwipe: !1,\n keepActionRow: !1,\n onClickOutside: void 0,\n tabOutClosesMenu: !0,\n arrowLeft: void 0,\n keepViewOnOffsetClick: !1,\n timeArrowHoldThreshold: 0,\n shadowDom: !1\n}, ...e ?? {} }), Ll = (e) => {\n const t = {\n dates: Array.isArray(e) ? e.map((l) => G(l)) : [],\n years: [],\n months: [],\n quarters: [],\n weeks: [],\n weekdays: [],\n options: { highlightDisabled: !1 }\n };\n return typeof e == \"function\" ? e : { ...t, ...e ?? {} };\n}, zl = (e) => typeof e == \"object\" ? {\n type: (e == null ? void 0 : e.type) ?? \"local\",\n hideOnOffsetDates: (e == null ? void 0 : e.hideOnOffsetDates) ?? !1\n} : {\n type: e,\n hideOnOffsetDates: !1\n}, Hl = (e) => {\n const t = {\n noDisabledRange: !1,\n showLastInRange: !0,\n minMaxRawRange: !1,\n partialRange: !0,\n disableTimeRangeValidation: !1,\n maxRange: void 0,\n minRange: void 0,\n autoRange: void 0,\n fixedStart: !1,\n fixedEnd: !1\n };\n return typeof e == \"object\" ? { enabled: !0, ...t, ...e } : {\n enabled: e,\n ...t\n };\n}, Ul = (e) => e ? typeof e == \"string\" ? {\n timezone: e,\n exactMatch: !1,\n dateInTz: void 0,\n emitTimezone: void 0,\n convertModel: !0\n} : {\n timezone: e.timezone,\n exactMatch: e.exactMatch ?? !1,\n dateInTz: e.dateInTz ?? void 0,\n emitTimezone: e.emitTimezone ?? void 0,\n convertModel: e.convertModel ?? !0\n} : { timezone: void 0, exactMatch: !1, emitTimezone: void 0 }, Ba = (e, t, l) => new Map(\n e.map((a) => {\n const n = ja(a, t, l);\n return [Qa(n), n];\n })\n), Vl = (e, t) => e.length ? new Map(\n e.map((l) => {\n const a = ja(l.date, t);\n return [Qa(a), l];\n })\n) : null, Wl = (e) => {\n var t;\n return {\n minDate: Na(e.minDate, e.timezone, e.isSpecific),\n maxDate: Na(e.maxDate, e.timezone, e.isSpecific),\n disabledDates: $a(e.disabledDates) ? Ba(e.disabledDates, e.timezone, e.isSpecific) : e.disabledDates,\n allowedDates: $a(e.allowedDates) ? Ba(e.allowedDates, e.timezone, e.isSpecific) : null,\n highlight: typeof e.highlight == \"object\" && $a((t = e.highlight) == null ? void 0 : t.dates) ? Ba(e.highlight.dates, e.timezone) : e.highlight,\n markers: Vl(e.markers, e.timezone)\n };\n}, jl = (e) => typeof e == \"boolean\" ? { enabled: e, dragSelect: !0, limit: null } : {\n enabled: !!e,\n limit: e.limit ? +e.limit : null,\n dragSelect: e.dragSelect ?? !0\n}, Kl = (e) => ({\n ...Object.fromEntries(\n Object.keys(e).map((l) => {\n const a = l, n = e[a], i = typeof e[a] == \"string\" ? { [n]: !0 } : Object.fromEntries(n.map((d) => [d, !0]));\n return [l, i];\n })\n )\n}), Ce = (e) => {\n const t = () => {\n const oe = e.enableSeconds ? \":ss\" : \"\", ee = e.enableMinutes ? \":mm\" : \"\";\n return e.is24 ? `HH${ee}${oe}` : `hh${ee}${oe} aa`;\n }, l = () => {\n var oe;\n return e.format ? e.format : e.monthPicker ? \"MM/yyyy\" : e.timePicker ? t() : e.weekPicker ? `${((oe = U.value) == null ? void 0 : oe.type) === \"iso\" ? \"RR\" : \"ww\"}-yyyy` : e.yearPicker ? \"yyyy\" : e.quarterPicker ? \"QQQ/yyyy\" : e.enableTimePicker ? `MM/dd/yyyy, ${t()}` : \"MM/dd/yyyy\";\n }, a = (oe) => On(oe, e.enableSeconds), n = () => Q.value.enabled ? e.startTime && Array.isArray(e.startTime) ? [a(e.startTime[0]), a(e.startTime[1])] : null : e.startTime && !Array.isArray(e.startTime) ? a(e.startTime) : null, i = J(() => Ol(e.multiCalendars)), d = J(() => n()), b = J(() => Cl(e.ariaLabels)), c = J(() => Il(e.filters)), L = J(() => Bl(e.transitions)), v = J(() => Nl(e.actionRow)), _ = J(\n () => _l(e.previewFormat, e.format, l())\n ), h = J(() => Yl(e.textInput)), C = J(() => El(e.inline)), H = J(() => Fl(e.config)), E = J(() => Ll(e.highlight)), U = J(() => zl(e.weekNumbers)), f = J(() => Ul(e.timezone)), B = J(() => jl(e.multiDates)), P = J(\n () => Wl({\n minDate: e.minDate,\n maxDate: e.maxDate,\n disabledDates: e.disabledDates,\n allowedDates: e.allowedDates,\n highlight: E.value,\n markers: e.markers,\n timezone: f.value,\n isSpecific: e.monthPicker || e.yearPicker || e.quarterPicker\n })\n ), Q = J(() => Hl(e.range)), ae = J(() => Kl(e.ui));\n return {\n defaultedTransitions: L,\n defaultedMultiCalendars: i,\n defaultedStartTime: d,\n defaultedAriaLabels: b,\n defaultedFilters: c,\n defaultedActionRow: v,\n defaultedPreviewFormat: _,\n defaultedTextInput: h,\n defaultedInline: C,\n defaultedConfig: H,\n defaultedHighlight: E,\n defaultedWeekNumbers: U,\n defaultedRange: Q,\n propDates: P,\n defaultedTz: f,\n defaultedMultiDates: B,\n defaultedUI: ae,\n getDefaultPattern: l,\n getDefaultStartTime: n\n };\n}, Gl = (e, t, l) => {\n const a = ne(), { defaultedTextInput: n, defaultedRange: i, defaultedTz: d, defaultedMultiDates: b, getDefaultPattern: c } = Ce(t), L = ne(\"\"), v = Vt(t, \"format\"), _ = Vt(t, \"formatLocale\");\n at(\n a,\n () => {\n typeof t.onInternalModelChange == \"function\" && e(\"internal-model-change\", a.value, M(!0));\n },\n { deep: !0 }\n ), at(i, (u, le) => {\n u.enabled !== le.enabled && (a.value = null);\n }), at(v, () => {\n X();\n });\n const h = (u) => d.value.timezone && d.value.convertModel ? qe(u, d.value.timezone) : u, C = (u) => {\n if (d.value.timezone && d.value.convertModel) {\n const le = vl(d.value.timezone);\n return nl(u, le);\n }\n return u;\n }, H = (u, le, me = !1) => Bn(\n u,\n t.format,\n t.formatLocale,\n n.value.rangeSeparator,\n t.modelAuto,\n le ?? c(),\n me\n ), E = (u) => u ? t.modelType ? p(u) : {\n hours: ft(u),\n minutes: ht(u),\n seconds: t.enableSeconds ? Bt(u) : 0\n } : null, U = (u) => t.modelType ? p(u) : { month: De(u), year: pe(u) }, f = (u) => Array.isArray(u) ? b.value.enabled ? u.map((le) => B(le, st(G(), le))) : ta(\n () => [\n st(G(), u[0]),\n u[1] ? st(G(), u[1]) : Rt(i.value.partialRange)\n ],\n i.value.enabled\n ) : st(G(), +u), B = (u, le) => (typeof u == \"string\" || typeof u == \"number\") && t.modelType ? A(u) : le, P = (u) => Array.isArray(u) ? [\n B(\n u[0],\n gt(null, +u[0].hours, +u[0].minutes, u[0].seconds)\n ),\n B(\n u[1],\n gt(null, +u[1].hours, +u[1].minutes, u[1].seconds)\n )\n ] : B(u, gt(null, u.hours, u.minutes, u.seconds)), Q = (u) => {\n const le = Te(G(), { date: 1 });\n return Array.isArray(u) ? b.value.enabled ? u.map((me) => B(me, dt(le, +me.month, +me.year))) : ta(\n () => [\n B(u[0], dt(le, +u[0].month, +u[0].year)),\n B(\n u[1],\n u[1] ? dt(le, +u[1].month, +u[1].year) : Rt(i.value.partialRange)\n )\n ],\n i.value.enabled\n ) : B(u, dt(le, +u.month, +u.year));\n }, ae = (u) => {\n if (Array.isArray(u))\n return u.map((le) => A(le));\n throw new Error(Ga.dateArr(\"multi-dates\"));\n }, oe = (u) => {\n if (Array.isArray(u) && i.value.enabled) {\n const le = u[0], me = u[1];\n return [\n G(Array.isArray(le) ? le[0] : null),\n Array.isArray(me) && me.length ? G(me[0]) : null\n ];\n }\n return G(u[0]);\n }, ee = (u) => t.modelAuto ? Array.isArray(u) ? [A(u[0]), A(u[1])] : t.autoApply ? [A(u)] : [A(u), null] : Array.isArray(u) ? ta(\n () => u[1] ? [\n A(u[0]),\n u[1] ? A(u[1]) : Rt(i.value.partialRange)\n ] : [A(u[0])],\n i.value.enabled\n ) : A(u), S = () => {\n Array.isArray(a.value) && i.value.enabled && a.value.length === 1 && a.value.push(Rt(i.value.partialRange));\n }, x = () => {\n const u = a.value;\n return [\n p(u[0]),\n u[1] ? p(u[1]) : Rt(i.value.partialRange)\n ];\n }, Y = () => a.value[1] ? x() : p(Ye(a.value[0])), q = () => (a.value || []).map((u) => p(u)), de = (u = !1) => (u || S(), t.modelAuto ? Y() : b.value.enabled ? q() : Array.isArray(a.value) ? ta(() => x(), i.value.enabled) : p(Ye(a.value))), ve = (u) => !u || Array.isArray(u) && !u.length ? null : t.timePicker ? P(Ye(u)) : t.monthPicker ? Q(Ye(u)) : t.yearPicker ? f(Ye(u)) : b.value.enabled ? ae(Ye(u)) : t.weekPicker ? oe(Ye(u)) : ee(Ye(u)), y = (u) => {\n const le = ve(u);\n Fa(Ye(le)) ? (a.value = Ye(le), X()) : (a.value = null, L.value = \"\");\n }, z = () => {\n const u = (le) => ut(le, n.value.format);\n return `${u(a.value[0])} ${n.value.rangeSeparator} ${a.value[1] ? u(a.value[1]) : \"\"}`;\n }, te = () => l.value && a.value ? Array.isArray(a.value) ? z() : ut(a.value, n.value.format) : H(a.value), g = () => a.value ? b.value.enabled ? a.value.map((u) => H(u)).join(\"; \") : n.value.enabled && typeof n.value.format == \"string\" ? te() : H(a.value) : \"\", X = () => {\n !t.format || typeof t.format == \"string\" || n.value.enabled && typeof n.value.format == \"string\" ? L.value = g() : L.value = t.format(a.value);\n }, A = (u) => {\n if (t.utc) {\n const le = new Date(u);\n return t.utc === \"preserve\" ? new Date(le.getTime() + le.getTimezoneOffset() * 6e4) : le;\n }\n return t.modelType ? ml.includes(t.modelType) ? h(new Date(u)) : t.modelType === \"format\" && (typeof t.format == \"string\" || !t.format) ? h(\n Ia(u, c(), /* @__PURE__ */ new Date(), { locale: _.value })\n ) : h(\n Ia(u, t.modelType, /* @__PURE__ */ new Date(), { locale: _.value })\n ) : h(new Date(u));\n }, p = (u) => u ? t.utc ? $l(u, t.utc === \"preserve\", t.enableSeconds) : t.modelType ? t.modelType === \"timestamp\" ? +C(u) : t.modelType === \"iso\" ? C(u).toISOString() : t.modelType === \"format\" && (typeof t.format == \"string\" || !t.format) ? H(C(u)) : H(C(u), t.modelType, !0) : C(u) : \"\", se = (u, le = !1, me = !1) => {\n if (me) return u;\n if (e(\"update:model-value\", u), d.value.emitTimezone && le) {\n const $ = Array.isArray(u) ? u.map((ge) => qe(Ye(ge), d.value.emitTimezone)) : qe(Ye(u), d.value.emitTimezone);\n e(\"update:model-timezone-value\", $);\n }\n }, I = (u) => Array.isArray(a.value) ? b.value.enabled ? a.value.map((le) => u(le)) : [\n u(a.value[0]),\n a.value[1] ? u(a.value[1]) : Rt(i.value.partialRange)\n ] : u(Ye(a.value)), D = () => {\n if (Array.isArray(a.value)) {\n const u = it(a.value[0], t.weekStart), le = a.value[1] ? it(a.value[1], t.weekStart) : [];\n return [u.map((me) => G(me)), le.map((me) => G(me))];\n }\n return it(a.value, t.weekStart).map((u) => G(u));\n }, V = (u, le) => se(Ye(I(u)), !1, le), s = (u) => {\n const le = D();\n return u ? le : e(\"update:model-value\", D());\n }, M = (u = !1) => (u || X(), t.monthPicker ? V(U, u) : t.timePicker ? V(E, u) : t.yearPicker ? V(pe, u) : t.weekPicker ? s(u) : se(de(u), !0, u));\n return {\n inputValue: L,\n internalModelValue: a,\n checkBeforeEmit: () => a.value ? i.value.enabled ? i.value.partialRange ? a.value.length >= 1 : a.value.length === 2 : !!a.value : !1,\n parseExternalModelValue: y,\n formatInputValue: X,\n emitModelValue: M\n };\n}, Ql = (e, t) => {\n const { defaultedFilters: l, propDates: a } = Ce(e), { validateMonthYearInRange: n } = kt(e), i = (v, _) => {\n let h = v;\n return l.value.months.includes(De(h)) ? (h = _ ? At(v, 1) : jt(v, 1), i(h, _)) : h;\n }, d = (v, _) => {\n let h = v;\n return l.value.years.includes(pe(h)) ? (h = _ ? bn(v, 1) : kn(v, 1), d(h, _)) : h;\n }, b = (v, _ = !1) => {\n const h = Te(G(), { month: e.month, year: e.year });\n let C = v ? At(h, 1) : jt(h, 1);\n e.disableYearSelect && (C = st(C, e.year));\n let H = De(C), E = pe(C);\n l.value.months.includes(H) && (C = i(C, v), H = De(C), E = pe(C)), l.value.years.includes(E) && (C = d(C, v), E = pe(C)), n(H, E, v, e.preventMinMaxNavigation) && c(H, E, _);\n }, c = (v, _, h) => {\n t(\"update-month-year\", { month: v, year: _, fromNav: h });\n }, L = J(() => (v) => _n(\n Te(G(), { month: e.month, year: e.year }),\n a.value.maxDate,\n a.value.minDate,\n e.preventMinMaxNavigation,\n v\n ));\n return { handleMonthYearChange: b, isDisabled: L, updateMonthYear: c };\n}, ca = {\n multiCalendars: { type: [Boolean, Number, String, Object], default: void 0 },\n modelValue: { type: [String, Date, Array, Object, Number], default: null },\n modelType: { type: String, default: null },\n position: { type: String, default: \"center\" },\n dark: { type: Boolean, default: !1 },\n format: {\n type: [String, Function],\n default: () => null\n },\n autoPosition: { type: Boolean, default: !0 },\n altPosition: { type: Function, default: null },\n transitions: { type: [Boolean, Object], default: !0 },\n formatLocale: { type: Object, default: null },\n utc: { type: [Boolean, String], default: !1 },\n ariaLabels: { type: Object, default: () => ({}) },\n offset: { type: [Number, String], default: 10 },\n hideNavigation: { type: Array, default: () => [] },\n timezone: { type: [String, Object], default: null },\n vertical: { type: Boolean, default: !1 },\n disableMonthYearSelect: { type: Boolean, default: !1 },\n disableYearSelect: { type: Boolean, default: !1 },\n dayClass: {\n type: Function,\n default: null\n },\n yearRange: { type: Array, default: () => [1900, 2100] },\n enableTimePicker: { type: Boolean, default: !0 },\n autoApply: { type: Boolean, default: !1 },\n disabledDates: { type: [Array, Function], default: () => [] },\n monthNameFormat: { type: String, default: \"short\" },\n startDate: { type: [Date, String], default: null },\n startTime: { type: [Object, Array], default: null },\n hideOffsetDates: { type: Boolean, default: !1 },\n noToday: { type: Boolean, default: !1 },\n disabledWeekDays: { type: Array, default: () => [] },\n allowedDates: { type: Array, default: null },\n nowButtonLabel: { type: String, default: \"Now\" },\n markers: { type: Array, default: () => [] },\n escClose: { type: Boolean, default: !0 },\n spaceConfirm: { type: Boolean, default: !0 },\n monthChangeOnArrows: { type: Boolean, default: !0 },\n presetDates: { type: Array, default: () => [] },\n flow: { type: Array, default: () => [] },\n partialFlow: { type: Boolean, default: !1 },\n preventMinMaxNavigation: { type: Boolean, default: !1 },\n reverseYears: { type: Boolean, default: !1 },\n weekPicker: { type: Boolean, default: !1 },\n filters: { type: Object, default: () => ({}) },\n arrowNavigation: { type: Boolean, default: !1 },\n highlight: {\n type: [Function, Object],\n default: null\n },\n teleport: { type: [Boolean, String, Object], default: null },\n teleportCenter: { type: Boolean, default: !1 },\n locale: { type: String, default: \"en-Us\" },\n weekNumName: { type: String, default: \"W\" },\n weekStart: { type: [Number, String], default: 1 },\n weekNumbers: {\n type: [String, Function, Object],\n default: null\n },\n monthChangeOnScroll: { type: [Boolean, String], default: !0 },\n dayNames: {\n type: [Function, Array],\n default: null\n },\n monthPicker: { type: Boolean, default: !1 },\n customProps: { type: Object, default: null },\n yearPicker: { type: Boolean, default: !1 },\n modelAuto: { type: Boolean, default: !1 },\n selectText: { type: String, default: \"Select\" },\n cancelText: { type: String, default: \"Cancel\" },\n previewFormat: {\n type: [String, Function],\n default: () => \"\"\n },\n multiDates: { type: [Object, Boolean], default: !1 },\n ignoreTimeValidation: { type: Boolean, default: !1 },\n minDate: { type: [Date, String], default: null },\n maxDate: { type: [Date, String], default: null },\n minTime: { type: Object, default: null },\n maxTime: { type: Object, default: null },\n name: { type: String, default: null },\n placeholder: { type: String, default: \"\" },\n hideInputIcon: { type: Boolean, default: !1 },\n clearable: { type: Boolean, default: !0 },\n state: { type: Boolean, default: null },\n required: { type: Boolean, default: !1 },\n autocomplete: { type: String, default: \"off\" },\n timePicker: { type: Boolean, default: !1 },\n enableSeconds: { type: Boolean, default: !1 },\n is24: { type: Boolean, default: !0 },\n noHoursOverlay: { type: Boolean, default: !1 },\n noMinutesOverlay: { type: Boolean, default: !1 },\n noSecondsOverlay: { type: Boolean, default: !1 },\n hoursGridIncrement: { type: [String, Number], default: 1 },\n minutesGridIncrement: { type: [String, Number], default: 5 },\n secondsGridIncrement: { type: [String, Number], default: 5 },\n hoursIncrement: { type: [Number, String], default: 1 },\n minutesIncrement: { type: [Number, String], default: 1 },\n secondsIncrement: { type: [Number, String], default: 1 },\n range: { type: [Boolean, Object], default: !1 },\n uid: { type: String, default: null },\n disabled: { type: Boolean, default: !1 },\n readonly: { type: Boolean, default: !1 },\n inline: { type: [Boolean, Object], default: !1 },\n textInput: { type: [Boolean, Object], default: !1 },\n sixWeeks: { type: [Boolean, String], default: !1 },\n actionRow: { type: Object, default: () => ({}) },\n focusStartDate: { type: Boolean, default: !1 },\n disabledTimes: { type: [Function, Array], default: void 0 },\n timePickerInline: { type: Boolean, default: !1 },\n calendar: { type: Function, default: null },\n config: { type: Object, default: void 0 },\n quarterPicker: { type: Boolean, default: !1 },\n yearFirst: { type: Boolean, default: !1 },\n loading: { type: Boolean, default: !1 },\n onInternalModelChange: { type: [Function, Object], default: null },\n enableMinutes: { type: Boolean, default: !0 },\n ui: { type: Object, default: () => ({}) }\n}, rt = {\n ...ca,\n shadow: { type: Boolean, default: !1 },\n flowStep: { type: Number, default: 0 },\n internalModelValue: { type: [Date, Array], default: null },\n noOverlayFocus: { type: Boolean, default: !1 },\n collapse: { type: Boolean, default: !1 },\n menuWrapRef: { type: Object, default: null },\n getInputRect: { type: Function, default: () => ({}) },\n isTextInputDate: { type: Boolean, default: !1 }\n}, ql = [\"title\"], Xl = [\"disabled\"], Jl = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"ActionRow\",\n props: {\n menuMount: { type: Boolean, default: !1 },\n calendarWidth: { type: Number, default: 0 },\n ...rt\n },\n emits: [\"close-picker\", \"select-date\", \"select-now\", \"invalid-select\"],\n setup(e, { emit: t }) {\n const l = t, a = e, {\n defaultedActionRow: n,\n defaultedPreviewFormat: i,\n defaultedMultiCalendars: d,\n defaultedTextInput: b,\n defaultedInline: c,\n defaultedRange: L,\n defaultedMultiDates: v\n } = Ce(a), { isTimeValid: _, isMonthValid: h } = kt(a), { buildMatrix: C } = bt(), H = ne(null), E = ne(null), U = ne(!1), f = ne({}), B = ne(null), P = ne(null);\n We(() => {\n a.arrowNavigation && C([Ie(H), Ie(E)], \"actionRow\"), Q(), window.addEventListener(\"resize\", Q);\n }), ua(() => {\n window.removeEventListener(\"resize\", Q);\n });\n const Q = () => {\n U.value = !1, setTimeout(() => {\n var te, g;\n const y = (te = B.value) == null ? void 0 : te.getBoundingClientRect(), z = (g = P.value) == null ? void 0 : g.getBoundingClientRect();\n y && z && (f.value.maxWidth = `${z.width - y.width - 20}px`), U.value = !0;\n }, 0);\n }, ae = J(() => L.value.enabled && !L.value.partialRange && a.internalModelValue ? a.internalModelValue.length === 2 : !0), oe = J(\n () => !_.value(a.internalModelValue) || !h.value(a.internalModelValue) || !ae.value\n ), ee = () => {\n const y = i.value;\n return a.timePicker || a.monthPicker, y(Ye(a.internalModelValue));\n }, S = () => {\n const y = a.internalModelValue;\n return d.value.count > 0 ? `${x(y[0])} - ${x(y[1])}` : [x(y[0]), x(y[1])];\n }, x = (y) => Bn(\n y,\n i.value,\n a.formatLocale,\n b.value.rangeSeparator,\n a.modelAuto,\n i.value\n ), Y = J(() => !a.internalModelValue || !a.menuMount ? \"\" : typeof i.value == \"string\" ? Array.isArray(a.internalModelValue) ? a.internalModelValue.length === 2 && a.internalModelValue[1] ? S() : v.value.enabled ? a.internalModelValue.map((y) => `${x(y)}`) : a.modelAuto ? `${x(a.internalModelValue[0])}` : `${x(a.internalModelValue[0])} -` : x(a.internalModelValue) : ee()), q = () => v.value.enabled ? \"; \" : \" - \", de = J(\n () => Array.isArray(Y.value) ? Y.value.join(q()) : Y.value\n ), ve = () => {\n _.value(a.internalModelValue) && h.value(a.internalModelValue) && ae.value ? l(\"select-date\") : l(\"invalid-select\");\n };\n return (y, z) => (T(), K(\"div\", {\n ref_key: \"actionRowRef\",\n ref: P,\n class: \"dp__action_row\"\n }, [\n y.$slots[\"action-row\"] ? ie(y.$slots, \"action-row\", Ne(Ee({ key: 0 }, {\n internalModelValue: y.internalModelValue,\n disabled: oe.value,\n selectDate: () => y.$emit(\"select-date\"),\n closePicker: () => y.$emit(\"close-picker\")\n }))) : (T(), K(be, { key: 1 }, [\n o(n).showPreview ? (T(), K(\"div\", {\n key: 0,\n class: \"dp__selection_preview\",\n title: de.value,\n style: tt(f.value)\n }, [\n y.$slots[\"action-preview\"] && U.value ? ie(y.$slots, \"action-preview\", {\n key: 0,\n value: y.internalModelValue\n }) : Z(\"\", !0),\n !y.$slots[\"action-preview\"] && U.value ? (T(), K(be, { key: 1 }, [\n ct(Ue(de.value), 1)\n ], 64)) : Z(\"\", !0)\n ], 12, ql)) : Z(\"\", !0),\n ye(\"div\", {\n ref_key: \"actionBtnContainer\",\n ref: B,\n class: \"dp__action_buttons\",\n \"data-dp-element\": \"action-row\"\n }, [\n y.$slots[\"action-buttons\"] ? ie(y.$slots, \"action-buttons\", {\n key: 0,\n value: y.internalModelValue\n }) : Z(\"\", !0),\n y.$slots[\"action-buttons\"] ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n !o(c).enabled && o(n).showCancel ? (T(), K(\"button\", {\n key: 0,\n ref_key: \"cancelButtonRef\",\n ref: H,\n type: \"button\",\n class: \"dp__action_button dp__action_cancel\",\n onClick: z[0] || (z[0] = (te) => y.$emit(\"close-picker\")),\n onKeydown: z[1] || (z[1] = (te) => o(Ke)(te, () => y.$emit(\"close-picker\")))\n }, Ue(y.cancelText), 545)) : Z(\"\", !0),\n o(n).showNow ? (T(), K(\"button\", {\n key: 1,\n type: \"button\",\n class: \"dp__action_button dp__action_cancel\",\n onClick: z[2] || (z[2] = (te) => y.$emit(\"select-now\")),\n onKeydown: z[3] || (z[3] = (te) => o(Ke)(te, () => y.$emit(\"select-now\")))\n }, Ue(y.nowButtonLabel), 33)) : Z(\"\", !0),\n o(n).showSelect ? (T(), K(\"button\", {\n key: 2,\n ref_key: \"selectButtonRef\",\n ref: E,\n type: \"button\",\n class: \"dp__action_button dp__action_select\",\n disabled: oe.value,\n \"data-test\": \"select-button\",\n onKeydown: z[4] || (z[4] = (te) => o(Ke)(te, () => ve())),\n onClick: ve\n }, Ue(y.selectText), 41, Xl)) : Z(\"\", !0)\n ], 64))\n ], 512)\n ], 64))\n ], 512));\n }\n}), Zl = [\"role\", \"aria-label\", \"tabindex\"], xl = { class: \"dp__selection_grid_header\" }, er = [\"aria-selected\", \"aria-disabled\", \"data-test\", \"onClick\", \"onKeydown\", \"onMouseover\"], tr = [\"aria-label\"], qt = /* @__PURE__ */ Le({\n __name: \"SelectionOverlay\",\n props: {\n items: {},\n type: {},\n isLast: { type: Boolean },\n arrowNavigation: { type: Boolean },\n skipButtonRef: { type: Boolean },\n headerRefs: {},\n hideNavigation: {},\n escClose: { type: Boolean },\n useRelative: { type: Boolean },\n height: {},\n textInput: { type: [Boolean, Object] },\n config: {},\n noOverlayFocus: { type: Boolean },\n focusValue: {},\n menuWrapRef: {},\n ariaLabels: {},\n overlayLabel: {}\n },\n emits: [\"selected\", \"toggle\", \"reset-flow\", \"hover-value\"],\n setup(e, { expose: t, emit: l }) {\n const { setSelectionGrid: a, buildMultiLevelMatrix: n, setMonthPicker: i } = bt(), d = l, b = e, { defaultedAriaLabels: c, defaultedTextInput: L, defaultedConfig: v } = Ce(\n b\n ), { hideNavigationButtons: _ } = ma(), h = ne(!1), C = ne(null), H = ne(null), E = ne([]), U = ne(), f = ne(null), B = ne(0), P = ne(null);\n Kn(() => {\n C.value = null;\n }), We(() => {\n xe().then(() => q()), b.noOverlayFocus || ae(), Q(!0);\n }), ua(() => Q(!1));\n const Q = (I) => {\n var D;\n b.arrowNavigation && ((D = b.headerRefs) != null && D.length ? i(I) : a(I));\n }, ae = () => {\n var D;\n const I = Ie(H);\n I && (L.value.enabled || (C.value ? (D = C.value) == null || D.focus({ preventScroll: !0 }) : I.focus({ preventScroll: !0 })), h.value = I.clientHeight < I.scrollHeight);\n }, oe = J(\n () => ({\n dp__overlay: !0,\n \"dp--overlay-absolute\": !b.useRelative,\n \"dp--overlay-relative\": b.useRelative\n })\n ), ee = J(\n () => b.useRelative ? { height: `${b.height}px`, width: \"var(--dp-menu-min-width)\" } : void 0\n ), S = J(() => ({\n dp__overlay_col: !0\n })), x = J(\n () => ({\n dp__btn: !0,\n dp__button: !0,\n dp__overlay_action: !0,\n dp__over_action_scroll: h.value,\n dp__button_bottom: b.isLast\n })\n ), Y = J(() => {\n var I, D;\n return {\n dp__overlay_container: !0,\n dp__container_flex: ((I = b.items) == null ? void 0 : I.length) <= 6,\n dp__container_block: ((D = b.items) == null ? void 0 : D.length) > 6\n };\n });\n at(\n () => b.items,\n () => q(!1),\n { deep: !0 }\n );\n const q = (I = !0) => {\n xe().then(() => {\n const D = Ie(C), V = Ie(H), s = Ie(f), M = Ie(P), F = s ? s.getBoundingClientRect().height : 0;\n V && (V.getBoundingClientRect().height ? B.value = V.getBoundingClientRect().height - F : B.value = v.value.modeHeight - F), D && M && I && (M.scrollTop = D.offsetTop - M.offsetTop - (B.value / 2 - D.getBoundingClientRect().height) - F);\n });\n }, de = (I) => {\n I.disabled || d(\"selected\", I.value);\n }, ve = () => {\n d(\"toggle\"), d(\"reset-flow\");\n }, y = () => {\n b.escClose && ve();\n }, z = (I, D, V, s) => {\n I && ((D.active || D.value === b.focusValue) && (C.value = I), b.arrowNavigation && (Array.isArray(E.value[V]) ? E.value[V][s] = I : E.value[V] = [I], te()));\n }, te = () => {\n var D, V;\n const I = (D = b.headerRefs) != null && D.length ? [b.headerRefs].concat(E.value) : E.value.concat([b.skipButtonRef ? [] : [f.value]]);\n n(Ye(I), (V = b.headerRefs) != null && V.length ? \"monthPicker\" : \"selectionGrid\");\n }, g = (I) => {\n b.arrowNavigation || yt(I, v.value, !0);\n }, X = (I) => {\n U.value = I, d(\"hover-value\", I);\n }, A = () => {\n if (ve(), !b.isLast) {\n const I = Ea(b.menuWrapRef ?? null, \"action-row\");\n if (I) {\n const D = Tn(I);\n D == null || D.focus();\n }\n }\n }, p = (I) => {\n switch (I.key) {\n case Pe.esc:\n return y();\n case Pe.arrowLeft:\n return g(I);\n case Pe.arrowRight:\n return g(I);\n case Pe.arrowUp:\n return g(I);\n case Pe.arrowDown:\n return g(I);\n default:\n return;\n }\n }, se = (I) => {\n if (I.key === Pe.enter) return ve();\n if (I.key === Pe.tab) return A();\n };\n return t({ focusGrid: ae }), (I, D) => {\n var V;\n return T(), K(\"div\", {\n ref_key: \"gridWrapRef\",\n ref: H,\n class: we(oe.value),\n style: tt(ee.value),\n role: I.useRelative ? void 0 : \"dialog\",\n \"aria-label\": I.overlayLabel,\n tabindex: I.useRelative ? void 0 : \"0\",\n onKeydown: p,\n onClick: D[0] || (D[0] = Wt(() => {\n }, [\"prevent\"]))\n }, [\n ye(\"div\", {\n ref_key: \"containerRef\",\n ref: P,\n class: we(Y.value),\n style: tt({ \"--dp-overlay-height\": `${B.value}px` }),\n role: \"grid\"\n }, [\n ye(\"div\", xl, [\n ie(I.$slots, \"header\")\n ]),\n I.$slots.overlay ? ie(I.$slots, \"overlay\", { key: 0 }) : (T(!0), K(be, { key: 1 }, Re(I.items, (s, M) => (T(), K(\"div\", {\n key: M,\n class: we([\"dp__overlay_row\", { dp__flex_row: I.items.length >= 3 }]),\n role: \"row\"\n }, [\n (T(!0), K(be, null, Re(s, (F, u) => (T(), K(\"div\", {\n key: F.value,\n ref_for: !0,\n ref: (le) => z(le, F, M, u),\n role: \"gridcell\",\n class: we(S.value),\n \"aria-selected\": F.active || void 0,\n \"aria-disabled\": F.disabled || void 0,\n tabindex: \"0\",\n \"data-test\": F.text,\n onClick: Wt((le) => de(F), [\"prevent\"]),\n onKeydown: (le) => o(Ke)(le, () => de(F), !0),\n onMouseover: (le) => X(F.value)\n }, [\n ye(\"div\", {\n class: we(F.className)\n }, [\n I.$slots.item ? ie(I.$slots, \"item\", {\n key: 0,\n item: F\n }) : Z(\"\", !0),\n I.$slots.item ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ct(Ue(F.text), 1)\n ], 64))\n ], 2)\n ], 42, er))), 128))\n ], 2))), 128))\n ], 6),\n I.$slots[\"button-icon\"] ? na((T(), K(\"button\", {\n key: 0,\n ref_key: \"toggleButton\",\n ref: f,\n type: \"button\",\n \"aria-label\": (V = o(c)) == null ? void 0 : V.toggleOverlay,\n class: we(x.value),\n tabindex: \"0\",\n onClick: ve,\n onKeydown: se\n }, [\n ie(I.$slots, \"button-icon\")\n ], 42, tr)), [\n [la, !o(_)(I.hideNavigation, I.type)]\n ]) : Z(\"\", !0)\n ], 46, Zl);\n };\n }\n}), fa = /* @__PURE__ */ Le({\n __name: \"InstanceWrap\",\n props: {\n multiCalendars: {},\n stretch: { type: Boolean },\n collapse: { type: Boolean }\n },\n setup(e) {\n const t = e, l = J(\n () => t.multiCalendars > 0 ? [...Array(t.multiCalendars).keys()] : [0]\n ), a = J(() => ({\n dp__instance_calendar: t.multiCalendars > 0\n }));\n return (n, i) => (T(), K(\"div\", {\n class: we({\n dp__menu_inner: !n.stretch,\n \"dp--menu--inner-stretched\": n.stretch,\n dp__flex_display: n.multiCalendars > 0,\n \"dp--flex-display-collapsed\": n.collapse\n })\n }, [\n (T(!0), K(be, null, Re(l.value, (d, b) => (T(), K(\"div\", {\n key: d,\n class: we(a.value)\n }, [\n ie(n.$slots, \"default\", {\n instance: d,\n index: b\n })\n ], 2))), 128))\n ], 2));\n }\n}), ar = [\"data-dp-element\", \"aria-label\", \"aria-disabled\"], Ut = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"ArrowBtn\",\n props: {\n ariaLabel: {},\n elName: {},\n disabled: { type: Boolean }\n },\n emits: [\"activate\", \"set-ref\"],\n setup(e, { emit: t }) {\n const l = t, a = ne(null);\n return We(() => l(\"set-ref\", a)), (n, i) => (T(), K(\"button\", {\n ref_key: \"elRef\",\n ref: a,\n type: \"button\",\n \"data-dp-element\": n.elName,\n class: \"dp__btn dp--arrow-btn-nav\",\n tabindex: \"0\",\n \"aria-label\": n.ariaLabel,\n \"aria-disabled\": n.disabled || void 0,\n onClick: i[0] || (i[0] = (d) => n.$emit(\"activate\")),\n onKeydown: i[1] || (i[1] = (d) => o(Ke)(d, () => n.$emit(\"activate\"), !0))\n }, [\n ye(\"span\", {\n class: we([\"dp__inner_nav\", { dp__inner_nav_disabled: n.disabled }])\n }, [\n ie(n.$slots, \"default\")\n ], 2)\n ], 40, ar));\n }\n}), nr = [\"aria-label\", \"data-test\"], En = /* @__PURE__ */ Le({\n __name: \"YearModePicker\",\n props: {\n ...rt,\n showYearPicker: { type: Boolean, default: !1 },\n items: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n isDisabled: { type: Function, default: () => !1 }\n },\n emits: [\"toggle-year-picker\", \"year-select\", \"handle-year\"],\n setup(e, { emit: t }) {\n const l = t, a = e, { showRightIcon: n, showLeftIcon: i } = ma(), { defaultedConfig: d, defaultedMultiCalendars: b, defaultedAriaLabels: c, defaultedTransitions: L, defaultedUI: v } = Ce(a), { showTransition: _, transitionName: h } = Xt(L), C = ne(!1), H = (f = !1, B) => {\n C.value = !C.value, l(\"toggle-year-picker\", { flow: f, show: B });\n }, E = (f) => {\n C.value = !1, l(\"year-select\", f);\n }, U = (f = !1) => {\n l(\"handle-year\", f);\n };\n return (f, B) => {\n var P, Q, ae, oe, ee;\n return T(), K(be, null, [\n ye(\"div\", {\n class: we([\"dp--year-mode-picker\", { \"dp--hidden-el\": C.value }])\n }, [\n o(i)(o(b), e.instance) ? (T(), $e(Ut, {\n key: 0,\n ref: \"mpPrevIconRef\",\n \"aria-label\": (P = o(c)) == null ? void 0 : P.prevYear,\n disabled: e.isDisabled(!1),\n class: we((Q = o(v)) == null ? void 0 : Q.navBtnPrev),\n onActivate: B[0] || (B[0] = (S) => U(!1))\n }, {\n default: ke(() => [\n f.$slots[\"arrow-left\"] ? ie(f.$slots, \"arrow-left\", { key: 0 }) : Z(\"\", !0),\n f.$slots[\"arrow-left\"] ? Z(\"\", !0) : (T(), $e(o(za), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Z(\"\", !0),\n ye(\"button\", {\n ref: \"mpYearButtonRef\",\n class: \"dp__btn dp--year-select\",\n type: \"button\",\n \"aria-label\": `${e.year}-${(ae = o(c)) == null ? void 0 : ae.openYearsOverlay}`,\n \"data-test\": `year-mode-btn-${e.instance}`,\n onClick: B[1] || (B[1] = () => H(!1)),\n onKeydown: B[2] || (B[2] = Gn(() => H(!1), [\"enter\"]))\n }, [\n f.$slots.year ? ie(f.$slots, \"year\", {\n key: 0,\n year: e.year\n }) : Z(\"\", !0),\n f.$slots.year ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ct(Ue(e.year), 1)\n ], 64))\n ], 40, nr),\n o(n)(o(b), e.instance) ? (T(), $e(Ut, {\n key: 1,\n ref: \"mpNextIconRef\",\n \"aria-label\": (oe = o(c)) == null ? void 0 : oe.nextYear,\n disabled: e.isDisabled(!0),\n class: we((ee = o(v)) == null ? void 0 : ee.navBtnNext),\n onActivate: B[3] || (B[3] = (S) => U(!0))\n }, {\n default: ke(() => [\n f.$slots[\"arrow-right\"] ? ie(f.$slots, \"arrow-right\", { key: 0 }) : Z(\"\", !0),\n f.$slots[\"arrow-right\"] ? Z(\"\", !0) : (T(), $e(o(Ha), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Z(\"\", !0)\n ], 2),\n Ze(Nt, {\n name: o(h)(e.showYearPicker),\n css: o(_)\n }, {\n default: ke(() => {\n var S, x;\n return [\n e.showYearPicker ? (T(), $e(qt, {\n key: 0,\n items: e.items,\n \"text-input\": f.textInput,\n \"esc-close\": f.escClose,\n config: f.config,\n \"is-last\": f.autoApply && !o(d).keepActionRow,\n \"hide-navigation\": f.hideNavigation,\n \"aria-labels\": f.ariaLabels,\n \"overlay-label\": (x = (S = o(c)) == null ? void 0 : S.yearPicker) == null ? void 0 : x.call(S, !0),\n type: \"year\",\n onToggle: H,\n onSelected: B[4] || (B[4] = (Y) => E(Y))\n }, Ve({\n \"button-icon\": ke(() => [\n f.$slots[\"calendar-icon\"] ? ie(f.$slots, \"calendar-icon\", { key: 0 }) : Z(\"\", !0),\n f.$slots[\"calendar-icon\"] ? Z(\"\", !0) : (T(), $e(o(Et), { key: 1 }))\n ]),\n _: 2\n }, [\n f.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: ke(({ item: Y }) => [\n ie(f.$slots, \"year-overlay-value\", {\n text: Y.text,\n value: Y.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"text-input\", \"esc-close\", \"config\", \"is-last\", \"hide-navigation\", \"aria-labels\", \"overlay-label\"])) : Z(\"\", !0)\n ];\n }),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 64);\n };\n }\n}), Xa = (e, t, l) => {\n if (t.value && Array.isArray(t.value))\n if (t.value.some((a) => Me(e, a))) {\n const a = t.value.filter((n) => !Me(n, e));\n t.value = a.length ? a : null;\n } else (l && +l > t.value.length || !l) && t.value.push(e);\n else\n t.value = [e];\n}, Ja = (e, t, l) => {\n let a = e.value ? e.value.slice() : [];\n return a.length === 2 && a[1] !== null && (a = []), a.length ? Oe(t, a[0]) ? (a.unshift(t), l(\"range-start\", a[0]), l(\"range-start\", a[1])) : (a[1] = t, l(\"range-end\", t)) : (a = [t], l(\"range-start\", t)), a;\n}, va = (e, t, l, a) => {\n e && (e[0] && e[1] && l && t(\"auto-apply\"), e[0] && !e[1] && a && l && t(\"auto-apply\"));\n}, Fn = (e) => {\n Array.isArray(e.value) && e.value.length <= 2 && e.range ? e.modelValue.value = e.value.map((t) => qe(G(t), e.timezone)) : Array.isArray(e.value) || (e.modelValue.value = qe(G(e.value), e.timezone));\n}, Ln = (e, t, l, a) => Array.isArray(t.value) && (t.value.length === 2 || t.value.length === 1 && a.value.partialRange) ? a.value.fixedStart && (Be(e, t.value[0]) || Me(e, t.value[0])) ? [t.value[0], e] : a.value.fixedEnd && (Oe(e, t.value[1]) || Me(e, t.value[1])) ? [e, t.value[1]] : (l(\"invalid-fixed-range\", e), t.value) : [], zn = ({\n multiCalendars: e,\n range: t,\n highlight: l,\n propDates: a,\n calendars: n,\n modelValue: i,\n props: d,\n filters: b,\n year: c,\n month: L,\n emit: v\n}) => {\n const _ = J(() => Ka(d.yearRange, d.locale, d.reverseYears)), h = ne([!1]), C = J(() => (Y, q) => {\n const de = Te(lt(/* @__PURE__ */ new Date()), {\n month: L.value(Y),\n year: c.value(Y)\n }), ve = q ? wn(de) : oa(de);\n return _n(\n ve,\n a.value.maxDate,\n a.value.minDate,\n d.preventMinMaxNavigation,\n q\n );\n }), H = () => Array.isArray(i.value) && e.value.solo && i.value[1], E = () => {\n for (let Y = 0; Y < e.value.count; Y++)\n if (Y === 0)\n n.value[Y] = n.value[0];\n else if (Y === e.value.count - 1 && H())\n n.value[Y] = {\n month: De(i.value[1]),\n year: pe(i.value[1])\n };\n else {\n const q = Te(G(), n.value[Y - 1]);\n n.value[Y] = { month: De(q), year: pe(bn(q, 1)) };\n }\n }, U = (Y) => {\n if (!Y) return E();\n const q = Te(G(), n.value[Y]);\n return n.value[0].year = pe(kn(q, e.value.count - 1)), E();\n }, f = (Y, q) => {\n const de = ll(q, Y);\n return t.value.showLastInRange && de > 1 ? q : Y;\n }, B = (Y) => d.focusStartDate || e.value.solo ? Y[0] : Y[1] ? f(Y[0], Y[1]) : Y[0], P = () => {\n if (i.value) {\n const Y = Array.isArray(i.value) ? B(i.value) : i.value;\n n.value[0] = { month: De(Y), year: pe(Y) };\n }\n }, Q = () => {\n P(), e.value.count && E();\n };\n at(i, (Y, q) => {\n d.isTextInputDate && JSON.stringify(Y ?? {}) !== JSON.stringify(q ?? {}) && Q();\n }), We(() => {\n Q();\n });\n const ae = (Y, q) => {\n n.value[q].year = Y, v(\"update-month-year\", { instance: q, year: Y, month: n.value[q].month }), e.value.count && !e.value.solo && U(q);\n }, oe = J(() => (Y) => Yt(_.value, (q) => {\n var z;\n const de = c.value(Y) === q.value, ve = Gt(\n q.value,\n It(a.value.minDate),\n It(a.value.maxDate)\n ) || ((z = b.value.years) == null ? void 0 : z.includes(c.value(Y))), y = qa(l.value, q.value);\n return { active: de, disabled: ve, highlighted: y };\n })), ee = (Y, q) => {\n ae(Y, q), x(q);\n }, S = (Y, q = !1) => {\n if (!C.value(Y, q)) {\n const de = q ? c.value(Y) + 1 : c.value(Y) - 1;\n ae(de, Y);\n }\n }, x = (Y, q = !1, de) => {\n q || v(\"reset-flow\"), de !== void 0 ? h.value[Y] = de : h.value[Y] = !h.value[Y], h.value[Y] ? v(\"overlay-toggle\", { open: !0, overlay: He.year }) : (v(\"overlay-closed\"), v(\"overlay-toggle\", { open: !1, overlay: He.year }));\n };\n return {\n isDisabled: C,\n groupedYears: oe,\n showYearPicker: h,\n selectYear: ae,\n toggleYearPicker: x,\n handleYearSelect: ee,\n handleYear: S\n };\n}, lr = (e, t) => {\n const {\n defaultedMultiCalendars: l,\n defaultedAriaLabels: a,\n defaultedTransitions: n,\n defaultedConfig: i,\n defaultedRange: d,\n defaultedHighlight: b,\n propDates: c,\n defaultedTz: L,\n defaultedFilters: v,\n defaultedMultiDates: _\n } = Ce(e), h = () => {\n e.isTextInputDate && Q(pe(G(e.startDate)), 0);\n }, { modelValue: C, year: H, month: E, calendars: U } = Jt(e, t, h), f = J(() => $n(e.formatLocale, e.locale, e.monthNameFormat)), B = ne(null), { checkMinMaxRange: P } = kt(e), {\n selectYear: Q,\n groupedYears: ae,\n showYearPicker: oe,\n toggleYearPicker: ee,\n handleYearSelect: S,\n handleYear: x,\n isDisabled: Y\n } = zn({\n modelValue: C,\n multiCalendars: l,\n range: d,\n highlight: b,\n calendars: U,\n year: H,\n propDates: c,\n month: E,\n filters: v,\n props: e,\n emit: t\n });\n We(() => {\n e.startDate && (C.value && e.focusStartDate || !C.value) && Q(pe(G(e.startDate)), 0);\n });\n const q = (M) => M ? { month: De(M), year: pe(M) } : { month: null, year: null }, de = () => C.value ? Array.isArray(C.value) ? C.value.map((M) => q(M)) : q(C.value) : q(), ve = (M, F) => {\n const u = U.value[M], le = de();\n return Array.isArray(le) ? le.some((me) => me.year === (u == null ? void 0 : u.year) && me.month === F) : (u == null ? void 0 : u.year) === le.year && F === le.month;\n }, y = (M, F, u) => {\n var me, $;\n const le = de();\n return Array.isArray(le) ? H.value(F) === ((me = le[u]) == null ? void 0 : me.year) && M === (($ = le[u]) == null ? void 0 : $.month) : !1;\n }, z = (M, F) => {\n if (d.value.enabled) {\n const u = de();\n if (Array.isArray(C.value) && Array.isArray(u)) {\n const le = y(M, F, 0) || y(M, F, 1), me = dt(lt(G()), M, H.value(F));\n return da(C.value, B.value, me) && !le;\n }\n return !1;\n }\n return !1;\n }, te = J(() => (M) => Yt(f.value, (F) => {\n var ge;\n const u = ve(M, F.value), le = Gt(\n F.value,\n Pn(H.value(M), c.value.minDate),\n Rn(H.value(M), c.value.maxDate)\n ) || Rl(c.value.disabledDates, H.value(M)).includes(F.value) || ((ge = v.value.months) == null ? void 0 : ge.includes(F.value)), me = z(F.value, M), $ = Yn(b.value, F.value, H.value(M));\n return { active: u, disabled: le, isBetween: me, highlighted: $ };\n })), g = (M, F) => dt(lt(G()), M, H.value(F)), X = (M, F) => {\n const u = C.value ? C.value : lt(/* @__PURE__ */ new Date());\n C.value = dt(u, M, H.value(F)), t(\"auto-apply\"), t(\"update-flow-step\");\n }, A = (M, F) => {\n const u = g(M, F);\n d.value.fixedEnd || d.value.fixedStart ? C.value = Ln(u, C, t, d) : C.value ? P(u, C.value) && (C.value = Ja(C, g(M, F), t)) : C.value = [g(M, F)], xe().then(() => {\n va(C.value, t, e.autoApply, e.modelAuto);\n });\n }, p = (M, F) => {\n Xa(g(M, F), C, _.value.limit), t(\"auto-apply\", !0);\n }, se = (M, F) => (U.value[F].month = M, D(F, U.value[F].year, M), _.value.enabled ? p(M, F) : d.value.enabled ? A(M, F) : X(M, F)), I = (M, F) => {\n Q(M, F), D(F, M, null);\n }, D = (M, F, u) => {\n let le = u;\n if (!le && le !== 0) {\n const me = de();\n le = Array.isArray(me) ? me[M].month : me.month;\n }\n t(\"update-month-year\", { instance: M, year: F, month: le });\n };\n return {\n groupedMonths: te,\n groupedYears: ae,\n year: H,\n isDisabled: Y,\n defaultedMultiCalendars: l,\n defaultedAriaLabels: a,\n defaultedTransitions: n,\n defaultedConfig: i,\n showYearPicker: oe,\n modelValue: C,\n presetDate: (M, F) => {\n Fn({\n value: M,\n modelValue: C,\n range: d.value.enabled,\n timezone: F ? void 0 : L.value.timezone\n }), t(\"auto-apply\");\n },\n setHoverDate: (M, F) => {\n B.value = g(M, F);\n },\n selectMonth: se,\n selectYear: I,\n toggleYearPicker: ee,\n handleYearSelect: S,\n handleYear: x,\n getModelMonthYear: de\n };\n}, rr = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"MonthPicker\",\n props: {\n ...rt\n },\n emits: [\n \"update:internal-model-value\",\n \"overlay-closed\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\",\n \"update-month-year\",\n \"update-flow-step\",\n \"mount\",\n \"invalid-fixed-range\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = Pt(), i = Je(n, \"yearMode\"), d = e;\n We(() => {\n d.shadow || a(\"mount\", null);\n });\n const {\n groupedMonths: b,\n groupedYears: c,\n year: L,\n isDisabled: v,\n defaultedMultiCalendars: _,\n defaultedConfig: h,\n showYearPicker: C,\n modelValue: H,\n presetDate: E,\n setHoverDate: U,\n selectMonth: f,\n selectYear: B,\n toggleYearPicker: P,\n handleYearSelect: Q,\n handleYear: ae,\n getModelMonthYear: oe\n } = lr(d, a);\n return t({ getSidebarProps: () => ({\n modelValue: H,\n year: L,\n getModelMonthYear: oe,\n selectMonth: f,\n selectYear: B,\n handleYear: ae\n }), presetDate: E, toggleYearPicker: (S) => P(0, S) }), (S, x) => (T(), $e(fa, {\n \"multi-calendars\": o(_).count,\n collapse: S.collapse,\n stretch: \"\"\n }, {\n default: ke(({ instance: Y }) => [\n S.$slots[\"top-extra\"] ? ie(S.$slots, \"top-extra\", {\n key: 0,\n value: S.internalModelValue\n }) : Z(\"\", !0),\n S.$slots[\"month-year\"] ? ie(S.$slots, \"month-year\", Ne(Ee({ key: 1 }, {\n year: o(L),\n months: o(b)(Y),\n years: o(c)(Y),\n selectMonth: o(f),\n selectYear: o(B),\n instance: Y\n }))) : (T(), $e(qt, {\n key: 2,\n items: o(b)(Y),\n \"arrow-navigation\": S.arrowNavigation,\n \"is-last\": S.autoApply && !o(h).keepActionRow,\n \"esc-close\": S.escClose,\n height: o(h).modeHeight,\n config: S.config,\n \"no-overlay-focus\": !!(S.noOverlayFocus || S.textInput),\n \"use-relative\": \"\",\n type: \"month\",\n onSelected: (q) => o(f)(q, Y),\n onHoverValue: (q) => o(U)(q, Y)\n }, Ve({\n header: ke(() => [\n Ze(En, Ee(S.$props, {\n items: o(c)(Y),\n instance: Y,\n \"show-year-picker\": o(C)[Y],\n year: o(L)(Y),\n \"is-disabled\": (q) => o(v)(Y, q),\n onHandleYear: (q) => o(ae)(Y, q),\n onYearSelect: (q) => o(Q)(q, Y),\n onToggleYearPicker: (q) => o(P)(Y, q == null ? void 0 : q.flow, q == null ? void 0 : q.show)\n }), Ve({ _: 2 }, [\n Re(o(i), (q, de) => ({\n name: q,\n fn: ke((ve) => [\n ie(S.$slots, q, Ne(Qe(ve)))\n ])\n }))\n ]), 1040, [\"items\", \"instance\", \"show-year-picker\", \"year\", \"is-disabled\", \"onHandleYear\", \"onYearSelect\", \"onToggleYearPicker\"])\n ]),\n _: 2\n }, [\n S.$slots[\"month-overlay-value\"] ? {\n name: \"item\",\n fn: ke(({ item: q }) => [\n ie(S.$slots, \"month-overlay-value\", {\n text: q.text,\n value: q.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"is-last\", \"esc-close\", \"height\", \"config\", \"no-overlay-focus\", \"onSelected\", \"onHoverValue\"]))\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\"]));\n }\n}), or = (e, t) => {\n const l = () => {\n e.isTextInputDate && (v.value = pe(G(e.startDate)));\n }, { modelValue: a } = Jt(e, t, l), n = ne(null), { defaultedHighlight: i, defaultedMultiDates: d, defaultedFilters: b, defaultedRange: c, propDates: L } = Ce(e), v = ne();\n We(() => {\n e.startDate && (a.value && e.focusStartDate || !a.value) && (v.value = pe(G(e.startDate)));\n });\n const _ = (f) => Array.isArray(a.value) ? a.value.some((B) => pe(B) === f) : a.value ? pe(a.value) === f : !1, h = (f) => c.value.enabled && Array.isArray(a.value) ? da(a.value, n.value, H(f)) : !1, C = J(() => Yt(Ka(e.yearRange, e.locale, e.reverseYears), (f) => {\n const B = _(f.value), P = Gt(\n f.value,\n It(L.value.minDate),\n It(L.value.maxDate)\n ) || b.value.years.includes(f.value), Q = h(f.value) && !B, ae = qa(i.value, f.value);\n return { active: B, disabled: P, isBetween: Q, highlighted: ae };\n })), H = (f) => st(lt(oa(/* @__PURE__ */ new Date())), f);\n return {\n groupedYears: C,\n modelValue: a,\n focusYear: v,\n setHoverValue: (f) => {\n n.value = st(lt(/* @__PURE__ */ new Date()), f);\n },\n selectYear: (f) => {\n var B;\n if (t(\"update-month-year\", { instance: 0, year: f }), d.value.enabled)\n return a.value ? Array.isArray(a.value) && (((B = a.value) == null ? void 0 : B.map((Q) => pe(Q))).includes(f) ? a.value = a.value.filter((Q) => pe(Q) !== f) : a.value.push(st(Ge(G()), f))) : a.value = [st(Ge(oa(G())), f)], t(\"auto-apply\", !0);\n c.value.enabled ? (a.value = Ja(a, H(f), t), xe().then(() => {\n va(a.value, t, e.autoApply, e.modelAuto);\n })) : (a.value = H(f), t(\"auto-apply\"));\n }\n };\n}, sr = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"YearPicker\",\n props: {\n ...rt\n },\n emits: [\n \"update:internal-model-value\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\",\n \"update-month-year\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, { groupedYears: i, modelValue: d, focusYear: b, selectYear: c, setHoverValue: L } = or(n, a), { defaultedConfig: v } = Ce(n);\n return t({ getSidebarProps: () => ({\n modelValue: d,\n selectYear: c\n }) }), (h, C) => (T(), K(\"div\", null, [\n h.$slots[\"top-extra\"] ? ie(h.$slots, \"top-extra\", {\n key: 0,\n value: h.internalModelValue\n }) : Z(\"\", !0),\n h.$slots[\"month-year\"] ? ie(h.$slots, \"month-year\", Ne(Ee({ key: 1 }, {\n years: o(i),\n selectYear: o(c)\n }))) : (T(), $e(qt, {\n key: 2,\n items: o(i),\n \"is-last\": h.autoApply && !o(v).keepActionRow,\n height: o(v).modeHeight,\n config: h.config,\n \"no-overlay-focus\": !!(h.noOverlayFocus || h.textInput),\n \"focus-value\": o(b),\n type: \"year\",\n \"use-relative\": \"\",\n onSelected: o(c),\n onHoverValue: o(L)\n }, Ve({ _: 2 }, [\n h.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: ke(({ item: H }) => [\n ie(h.$slots, \"year-overlay-value\", {\n text: H.text,\n value: H.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"height\", \"config\", \"no-overlay-focus\", \"focus-value\", \"onSelected\", \"onHoverValue\"]))\n ]));\n }\n}), ur = {\n key: 0,\n class: \"dp__time_input\"\n}, ir = [\"data-test\", \"aria-label\", \"onKeydown\", \"onClick\", \"onMousedown\"], dr = [\"aria-label\", \"disabled\", \"data-test\", \"onKeydown\", \"onClick\"], cr = [\"data-test\", \"aria-label\", \"onKeydown\", \"onClick\", \"onMousedown\"], fr = { key: 0 }, vr = [\"aria-label\"], mr = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimeInput\",\n props: {\n hours: { type: Number, default: 0 },\n minutes: { type: Number, default: 0 },\n seconds: { type: Number, default: 0 },\n closeTimePickerBtn: { type: Object, default: null },\n order: { type: Number, default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n validateTime: { type: Function, default: () => !1 },\n ...rt\n },\n emits: [\n \"set-hours\",\n \"set-minutes\",\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"reset-flow\",\n \"mounted\",\n \"overlay-closed\",\n \"overlay-opened\",\n \"am-pm-change\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, { setTimePickerElements: i, setTimePickerBackRef: d } = bt(), { defaultedAriaLabels: b, defaultedTransitions: c, defaultedFilters: L, defaultedConfig: v, defaultedRange: _ } = Ce(n), { transitionName: h, showTransition: C } = Xt(c), H = Qt({\n hours: !1,\n minutes: !1,\n seconds: !1\n }), E = ne(\"AM\"), U = ne(null), f = ne([]), B = ne(), P = ne(!1);\n We(() => {\n a(\"mounted\");\n });\n const Q = (r) => Te(/* @__PURE__ */ new Date(), {\n hours: r.hours,\n minutes: r.minutes,\n seconds: n.enableSeconds ? r.seconds : 0,\n milliseconds: 0\n }), ae = J(\n () => (r) => g(r, n[r]) || ee(r, n[r])\n ), oe = J(() => ({ hours: n.hours, minutes: n.minutes, seconds: n.seconds })), ee = (r, R) => _.value.enabled && !_.value.disableTimeRangeValidation ? !n.validateTime(r, R) : !1, S = (r, R) => {\n if (_.value.enabled && !_.value.disableTimeRangeValidation) {\n const O = R ? +n[`${r}Increment`] : -+n[`${r}Increment`], W = n[r] + O;\n return !n.validateTime(r, W);\n }\n return !1;\n }, x = J(() => (r) => !I(+n[r] + +n[`${r}Increment`], r) || S(r, !0)), Y = J(() => (r) => !I(+n[r] - +n[`${r}Increment`], r) || S(r, !1)), q = (r, R) => Dn(Te(G(), r), R), de = (r, R) => rl(Te(G(), r), R), ve = J(\n () => ({\n dp__time_col: !0,\n dp__time_col_block: !n.timePickerInline,\n dp__time_col_reg_block: !n.enableSeconds && n.is24 && !n.timePickerInline,\n dp__time_col_reg_inline: !n.enableSeconds && n.is24 && n.timePickerInline,\n dp__time_col_reg_with_button: !n.enableSeconds && !n.is24,\n dp__time_col_sec: n.enableSeconds && n.is24,\n dp__time_col_sec_with_button: n.enableSeconds && !n.is24\n })\n ), y = J(() => {\n const r = [{ type: \"hours\" }];\n return n.enableMinutes && r.push({ type: \"\", separator: !0 }, {\n type: \"minutes\"\n }), n.enableSeconds && r.push({ type: \"\", separator: !0 }, {\n type: \"seconds\"\n }), r;\n }), z = J(() => y.value.filter((r) => !r.separator)), te = J(() => (r) => {\n if (r === \"hours\") {\n const R = u(+n.hours);\n return { text: R < 10 ? `0${R}` : `${R}`, value: R };\n }\n return { text: n[r] < 10 ? `0${n[r]}` : `${n[r]}`, value: n[r] };\n }), g = (r, R) => {\n var W;\n if (!n.disabledTimesConfig) return !1;\n const O = n.disabledTimesConfig(n.order, r === \"hours\" ? R : void 0);\n return O[r] ? !!((W = O[r]) != null && W.includes(R)) : !0;\n }, X = (r, R) => R !== \"hours\" || E.value === \"AM\" ? r : r + 12, A = (r) => {\n const R = n.is24 ? 24 : 12, O = r === \"hours\" ? R : 60, W = +n[`${r}GridIncrement`], ue = r === \"hours\" && !n.is24 ? W : 0, w = [];\n for (let N = ue; N < O; N += W)\n w.push({ value: n.is24 ? N : X(N, r), text: N < 10 ? `0${N}` : `${N}` });\n return r === \"hours\" && !n.is24 && w.unshift({ value: E.value === \"PM\" ? 12 : 0, text: \"12\" }), Yt(w, (N) => ({ active: !1, disabled: L.value.times[r].includes(N.value) || !I(N.value, r) || g(r, N.value) || ee(r, N.value) }));\n }, p = (r) => r >= 0 ? r : 59, se = (r) => r >= 0 ? r : 23, I = (r, R) => {\n const O = n.minTime ? Q(Aa(n.minTime)) : null, W = n.maxTime ? Q(Aa(n.maxTime)) : null, ue = Q(\n Aa(\n oe.value,\n R,\n R === \"minutes\" || R === \"seconds\" ? p(r) : se(r)\n )\n );\n return O && W ? (Kt(ue, W) || Ot(ue, W)) && (_t(ue, O) || Ot(ue, O)) : O ? _t(ue, O) || Ot(ue, O) : W ? Kt(ue, W) || Ot(ue, W) : !0;\n }, D = (r) => n[`no${r[0].toUpperCase() + r.slice(1)}Overlay`], V = (r) => {\n D(r) || (H[r] = !H[r], H[r] ? (P.value = !0, a(\"overlay-opened\", r)) : (P.value = !1, a(\"overlay-closed\", r)));\n }, s = (r) => r === \"hours\" ? ft : r === \"minutes\" ? ht : Bt, M = () => {\n B.value && clearTimeout(B.value);\n }, F = (r, R = !0, O) => {\n const W = R ? q : de, ue = R ? +n[`${r}Increment`] : -+n[`${r}Increment`];\n I(+n[r] + ue, r) && a(\n `update:${r}`,\n s(r)(W({ [r]: +n[r] }, { [r]: +n[`${r}Increment`] }))\n ), !(O != null && O.keyboard) && v.value.timeArrowHoldThreshold && (B.value = setTimeout(() => {\n F(r, R);\n }, v.value.timeArrowHoldThreshold));\n }, u = (r) => n.is24 ? r : (r >= 12 ? E.value = \"PM\" : E.value = \"AM\", gl(r)), le = () => {\n E.value === \"PM\" ? (E.value = \"AM\", a(\"update:hours\", n.hours - 12)) : (E.value = \"PM\", a(\"update:hours\", n.hours + 12)), a(\"am-pm-change\", E.value);\n }, me = (r) => {\n H[r] = !0;\n }, $ = (r, R, O) => {\n if (r && n.arrowNavigation) {\n Array.isArray(f.value[R]) ? f.value[R][O] = r : f.value[R] = [r];\n const W = f.value.reduce(\n (ue, w) => w.map((N, ce) => [...ue[ce] || [], w[ce]]),\n []\n );\n d(n.closeTimePickerBtn), U.value && (W[1] = W[1].concat(U.value)), i(W, n.order);\n }\n }, ge = (r, R) => (V(r), a(`update:${r}`, R));\n return t({ openChildCmp: me }), (r, R) => {\n var O;\n return r.disabled ? Z(\"\", !0) : (T(), K(\"div\", ur, [\n (T(!0), K(be, null, Re(y.value, (W, ue) => {\n var w, N, ce;\n return T(), K(\"div\", {\n key: ue,\n class: we(ve.value)\n }, [\n W.separator ? (T(), K(be, { key: 0 }, [\n P.value ? Z(\"\", !0) : (T(), K(be, { key: 0 }, [\n ct(\":\")\n ], 64))\n ], 64)) : (T(), K(be, { key: 1 }, [\n ye(\"button\", {\n ref_for: !0,\n ref: (he) => $(he, ue, 0),\n type: \"button\",\n class: we({\n dp__btn: !0,\n dp__inc_dec_button: !r.timePickerInline,\n dp__inc_dec_button_inline: r.timePickerInline,\n dp__tp_inline_btn_top: r.timePickerInline,\n dp__inc_dec_button_disabled: x.value(W.type),\n \"dp--hidden-el\": P.value\n }),\n \"data-test\": `${W.type}-time-inc-btn-${n.order}`,\n \"aria-label\": (w = o(b)) == null ? void 0 : w.incrementValue(W.type),\n tabindex: \"0\",\n onKeydown: (he) => o(Ke)(he, () => F(W.type, !0, { keyboard: !0 }), !0),\n onClick: (he) => o(v).timeArrowHoldThreshold ? void 0 : F(W.type, !0),\n onMousedown: (he) => o(v).timeArrowHoldThreshold ? F(W.type, !0) : void 0,\n onMouseup: M\n }, [\n n.timePickerInline ? (T(), K(be, { key: 1 }, [\n r.$slots[\"tp-inline-arrow-up\"] ? ie(r.$slots, \"tp-inline-arrow-up\", { key: 0 }) : (T(), K(be, { key: 1 }, [\n R[2] || (R[2] = ye(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1)),\n R[3] || (R[3] = ye(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1))\n ], 64))\n ], 64)) : (T(), K(be, { key: 0 }, [\n r.$slots[\"arrow-up\"] ? ie(r.$slots, \"arrow-up\", { key: 0 }) : Z(\"\", !0),\n r.$slots[\"arrow-up\"] ? Z(\"\", !0) : (T(), $e(o(Va), { key: 1 }))\n ], 64))\n ], 42, ir),\n ye(\"button\", {\n ref_for: !0,\n ref: (he) => $(he, ue, 1),\n type: \"button\",\n \"aria-label\": `${te.value(W.type).text}-${(N = o(b)) == null ? void 0 : N.openTpOverlay(W.type)}`,\n class: we({\n dp__time_display: !0,\n dp__time_display_block: !r.timePickerInline,\n dp__time_display_inline: r.timePickerInline,\n \"dp--time-invalid\": ae.value(W.type),\n \"dp--time-overlay-btn\": !ae.value(W.type),\n \"dp--hidden-el\": P.value\n }),\n disabled: D(W.type),\n tabindex: \"0\",\n \"data-test\": `${W.type}-toggle-overlay-btn-${n.order}`,\n onKeydown: (he) => o(Ke)(he, () => V(W.type), !0),\n onClick: (he) => V(W.type)\n }, [\n r.$slots[W.type] ? ie(r.$slots, W.type, {\n key: 0,\n text: te.value(W.type).text,\n value: te.value(W.type).value\n }) : Z(\"\", !0),\n r.$slots[W.type] ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ct(Ue(te.value(W.type).text), 1)\n ], 64))\n ], 42, dr),\n ye(\"button\", {\n ref_for: !0,\n ref: (he) => $(he, ue, 2),\n type: \"button\",\n class: we({\n dp__btn: !0,\n dp__inc_dec_button: !r.timePickerInline,\n dp__inc_dec_button_inline: r.timePickerInline,\n dp__tp_inline_btn_bottom: r.timePickerInline,\n dp__inc_dec_button_disabled: Y.value(W.type),\n \"dp--hidden-el\": P.value\n }),\n \"data-test\": `${W.type}-time-dec-btn-${n.order}`,\n \"aria-label\": (ce = o(b)) == null ? void 0 : ce.decrementValue(W.type),\n tabindex: \"0\",\n onKeydown: (he) => o(Ke)(he, () => F(W.type, !1, { keyboard: !0 }), !0),\n onClick: (he) => o(v).timeArrowHoldThreshold ? void 0 : F(W.type, !1),\n onMousedown: (he) => o(v).timeArrowHoldThreshold ? F(W.type, !1) : void 0,\n onMouseup: M\n }, [\n n.timePickerInline ? (T(), K(be, { key: 1 }, [\n r.$slots[\"tp-inline-arrow-down\"] ? ie(r.$slots, \"tp-inline-arrow-down\", { key: 0 }) : (T(), K(be, { key: 1 }, [\n R[4] || (R[4] = ye(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1)),\n R[5] || (R[5] = ye(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1))\n ], 64))\n ], 64)) : (T(), K(be, { key: 0 }, [\n r.$slots[\"arrow-down\"] ? ie(r.$slots, \"arrow-down\", { key: 0 }) : Z(\"\", !0),\n r.$slots[\"arrow-down\"] ? Z(\"\", !0) : (T(), $e(o(Wa), { key: 1 }))\n ], 64))\n ], 42, cr)\n ], 64))\n ], 2);\n }), 128)),\n r.is24 ? Z(\"\", !0) : (T(), K(\"div\", fr, [\n r.$slots[\"am-pm-button\"] ? ie(r.$slots, \"am-pm-button\", {\n key: 0,\n toggle: le,\n value: E.value\n }) : Z(\"\", !0),\n r.$slots[\"am-pm-button\"] ? Z(\"\", !0) : (T(), K(\"button\", {\n key: 1,\n ref_key: \"amPmButton\",\n ref: U,\n type: \"button\",\n class: \"dp__pm_am_button\",\n role: \"button\",\n \"aria-label\": (O = o(b)) == null ? void 0 : O.amPmButton,\n tabindex: \"0\",\n onClick: le,\n onKeydown: R[0] || (R[0] = (W) => o(Ke)(W, () => le(), !0))\n }, Ue(E.value), 41, vr))\n ])),\n (T(!0), K(be, null, Re(z.value, (W, ue) => (T(), $e(Nt, {\n key: ue,\n name: o(h)(H[W.type]),\n css: o(C)\n }, {\n default: ke(() => {\n var w, N;\n return [\n H[W.type] ? (T(), $e(qt, {\n key: 0,\n items: A(W.type),\n \"is-last\": r.autoApply && !o(v).keepActionRow,\n \"esc-close\": r.escClose,\n type: W.type,\n \"text-input\": r.textInput,\n config: r.config,\n \"arrow-navigation\": r.arrowNavigation,\n \"aria-labels\": r.ariaLabels,\n \"overlay-label\": (N = (w = o(b)).timeOverlay) == null ? void 0 : N.call(w, W.type),\n onSelected: (ce) => ge(W.type, ce),\n onToggle: (ce) => V(W.type),\n onResetFlow: R[1] || (R[1] = (ce) => r.$emit(\"reset-flow\"))\n }, Ve({\n \"button-icon\": ke(() => [\n r.$slots[\"clock-icon\"] ? ie(r.$slots, \"clock-icon\", { key: 0 }) : Z(\"\", !0),\n r.$slots[\"clock-icon\"] ? Z(\"\", !0) : (T(), $e(ia(r.timePickerInline ? o(Et) : o(Ua)), { key: 1 }))\n ]),\n _: 2\n }, [\n r.$slots[`${W.type}-overlay-value`] ? {\n name: \"item\",\n fn: ke(({ item: ce }) => [\n ie(r.$slots, `${W.type}-overlay-value`, {\n text: ce.text,\n value: ce.value\n })\n ]),\n key: \"0\"\n } : void 0,\n r.$slots[`${W.type}-overlay-header`] ? {\n name: \"header\",\n fn: ke(() => [\n ie(r.$slots, `${W.type}-overlay-header`, {\n toggle: () => V(W.type)\n })\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"esc-close\", \"type\", \"text-input\", \"config\", \"arrow-navigation\", \"aria-labels\", \"overlay-label\", \"onSelected\", \"onToggle\"])) : Z(\"\", !0)\n ];\n }),\n _: 2\n }, 1032, [\"name\", \"css\"]))), 128))\n ]));\n };\n }\n}), pr = { class: \"dp--tp-wrap\" }, yr = [\"aria-label\", \"tabindex\"], gr = [\"role\", \"aria-label\", \"tabindex\"], hr = [\"aria-label\"], Hn = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePicker\",\n props: {\n hours: { type: [Number, Array], default: 0 },\n minutes: { type: [Number, Array], default: 0 },\n seconds: { type: [Number, Array], default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n validateTime: {\n type: Function,\n default: () => !1\n },\n ...rt\n },\n emits: [\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"mount\",\n \"reset-flow\",\n \"overlay-opened\",\n \"overlay-closed\",\n \"am-pm-change\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, { buildMatrix: i, setTimePicker: d } = bt(), b = Pt(), { defaultedTransitions: c, defaultedAriaLabels: L, defaultedTextInput: v, defaultedConfig: _, defaultedRange: h } = Ce(n), { transitionName: C, showTransition: H } = Xt(c), { hideNavigationButtons: E } = ma(), U = ne(null), f = ne(null), B = ne([]), P = ne(null), Q = ne(!1);\n We(() => {\n a(\"mount\"), !n.timePicker && n.arrowNavigation ? i([Ie(U.value)], \"time\") : d(!0, n.timePicker);\n });\n const ae = J(() => h.value.enabled && n.modelAuto ? An(n.internalModelValue) : !0), oe = ne(!1), ee = (A) => ({\n hours: Array.isArray(n.hours) ? n.hours[A] : n.hours,\n minutes: Array.isArray(n.minutes) ? n.minutes[A] : n.minutes,\n seconds: Array.isArray(n.seconds) ? n.seconds[A] : n.seconds\n }), S = J(() => {\n const A = [];\n if (h.value.enabled)\n for (let p = 0; p < 2; p++)\n A.push(ee(p));\n else\n A.push(ee(0));\n return A;\n }), x = (A, p = !1, se = \"\") => {\n p || a(\"reset-flow\"), oe.value = A, a(A ? \"overlay-opened\" : \"overlay-closed\", He.time), n.arrowNavigation && d(A), xe(() => {\n se !== \"\" && B.value[0] && B.value[0].openChildCmp(se);\n });\n }, Y = J(() => ({\n dp__btn: !0,\n dp__button: !0,\n dp__button_bottom: n.autoApply && !_.value.keepActionRow\n })), q = Je(b, \"timePicker\"), de = (A, p, se) => h.value.enabled ? p === 0 ? [A, S.value[1][se]] : [S.value[0][se], A] : A, ve = (A) => {\n a(\"update:hours\", A);\n }, y = (A) => {\n a(\"update:minutes\", A);\n }, z = (A) => {\n a(\"update:seconds\", A);\n }, te = () => {\n if (P.value && !v.value.enabled && !n.noOverlayFocus) {\n const A = Tn(P.value);\n A && A.focus({ preventScroll: !0 });\n }\n }, g = (A) => {\n Q.value = !1, a(\"overlay-closed\", A);\n }, X = (A) => {\n Q.value = !0, a(\"overlay-opened\", A);\n };\n return t({ toggleTimePicker: x }), (A, p) => {\n var se;\n return T(), K(\"div\", pr, [\n !A.timePicker && !A.timePickerInline ? na((T(), K(\"button\", {\n key: 0,\n ref_key: \"openTimePickerBtn\",\n ref: U,\n type: \"button\",\n class: we({ ...Y.value, \"dp--hidden-el\": oe.value }),\n \"aria-label\": (se = o(L)) == null ? void 0 : se.openTimePicker,\n tabindex: A.noOverlayFocus ? void 0 : 0,\n \"data-test\": \"open-time-picker-btn\",\n onKeydown: p[0] || (p[0] = (I) => o(Ke)(I, () => x(!0))),\n onClick: p[1] || (p[1] = (I) => x(!0))\n }, [\n A.$slots[\"clock-icon\"] ? ie(A.$slots, \"clock-icon\", { key: 0 }) : Z(\"\", !0),\n A.$slots[\"clock-icon\"] ? Z(\"\", !0) : (T(), $e(o(Ua), { key: 1 }))\n ], 42, yr)), [\n [la, !o(E)(A.hideNavigation, \"time\")]\n ]) : Z(\"\", !0),\n Ze(Nt, {\n name: o(C)(oe.value),\n css: o(H) && !A.timePickerInline\n }, {\n default: ke(() => {\n var I, D;\n return [\n oe.value || A.timePicker || A.timePickerInline ? (T(), K(\"div\", {\n key: 0,\n ref_key: \"overlayRef\",\n ref: P,\n role: A.timePickerInline ? void 0 : \"dialog\",\n class: we({\n dp__overlay: !A.timePickerInline,\n \"dp--overlay-absolute\": !n.timePicker && !A.timePickerInline,\n \"dp--overlay-relative\": n.timePicker\n }),\n style: tt(A.timePicker ? { height: `${o(_).modeHeight}px` } : void 0),\n \"aria-label\": (I = o(L)) == null ? void 0 : I.timePicker,\n tabindex: A.timePickerInline ? void 0 : 0\n }, [\n ye(\"div\", {\n class: we(\n A.timePickerInline ? \"dp__time_picker_inline_container\" : \"dp__overlay_container dp__container_flex dp__time_picker_overlay_container\"\n ),\n style: { display: \"flex\" }\n }, [\n A.$slots[\"time-picker-overlay\"] ? ie(A.$slots, \"time-picker-overlay\", {\n key: 0,\n hours: e.hours,\n minutes: e.minutes,\n seconds: e.seconds,\n setHours: ve,\n setMinutes: y,\n setSeconds: z\n }) : Z(\"\", !0),\n A.$slots[\"time-picker-overlay\"] ? Z(\"\", !0) : (T(), K(\"div\", {\n key: 1,\n class: we(A.timePickerInline ? \"dp__flex\" : \"dp__overlay_row dp__flex_row\")\n }, [\n (T(!0), K(be, null, Re(S.value, (V, s) => na((T(), $e(mr, Ee({\n key: s,\n ref_for: !0\n }, {\n ...A.$props,\n order: s,\n hours: V.hours,\n minutes: V.minutes,\n seconds: V.seconds,\n closeTimePickerBtn: f.value,\n disabledTimesConfig: e.disabledTimesConfig,\n disabled: s === 0 ? o(h).fixedStart : o(h).fixedEnd\n }, {\n ref_for: !0,\n ref_key: \"timeInputRefs\",\n ref: B,\n \"validate-time\": (M, F) => e.validateTime(M, de(F, s, M)),\n \"onUpdate:hours\": (M) => ve(de(M, s, \"hours\")),\n \"onUpdate:minutes\": (M) => y(de(M, s, \"minutes\")),\n \"onUpdate:seconds\": (M) => z(de(M, s, \"seconds\")),\n onMounted: te,\n onOverlayClosed: g,\n onOverlayOpened: X,\n onAmPmChange: p[2] || (p[2] = (M) => A.$emit(\"am-pm-change\", M))\n }), Ve({ _: 2 }, [\n Re(o(q), (M, F) => ({\n name: M,\n fn: ke((u) => [\n ie(A.$slots, M, Ee({ ref_for: !0 }, u))\n ])\n }))\n ]), 1040, [\"validate-time\", \"onUpdate:hours\", \"onUpdate:minutes\", \"onUpdate:seconds\"])), [\n [la, s === 0 ? !0 : ae.value]\n ])), 128))\n ], 2)),\n !A.timePicker && !A.timePickerInline ? na((T(), K(\"button\", {\n key: 2,\n ref_key: \"closeTimePickerBtn\",\n ref: f,\n type: \"button\",\n class: we({ ...Y.value, \"dp--hidden-el\": Q.value }),\n \"aria-label\": (D = o(L)) == null ? void 0 : D.closeTimePicker,\n tabindex: \"0\",\n onKeydown: p[3] || (p[3] = (V) => o(Ke)(V, () => x(!1))),\n onClick: p[4] || (p[4] = (V) => x(!1))\n }, [\n A.$slots[\"calendar-icon\"] ? ie(A.$slots, \"calendar-icon\", { key: 0 }) : Z(\"\", !0),\n A.$slots[\"calendar-icon\"] ? Z(\"\", !0) : (T(), $e(o(Et), { key: 1 }))\n ], 42, hr)), [\n [la, !o(E)(A.hideNavigation, \"time\")]\n ]) : Z(\"\", !0)\n ], 2)\n ], 14, gr)) : Z(\"\", !0)\n ];\n }),\n _: 3\n }, 8, [\"name\", \"css\"])\n ]);\n };\n }\n}), Un = (e, t, l, a) => {\n const { defaultedRange: n } = Ce(e), i = (P, Q) => Array.isArray(t[P]) ? t[P][Q] : t[P], d = (P) => e.enableSeconds ? Array.isArray(t.seconds) ? t.seconds[P] : t.seconds : 0, b = (P, Q) => P ? Q !== void 0 ? gt(P, i(\"hours\", Q), i(\"minutes\", Q), d(Q)) : gt(P, t.hours, t.minutes, d()) : yn(G(), d(Q)), c = (P, Q) => {\n t[P] = Q;\n }, L = J(() => e.modelAuto && n.value.enabled ? Array.isArray(l.value) ? l.value.length > 1 : !1 : n.value.enabled), v = (P, Q) => {\n const ae = Object.fromEntries(\n Object.keys(t).map((oe) => oe === P ? [oe, Q] : [oe, t[oe]].slice())\n );\n if (L.value && !n.value.disableTimeRangeValidation) {\n const oe = (S) => l.value ? gt(\n l.value[S],\n ae.hours[S],\n ae.minutes[S],\n ae.seconds[S]\n ) : null, ee = (S) => gn(l.value[S], 0);\n return !(Me(oe(0), oe(1)) && (_t(oe(0), ee(1)) || Kt(oe(1), ee(0))));\n }\n return !0;\n }, _ = (P, Q) => {\n v(P, Q) && (c(P, Q), a && a());\n }, h = (P) => {\n _(\"hours\", P);\n }, C = (P) => {\n _(\"minutes\", P);\n }, H = (P) => {\n _(\"seconds\", P);\n }, E = (P, Q, ae, oe) => {\n Q && h(P), !Q && !ae && C(P), ae && H(P), l.value && oe(l.value);\n }, U = (P) => {\n if (P) {\n const Q = Array.isArray(P), ae = Q ? [+P[0].hours, +P[1].hours] : +P.hours, oe = Q ? [+P[0].minutes, +P[1].minutes] : +P.minutes, ee = Q ? [+P[0].seconds, +P[1].seconds] : +P.seconds;\n c(\"hours\", ae), c(\"minutes\", oe), e.enableSeconds && c(\"seconds\", ee);\n }\n }, f = (P, Q) => {\n const ae = {\n hours: Array.isArray(t.hours) ? t.hours[P] : t.hours,\n disabledArr: []\n };\n return (Q || Q === 0) && (ae.hours = Q), Array.isArray(e.disabledTimes) && (ae.disabledArr = n.value.enabled && Array.isArray(e.disabledTimes[P]) ? e.disabledTimes[P] : e.disabledTimes), ae;\n }, B = J(() => (P, Q) => {\n var ae;\n if (Array.isArray(e.disabledTimes)) {\n const { disabledArr: oe, hours: ee } = f(P, Q), S = oe.filter((x) => +x.hours === ee);\n return ((ae = S[0]) == null ? void 0 : ae.minutes) === \"*\" ? { hours: [ee], minutes: void 0, seconds: void 0 } : {\n hours: [],\n minutes: (S == null ? void 0 : S.map((x) => +x.minutes)) ?? [],\n seconds: (S == null ? void 0 : S.map((x) => x.seconds ? +x.seconds : void 0)) ?? []\n };\n }\n return { hours: [], minutes: [], seconds: [] };\n });\n return {\n setTime: c,\n updateHours: h,\n updateMinutes: C,\n updateSeconds: H,\n getSetDateTime: b,\n updateTimeValues: E,\n getSecondsValue: d,\n assignStartTime: U,\n validateTime: v,\n disabledTimesConfig: B\n };\n}, br = (e, t) => {\n const l = () => {\n e.isTextInputDate && Q();\n }, { modelValue: a, time: n } = Jt(e, t, l), { defaultedStartTime: i, defaultedRange: d, defaultedTz: b } = Ce(e), { updateTimeValues: c, getSetDateTime: L, setTime: v, assignStartTime: _, disabledTimesConfig: h, validateTime: C } = Un(e, n, a, H);\n function H() {\n t(\"update-flow-step\");\n }\n const E = (ee) => {\n const { hours: S, minutes: x, seconds: Y } = ee;\n return { hours: +S, minutes: +x, seconds: Y ? +Y : 0 };\n }, U = () => {\n if (e.startTime) {\n if (Array.isArray(e.startTime)) {\n const S = E(e.startTime[0]), x = E(e.startTime[1]);\n return [Te(G(), S), Te(G(), x)];\n }\n const ee = E(e.startTime);\n return Te(G(), ee);\n }\n return d.value.enabled ? [null, null] : null;\n }, f = () => {\n if (d.value.enabled) {\n const [ee, S] = U();\n a.value = [\n qe(L(ee, 0), b.value.timezone),\n qe(L(S, 1), b.value.timezone)\n ];\n } else\n a.value = qe(L(U()), b.value.timezone);\n }, B = (ee) => Array.isArray(ee) ? [St(G(ee[0])), St(G(ee[1]))] : [St(ee ?? G())], P = (ee, S, x) => {\n v(\"hours\", ee), v(\"minutes\", S), v(\"seconds\", e.enableSeconds ? x : 0);\n }, Q = () => {\n const [ee, S] = B(a.value);\n return d.value.enabled ? P(\n [ee.hours, S.hours],\n [ee.minutes, S.minutes],\n [ee.seconds, S.seconds]\n ) : P(ee.hours, ee.minutes, ee.seconds);\n };\n We(() => {\n if (!e.shadow)\n return _(i.value), a.value ? Q() : f();\n });\n const ae = () => {\n Array.isArray(a.value) ? a.value = a.value.map((ee, S) => ee && L(ee, S)) : a.value = L(a.value), t(\"time-update\");\n };\n return {\n modelValue: a,\n time: n,\n disabledTimesConfig: h,\n updateTime: (ee, S = !0, x = !1) => {\n c(ee, S, x, ae);\n },\n validateTime: C\n };\n}, kr = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePickerSolo\",\n props: {\n ...rt\n },\n emits: [\n \"update:internal-model-value\",\n \"time-update\",\n \"am-pm-change\",\n \"mount\",\n \"reset-flow\",\n \"update-flow-step\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, i = Pt(), d = Je(i, \"timePicker\"), b = ne(null), { time: c, modelValue: L, disabledTimesConfig: v, updateTime: _, validateTime: h } = br(n, a);\n return We(() => {\n n.shadow || a(\"mount\", null);\n }), t({ getSidebarProps: () => ({\n modelValue: L,\n time: c,\n updateTime: _\n }), toggleTimePicker: (E, U = !1, f = \"\") => {\n var B;\n (B = b.value) == null || B.toggleTimePicker(E, U, f);\n } }), (E, U) => (T(), $e(fa, {\n \"multi-calendars\": 0,\n stretch: \"\"\n }, {\n default: ke(() => [\n Ze(Hn, Ee({\n ref_key: \"tpRef\",\n ref: b\n }, E.$props, {\n hours: o(c).hours,\n minutes: o(c).minutes,\n seconds: o(c).seconds,\n \"internal-model-value\": E.internalModelValue,\n \"disabled-times-config\": o(v),\n \"validate-time\": o(h),\n \"onUpdate:hours\": U[0] || (U[0] = (f) => o(_)(f)),\n \"onUpdate:minutes\": U[1] || (U[1] = (f) => o(_)(f, !1)),\n \"onUpdate:seconds\": U[2] || (U[2] = (f) => o(_)(f, !1, !0)),\n onAmPmChange: U[3] || (U[3] = (f) => E.$emit(\"am-pm-change\", f)),\n onResetFlow: U[4] || (U[4] = (f) => E.$emit(\"reset-flow\")),\n onOverlayClosed: U[5] || (U[5] = (f) => E.$emit(\"overlay-toggle\", { open: !1, overlay: f })),\n onOverlayOpened: U[6] || (U[6] = (f) => E.$emit(\"overlay-toggle\", { open: !0, overlay: f }))\n }), Ve({ _: 2 }, [\n Re(o(d), (f, B) => ({\n name: f,\n fn: ke((P) => [\n ie(E.$slots, f, Ne(Qe(P)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\", \"validate-time\"])\n ]),\n _: 3\n }));\n }\n}), wr = { class: \"dp--header-wrap\" }, Dr = {\n key: 0,\n class: \"dp__month_year_wrap\"\n}, Mr = { key: 0 }, $r = { class: \"dp__month_year_wrap\" }, Ar = [\"data-dp-element\", \"aria-label\", \"data-test\", \"onClick\", \"onKeydown\"], Tr = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpHeader\",\n props: {\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n instance: { type: Number, default: 0 },\n years: { type: Array, default: () => [] },\n months: { type: Array, default: () => [] },\n ...rt\n },\n emits: [\"update-month-year\", \"mount\", \"reset-flow\", \"overlay-closed\", \"overlay-opened\"],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, {\n defaultedTransitions: i,\n defaultedAriaLabels: d,\n defaultedMultiCalendars: b,\n defaultedFilters: c,\n defaultedConfig: L,\n defaultedHighlight: v,\n propDates: _,\n defaultedUI: h\n } = Ce(n), { transitionName: C, showTransition: H } = Xt(i), { buildMatrix: E } = bt(), { handleMonthYearChange: U, isDisabled: f, updateMonthYear: B } = Ql(n, a), { showLeftIcon: P, showRightIcon: Q } = ma(), ae = ne(!1), oe = ne(!1), ee = ne(!1), S = ne([null, null, null, null]);\n We(() => {\n a(\"mount\");\n });\n const x = (D) => ({\n get: () => n[D],\n set: (V) => {\n const s = D === nt.month ? nt.year : nt.month;\n a(\"update-month-year\", { [D]: V, [s]: n[s] }), D === nt.month ? g(!0) : X(!0);\n }\n }), Y = J(x(nt.month)), q = J(x(nt.year)), de = J(() => (D) => ({\n month: n.month,\n year: n.year,\n items: D === nt.month ? n.months : n.years,\n instance: n.instance,\n updateMonthYear: B,\n toggle: D === nt.month ? g : X\n })), ve = J(() => {\n const D = n.months.find((V) => V.value === n.month);\n return D || { text: \"\", value: 0 };\n }), y = J(() => Yt(n.months, (D) => {\n const V = n.month === D.value, s = Gt(\n D.value,\n Pn(n.year, _.value.minDate),\n Rn(n.year, _.value.maxDate)\n ) || c.value.months.includes(D.value), M = Yn(v.value, D.value, n.year);\n return { active: V, disabled: s, highlighted: M };\n })), z = J(() => Yt(n.years, (D) => {\n const V = n.year === D.value, s = Gt(\n D.value,\n It(_.value.minDate),\n It(_.value.maxDate)\n ) || c.value.years.includes(D.value), M = qa(v.value, D.value);\n return { active: V, disabled: s, highlighted: M };\n })), te = (D, V, s) => {\n s !== void 0 ? D.value = s : D.value = !D.value, D.value ? (ee.value = !0, a(\"overlay-opened\", V)) : (ee.value = !1, a(\"overlay-closed\", V));\n }, g = (D = !1, V) => {\n A(D), te(ae, He.month, V);\n }, X = (D = !1, V) => {\n A(D), te(oe, He.year, V);\n }, A = (D) => {\n D || a(\"reset-flow\");\n }, p = (D, V) => {\n n.arrowNavigation && (S.value[V] = Ie(D), E(S.value, \"monthYear\"));\n }, se = J(() => {\n var D, V, s, M, F, u;\n return [\n {\n type: nt.month,\n index: 1,\n toggle: g,\n modelValue: Y.value,\n updateModelValue: (le) => Y.value = le,\n text: ve.value.text,\n showSelectionGrid: ae.value,\n items: y.value,\n ariaLabel: (D = d.value) == null ? void 0 : D.openMonthsOverlay,\n overlayLabel: ((s = (V = d.value).monthPicker) == null ? void 0 : s.call(V, !0)) ?? void 0\n },\n {\n type: nt.year,\n index: 2,\n toggle: X,\n modelValue: q.value,\n updateModelValue: (le) => q.value = le,\n text: Sn(n.year, n.locale),\n showSelectionGrid: oe.value,\n items: z.value,\n ariaLabel: (M = d.value) == null ? void 0 : M.openYearsOverlay,\n overlayLabel: ((u = (F = d.value).yearPicker) == null ? void 0 : u.call(F, !0)) ?? void 0\n }\n ];\n }), I = J(() => n.disableYearSelect ? [se.value[0]] : n.yearFirst ? [...se.value].reverse() : se.value);\n return t({\n toggleMonthPicker: g,\n toggleYearPicker: X,\n handleMonthYearChange: U\n }), (D, V) => {\n var s, M, F, u, le, me;\n return T(), K(\"div\", wr, [\n D.$slots[\"month-year\"] ? (T(), K(\"div\", Dr, [\n ie(D.$slots, \"month-year\", Ne(Qe({ month: e.month, year: e.year, months: e.months, years: e.years, updateMonthYear: o(B), handleMonthYearChange: o(U), instance: e.instance })))\n ])) : (T(), K(be, { key: 1 }, [\n D.$slots[\"top-extra\"] ? (T(), K(\"div\", Mr, [\n ie(D.$slots, \"top-extra\", { value: D.internalModelValue })\n ])) : Z(\"\", !0),\n ye(\"div\", $r, [\n o(P)(o(b), e.instance) && !D.vertical ? (T(), $e(Ut, {\n key: 0,\n \"aria-label\": (s = o(d)) == null ? void 0 : s.prevMonth,\n disabled: o(f)(!1),\n class: we((M = o(h)) == null ? void 0 : M.navBtnPrev),\n \"el-name\": \"action-prev\",\n onActivate: V[0] || (V[0] = ($) => o(U)(!1, !0)),\n onSetRef: V[1] || (V[1] = ($) => p($, 0))\n }, {\n default: ke(() => [\n D.$slots[\"arrow-left\"] ? ie(D.$slots, \"arrow-left\", { key: 0 }) : Z(\"\", !0),\n D.$slots[\"arrow-left\"] ? Z(\"\", !0) : (T(), $e(o(za), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Z(\"\", !0),\n ye(\"div\", {\n class: we([\"dp__month_year_wrap\", {\n dp__year_disable_select: D.disableYearSelect\n }])\n }, [\n (T(!0), K(be, null, Re(I.value, ($, ge) => (T(), K(be, {\n key: $.type\n }, [\n ye(\"button\", {\n ref_for: !0,\n ref: (r) => p(r, ge + 1),\n type: \"button\",\n \"data-dp-element\": `overlay-${$.type}`,\n class: we([\"dp__btn dp__month_year_select\", { \"dp--hidden-el\": ee.value }]),\n \"aria-label\": `${$.text}-${$.ariaLabel}`,\n \"data-test\": `${$.type}-toggle-overlay-${e.instance}`,\n onClick: $.toggle,\n onKeydown: (r) => o(Ke)(r, () => $.toggle(), !0)\n }, [\n D.$slots[$.type] ? ie(D.$slots, $.type, {\n key: 0,\n text: $.text,\n value: n[$.type]\n }) : Z(\"\", !0),\n D.$slots[$.type] ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ct(Ue($.text), 1)\n ], 64))\n ], 42, Ar),\n Ze(Nt, {\n name: o(C)($.showSelectionGrid),\n css: o(H)\n }, {\n default: ke(() => [\n $.showSelectionGrid ? (T(), $e(qt, {\n key: 0,\n items: $.items,\n \"arrow-navigation\": D.arrowNavigation,\n \"hide-navigation\": D.hideNavigation,\n \"is-last\": D.autoApply && !o(L).keepActionRow,\n \"skip-button-ref\": !1,\n config: D.config,\n type: $.type,\n \"header-refs\": [],\n \"esc-close\": D.escClose,\n \"menu-wrap-ref\": D.menuWrapRef,\n \"text-input\": D.textInput,\n \"aria-labels\": D.ariaLabels,\n \"overlay-label\": $.overlayLabel,\n onSelected: $.updateModelValue,\n onToggle: $.toggle\n }, Ve({\n \"button-icon\": ke(() => [\n D.$slots[\"calendar-icon\"] ? ie(D.$slots, \"calendar-icon\", { key: 0 }) : Z(\"\", !0),\n D.$slots[\"calendar-icon\"] ? Z(\"\", !0) : (T(), $e(o(Et), { key: 1 }))\n ]),\n _: 2\n }, [\n D.$slots[`${$.type}-overlay-value`] ? {\n name: \"item\",\n fn: ke(({ item: r }) => [\n ie(D.$slots, `${$.type}-overlay-value`, {\n text: r.text,\n value: r.value\n })\n ]),\n key: \"0\"\n } : void 0,\n D.$slots[`${$.type}-overlay`] ? {\n name: \"overlay\",\n fn: ke(() => [\n ie(D.$slots, `${$.type}-overlay`, Ee({ ref_for: !0 }, de.value($.type)))\n ]),\n key: \"1\"\n } : void 0,\n D.$slots[`${$.type}-overlay-header`] ? {\n name: \"header\",\n fn: ke(() => [\n ie(D.$slots, `${$.type}-overlay-header`, {\n toggle: $.toggle\n })\n ]),\n key: \"2\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"hide-navigation\", \"is-last\", \"config\", \"type\", \"esc-close\", \"menu-wrap-ref\", \"text-input\", \"aria-labels\", \"overlay-label\", \"onSelected\", \"onToggle\"])) : Z(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"])\n ], 64))), 128))\n ], 2),\n o(P)(o(b), e.instance) && D.vertical ? (T(), $e(Ut, {\n key: 1,\n \"aria-label\": (F = o(d)) == null ? void 0 : F.prevMonth,\n \"el-name\": \"action-prev\",\n disabled: o(f)(!1),\n class: we((u = o(h)) == null ? void 0 : u.navBtnPrev),\n onActivate: V[2] || (V[2] = ($) => o(U)(!1, !0))\n }, {\n default: ke(() => [\n D.$slots[\"arrow-up\"] ? ie(D.$slots, \"arrow-up\", { key: 0 }) : Z(\"\", !0),\n D.$slots[\"arrow-up\"] ? Z(\"\", !0) : (T(), $e(o(Va), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Z(\"\", !0),\n o(Q)(o(b), e.instance) ? (T(), $e(Ut, {\n key: 2,\n ref: \"rightIcon\",\n \"el-name\": \"action-next\",\n disabled: o(f)(!0),\n \"aria-label\": (le = o(d)) == null ? void 0 : le.nextMonth,\n class: we((me = o(h)) == null ? void 0 : me.navBtnNext),\n onActivate: V[3] || (V[3] = ($) => o(U)(!0, !0)),\n onSetRef: V[4] || (V[4] = ($) => p($, D.disableYearSelect ? 2 : 3))\n }, {\n default: ke(() => [\n D.$slots[D.vertical ? \"arrow-down\" : \"arrow-right\"] ? ie(D.$slots, D.vertical ? \"arrow-down\" : \"arrow-right\", { key: 0 }) : Z(\"\", !0),\n D.$slots[D.vertical ? \"arrow-down\" : \"arrow-right\"] ? Z(\"\", !0) : (T(), $e(ia(D.vertical ? o(Wa) : o(Ha)), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"disabled\", \"aria-label\", \"class\"])) : Z(\"\", !0)\n ])\n ], 64))\n ]);\n };\n }\n}), Sr = {\n class: \"dp__calendar_header\",\n role: \"row\"\n}, Pr = {\n key: 0,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\"\n}, Rr = [\"aria-label\"], Cr = {\n key: 0,\n class: \"dp__calendar_item dp__week_num\",\n role: \"gridcell\"\n}, Or = { class: \"dp__cell_inner\" }, _r = [\"id\", \"aria-pressed\", \"aria-disabled\", \"aria-label\", \"tabindex\", \"data-test\", \"onClick\", \"onTouchend\", \"onKeydown\", \"onMouseenter\", \"onMouseleave\", \"onMousedown\"], Br = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpCalendar\",\n props: {\n mappedDates: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n ...rt\n },\n emits: [\n \"select-date\",\n \"set-hover-date\",\n \"handle-scroll\",\n \"mount\",\n \"handle-swipe\",\n \"handle-space\",\n \"tooltip-open\",\n \"tooltip-close\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, { buildMultiLevelMatrix: i } = bt(), {\n defaultedTransitions: d,\n defaultedConfig: b,\n defaultedAriaLabels: c,\n defaultedMultiCalendars: L,\n defaultedWeekNumbers: v,\n defaultedMultiDates: _,\n defaultedUI: h\n } = Ce(n), C = ne(null), H = ne({\n bottom: \"\",\n left: \"\",\n transform: \"\"\n }), E = ne([]), U = ne(null), f = ne(!0), B = ne(\"\"), P = ne({ startX: 0, endX: 0, startY: 0, endY: 0 }), Q = ne([]), ae = ne({ left: \"50%\" }), oe = ne(!1), ee = J(() => n.calendar ? n.calendar(n.mappedDates) : n.mappedDates), S = J(() => n.dayNames ? Array.isArray(n.dayNames) ? n.dayNames : n.dayNames(n.locale, +n.weekStart) : yl(n.formatLocale, n.locale, +n.weekStart));\n We(() => {\n a(\"mount\", { cmp: \"calendar\", refs: E }), b.value.noSwipe || U.value && (U.value.addEventListener(\"touchstart\", p, { passive: !1 }), U.value.addEventListener(\"touchend\", se, { passive: !1 }), U.value.addEventListener(\"touchmove\", I, { passive: !1 })), n.monthChangeOnScroll && U.value && U.value.addEventListener(\"wheel\", s, { passive: !1 });\n });\n const x = ($) => $ ? n.vertical ? \"vNext\" : \"next\" : n.vertical ? \"vPrevious\" : \"previous\", Y = ($, ge) => {\n if (n.transitions) {\n const r = Ge(dt(G(), n.month, n.year));\n B.value = Be(Ge(dt(G(), $, ge)), r) ? d.value[x(!0)] : d.value[x(!1)], f.value = !1, xe(() => {\n f.value = !0;\n });\n }\n }, q = J(\n () => ({\n ...h.value.calendar ?? {}\n })\n ), de = J(() => ($) => {\n const ge = hl($);\n return {\n dp__marker_dot: ge.type === \"dot\",\n dp__marker_line: ge.type === \"line\"\n };\n }), ve = J(() => ($) => Me($, C.value)), y = J(() => ({\n dp__calendar: !0,\n dp__calendar_next: L.value.count > 0 && n.instance !== 0\n })), z = J(() => ($) => n.hideOffsetDates ? $.current : !0), te = async ($, ge) => {\n const { width: r, height: R } = $.getBoundingClientRect();\n C.value = ge.value;\n let O = { left: `${r / 2}px` }, W = -50;\n if (await xe(), Q.value[0]) {\n const { left: ue, width: w } = Q.value[0].getBoundingClientRect();\n ue < 0 && (O = { left: \"0\" }, W = 0, ae.value.left = `${r / 2}px`), window.innerWidth < ue + w && (O = { right: \"0\" }, W = 0, ae.value.left = `${w - r / 2}px`);\n }\n H.value = {\n bottom: `${R}px`,\n ...O,\n transform: `translateX(${W}%)`\n };\n }, g = async ($, ge, r) => {\n var O, W, ue;\n const R = Ie(E.value[ge][r]);\n R && ((O = $.marker) != null && O.customPosition && ((ue = (W = $.marker) == null ? void 0 : W.tooltip) != null && ue.length) ? H.value = $.marker.customPosition(R) : await te(R, $), a(\"tooltip-open\", $.marker));\n }, X = async ($, ge, r) => {\n var R, O;\n if (oe.value && _.value.enabled && _.value.dragSelect)\n return a(\"select-date\", $);\n a(\"set-hover-date\", $), (O = (R = $.marker) == null ? void 0 : R.tooltip) != null && O.length && await g($, ge, r);\n }, A = ($) => {\n C.value && (C.value = null, H.value = JSON.parse(JSON.stringify({ bottom: \"\", left: \"\", transform: \"\" })), a(\"tooltip-close\", $.marker));\n }, p = ($) => {\n P.value.startX = $.changedTouches[0].screenX, P.value.startY = $.changedTouches[0].screenY;\n }, se = ($) => {\n P.value.endX = $.changedTouches[0].screenX, P.value.endY = $.changedTouches[0].screenY, D();\n }, I = ($) => {\n n.vertical && !n.inline && $.preventDefault();\n }, D = () => {\n const $ = n.vertical ? \"Y\" : \"X\";\n Math.abs(P.value[`start${$}`] - P.value[`end${$}`]) > 10 && a(\"handle-swipe\", P.value[`start${$}`] > P.value[`end${$}`] ? \"right\" : \"left\");\n }, V = ($, ge, r) => {\n $ && (Array.isArray(E.value[ge]) ? E.value[ge][r] = $ : E.value[ge] = [$]), n.arrowNavigation && i(E.value, \"calendar\");\n }, s = ($) => {\n n.monthChangeOnScroll && ($.preventDefault(), a(\"handle-scroll\", $));\n }, M = ($) => v.value.type === \"local\" ? ol($.value, { weekStartsOn: +n.weekStart }) : v.value.type === \"iso\" ? sl($.value) : typeof v.value.type == \"function\" ? v.value.type($.value) : \"\", F = ($) => {\n const ge = $[0];\n return v.value.hideOnOffsetDates ? $.some((r) => r.current) ? M(ge) : \"\" : M(ge);\n }, u = ($, ge, r = !0) => {\n r && sn() || !r && !sn() || _.value.enabled || (yt($, b.value), a(\"select-date\", ge));\n }, le = ($) => {\n yt($, b.value);\n }, me = ($) => {\n _.value.enabled && _.value.dragSelect ? (oe.value = !0, a(\"select-date\", $)) : _.value.enabled && a(\"select-date\", $);\n };\n return t({ triggerTransition: Y }), ($, ge) => (T(), K(\"div\", {\n class: we(y.value)\n }, [\n ye(\"div\", {\n ref_key: \"calendarWrapRef\",\n ref: U,\n class: we(q.value),\n role: \"grid\"\n }, [\n ye(\"div\", Sr, [\n $.weekNumbers ? (T(), K(\"div\", Pr, Ue($.weekNumName), 1)) : Z(\"\", !0),\n (T(!0), K(be, null, Re(S.value, (r, R) => {\n var O, W;\n return T(), K(\"div\", {\n key: R,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\",\n \"data-test\": \"calendar-header\",\n \"aria-label\": (W = (O = o(c)) == null ? void 0 : O.weekDay) == null ? void 0 : W.call(O, R)\n }, [\n $.$slots[\"calendar-header\"] ? ie($.$slots, \"calendar-header\", {\n key: 0,\n day: r,\n index: R\n }) : Z(\"\", !0),\n $.$slots[\"calendar-header\"] ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ct(Ue(r), 1)\n ], 64))\n ], 8, Rr);\n }), 128))\n ]),\n ge[2] || (ge[2] = ye(\"div\", { class: \"dp__calendar_header_separator\" }, null, -1)),\n Ze(Nt, {\n name: B.value,\n css: !!$.transitions\n }, {\n default: ke(() => [\n f.value ? (T(), K(\"div\", {\n key: 0,\n class: \"dp__calendar\",\n role: \"rowgroup\",\n onMouseleave: ge[1] || (ge[1] = (r) => oe.value = !1)\n }, [\n (T(!0), K(be, null, Re(ee.value, (r, R) => (T(), K(\"div\", {\n key: R,\n class: \"dp__calendar_row\",\n role: \"row\"\n }, [\n $.weekNumbers ? (T(), K(\"div\", Cr, [\n ye(\"div\", Or, Ue(F(r.days)), 1)\n ])) : Z(\"\", !0),\n (T(!0), K(be, null, Re(r.days, (O, W) => {\n var ue, w, N;\n return T(), K(\"div\", {\n id: o(In)(O.value),\n ref_for: !0,\n ref: (ce) => V(ce, R, W),\n key: W + R,\n role: \"gridcell\",\n class: \"dp__calendar_item\",\n \"aria-pressed\": (O.classData.dp__active_date || O.classData.dp__range_start || O.classData.dp__range_start) ?? void 0,\n \"aria-disabled\": O.classData.dp__cell_disabled || void 0,\n \"aria-label\": (w = (ue = o(c)) == null ? void 0 : ue.day) == null ? void 0 : w.call(ue, O),\n tabindex: !O.current && $.hideOffsetDates ? void 0 : 0,\n \"data-test\": O.value,\n onClick: Wt((ce) => u(ce, O), [\"prevent\"]),\n onTouchend: (ce) => u(ce, O, !1),\n onKeydown: (ce) => o(Ke)(ce, () => $.$emit(\"select-date\", O)),\n onMouseenter: (ce) => X(O, R, W),\n onMouseleave: (ce) => A(O),\n onMousedown: (ce) => me(O),\n onMouseup: ge[0] || (ge[0] = (ce) => oe.value = !1)\n }, [\n ye(\"div\", {\n class: we([\"dp__cell_inner\", O.classData])\n }, [\n $.$slots.day && z.value(O) ? ie($.$slots, \"day\", {\n key: 0,\n day: +O.text,\n date: O.value\n }) : Z(\"\", !0),\n $.$slots.day ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ct(Ue(O.text), 1)\n ], 64)),\n O.marker && z.value(O) ? (T(), K(be, { key: 2 }, [\n $.$slots.marker ? ie($.$slots, \"marker\", {\n key: 0,\n marker: O.marker,\n day: +O.text,\n date: O.value\n }) : (T(), K(\"div\", {\n key: 1,\n class: we(de.value(O.marker)),\n style: tt(O.marker.color ? { backgroundColor: O.marker.color } : {})\n }, null, 6))\n ], 64)) : Z(\"\", !0),\n ve.value(O.value) ? (T(), K(\"div\", {\n key: 3,\n ref_for: !0,\n ref_key: \"activeTooltip\",\n ref: Q,\n class: \"dp__marker_tooltip\",\n style: tt(H.value)\n }, [\n (N = O.marker) != null && N.tooltip ? (T(), K(\"div\", {\n key: 0,\n class: \"dp__tooltip_content\",\n onClick: le\n }, [\n (T(!0), K(be, null, Re(O.marker.tooltip, (ce, he) => (T(), K(\"div\", {\n key: he,\n class: \"dp__tooltip_text\"\n }, [\n $.$slots[\"marker-tooltip\"] ? ie($.$slots, \"marker-tooltip\", {\n key: 0,\n tooltip: ce,\n day: O.value\n }) : Z(\"\", !0),\n $.$slots[\"marker-tooltip\"] ? Z(\"\", !0) : (T(), K(be, { key: 1 }, [\n ye(\"div\", {\n class: \"dp__tooltip_mark\",\n style: tt(ce.color ? { backgroundColor: ce.color } : {})\n }, null, 4),\n ye(\"div\", null, Ue(ce.text), 1)\n ], 64))\n ]))), 128)),\n ye(\"div\", {\n class: \"dp__arrow_bottom_tp\",\n style: tt(ae.value)\n }, null, 4)\n ])) : Z(\"\", !0)\n ], 4)) : Z(\"\", !0)\n ], 2)\n ], 40, _r);\n }), 128))\n ]))), 128))\n ], 32)) : Z(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 2)\n ], 2));\n }\n}), vn = (e) => Array.isArray(e), Yr = (e, t, l, a) => {\n const n = ne([]), i = ne(/* @__PURE__ */ new Date()), d = ne(), b = () => p(e.isTextInputDate), { modelValue: c, calendars: L, time: v, today: _ } = Jt(e, t, b), {\n defaultedMultiCalendars: h,\n defaultedStartTime: C,\n defaultedRange: H,\n defaultedConfig: E,\n defaultedTz: U,\n propDates: f,\n defaultedMultiDates: B\n } = Ce(e), { validateMonthYearInRange: P, isDisabled: Q, isDateRangeAllowed: ae, checkMinMaxRange: oe } = kt(e), { updateTimeValues: ee, getSetDateTime: S, setTime: x, assignStartTime: Y, validateTime: q, disabledTimesConfig: de } = Un(e, v, c, a), ve = J(\n () => (k) => L.value[k] ? L.value[k].month : 0\n ), y = J(\n () => (k) => L.value[k] ? L.value[k].year : 0\n ), z = (k) => !E.value.keepViewOnOffsetClick || k ? !0 : !d.value, te = (k, m, j, re = !1) => {\n var Ae, Fe;\n z(re) && (L.value[k] || (L.value[k] = { month: 0, year: 0 }), L.value[k].month = on(m) ? (Ae = L.value[k]) == null ? void 0 : Ae.month : m, L.value[k].year = on(j) ? (Fe = L.value[k]) == null ? void 0 : Fe.year : j);\n }, g = () => {\n e.autoApply && t(\"select-date\");\n };\n We(() => {\n e.shadow || (c.value || ($(), C.value && Y(C.value)), p(!0), e.focusStartDate && e.startDate && $());\n });\n const X = J(() => {\n var k;\n return (k = e.flow) != null && k.length && !e.partialFlow ? e.flowStep === e.flow.length : !0;\n }), A = () => {\n e.autoApply && X.value && t(\"auto-apply\", e.partialFlow ? e.flowStep !== e.flow.length : !1);\n }, p = (k = !1) => {\n if (c.value)\n return Array.isArray(c.value) ? (n.value = c.value, F(k)) : D(c.value, k);\n if (h.value.count && k && !e.startDate)\n return I(G(), k);\n }, se = () => Array.isArray(c.value) && H.value.enabled ? De(c.value[0]) === De(c.value[1] ?? c.value[0]) : !1, I = (k = /* @__PURE__ */ new Date(), m = !1) => {\n if ((!h.value.count || !h.value.static || m) && te(0, De(k), pe(k)), h.value.count && (!h.value.solo || !c.value || se()))\n for (let j = 1; j < h.value.count; j++) {\n const re = Te(G(), { month: ve.value(j - 1), year: y.value(j - 1) }), Ae = Dn(re, { months: 1 });\n L.value[j] = { month: De(Ae), year: pe(Ae) };\n }\n }, D = (k, m) => {\n I(k), x(\"hours\", ft(k)), x(\"minutes\", ht(k)), x(\"seconds\", Bt(k)), h.value.count && m && me();\n }, V = (k) => {\n if (h.value.count) {\n if (h.value.solo) return 0;\n const m = De(k[0]), j = De(k[1]);\n return Math.abs(j - m) < h.value.count ? 0 : 1;\n }\n return 1;\n }, s = (k, m) => {\n k[1] && H.value.showLastInRange ? I(k[V(k)], m) : I(k[0], m);\n const j = (re, Ae) => [\n re(k[0]),\n k[1] ? re(k[1]) : v[Ae][1]\n ];\n x(\"hours\", j(ft, \"hours\")), x(\"minutes\", j(ht, \"minutes\")), x(\"seconds\", j(Bt, \"seconds\"));\n }, M = (k, m) => {\n if ((H.value.enabled || e.weekPicker) && !B.value.enabled)\n return s(k, m);\n if (B.value.enabled && m) {\n const j = k[k.length - 1];\n return D(j, m);\n }\n }, F = (k) => {\n const m = c.value;\n M(m, k), h.value.count && h.value.solo && me();\n }, u = (k, m) => {\n const j = Te(G(), { month: ve.value(m), year: y.value(m) }), re = k < 0 ? At(j, 1) : jt(j, 1);\n P(De(re), pe(re), k < 0, e.preventMinMaxNavigation) && (te(m, De(re), pe(re)), t(\"update-month-year\", { instance: m, month: De(re), year: pe(re) }), h.value.count && !h.value.solo && le(m), l());\n }, le = (k) => {\n for (let m = k - 1; m >= 0; m--) {\n const j = jt(Te(G(), { month: ve.value(m + 1), year: y.value(m + 1) }), 1);\n te(m, De(j), pe(j));\n }\n for (let m = k + 1; m <= h.value.count - 1; m++) {\n const j = At(Te(G(), { month: ve.value(m - 1), year: y.value(m - 1) }), 1);\n te(m, De(j), pe(j));\n }\n }, me = () => {\n if (Array.isArray(c.value) && c.value.length === 2) {\n const k = G(\n G(c.value[1] ? c.value[1] : At(c.value[0], 1))\n ), [m, j] = [De(c.value[0]), pe(c.value[0])], [re, Ae] = [De(c.value[1]), pe(c.value[1])];\n (m !== re || m === re && j !== Ae) && h.value.solo && te(1, De(k), pe(k));\n } else c.value && !Array.isArray(c.value) && (te(0, De(c.value), pe(c.value)), I(G()));\n }, $ = () => {\n e.startDate && (te(0, De(G(e.startDate)), pe(G(e.startDate))), h.value.count && le(0));\n }, ge = (k, m) => {\n if (e.monthChangeOnScroll) {\n const j = (/* @__PURE__ */ new Date()).getTime() - i.value.getTime(), re = Math.abs(k.deltaY);\n let Ae = 500;\n re > 1 && (Ae = 100), re > 100 && (Ae = 0), j > Ae && (i.value = /* @__PURE__ */ new Date(), u(e.monthChangeOnScroll !== \"inverse\" ? -k.deltaY : k.deltaY, m));\n }\n }, r = (k, m, j = !1) => {\n e.monthChangeOnArrows && e.vertical === j && R(k, m);\n }, R = (k, m) => {\n u(k === \"right\" ? -1 : 1, m);\n }, O = (k) => {\n if (f.value.markers)\n return sa(k.value, f.value.markers);\n }, W = (k, m) => {\n switch (e.sixWeeks === !0 ? \"append\" : e.sixWeeks) {\n case \"prepend\":\n return [!0, !1];\n case \"center\":\n return [k == 0, !0];\n case \"fair\":\n return [k == 0 || m > k, !0];\n case \"append\":\n return [!1, !1];\n default:\n return [!1, !1];\n }\n }, ue = (k, m, j, re) => {\n if (e.sixWeeks && k.length < 6) {\n const Ae = 6 - k.length, Fe = (m.getDay() + 7 - re) % 7, xt = 6 - (j.getDay() + 7 - re) % 7, [zt, Da] = W(Fe, xt);\n for (let Dt = 1; Dt <= Ae; Dt++)\n if (Da ? !!(Dt % 2) == zt : zt) {\n const ea = k[0].days[0], Ma = w($t(ea.value, -7), De(m));\n k.unshift({ days: Ma });\n } else {\n const ea = k[k.length - 1], Ma = ea.days[ea.days.length - 1], Wn = w($t(Ma.value, 1), De(m));\n k.push({ days: Wn });\n }\n }\n return k;\n }, w = (k, m) => {\n const j = G(k), re = [];\n for (let Ae = 0; Ae < 7; Ae++) {\n const Fe = $t(j, Ae), wt = De(Fe) !== m;\n re.push({\n text: e.hideOffsetDates && wt ? \"\" : Fe.getDate(),\n value: Fe,\n current: !wt,\n classData: {}\n });\n }\n return re;\n }, N = (k, m) => {\n const j = [], re = new Date(m, k), Ae = new Date(m, k + 1, 0), Fe = e.weekStart, wt = La(re, { weekStartsOn: Fe }), xt = (zt) => {\n const Da = w(zt, k);\n if (j.push({ days: Da }), !j[j.length - 1].days.some(\n (Dt) => Me(Ge(Dt.value), Ge(Ae))\n )) {\n const Dt = $t(zt, 7);\n xt(Dt);\n }\n };\n return xt(wt), ue(j, re, Ae, Fe);\n }, ce = (k) => {\n const m = gt(G(k.value), v.hours, v.minutes, Xe());\n t(\"date-update\", m), B.value.enabled ? Xa(m, c, B.value.limit) : c.value = m, a(), xe().then(() => {\n A();\n });\n }, he = (k) => H.value.noDisabledRange ? Cn(n.value[0], k).some((j) => Q(j)) : !1, et = () => {\n n.value = c.value ? c.value.slice() : [], n.value.length === 2 && !(H.value.fixedStart || H.value.fixedEnd) && (n.value = []);\n }, fe = (k, m) => {\n const j = [\n G(k.value),\n $t(G(k.value), +H.value.autoRange)\n ];\n ae(j) ? (m && vt(k.value), n.value = j) : t(\"invalid-date\", k.value);\n }, vt = (k) => {\n const m = De(G(k)), j = pe(G(k));\n if (te(0, m, j), h.value.count > 0)\n for (let re = 1; re < h.value.count; re++) {\n const Ae = Al(\n Te(G(k), { year: y.value(re - 1), month: ve.value(re - 1) })\n );\n te(re, Ae.month, Ae.year);\n }\n }, ot = (k) => {\n if (he(k.value) || !oe(k.value, c.value, H.value.fixedStart ? 0 : 1))\n return t(\"invalid-date\", k.value);\n n.value = Ln(G(k.value), c, t, H);\n }, Ft = (k, m) => {\n if (et(), H.value.autoRange) return fe(k, m);\n if (H.value.fixedStart || H.value.fixedEnd) return ot(k);\n n.value[0] ? oe(G(k.value), c.value) && !he(k.value) ? Oe(G(k.value), G(n.value[0])) ? (n.value.unshift(G(k.value)), t(\"range-end\", n.value[0])) : (n.value[1] = G(k.value), t(\"range-end\", n.value[1])) : (e.autoApply && t(\"auto-apply-invalid\", k.value), t(\"invalid-date\", k.value)) : (n.value[0] = G(k.value), t(\"range-start\", n.value[0]));\n }, Xe = (k = !0) => e.enableSeconds ? Array.isArray(v.seconds) ? k ? v.seconds[0] : v.seconds[1] : v.seconds : 0, Lt = (k) => {\n n.value[k] = gt(\n n.value[k],\n v.hours[k],\n v.minutes[k],\n Xe(k !== 1)\n );\n }, pa = () => {\n var k, m;\n n.value[0] && n.value[1] && +((k = n.value) == null ? void 0 : k[0]) > +((m = n.value) == null ? void 0 : m[1]) && (n.value.reverse(), t(\"range-start\", n.value[0]), t(\"range-end\", n.value[1]));\n }, Zt = () => {\n n.value.length && (n.value[0] && !n.value[1] ? Lt(0) : (Lt(0), Lt(1), a()), pa(), c.value = n.value.slice(), va(n.value, t, e.autoApply, e.modelAuto));\n }, ya = (k, m = !1) => {\n if (Q(k.value) || !k.current && e.hideOffsetDates) return t(\"invalid-date\", k.value);\n if (d.value = JSON.parse(JSON.stringify(k)), !H.value.enabled) return ce(k);\n vn(v.hours) && vn(v.minutes) && !B.value.enabled && (Ft(k, m), Zt());\n }, ga = (k, m) => {\n var re;\n te(k, m.month, m.year, !0), h.value.count && !h.value.solo && le(k), t(\"update-month-year\", { instance: k, month: m.month, year: m.year }), l(h.value.solo ? k : void 0);\n const j = (re = e.flow) != null && re.length ? e.flow[e.flowStep] : void 0;\n !m.fromNav && (j === He.month || j === He.year) && a();\n }, ha = (k, m) => {\n Fn({\n value: k,\n modelValue: c,\n range: H.value.enabled,\n timezone: m ? void 0 : U.value.timezone\n }), g(), e.multiCalendars && xe().then(() => p(!0));\n }, ba = () => {\n const k = ja(G(), U.value);\n H.value.enabled ? c.value && Array.isArray(c.value) && c.value[0] ? c.value = Oe(k, c.value[0]) ? [k, c.value[0]] : [c.value[0], k] : c.value = [k] : c.value = k, g();\n }, ka = () => {\n if (Array.isArray(c.value))\n if (B.value.enabled) {\n const k = wa();\n c.value[c.value.length - 1] = S(k);\n } else\n c.value = c.value.map((k, m) => k && S(k, m));\n else\n c.value = S(c.value);\n t(\"time-update\");\n }, wa = () => Array.isArray(c.value) && c.value.length ? c.value[c.value.length - 1] : null;\n return {\n calendars: L,\n modelValue: c,\n month: ve,\n year: y,\n time: v,\n disabledTimesConfig: de,\n today: _,\n validateTime: q,\n getCalendarDays: N,\n getMarker: O,\n handleScroll: ge,\n handleSwipe: R,\n handleArrow: r,\n selectDate: ya,\n updateMonthYear: ga,\n presetDate: ha,\n selectCurrentDate: ba,\n updateTime: (k, m = !0, j = !1) => {\n ee(k, m, j, ka);\n },\n assignMonthAndYear: I\n };\n}, Ir = { key: 0 }, Nr = /* @__PURE__ */ Le({\n __name: \"DatePicker\",\n props: {\n ...rt\n },\n emits: [\n \"tooltip-open\",\n \"tooltip-close\",\n \"mount\",\n \"update:internal-model-value\",\n \"update-flow-step\",\n \"reset-flow\",\n \"auto-apply\",\n \"focus-menu\",\n \"select-date\",\n \"range-start\",\n \"range-end\",\n \"invalid-fixed-range\",\n \"time-update\",\n \"am-pm-change\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"recalculate-position\",\n \"update-month-year\",\n \"auto-apply-invalid\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, {\n calendars: i,\n month: d,\n year: b,\n modelValue: c,\n time: L,\n disabledTimesConfig: v,\n today: _,\n validateTime: h,\n getCalendarDays: C,\n getMarker: H,\n handleArrow: E,\n handleScroll: U,\n handleSwipe: f,\n selectDate: B,\n updateMonthYear: P,\n presetDate: Q,\n selectCurrentDate: ae,\n updateTime: oe,\n assignMonthAndYear: ee\n } = Yr(n, a, se, I), S = Pt(), { setHoverDate: x, getDayClassData: Y, clearHoverDate: q } = Jr(c, n), { defaultedMultiCalendars: de } = Ce(n), ve = ne([]), y = ne([]), z = ne(null), te = Je(S, \"calendar\"), g = Je(S, \"monthYear\"), X = Je(S, \"timePicker\"), A = (r) => {\n n.shadow || a(\"mount\", r);\n };\n at(\n i,\n () => {\n n.shadow || setTimeout(() => {\n a(\"recalculate-position\");\n }, 0);\n },\n { deep: !0 }\n ), at(\n de,\n (r, R) => {\n r.count - R.count > 0 && ee();\n },\n { deep: !0 }\n );\n const p = J(() => (r) => C(d.value(r), b.value(r)).map((R) => ({\n ...R,\n days: R.days.map((O) => (O.marker = H(O), O.classData = Y(O), O))\n })));\n function se(r) {\n var R;\n r || r === 0 ? (R = y.value[r]) == null || R.triggerTransition(d.value(r), b.value(r)) : y.value.forEach((O, W) => O.triggerTransition(d.value(W), b.value(W)));\n }\n function I() {\n a(\"update-flow-step\");\n }\n const D = (r, R = !1) => {\n B(r, R), n.spaceConfirm && a(\"select-date\");\n }, V = (r, R, O = 0) => {\n var W;\n (W = ve.value[O]) == null || W.toggleMonthPicker(r, R);\n }, s = (r, R, O = 0) => {\n var W;\n (W = ve.value[O]) == null || W.toggleYearPicker(r, R);\n }, M = (r, R, O) => {\n var W;\n (W = z.value) == null || W.toggleTimePicker(r, R, O);\n }, F = (r, R) => {\n var O;\n if (!n.range) {\n const W = c.value ? c.value : _, ue = R ? new Date(R) : W, w = r ? La(ue, { weekStartsOn: 1 }) : hn(ue, { weekStartsOn: 1 });\n B({\n value: w,\n current: De(ue) === d.value(0),\n text: \"\",\n classData: {}\n }), (O = document.getElementById(In(w))) == null || O.focus();\n }\n }, u = (r) => {\n var R;\n (R = ve.value[0]) == null || R.handleMonthYearChange(r, !0);\n }, le = (r) => {\n P(0, { month: d.value(0), year: b.value(0) + (r ? 1 : -1), fromNav: !0 });\n }, me = (r, R) => {\n r === He.time && a(`time-picker-${R ? \"open\" : \"close\"}`), a(\"overlay-toggle\", { open: R, overlay: r });\n }, $ = (r) => {\n a(\"overlay-toggle\", { open: !1, overlay: r }), a(\"focus-menu\");\n };\n return t({\n clearHoverDate: q,\n presetDate: Q,\n selectCurrentDate: ae,\n toggleMonthPicker: V,\n toggleYearPicker: s,\n toggleTimePicker: M,\n handleArrow: E,\n updateMonthYear: P,\n getSidebarProps: () => ({\n modelValue: c,\n month: d,\n year: b,\n time: L,\n updateTime: oe,\n updateMonthYear: P,\n selectDate: B,\n presetDate: Q\n }),\n changeMonth: u,\n changeYear: le,\n selectWeekDate: F\n }), (r, R) => (T(), K(be, null, [\n Ze(fa, {\n \"multi-calendars\": o(de).count,\n collapse: r.collapse\n }, {\n default: ke(({ instance: O, index: W }) => [\n r.disableMonthYearSelect ? Z(\"\", !0) : (T(), $e(Tr, Ee({\n key: 0,\n ref: (ue) => {\n ue && (ve.value[W] = ue);\n },\n months: o($n)(r.formatLocale, r.locale, r.monthNameFormat),\n years: o(Ka)(r.yearRange, r.locale, r.reverseYears),\n month: o(d)(O),\n year: o(b)(O),\n instance: O\n }, r.$props, {\n onMount: R[0] || (R[0] = (ue) => A(o(Tt).header)),\n onResetFlow: R[1] || (R[1] = (ue) => r.$emit(\"reset-flow\")),\n onUpdateMonthYear: (ue) => o(P)(O, ue),\n onOverlayClosed: $,\n onOverlayOpened: R[2] || (R[2] = (ue) => r.$emit(\"overlay-toggle\", { open: !0, overlay: ue }))\n }), Ve({ _: 2 }, [\n Re(o(g), (ue, w) => ({\n name: ue,\n fn: ke((N) => [\n ie(r.$slots, ue, Ne(Qe(N)))\n ])\n }))\n ]), 1040, [\"months\", \"years\", \"month\", \"year\", \"instance\", \"onUpdateMonthYear\"])),\n Ze(Br, Ee({\n ref: (ue) => {\n ue && (y.value[W] = ue);\n },\n \"mapped-dates\": p.value(O),\n month: o(d)(O),\n year: o(b)(O),\n instance: O\n }, r.$props, {\n onSelectDate: (ue) => o(B)(ue, O !== 1),\n onHandleSpace: (ue) => D(ue, O !== 1),\n onSetHoverDate: R[3] || (R[3] = (ue) => o(x)(ue)),\n onHandleScroll: (ue) => o(U)(ue, O),\n onHandleSwipe: (ue) => o(f)(ue, O),\n onMount: R[4] || (R[4] = (ue) => A(o(Tt).calendar)),\n onResetFlow: R[5] || (R[5] = (ue) => r.$emit(\"reset-flow\")),\n onTooltipOpen: R[6] || (R[6] = (ue) => r.$emit(\"tooltip-open\", ue)),\n onTooltipClose: R[7] || (R[7] = (ue) => r.$emit(\"tooltip-close\", ue))\n }), Ve({ _: 2 }, [\n Re(o(te), (ue, w) => ({\n name: ue,\n fn: ke((N) => [\n ie(r.$slots, ue, Ne(Qe({ ...N })))\n ])\n }))\n ]), 1040, [\"mapped-dates\", \"month\", \"year\", \"instance\", \"onSelectDate\", \"onHandleSpace\", \"onHandleScroll\", \"onHandleSwipe\"])\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\"]),\n r.enableTimePicker ? (T(), K(\"div\", Ir, [\n r.$slots[\"time-picker\"] ? ie(r.$slots, \"time-picker\", Ne(Ee({ key: 0 }, { time: o(L), updateTime: o(oe) }))) : (T(), $e(Hn, Ee({\n key: 1,\n ref_key: \"timePickerRef\",\n ref: z\n }, r.$props, {\n hours: o(L).hours,\n minutes: o(L).minutes,\n seconds: o(L).seconds,\n \"internal-model-value\": r.internalModelValue,\n \"disabled-times-config\": o(v),\n \"validate-time\": o(h),\n onMount: R[8] || (R[8] = (O) => A(o(Tt).timePicker)),\n \"onUpdate:hours\": R[9] || (R[9] = (O) => o(oe)(O)),\n \"onUpdate:minutes\": R[10] || (R[10] = (O) => o(oe)(O, !1)),\n \"onUpdate:seconds\": R[11] || (R[11] = (O) => o(oe)(O, !1, !0)),\n onResetFlow: R[12] || (R[12] = (O) => r.$emit(\"reset-flow\")),\n onOverlayClosed: R[13] || (R[13] = (O) => me(O, !1)),\n onOverlayOpened: R[14] || (R[14] = (O) => me(O, !0)),\n onAmPmChange: R[15] || (R[15] = (O) => r.$emit(\"am-pm-change\", O))\n }), Ve({ _: 2 }, [\n Re(o(X), (O, W) => ({\n name: O,\n fn: ke((ue) => [\n ie(r.$slots, O, Ne(Qe(ue)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\", \"validate-time\"]))\n ])) : Z(\"\", !0)\n ], 64));\n }\n}), Er = (e, t) => {\n const l = ne(), {\n defaultedMultiCalendars: a,\n defaultedConfig: n,\n defaultedHighlight: i,\n defaultedRange: d,\n propDates: b,\n defaultedFilters: c,\n defaultedMultiDates: L\n } = Ce(e), { modelValue: v, year: _, month: h, calendars: C } = Jt(e, t), { isDisabled: H } = kt(e), { selectYear: E, groupedYears: U, showYearPicker: f, isDisabled: B, toggleYearPicker: P, handleYearSelect: Q, handleYear: ae } = zn({\n modelValue: v,\n multiCalendars: a,\n range: d,\n highlight: i,\n calendars: C,\n propDates: b,\n month: h,\n year: _,\n filters: c,\n props: e,\n emit: t\n }), oe = (g, X) => [g, X].map((A) => ut(A, \"MMMM\", { locale: e.formatLocale })).join(\"-\"), ee = J(() => (g) => v.value ? Array.isArray(v.value) ? v.value.some((X) => tn(g, X)) : tn(v.value, g) : !1), S = (g) => {\n if (d.value.enabled) {\n if (Array.isArray(v.value)) {\n const X = Me(g, v.value[0]) || Me(g, v.value[1]);\n return da(v.value, l.value, g) && !X;\n }\n return !1;\n }\n return !1;\n }, x = (g, X) => g.quarter === nn(X) && g.year === pe(X), Y = (g) => typeof i.value == \"function\" ? i.value({ quarter: nn(g), year: pe(g) }) : !!i.value.quarters.find((X) => x(X, g)), q = J(() => (g) => {\n const X = Te(/* @__PURE__ */ new Date(), { year: _.value(g) });\n return ul({\n start: oa(X),\n end: wn(X)\n }).map((A) => {\n const p = il(A), se = an(A), I = H(A), D = S(p), V = Y(p);\n return {\n text: oe(p, se),\n value: p,\n active: ee.value(p),\n highlighted: V,\n disabled: I,\n isBetween: D\n };\n });\n }), de = (g) => {\n Xa(g, v, L.value.limit), t(\"auto-apply\", !0);\n }, ve = (g) => {\n v.value = Ja(v, g, t), va(v.value, t, e.autoApply, e.modelAuto);\n }, y = (g) => {\n v.value = g, t(\"auto-apply\");\n };\n return {\n defaultedConfig: n,\n defaultedMultiCalendars: a,\n groupedYears: U,\n year: _,\n isDisabled: B,\n quarters: q,\n showYearPicker: f,\n modelValue: v,\n setHoverDate: (g) => {\n l.value = g;\n },\n selectYear: E,\n selectQuarter: (g, X, A) => {\n if (!A)\n return C.value[X].month = De(an(g)), L.value.enabled ? de(g) : d.value.enabled ? ve(g) : y(g);\n },\n toggleYearPicker: P,\n handleYearSelect: Q,\n handleYear: ae\n };\n}, Fr = { class: \"dp--quarter-items\" }, Lr = [\"data-test\", \"disabled\", \"onClick\", \"onMouseover\"], zr = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"QuarterPicker\",\n props: {\n ...rt\n },\n emits: [\n \"update:internal-model-value\",\n \"reset-flow\",\n \"overlay-closed\",\n \"auto-apply\",\n \"range-start\",\n \"range-end\",\n \"overlay-toggle\",\n \"update-month-year\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, i = Pt(), d = Je(i, \"yearMode\"), {\n defaultedMultiCalendars: b,\n defaultedConfig: c,\n groupedYears: L,\n year: v,\n isDisabled: _,\n quarters: h,\n modelValue: C,\n showYearPicker: H,\n setHoverDate: E,\n selectQuarter: U,\n toggleYearPicker: f,\n handleYearSelect: B,\n handleYear: P\n } = Er(n, a);\n return t({ getSidebarProps: () => ({\n modelValue: C,\n year: v,\n selectQuarter: U,\n handleYearSelect: B,\n handleYear: P\n }) }), (ae, oe) => (T(), $e(fa, {\n \"multi-calendars\": o(b).count,\n collapse: ae.collapse,\n stretch: \"\"\n }, {\n default: ke(({ instance: ee }) => [\n ye(\"div\", {\n class: \"dp-quarter-picker-wrap\",\n style: tt({ minHeight: `${o(c).modeHeight}px` })\n }, [\n ae.$slots[\"top-extra\"] ? ie(ae.$slots, \"top-extra\", {\n key: 0,\n value: ae.internalModelValue\n }) : Z(\"\", !0),\n ye(\"div\", null, [\n Ze(En, Ee(ae.$props, {\n items: o(L)(ee),\n instance: ee,\n \"show-year-picker\": o(H)[ee],\n year: o(v)(ee),\n \"is-disabled\": (S) => o(_)(ee, S),\n onHandleYear: (S) => o(P)(ee, S),\n onYearSelect: (S) => o(B)(S, ee),\n onToggleYearPicker: (S) => o(f)(ee, S == null ? void 0 : S.flow, S == null ? void 0 : S.show)\n }), Ve({ _: 2 }, [\n Re(o(d), (S, x) => ({\n name: S,\n fn: ke((Y) => [\n ie(ae.$slots, S, Ne(Qe(Y)))\n ])\n }))\n ]), 1040, [\"items\", \"instance\", \"show-year-picker\", \"year\", \"is-disabled\", \"onHandleYear\", \"onYearSelect\", \"onToggleYearPicker\"])\n ]),\n ye(\"div\", Fr, [\n (T(!0), K(be, null, Re(o(h)(ee), (S, x) => (T(), K(\"div\", { key: x }, [\n ye(\"button\", {\n type: \"button\",\n class: we([\"dp--qr-btn\", {\n \"dp--qr-btn-active\": S.active,\n \"dp--qr-btn-between\": S.isBetween,\n \"dp--qr-btn-disabled\": S.disabled,\n \"dp--highlighted\": S.highlighted\n }]),\n \"data-test\": S.value,\n disabled: S.disabled,\n onClick: (Y) => o(U)(S.value, ee, S.disabled),\n onMouseover: (Y) => o(E)(S.value)\n }, [\n ae.$slots.quarter ? ie(ae.$slots, \"quarter\", {\n key: 0,\n value: S.value,\n text: S.text\n }) : (T(), K(be, { key: 1 }, [\n ct(Ue(S.text), 1)\n ], 64))\n ], 42, Lr)\n ]))), 128))\n ])\n ], 4)\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\"]));\n }\n}), Hr = [\"id\", \"tabindex\", \"role\", \"aria-label\"], Ur = {\n key: 0,\n class: \"dp--menu-load-container\"\n}, Vr = {\n key: 1,\n class: \"dp--menu-header\"\n}, Wr = {\n key: 0,\n class: \"dp__sidebar_left\"\n}, jr = [\"data-test\", \"onClick\", \"onKeydown\"], Kr = {\n key: 2,\n class: \"dp__sidebar_right\"\n}, Gr = {\n key: 3,\n class: \"dp__action_extra\"\n}, mn = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerMenu\",\n props: {\n ...ca,\n shadow: { type: Boolean, default: !1 },\n openOnTop: { type: Boolean, default: !1 },\n internalModelValue: { type: [Date, Array], default: null },\n noOverlayFocus: { type: Boolean, default: !1 },\n collapse: { type: Boolean, default: !1 },\n getInputRect: { type: Function, default: () => ({}) },\n isTextInputDate: { type: Boolean, default: !1 }\n },\n emits: [\n \"close-picker\",\n \"select-date\",\n \"auto-apply\",\n \"time-update\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"update:internal-model-value\",\n \"recalculate-position\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\",\n \"auto-apply-invalid\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, i = ne(null), d = J(() => {\n const { openOnTop: w, ...N } = n;\n return {\n ...N,\n flowStep: x.value,\n collapse: n.collapse,\n noOverlayFocus: n.noOverlayFocus,\n menuWrapRef: i.value\n };\n }), { setMenuFocused: b, setShiftKey: c, control: L } = Nn(), v = Pt(), { defaultedTextInput: _, defaultedInline: h, defaultedConfig: C, defaultedUI: H } = Ce(n), E = ne(null), U = ne(0), f = ne(null), B = ne(!1), P = ne(null);\n We(() => {\n if (!n.shadow) {\n B.value = !0, Q(), window.addEventListener(\"resize\", Q);\n const w = Ie(i);\n if (w && !_.value.enabled && !h.value.enabled && (b(!0), te()), w) {\n const N = (ce) => {\n C.value.allowPreventDefault && ce.preventDefault(), yt(ce, C.value, !0);\n };\n w.addEventListener(\"pointerdown\", N), w.addEventListener(\"mousedown\", N);\n }\n }\n }), ua(() => {\n window.removeEventListener(\"resize\", Q);\n });\n const Q = () => {\n const w = Ie(f);\n w && (U.value = w.getBoundingClientRect().width);\n }, { arrowRight: ae, arrowLeft: oe, arrowDown: ee, arrowUp: S } = bt(), { flowStep: x, updateFlowStep: Y, childMount: q, resetFlow: de, handleFlow: ve } = Zr(n, a, P), y = J(() => n.monthPicker ? rr : n.yearPicker ? sr : n.timePicker ? kr : n.quarterPicker ? zr : Nr), z = J(() => {\n var ce;\n if (C.value.arrowLeft) return C.value.arrowLeft;\n const w = (ce = i.value) == null ? void 0 : ce.getBoundingClientRect(), N = n.getInputRect();\n return (N == null ? void 0 : N.width) < (U == null ? void 0 : U.value) && (N == null ? void 0 : N.left) <= ((w == null ? void 0 : w.left) ?? 0) ? `${(N == null ? void 0 : N.width) / 2}px` : (N == null ? void 0 : N.right) >= ((w == null ? void 0 : w.right) ?? 0) && (N == null ? void 0 : N.width) < (U == null ? void 0 : U.value) ? `${(U == null ? void 0 : U.value) - (N == null ? void 0 : N.width) / 2}px` : \"50%\";\n }), te = () => {\n const w = Ie(i);\n w && w.focus({ preventScroll: !0 });\n }, g = J(() => {\n var w;\n return ((w = P.value) == null ? void 0 : w.getSidebarProps()) || {};\n }), X = () => {\n n.openOnTop && a(\"recalculate-position\");\n }, A = Je(v, \"action\"), p = J(() => n.monthPicker || n.yearPicker ? Je(v, \"monthYear\") : n.timePicker ? Je(v, \"timePicker\") : Je(v, \"shared\")), se = J(() => n.openOnTop ? \"dp__arrow_bottom\" : \"dp__arrow_top\"), I = J(() => ({\n dp__menu_disabled: n.disabled,\n dp__menu_readonly: n.readonly,\n \"dp-menu-loading\": n.loading\n })), D = J(\n () => ({\n dp__menu: !0,\n dp__menu_index: !h.value.enabled,\n dp__relative: h.value.enabled,\n ...H.value.menu ?? {}\n })\n ), V = (w) => {\n yt(w, C.value, !0);\n }, s = () => {\n n.escClose && a(\"close-picker\");\n }, M = (w) => {\n if (n.arrowNavigation) {\n if (w === je.up) return S();\n if (w === je.down) return ee();\n if (w === je.left) return oe();\n if (w === je.right) return ae();\n } else w === je.left || w === je.up ? $(\"handleArrow\", je.left, 0, w === je.up) : $(\"handleArrow\", je.right, 0, w === je.down);\n }, F = (w) => {\n c(w.shiftKey), !n.disableMonthYearSelect && w.code === Pe.tab && w.target.classList.contains(\"dp__menu\") && L.value.shiftKeyInMenu && (w.preventDefault(), yt(w, C.value, !0), a(\"close-picker\"));\n }, u = () => {\n te(), a(\"time-picker-close\");\n }, le = (w) => {\n var N, ce, he;\n (N = P.value) == null || N.toggleTimePicker(!1, !1), (ce = P.value) == null || ce.toggleMonthPicker(!1, !1, w), (he = P.value) == null || he.toggleYearPicker(!1, !1, w);\n }, me = (w, N = 0) => {\n var ce, he, et;\n return w === \"month\" ? (ce = P.value) == null ? void 0 : ce.toggleMonthPicker(!1, !0, N) : w === \"year\" ? (he = P.value) == null ? void 0 : he.toggleYearPicker(!1, !0, N) : w === \"time\" ? (et = P.value) == null ? void 0 : et.toggleTimePicker(!0, !1) : le(N);\n }, $ = (w, ...N) => {\n var ce, he;\n (ce = P.value) != null && ce[w] && ((he = P.value) == null || he[w](...N));\n }, ge = () => {\n $(\"selectCurrentDate\");\n }, r = (w, N) => {\n $(\"presetDate\", w, N);\n }, R = () => {\n $(\"clearHoverDate\");\n }, O = (w, N) => {\n $(\"updateMonthYear\", w, N);\n }, W = (w, N) => {\n w.preventDefault(), M(N);\n }, ue = (w) => {\n var N, ce, he;\n if (F(w), w.key === Pe.home || w.key === Pe.end)\n return $(\n \"selectWeekDate\",\n w.key === Pe.home,\n w.target.getAttribute(\"id\")\n );\n switch ((w.key === Pe.pageUp || w.key === Pe.pageDown) && (w.shiftKey ? ($(\"changeYear\", w.key === Pe.pageUp), (N = Ea(i.value, \"overlay-year\")) == null || N.focus()) : ($(\"changeMonth\", w.key === Pe.pageUp), (ce = Ea(i.value, w.key === Pe.pageUp ? \"action-prev\" : \"action-next\")) == null || ce.focus()), w.target.getAttribute(\"id\") && ((he = i.value) == null || he.focus({ preventScroll: !0 }))), w.key) {\n case Pe.esc:\n return s();\n case Pe.arrowLeft:\n return W(w, je.left);\n case Pe.arrowRight:\n return W(w, je.right);\n case Pe.arrowUp:\n return W(w, je.up);\n case Pe.arrowDown:\n return W(w, je.down);\n default:\n return;\n }\n };\n return t({\n updateMonthYear: O,\n switchView: me,\n handleFlow: ve\n }), (w, N) => {\n var ce, he, et;\n return T(), K(\"div\", {\n id: w.uid ? `dp-menu-${w.uid}` : void 0,\n ref_key: \"dpMenuRef\",\n ref: i,\n tabindex: o(h).enabled ? void 0 : \"0\",\n role: o(h).enabled ? void 0 : \"dialog\",\n \"aria-label\": (ce = w.ariaLabels) == null ? void 0 : ce.menu,\n class: we(D.value),\n style: tt({ \"--dp-arrow-left\": z.value }),\n onMouseleave: R,\n onClick: V,\n onKeydown: ue\n }, [\n (w.disabled || w.readonly) && o(h).enabled || w.loading ? (T(), K(\"div\", {\n key: 0,\n class: we(I.value)\n }, [\n w.loading ? (T(), K(\"div\", Ur, N[19] || (N[19] = [\n ye(\"span\", { class: \"dp--menu-loader\" }, null, -1)\n ]))) : Z(\"\", !0)\n ], 2)) : Z(\"\", !0),\n w.$slots[\"menu-header\"] ? (T(), K(\"div\", Vr, [\n ie(w.$slots, \"menu-header\")\n ])) : Z(\"\", !0),\n !o(h).enabled && !w.teleportCenter ? (T(), K(\"div\", {\n key: 2,\n class: we(se.value)\n }, null, 2)) : Z(\"\", !0),\n ye(\"div\", {\n ref_key: \"innerMenuRef\",\n ref: f,\n class: we({\n dp__menu_content_wrapper: ((he = w.presetDates) == null ? void 0 : he.length) || !!w.$slots[\"left-sidebar\"] || !!w.$slots[\"right-sidebar\"],\n \"dp--menu-content-wrapper-collapsed\": e.collapse && (((et = w.presetDates) == null ? void 0 : et.length) || !!w.$slots[\"left-sidebar\"] || !!w.$slots[\"right-sidebar\"])\n }),\n style: tt({ \"--dp-menu-width\": `${U.value}px` })\n }, [\n w.$slots[\"left-sidebar\"] ? (T(), K(\"div\", Wr, [\n ie(w.$slots, \"left-sidebar\", Ne(Qe(g.value)))\n ])) : Z(\"\", !0),\n w.presetDates.length ? (T(), K(\"div\", {\n key: 1,\n class: we({ \"dp--preset-dates-collapsed\": e.collapse, \"dp--preset-dates\": !0 })\n }, [\n (T(!0), K(be, null, Re(w.presetDates, (fe, vt) => (T(), K(be, { key: vt }, [\n fe.slot ? ie(w.$slots, fe.slot, {\n key: 0,\n presetDate: r,\n label: fe.label,\n value: fe.value\n }) : (T(), K(\"button\", {\n key: 1,\n type: \"button\",\n style: tt(fe.style || {}),\n class: we([\"dp__btn dp--preset-range\", { \"dp--preset-range-collapsed\": e.collapse }]),\n \"data-test\": fe.testId ?? void 0,\n onClick: Wt((ot) => r(fe.value, fe.noTz), [\"prevent\"]),\n onKeydown: (ot) => o(Ke)(ot, () => r(fe.value, fe.noTz), !0)\n }, Ue(fe.label), 47, jr))\n ], 64))), 128))\n ], 2)) : Z(\"\", !0),\n ye(\"div\", {\n ref_key: \"calendarWrapperRef\",\n ref: E,\n class: \"dp__instance_calendar\",\n role: \"document\"\n }, [\n (T(), $e(ia(y.value), Ee({\n ref_key: \"dynCmpRef\",\n ref: P\n }, d.value, {\n \"flow-step\": o(x),\n onMount: o(q),\n onUpdateFlowStep: o(Y),\n onResetFlow: o(de),\n onFocusMenu: te,\n onSelectDate: N[0] || (N[0] = (fe) => w.$emit(\"select-date\")),\n onDateUpdate: N[1] || (N[1] = (fe) => w.$emit(\"date-update\", fe)),\n onTooltipOpen: N[2] || (N[2] = (fe) => w.$emit(\"tooltip-open\", fe)),\n onTooltipClose: N[3] || (N[3] = (fe) => w.$emit(\"tooltip-close\", fe)),\n onAutoApply: N[4] || (N[4] = (fe) => w.$emit(\"auto-apply\", fe)),\n onRangeStart: N[5] || (N[5] = (fe) => w.$emit(\"range-start\", fe)),\n onRangeEnd: N[6] || (N[6] = (fe) => w.$emit(\"range-end\", fe)),\n onInvalidFixedRange: N[7] || (N[7] = (fe) => w.$emit(\"invalid-fixed-range\", fe)),\n onTimeUpdate: N[8] || (N[8] = (fe) => w.$emit(\"time-update\")),\n onAmPmChange: N[9] || (N[9] = (fe) => w.$emit(\"am-pm-change\", fe)),\n onTimePickerOpen: N[10] || (N[10] = (fe) => w.$emit(\"time-picker-open\", fe)),\n onTimePickerClose: u,\n onRecalculatePosition: X,\n onUpdateMonthYear: N[11] || (N[11] = (fe) => w.$emit(\"update-month-year\", fe)),\n onAutoApplyInvalid: N[12] || (N[12] = (fe) => w.$emit(\"auto-apply-invalid\", fe)),\n onInvalidDate: N[13] || (N[13] = (fe) => w.$emit(\"invalid-date\", fe)),\n onOverlayToggle: N[14] || (N[14] = (fe) => w.$emit(\"overlay-toggle\", fe)),\n \"onUpdate:internalModelValue\": N[15] || (N[15] = (fe) => w.$emit(\"update:internal-model-value\", fe))\n }), Ve({ _: 2 }, [\n Re(p.value, (fe, vt) => ({\n name: fe,\n fn: ke((ot) => [\n ie(w.$slots, fe, Ne(Qe({ ...ot })))\n ])\n }))\n ]), 1040, [\"flow-step\", \"onMount\", \"onUpdateFlowStep\", \"onResetFlow\"]))\n ], 512),\n w.$slots[\"right-sidebar\"] ? (T(), K(\"div\", Kr, [\n ie(w.$slots, \"right-sidebar\", Ne(Qe(g.value)))\n ])) : Z(\"\", !0),\n w.$slots[\"action-extra\"] ? (T(), K(\"div\", Gr, [\n w.$slots[\"action-extra\"] ? ie(w.$slots, \"action-extra\", {\n key: 0,\n selectCurrentDate: ge\n }) : Z(\"\", !0)\n ])) : Z(\"\", !0)\n ], 6),\n !w.autoApply || o(C).keepActionRow ? (T(), $e(Jl, Ee({\n key: 3,\n \"menu-mount\": B.value\n }, d.value, {\n \"calendar-width\": U.value,\n onClosePicker: N[16] || (N[16] = (fe) => w.$emit(\"close-picker\")),\n onSelectDate: N[17] || (N[17] = (fe) => w.$emit(\"select-date\")),\n onInvalidSelect: N[18] || (N[18] = (fe) => w.$emit(\"invalid-select\")),\n onSelectNow: ge\n }), Ve({ _: 2 }, [\n Re(o(A), (fe, vt) => ({\n name: fe,\n fn: ke((ot) => [\n ie(w.$slots, fe, Ne(Qe({ ...ot })))\n ])\n }))\n ]), 1040, [\"menu-mount\", \"calendar-width\"])) : Z(\"\", !0)\n ], 46, Hr);\n };\n }\n});\nvar Ct = /* @__PURE__ */ ((e) => (e.center = \"center\", e.left = \"left\", e.right = \"right\", e))(Ct || {});\nconst Qr = ({\n menuRef: e,\n menuRefInner: t,\n inputRef: l,\n pickerWrapperRef: a,\n inline: n,\n emit: i,\n props: d,\n slots: b\n}) => {\n const { defaultedConfig: c } = Ce(d), L = ne({}), v = ne(!1), _ = ne({\n top: \"0\",\n left: \"0\"\n }), h = ne(!1), C = Vt(d, \"teleportCenter\");\n at(C, () => {\n _.value = JSON.parse(JSON.stringify({})), ae();\n });\n const H = (g) => {\n if (d.teleport) {\n const X = g.getBoundingClientRect();\n return {\n left: X.left + window.scrollX,\n top: X.top + window.scrollY\n };\n }\n return { top: 0, left: 0 };\n }, E = (g, X) => {\n _.value.left = `${g + X - L.value.width}px`;\n }, U = (g) => {\n _.value.left = `${g}px`;\n }, f = (g, X) => {\n d.position === Ct.left && U(g), d.position === Ct.right && E(g, X), d.position === Ct.center && (_.value.left = `${g + X / 2 - L.value.width / 2}px`);\n }, B = (g) => {\n const { width: X, height: A } = g.getBoundingClientRect(), { top: p, left: se } = d.altPosition ? d.altPosition(g) : H(g);\n return { top: +p, left: +se, width: X, height: A };\n }, P = () => {\n _.value.left = \"50%\", _.value.top = \"50%\", _.value.transform = \"translate(-50%, -50%)\", _.value.position = \"fixed\", delete _.value.opacity;\n }, Q = () => {\n const g = Ie(l), { top: X, left: A, transform: p } = d.altPosition(g);\n _.value = { top: `${X}px`, left: `${A}px`, transform: p ?? \"\" };\n }, ae = (g = !0) => {\n var X;\n if (!n.value.enabled) {\n if (C.value) return P();\n if (d.altPosition !== null) return Q();\n if (g) {\n const A = d.teleport ? (X = t.value) == null ? void 0 : X.$el : e.value;\n A && (L.value = A.getBoundingClientRect()), i(\"recalculate-position\");\n }\n return de();\n }\n }, oe = ({ inputEl: g, left: X, width: A }) => {\n window.screen.width > 768 && !v.value && f(X, A), x(g);\n }, ee = (g) => {\n const { top: X, left: A, height: p, width: se } = B(g);\n _.value.top = `${p + X + +d.offset}px`, h.value = !1, v.value || (_.value.left = `${A + se / 2 - L.value.width / 2}px`), oe({ inputEl: g, left: A, width: se });\n }, S = (g) => {\n const { top: X, left: A, width: p } = B(g);\n _.value.top = `${X - +d.offset - L.value.height}px`, h.value = !0, oe({ inputEl: g, left: A, width: p });\n }, x = (g) => {\n if (d.autoPosition) {\n const { left: X, width: A } = B(g), { left: p, right: se } = L.value;\n if (!v.value) {\n if (Math.abs(p) !== Math.abs(se)) {\n if (p <= 0)\n return v.value = !0, U(X);\n if (se >= document.documentElement.clientWidth)\n return v.value = !0, E(X, A);\n }\n return f(X, A);\n }\n }\n }, Y = () => {\n const g = Ie(l);\n if (g) {\n const { height: X } = L.value, { top: A, height: p } = g.getBoundingClientRect(), I = window.innerHeight - A - p, D = A;\n return X <= I ? Mt.bottom : X > I && X <= D ? Mt.top : I >= D ? Mt.bottom : Mt.top;\n }\n return Mt.bottom;\n }, q = (g) => Y() === Mt.bottom ? ee(g) : S(g), de = () => {\n const g = Ie(l);\n if (g)\n return d.autoPosition ? q(g) : ee(g);\n }, ve = function(g) {\n if (g) {\n const X = g.scrollHeight > g.clientHeight, p = window.getComputedStyle(g).overflowY.indexOf(\"hidden\") !== -1;\n return X && !p;\n }\n return !0;\n }, y = function(g) {\n return !g || g === document.body || g.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? window : ve(g) ? g : y(\n g.assignedSlot && c.value.shadowDom ? g.assignedSlot.parentNode : g.parentNode\n );\n }, z = (g) => {\n if (g)\n switch (d.position) {\n case Ct.left:\n return { left: 0, transform: \"translateX(0)\" };\n case Ct.right:\n return { left: `${g.width}px`, transform: \"translateX(-100%)\" };\n default:\n return { left: `${g.width / 2}px`, transform: \"translateX(-50%)\" };\n }\n return {};\n };\n return {\n openOnTop: h,\n menuStyle: _,\n xCorrect: v,\n setMenuPosition: ae,\n getScrollableParent: y,\n shadowRender: (g, X) => {\n var s, M, F;\n const A = document.createElement(\"div\"), p = (s = Ie(l)) == null ? void 0 : s.getBoundingClientRect();\n A.setAttribute(\"id\", \"dp--temp-container\");\n const se = (M = a.value) != null && M.clientWidth ? a.value : document.body;\n se.append(A);\n const I = z(p), D = c.value.shadowDom ? Object.keys(b).filter(\n (u) => [\"right-sidebar\", \"left-sidebar\", \"top-extra\", \"action-extra\"].includes(u)\n ) : Object.keys(b), V = Qn(\n g,\n {\n ...X,\n shadow: !0,\n style: { opacity: 0, position: \"absolute\", ...I }\n },\n Object.fromEntries(D.map((u) => [u, b[u]]))\n );\n xa(V, A), L.value = (F = V.el) == null ? void 0 : F.getBoundingClientRect(), xa(null, A), se.removeChild(A);\n }\n };\n}, mt = [\n { name: \"clock-icon\", use: [\"time\", \"calendar\", \"shared\"] },\n { name: \"arrow-left\", use: [\"month-year\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"arrow-right\", use: [\"month-year\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"arrow-up\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"arrow-down\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"calendar-icon\", use: [\"month-year\", \"time\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"day\", use: [\"calendar\", \"shared\"] },\n { name: \"month-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\", \"year-mode\"] },\n { name: \"year-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"year-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"hours-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"month\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year\", use: [\"calendar\", \"month-year\", \"shared\", \"year-mode\"] },\n { name: \"action-buttons\", use: [\"action\"] },\n { name: \"action-preview\", use: [\"action\"] },\n { name: \"calendar-header\", use: [\"calendar\", \"shared\"] },\n { name: \"marker-tooltip\", use: [\"calendar\", \"shared\"] },\n { name: \"action-extra\", use: [\"menu\"] },\n { name: \"time-picker-overlay\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"am-pm-button\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"left-sidebar\", use: [\"menu\"] },\n { name: \"right-sidebar\", use: [\"menu\"] },\n { name: \"month-year\", use: [\"month-year\", \"shared\"] },\n { name: \"time-picker\", use: [\"menu\", \"shared\"] },\n { name: \"action-row\", use: [\"action\"] },\n { name: \"marker\", use: [\"calendar\", \"shared\"] },\n { name: \"quarter\", use: [\"shared\"] },\n { name: \"top-extra\", use: [\"shared\", \"month-year\"] },\n { name: \"tp-inline-arrow-up\", use: [\"shared\", \"time\"] },\n { name: \"tp-inline-arrow-down\", use: [\"shared\", \"time\"] },\n { name: \"menu-header\", use: [\"menu\"] }\n], qr = [{ name: \"trigger\" }, { name: \"input-icon\" }, { name: \"clear-icon\" }, { name: \"dp-input\" }], Xr = {\n all: () => mt,\n monthYear: () => mt.filter((e) => e.use.includes(\"month-year\")),\n input: () => qr,\n timePicker: () => mt.filter((e) => e.use.includes(\"time\")),\n action: () => mt.filter((e) => e.use.includes(\"action\")),\n calendar: () => mt.filter((e) => e.use.includes(\"calendar\")),\n menu: () => mt.filter((e) => e.use.includes(\"menu\")),\n shared: () => mt.filter((e) => e.use.includes(\"shared\")),\n yearMode: () => mt.filter((e) => e.use.includes(\"year-mode\"))\n}, Je = (e, t, l) => {\n const a = [];\n return Xr[t]().forEach((n) => {\n e[n.name] && a.push(n.name);\n }), l != null && l.length && l.forEach((n) => {\n n.slot && a.push(n.slot);\n }), a;\n}, Xt = (e) => {\n const t = J(() => (a) => e.value ? a ? e.value.open : e.value.close : \"\"), l = J(() => (a) => e.value ? a ? e.value.menuAppearTop : e.value.menuAppearBottom : \"\");\n return { transitionName: t, showTransition: !!e.value, menuTransition: l };\n}, Jt = (e, t, l) => {\n const { defaultedRange: a, defaultedTz: n } = Ce(e), i = G(qe(G(), n.value.timezone)), d = ne([{ month: De(i), year: pe(i) }]), b = (h) => {\n const C = {\n hours: ft(i),\n minutes: ht(i),\n seconds: 0\n };\n return a.value.enabled ? [C[h], C[h]] : C[h];\n }, c = Qt({\n hours: b(\"hours\"),\n minutes: b(\"minutes\"),\n seconds: b(\"seconds\")\n });\n at(\n a,\n (h, C) => {\n h.enabled !== C.enabled && (c.hours = b(\"hours\"), c.minutes = b(\"minutes\"), c.seconds = b(\"seconds\"));\n },\n { deep: !0 }\n );\n const L = J({\n get: () => e.internalModelValue,\n set: (h) => {\n !e.readonly && !e.disabled && t(\"update:internal-model-value\", h);\n }\n }), v = J(\n () => (h) => d.value[h] ? d.value[h].month : 0\n ), _ = J(\n () => (h) => d.value[h] ? d.value[h].year : 0\n );\n return at(\n L,\n (h, C) => {\n l && JSON.stringify(h ?? {}) !== JSON.stringify(C ?? {}) && l();\n },\n { deep: !0 }\n ), {\n calendars: d,\n time: c,\n modelValue: L,\n month: v,\n year: _,\n today: i\n };\n}, Jr = (e, t) => {\n const {\n defaultedMultiCalendars: l,\n defaultedMultiDates: a,\n defaultedUI: n,\n defaultedHighlight: i,\n defaultedTz: d,\n propDates: b,\n defaultedRange: c\n } = Ce(t), { isDisabled: L } = kt(t), v = ne(null), _ = ne(qe(/* @__PURE__ */ new Date(), d.value.timezone)), h = (s) => {\n !s.current && t.hideOffsetDates || (v.value = s.value);\n }, C = () => {\n v.value = null;\n }, H = (s) => Array.isArray(e.value) && c.value.enabled && e.value[0] && v.value ? s ? Be(v.value, e.value[0]) : Oe(v.value, e.value[0]) : !0, E = (s, M) => {\n const F = () => e.value ? M ? e.value[0] || null : e.value[1] : null, u = e.value && Array.isArray(e.value) ? F() : null;\n return Me(G(s.value), u);\n }, U = (s) => {\n const M = Array.isArray(e.value) ? e.value[0] : null;\n return s ? !Oe(v.value ?? null, M) : !0;\n }, f = (s, M = !0) => (c.value.enabled || t.weekPicker) && Array.isArray(e.value) && e.value.length === 2 ? t.hideOffsetDates && !s.current ? !1 : Me(G(s.value), e.value[M ? 0 : 1]) : c.value.enabled ? E(s, M) && U(M) || Me(s.value, Array.isArray(e.value) ? e.value[0] : null) && H(M) : !1, B = (s, M) => {\n if (Array.isArray(e.value) && e.value[0] && e.value.length === 1) {\n const F = Me(s.value, v.value);\n return M ? Be(e.value[0], s.value) && F : Oe(e.value[0], s.value) && F;\n }\n return !1;\n }, P = (s) => !e.value || t.hideOffsetDates && !s.current ? !1 : c.value.enabled ? t.modelAuto && Array.isArray(e.value) ? Me(s.value, e.value[0] ? e.value[0] : _.value) : !1 : a.value.enabled && Array.isArray(e.value) ? e.value.some((M) => Me(M, s.value)) : Me(s.value, e.value ? e.value : _.value), Q = (s) => {\n if (c.value.autoRange || t.weekPicker) {\n if (v.value) {\n if (t.hideOffsetDates && !s.current) return !1;\n const M = $t(v.value, +c.value.autoRange), F = it(G(v.value), t.weekStart);\n return t.weekPicker ? Me(F[1], G(s.value)) : Me(M, G(s.value));\n }\n return !1;\n }\n return !1;\n }, ae = (s) => {\n if (c.value.autoRange || t.weekPicker) {\n if (v.value) {\n const M = $t(v.value, +c.value.autoRange);\n if (t.hideOffsetDates && !s.current) return !1;\n const F = it(G(v.value), t.weekStart);\n return t.weekPicker ? Be(s.value, F[0]) && Oe(s.value, F[1]) : Be(s.value, v.value) && Oe(s.value, M);\n }\n return !1;\n }\n return !1;\n }, oe = (s) => {\n if (c.value.autoRange || t.weekPicker) {\n if (v.value) {\n if (t.hideOffsetDates && !s.current) return !1;\n const M = it(G(v.value), t.weekStart);\n return t.weekPicker ? Me(M[0], s.value) : Me(v.value, s.value);\n }\n return !1;\n }\n return !1;\n }, ee = (s) => da(e.value, v.value, s.value), S = () => t.modelAuto && Array.isArray(t.internalModelValue) ? !!t.internalModelValue[0] : !1, x = () => t.modelAuto ? An(t.internalModelValue) : !0, Y = (s) => {\n if (t.weekPicker) return !1;\n const M = c.value.enabled ? !f(s) && !f(s, !1) : !0;\n return !L(s.value) && !P(s) && !(!s.current && t.hideOffsetDates) && M;\n }, q = (s) => c.value.enabled ? t.modelAuto ? S() && P(s) : !1 : P(s), de = (s) => i.value ? Dl(s.value, b.value.highlight) : !1, ve = (s) => {\n const M = L(s.value);\n return M && (typeof i.value == \"function\" ? !i.value(s.value, M) : !i.value.options.highlightDisabled);\n }, y = (s) => {\n var M;\n return typeof i.value == \"function\" ? i.value(s.value) : (M = i.value.weekdays) == null ? void 0 : M.includes(s.value.getDay());\n }, z = (s) => (c.value.enabled || t.weekPicker) && (!(l.value.count > 0) || s.current) && x() && !(!s.current && t.hideOffsetDates) && !P(s) ? ee(s) : !1, te = (s) => {\n const { isRangeStart: M, isRangeEnd: F } = p(s), u = c.value.enabled ? M || F : !1;\n return {\n dp__cell_offset: !s.current,\n dp__pointer: !t.disabled && !(!s.current && t.hideOffsetDates) && !L(s.value),\n dp__cell_disabled: L(s.value),\n dp__cell_highlight: !ve(s) && (de(s) || y(s)) && !q(s) && !u && !oe(s) && !(z(s) && t.weekPicker) && !F,\n dp__cell_highlight_active: !ve(s) && (de(s) || y(s)) && q(s),\n dp__today: !t.noToday && Me(s.value, _.value) && s.current,\n \"dp--past\": Oe(s.value, _.value),\n \"dp--future\": Be(s.value, _.value)\n };\n }, g = (s) => ({\n dp__active_date: q(s),\n dp__date_hover: Y(s)\n }), X = (s) => {\n if (e.value && !Array.isArray(e.value)) {\n const M = it(e.value, t.weekStart);\n return {\n ...I(s),\n dp__range_start: Me(M[0], s.value),\n dp__range_end: Me(M[1], s.value),\n dp__range_between_week: Be(s.value, M[0]) && Oe(s.value, M[1])\n };\n }\n return {\n ...I(s)\n };\n }, A = (s) => {\n if (e.value && Array.isArray(e.value)) {\n const M = it(e.value[0], t.weekStart), F = e.value[1] ? it(e.value[1], t.weekStart) : [];\n return {\n ...I(s),\n dp__range_start: Me(M[0], s.value) || Me(F[0], s.value),\n dp__range_end: Me(M[1], s.value) || Me(F[1], s.value),\n dp__range_between_week: Be(s.value, M[0]) && Oe(s.value, M[1]) || Be(s.value, F[0]) && Oe(s.value, F[1]),\n dp__range_between: Be(s.value, M[1]) && Oe(s.value, F[0])\n };\n }\n return {\n ...I(s)\n };\n }, p = (s) => {\n const M = l.value.count > 0 ? s.current && f(s) && x() : f(s) && x(), F = l.value.count > 0 ? s.current && f(s, !1) && x() : f(s, !1) && x();\n return { isRangeStart: M, isRangeEnd: F };\n }, se = (s) => {\n const { isRangeStart: M, isRangeEnd: F } = p(s);\n return {\n dp__range_start: M,\n dp__range_end: F,\n dp__range_between: z(s),\n dp__date_hover: Me(s.value, v.value) && !M && !F && !t.weekPicker,\n dp__date_hover_start: B(s, !0),\n dp__date_hover_end: B(s, !1)\n };\n }, I = (s) => ({\n ...se(s),\n dp__cell_auto_range: ae(s),\n dp__cell_auto_range_start: oe(s),\n dp__cell_auto_range_end: Q(s)\n }), D = (s) => c.value.enabled ? c.value.autoRange ? I(s) : t.modelAuto ? { ...g(s), ...se(s) } : t.weekPicker ? A(s) : se(s) : t.weekPicker ? X(s) : g(s);\n return {\n setHoverDate: h,\n clearHoverDate: C,\n getDayClassData: (s) => t.hideOffsetDates && !s.current ? {} : {\n ...te(s),\n ...D(s),\n [t.dayClass ? t.dayClass(s.value, t.internalModelValue) : \"\"]: !0,\n ...n.value.calendarCell ?? {}\n }\n };\n}, kt = (e) => {\n const { defaultedFilters: t, defaultedRange: l, propDates: a, defaultedMultiDates: n } = Ce(e), i = (y) => a.value.disabledDates ? typeof a.value.disabledDates == \"function\" ? a.value.disabledDates(G(y)) : !!sa(y, a.value.disabledDates) : !1, d = (y) => a.value.maxDate ? e.yearPicker ? pe(y) > pe(a.value.maxDate) : Be(y, a.value.maxDate) : !1, b = (y) => a.value.minDate ? e.yearPicker ? pe(y) < pe(a.value.minDate) : Oe(y, a.value.minDate) : !1, c = (y) => {\n const z = d(y), te = b(y), g = i(y), A = t.value.months.map((V) => +V).includes(De(y)), p = e.disabledWeekDays.length ? e.disabledWeekDays.some((V) => +V === dl(y)) : !1, se = C(y), I = pe(y), D = I < +e.yearRange[0] || I > +e.yearRange[1];\n return !(z || te || g || A || D || p || se);\n }, L = (y, z) => Oe(...pt(a.value.minDate, y, z)) || Me(...pt(a.value.minDate, y, z)), v = (y, z) => Be(...pt(a.value.maxDate, y, z)) || Me(...pt(a.value.maxDate, y, z)), _ = (y, z, te) => {\n let g = !1;\n return a.value.maxDate && te && v(y, z) && (g = !0), a.value.minDate && !te && L(y, z) && (g = !0), g;\n }, h = (y, z, te, g) => {\n let X = !1;\n return g && (a.value.minDate || a.value.maxDate) ? a.value.minDate && a.value.maxDate ? X = _(y, z, te) : (a.value.minDate && L(y, z) || a.value.maxDate && v(y, z)) && (X = !0) : X = !0, X;\n }, C = (y) => Array.isArray(a.value.allowedDates) && !a.value.allowedDates.length ? !0 : a.value.allowedDates ? !sa(y, a.value.allowedDates) : !1, H = (y) => !c(y), E = (y) => l.value.noDisabledRange ? !pn({ start: y[0], end: y[1] }).some((te) => H(te)) : !0, U = (y) => {\n if (y) {\n const z = pe(y);\n return z >= +e.yearRange[0] && z <= e.yearRange[1];\n }\n return !0;\n }, f = (y, z) => !!(Array.isArray(y) && y[z] && (l.value.maxRange || l.value.minRange) && U(y[z])), B = (y, z, te = 0) => {\n if (f(z, te) && U(y)) {\n const g = cl(y, z[te]), X = Cn(z[te], y), A = X.length === 1 ? 0 : X.filter((se) => H(se)).length, p = Math.abs(g) - (l.value.minMaxRawRange ? 0 : A);\n if (l.value.minRange && l.value.maxRange)\n return p >= +l.value.minRange && p <= +l.value.maxRange;\n if (l.value.minRange) return p >= +l.value.minRange;\n if (l.value.maxRange) return p <= +l.value.maxRange;\n }\n return !0;\n }, P = () => !e.enableTimePicker || e.monthPicker || e.yearPicker || e.ignoreTimeValidation, Q = (y) => Array.isArray(y) ? [y[0] ? Pa(y[0]) : null, y[1] ? Pa(y[1]) : null] : Pa(y), ae = (y, z, te) => y.find(\n (g) => +g.hours === ft(z) && g.minutes === \"*\" ? !0 : +g.minutes === ht(z) && +g.hours === ft(z)\n ) && te, oe = (y, z, te) => {\n const [g, X] = y, [A, p] = z;\n return !ae(g, A, te) && !ae(X, p, te) && te;\n }, ee = (y, z) => {\n const te = Array.isArray(z) ? z : [z];\n return Array.isArray(e.disabledTimes) ? Array.isArray(e.disabledTimes[0]) ? oe(e.disabledTimes, te, y) : !te.some((g) => ae(e.disabledTimes, g, y)) : y;\n }, S = (y, z) => {\n const te = Array.isArray(z) ? [St(z[0]), z[1] ? St(z[1]) : void 0] : St(z), g = !e.disabledTimes(te);\n return y && g;\n }, x = (y, z) => e.disabledTimes ? Array.isArray(e.disabledTimes) ? ee(z, y) : S(z, y) : z, Y = (y) => {\n let z = !0;\n if (!y || P()) return !0;\n const te = !a.value.minDate && !a.value.maxDate ? Q(y) : y;\n return (e.maxTime || a.value.maxDate) && (z = dn(\n e.maxTime,\n a.value.maxDate,\n \"max\",\n Ye(te),\n z\n )), (e.minTime || a.value.minDate) && (z = dn(\n e.minTime,\n a.value.minDate,\n \"min\",\n Ye(te),\n z\n )), x(y, z);\n }, q = (y) => {\n if (!e.monthPicker) return !0;\n let z = !0;\n const te = G(lt(y));\n if (a.value.minDate && a.value.maxDate) {\n const g = G(lt(a.value.minDate)), X = G(lt(a.value.maxDate));\n return Be(te, g) && Oe(te, X) || Me(te, g) || Me(te, X);\n }\n if (a.value.minDate) {\n const g = G(lt(a.value.minDate));\n z = Be(te, g) || Me(te, g);\n }\n if (a.value.maxDate) {\n const g = G(lt(a.value.maxDate));\n z = Oe(te, g) || Me(te, g);\n }\n return z;\n }, de = J(() => (y) => !e.enableTimePicker || e.ignoreTimeValidation ? !0 : Y(y)), ve = J(() => (y) => e.monthPicker ? Array.isArray(y) && (l.value.enabled || n.value.enabled) ? !y.filter((te) => !q(te)).length : q(y) : !0);\n return {\n isDisabled: H,\n validateDate: c,\n validateMonthYearInRange: h,\n isDateRangeAllowed: E,\n checkMinMaxRange: B,\n isValidTime: Y,\n isTimeValid: de,\n isMonthValid: ve\n };\n}, ma = () => {\n const e = J(() => (a, n) => a == null ? void 0 : a.includes(n)), t = J(() => (a, n) => a.count ? a.solo ? !0 : n === 0 : !0), l = J(() => (a, n) => a.count ? a.solo ? !0 : n === a.count - 1 : !0);\n return { hideNavigationButtons: e, showLeftIcon: t, showRightIcon: l };\n}, Zr = (e, t, l) => {\n const a = ne(0), n = Qt({\n [Tt.timePicker]: !e.enableTimePicker || e.timePicker || e.monthPicker,\n [Tt.calendar]: !1,\n [Tt.header]: !1\n }), i = J(() => e.monthPicker || e.timePicker), d = (_) => {\n var h;\n if ((h = e.flow) != null && h.length) {\n if (!_ && i.value) return v();\n n[_] = !0, Object.keys(n).filter((C) => !n[C]).length || v();\n }\n }, b = () => {\n var _, h;\n (_ = e.flow) != null && _.length && a.value !== -1 && (a.value += 1, t(\"flow-step\", a.value), v()), ((h = e.flow) == null ? void 0 : h.length) === a.value && xe().then(() => c());\n }, c = () => {\n a.value = -1;\n }, L = (_, h, ...C) => {\n var H, E;\n e.flow[a.value] === _ && l.value && ((E = (H = l.value)[h]) == null || E.call(H, ...C));\n }, v = (_ = 0) => {\n _ && (a.value += _), L(He.month, \"toggleMonthPicker\", !0), L(He.year, \"toggleYearPicker\", !0), L(He.calendar, \"toggleTimePicker\", !1, !0), L(He.time, \"toggleTimePicker\", !0, !0);\n const h = e.flow[a.value];\n (h === He.hours || h === He.minutes || h === He.seconds) && L(h, \"toggleTimePicker\", !0, !0, h);\n };\n return { childMount: d, updateFlowStep: b, resetFlow: c, handleFlow: v, flowStep: a };\n}, xr = {\n key: 1,\n class: \"dp__input_wrap\"\n}, eo = [\"id\", \"name\", \"inputmode\", \"placeholder\", \"disabled\", \"readonly\", \"required\", \"value\", \"autocomplete\", \"aria-label\", \"aria-disabled\", \"aria-invalid\"], to = {\n key: 2,\n class: \"dp--clear-btn\"\n}, ao = [\"aria-label\"], no = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerInput\",\n props: {\n isMenuOpen: { type: Boolean, default: !1 },\n inputValue: { type: String, default: \"\" },\n ...ca\n },\n emits: [\n \"clear\",\n \"open\",\n \"update:input-value\",\n \"set-input-date\",\n \"close\",\n \"select-date\",\n \"set-empty-date\",\n \"toggle\",\n \"focus-prev\",\n \"focus\",\n \"blur\",\n \"real-blur\",\n \"text-input\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, {\n defaultedTextInput: i,\n defaultedAriaLabels: d,\n defaultedInline: b,\n defaultedConfig: c,\n defaultedRange: L,\n defaultedMultiDates: v,\n defaultedUI: _,\n getDefaultPattern: h,\n getDefaultStartTime: C\n } = Ce(n), { checkMinMaxRange: H } = kt(n), E = ne(), U = ne(null), f = ne(!1), B = ne(!1), P = J(\n () => ({\n dp__pointer: !n.disabled && !n.readonly && !i.value.enabled,\n dp__disabled: n.disabled,\n dp__input_readonly: !i.value.enabled,\n dp__input: !0,\n dp__input_icon_pad: !n.hideInputIcon,\n dp__input_valid: typeof n.state == \"boolean\" ? n.state : !1,\n dp__input_invalid: typeof n.state == \"boolean\" ? !n.state : !1,\n dp__input_focus: f.value || n.isMenuOpen,\n dp__input_reg: !i.value.enabled,\n ..._.value.input ?? {}\n })\n ), Q = () => {\n a(\"set-input-date\", null), n.clearable && n.autoApply && (a(\"set-empty-date\"), E.value = null);\n }, ae = (p) => {\n const se = C();\n return Ml(\n p,\n i.value.format ?? h(),\n se ?? On({}, n.enableSeconds),\n n.inputValue,\n B.value,\n n.formatLocale\n );\n }, oe = (p) => {\n const { rangeSeparator: se } = i.value, [I, D] = p.split(`${se}`);\n if (I) {\n const V = ae(I.trim()), s = D ? ae(D.trim()) : null;\n if (_t(V, s)) return;\n const M = V && s ? [V, s] : [V];\n H(s, M, 0) && (E.value = V ? M : null);\n }\n }, ee = () => {\n B.value = !0;\n }, S = (p) => {\n if (L.value.enabled)\n oe(p);\n else if (v.value.enabled) {\n const se = p.split(\";\");\n E.value = se.map((I) => ae(I.trim())).filter((I) => I);\n } else\n E.value = ae(p);\n }, x = (p) => {\n var I;\n const se = typeof p == \"string\" ? p : (I = p.target) == null ? void 0 : I.value;\n se !== \"\" ? (i.value.openMenu && !n.isMenuOpen && a(\"open\"), S(se), a(\"set-input-date\", E.value)) : Q(), B.value = !1, a(\"update:input-value\", se), a(\"text-input\", p, E.value);\n }, Y = (p) => {\n i.value.enabled ? (S(p.target.value), i.value.enterSubmit && Fa(E.value) && n.inputValue !== \"\" ? (a(\"set-input-date\", E.value, !0), E.value = null) : i.value.enterSubmit && n.inputValue === \"\" && (E.value = null, a(\"clear\"))) : ve(p);\n }, q = (p, se) => {\n i.value.enabled && i.value.tabSubmit && !se && S(p.target.value), i.value.tabSubmit && Fa(E.value) && n.inputValue !== \"\" ? (a(\"set-input-date\", E.value, !0, !0), E.value = null) : i.value.tabSubmit && n.inputValue === \"\" && (E.value = null, a(\"clear\", !0));\n }, de = () => {\n f.value = !0, a(\"focus\"), xe().then(() => {\n var p;\n i.value.enabled && i.value.selectOnFocus && ((p = U.value) == null || p.select());\n });\n }, ve = (p) => {\n if (yt(p, c.value, !0), i.value.enabled && i.value.openMenu && !b.value.input) {\n if (i.value.openMenu === \"open\" && !n.isMenuOpen) return a(\"open\");\n if (i.value.openMenu === \"toggle\") return a(\"toggle\");\n } else i.value.enabled || a(\"toggle\");\n }, y = () => {\n a(\"real-blur\"), f.value = !1, (!n.isMenuOpen || b.value.enabled && b.value.input) && a(\"blur\"), n.autoApply && i.value.enabled && E.value && !n.isMenuOpen && (a(\"set-input-date\", E.value), a(\"select-date\"), E.value = null);\n }, z = (p) => {\n yt(p, c.value, !0), a(\"clear\");\n }, te = (p) => {\n if (p.key === \"Tab\" && q(p), p.key === \"Enter\" && Y(p), !i.value.enabled) {\n if (p.code === \"Tab\") return;\n p.preventDefault();\n }\n }, g = () => {\n var p;\n (p = U.value) == null || p.focus({ preventScroll: !0 });\n }, X = (p) => {\n E.value = p;\n }, A = (p) => {\n p.key === Pe.tab && q(p, !0);\n };\n return t({\n focusInput: g,\n setParsedDate: X\n }), (p, se) => {\n var I, D, V;\n return T(), K(\"div\", { onClick: ve }, [\n p.$slots.trigger && !p.$slots[\"dp-input\"] && !o(b).enabled ? ie(p.$slots, \"trigger\", { key: 0 }) : Z(\"\", !0),\n !p.$slots.trigger && (!o(b).enabled || o(b).input) ? (T(), K(\"div\", xr, [\n p.$slots[\"dp-input\"] && !p.$slots.trigger && (!o(b).enabled || o(b).enabled && o(b).input) ? ie(p.$slots, \"dp-input\", {\n key: 0,\n value: e.inputValue,\n isMenuOpen: e.isMenuOpen,\n onInput: x,\n onEnter: Y,\n onTab: q,\n onClear: z,\n onBlur: y,\n onKeypress: te,\n onPaste: ee,\n onFocus: de,\n openMenu: () => p.$emit(\"open\"),\n closeMenu: () => p.$emit(\"close\"),\n toggleMenu: () => p.$emit(\"toggle\")\n }) : Z(\"\", !0),\n p.$slots[\"dp-input\"] ? Z(\"\", !0) : (T(), K(\"input\", {\n key: 1,\n id: p.uid ? `dp-input-${p.uid}` : void 0,\n ref_key: \"inputRef\",\n ref: U,\n \"data-test\": \"dp-input\",\n name: p.name,\n class: we(P.value),\n inputmode: o(i).enabled ? \"text\" : \"none\",\n placeholder: p.placeholder,\n disabled: p.disabled,\n readonly: p.readonly,\n required: p.required,\n value: e.inputValue,\n autocomplete: p.autocomplete,\n \"aria-label\": (I = o(d)) == null ? void 0 : I.input,\n \"aria-disabled\": p.disabled || void 0,\n \"aria-invalid\": p.state === !1 ? !0 : void 0,\n onInput: x,\n onBlur: y,\n onFocus: de,\n onKeypress: te,\n onKeydown: se[0] || (se[0] = (s) => te(s)),\n onPaste: ee\n }, null, 42, eo)),\n ye(\"div\", {\n onClick: se[3] || (se[3] = (s) => a(\"toggle\"))\n }, [\n p.$slots[\"input-icon\"] && !p.hideInputIcon ? (T(), K(\"span\", {\n key: 0,\n class: \"dp__input_icon\",\n onClick: se[1] || (se[1] = (s) => a(\"toggle\"))\n }, [\n ie(p.$slots, \"input-icon\")\n ])) : Z(\"\", !0),\n !p.$slots[\"input-icon\"] && !p.hideInputIcon && !p.$slots[\"dp-input\"] ? (T(), $e(o(Et), {\n key: 1,\n \"aria-label\": (D = o(d)) == null ? void 0 : D.calendarIcon,\n class: \"dp__input_icon dp__input_icons\",\n onClick: se[2] || (se[2] = (s) => a(\"toggle\"))\n }, null, 8, [\"aria-label\"])) : Z(\"\", !0)\n ]),\n p.$slots[\"clear-icon\"] && e.inputValue && p.clearable && !p.disabled && !p.readonly ? (T(), K(\"span\", to, [\n ie(p.$slots, \"clear-icon\", { clear: z })\n ])) : Z(\"\", !0),\n p.clearable && !p.$slots[\"clear-icon\"] && e.inputValue && !p.disabled && !p.readonly ? (T(), K(\"button\", {\n key: 3,\n \"aria-label\": (V = o(d)) == null ? void 0 : V.clearInput,\n class: \"dp--clear-btn\",\n type: \"button\",\n onKeydown: se[4] || (se[4] = (s) => o(Ke)(s, () => z(s), !0, A)),\n onClick: se[5] || (se[5] = Wt((s) => z(s), [\"prevent\"]))\n }, [\n Ze(o(Mn), {\n class: \"dp__input_icons\",\n \"data-test\": \"clear-icon\"\n })\n ], 40, ao)) : Z(\"\", !0)\n ])) : Z(\"\", !0)\n ]);\n };\n }\n}), lo = typeof window < \"u\" ? window : void 0, Ya = () => {\n}, ro = (e) => qn() ? (Xn(e), !0) : !1, oo = (e, t, l, a) => {\n if (!e) return Ya;\n let n = Ya;\n const i = at(\n () => o(e),\n (b) => {\n n(), b && (b.addEventListener(t, l, a), n = () => {\n b.removeEventListener(t, l, a), n = Ya;\n });\n },\n { immediate: !0, flush: \"post\" }\n ), d = () => {\n i(), n();\n };\n return ro(d), d;\n}, so = (e, t, l, a = {}) => {\n const { window: n = lo, event: i = \"pointerdown\" } = a;\n return n ? oo(n, i, (b) => {\n const c = Ie(e), L = Ie(t);\n !c || !L || c === b.target || b.composedPath().includes(c) || b.composedPath().includes(L) || l(b);\n }, { passive: !0 }) : void 0;\n}, uo = /* @__PURE__ */ Le({\n compatConfig: {\n MODE: 3\n },\n __name: \"VueDatePicker\",\n props: {\n ...ca\n },\n emits: [\n \"update:model-value\",\n \"update:model-timezone-value\",\n \"text-submit\",\n \"closed\",\n \"cleared\",\n \"open\",\n \"focus\",\n \"blur\",\n \"internal-model-change\",\n \"recalculate-position\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\",\n \"text-input\"\n ],\n setup(e, { expose: t, emit: l }) {\n const a = l, n = e, i = Pt(), d = ne(!1), b = Vt(n, \"modelValue\"), c = Vt(n, \"timezone\"), L = ne(null), v = ne(null), _ = ne(null), h = ne(!1), C = ne(null), H = ne(!1), E = ne(!1), U = ne(!1), f = ne(!1), { setMenuFocused: B, setShiftKey: P } = Nn(), { clearArrowNav: Q } = bt(), { validateDate: ae, isValidTime: oe } = kt(n), {\n defaultedTransitions: ee,\n defaultedTextInput: S,\n defaultedInline: x,\n defaultedConfig: Y,\n defaultedRange: q,\n defaultedMultiDates: de\n } = Ce(n), { menuTransition: ve, showTransition: y } = Xt(ee);\n We(() => {\n s(n.modelValue), xe().then(() => {\n if (!x.value.enabled) {\n const m = se(C.value);\n m == null || m.addEventListener(\"scroll\", O), window == null || window.addEventListener(\"resize\", W);\n }\n }), x.value.enabled && (d.value = !0), window == null || window.addEventListener(\"keyup\", ue), window == null || window.addEventListener(\"keydown\", w);\n }), ua(() => {\n if (!x.value.enabled) {\n const m = se(C.value);\n m == null || m.removeEventListener(\"scroll\", O), window == null || window.removeEventListener(\"resize\", W);\n }\n window == null || window.removeEventListener(\"keyup\", ue), window == null || window.removeEventListener(\"keydown\", w);\n });\n const z = Je(i, \"all\", n.presetDates), te = Je(i, \"input\");\n at(\n [b, c],\n () => {\n s(b.value);\n },\n { deep: !0 }\n );\n const { openOnTop: g, menuStyle: X, xCorrect: A, setMenuPosition: p, getScrollableParent: se, shadowRender: I } = Qr({\n menuRef: L,\n menuRefInner: v,\n inputRef: _,\n pickerWrapperRef: C,\n inline: x,\n emit: a,\n props: n,\n slots: i\n }), {\n inputValue: D,\n internalModelValue: V,\n parseExternalModelValue: s,\n emitModelValue: M,\n formatInputValue: F,\n checkBeforeEmit: u\n } = Gl(a, n, h), le = J(\n () => ({\n dp__main: !0,\n dp__theme_dark: n.dark,\n dp__theme_light: !n.dark,\n dp__flex_display: x.value.enabled,\n \"dp--flex-display-collapsed\": U.value,\n dp__flex_display_with_input: x.value.input\n })\n ), me = J(() => n.dark ? \"dp__theme_dark\" : \"dp__theme_light\"), $ = J(() => n.teleport ? {\n to: typeof n.teleport == \"boolean\" ? \"body\" : n.teleport,\n disabled: !n.teleport || x.value.enabled\n } : {}), ge = J(() => ({ class: \"dp__outer_menu_wrap\" })), r = J(() => x.value.enabled && (n.timePicker || n.monthPicker || n.yearPicker || n.quarterPicker)), R = () => {\n var m, j;\n return (j = (m = _.value) == null ? void 0 : m.$el) == null ? void 0 : j.getBoundingClientRect();\n }, O = () => {\n d.value && (Y.value.closeOnScroll ? Xe() : p());\n }, W = () => {\n var j;\n d.value && p();\n const m = (j = v.value) == null ? void 0 : j.$el.getBoundingClientRect().width;\n U.value = document.body.offsetWidth <= m;\n }, ue = (m) => {\n m.key === \"Tab\" && !x.value.enabled && !n.teleport && Y.value.tabOutClosesMenu && (C.value.contains(document.activeElement) || Xe()), E.value = m.shiftKey;\n }, w = (m) => {\n E.value = m.shiftKey;\n }, N = () => {\n !n.disabled && !n.readonly && (I(mn, n), p(!1), d.value = !0, d.value && a(\"open\"), d.value || Ft(), s(n.modelValue));\n }, ce = () => {\n var m;\n D.value = \"\", Ft(), (m = _.value) == null || m.setParsedDate(null), a(\"update:model-value\", null), a(\"update:model-timezone-value\", null), a(\"cleared\"), Y.value.closeOnClearValue && Xe();\n }, he = () => {\n const m = V.value;\n return !m || !Array.isArray(m) && ae(m) ? !0 : Array.isArray(m) ? de.value.enabled || m.length === 2 && ae(m[0]) && ae(m[1]) ? !0 : q.value.partialRange && !n.timePicker ? ae(m[0]) : !1 : !1;\n }, et = () => {\n u() && he() ? (M(), Xe()) : a(\"invalid-select\", V.value);\n }, fe = (m) => {\n vt(), M(), Y.value.closeOnAutoApply && !m && Xe();\n }, vt = () => {\n _.value && S.value.enabled && _.value.setParsedDate(V.value);\n }, ot = (m = !1) => {\n n.autoApply && oe(V.value) && he() && (q.value.enabled && Array.isArray(V.value) ? (q.value.partialRange || V.value.length === 2) && fe(m) : fe(m));\n }, Ft = () => {\n S.value.enabled || (V.value = null);\n }, Xe = () => {\n x.value.enabled || (d.value && (d.value = !1, A.value = !1, B(!1), P(!1), Q(), a(\"closed\"), D.value && s(b.value)), Ft(), a(\"blur\"));\n }, Lt = (m, j, re = !1) => {\n if (!m) {\n V.value = null;\n return;\n }\n const Ae = Array.isArray(m) ? !m.some((wt) => !ae(wt)) : ae(m), Fe = oe(m);\n Ae && Fe ? (f.value = !0, V.value = m, j && (H.value = re, et(), a(\"text-submit\")), xe().then(() => {\n f.value = !1;\n })) : a(\"invalid-date\", m);\n }, pa = () => {\n n.autoApply && oe(V.value) && M(), vt();\n }, Zt = () => d.value ? Xe() : N(), ya = (m) => {\n V.value = m;\n }, ga = () => {\n S.value.enabled && (h.value = !0, F()), a(\"focus\");\n }, ha = () => {\n if (S.value.enabled && (h.value = !1, s(n.modelValue), H.value)) {\n const m = wl(C.value, E.value);\n m == null || m.focus();\n }\n a(\"blur\");\n }, ba = (m) => {\n v.value && v.value.updateMonthYear(0, {\n month: rn(m.month),\n year: rn(m.year)\n });\n }, ka = (m) => {\n s(m ?? n.modelValue);\n }, wa = (m, j) => {\n var re;\n (re = v.value) == null || re.switchView(m, j);\n }, Za = (m) => Y.value.onClickOutside ? Y.value.onClickOutside(m) : Xe(), k = (m = 0) => {\n var j;\n (j = v.value) == null || j.handleFlow(m);\n };\n return so(L, _, () => Za(he)), t({\n closeMenu: Xe,\n selectDate: et,\n clearValue: ce,\n openMenu: N,\n onScroll: O,\n formatInputValue: F,\n // exposed for testing purposes\n updateInternalModelValue: ya,\n // modify internal modelValue\n setMonthYear: ba,\n parseModel: ka,\n switchView: wa,\n toggleMenu: Zt,\n handleFlow: k,\n dpWrapMenuRef: L\n }), (m, j) => (T(), K(\"div\", {\n ref_key: \"pickerWrapperRef\",\n ref: C,\n class: we(le.value),\n \"data-datepicker-instance\": \"\"\n }, [\n Ze(no, Ee({\n ref_key: \"inputRef\",\n ref: _,\n \"input-value\": o(D),\n \"onUpdate:inputValue\": j[0] || (j[0] = (re) => en(D) ? D.value = re : null),\n \"is-menu-open\": d.value\n }, m.$props, {\n onClear: ce,\n onOpen: N,\n onSetInputDate: Lt,\n onSetEmptyDate: o(M),\n onSelectDate: et,\n onToggle: Zt,\n onClose: Xe,\n onFocus: ga,\n onBlur: ha,\n onRealBlur: j[1] || (j[1] = (re) => h.value = !1),\n onTextInput: j[2] || (j[2] = (re) => m.$emit(\"text-input\", re))\n }), Ve({ _: 2 }, [\n Re(o(te), (re, Ae) => ({\n name: re,\n fn: ke((Fe) => [\n ie(m.$slots, re, Ne(Qe(Fe)))\n ])\n }))\n ]), 1040, [\"input-value\", \"is-menu-open\", \"onSetEmptyDate\"]),\n (T(), $e(ia(m.teleport ? Jn : \"div\"), Ne(Qe($.value)), {\n default: ke(() => [\n Ze(Nt, {\n name: o(ve)(o(g)),\n css: o(y) && !o(x).enabled\n }, {\n default: ke(() => [\n d.value ? (T(), K(\"div\", Ee({\n key: 0,\n ref_key: \"dpWrapMenuRef\",\n ref: L\n }, ge.value, {\n class: { \"dp--menu-wrapper\": !o(x).enabled },\n style: o(x).enabled ? void 0 : o(X)\n }), [\n Ze(mn, Ee({\n ref_key: \"dpMenuRef\",\n ref: v\n }, m.$props, {\n \"internal-model-value\": o(V),\n \"onUpdate:internalModelValue\": j[3] || (j[3] = (re) => en(V) ? V.value = re : null),\n class: { [me.value]: !0, \"dp--menu-wrapper\": m.teleport },\n \"open-on-top\": o(g),\n \"no-overlay-focus\": r.value,\n collapse: U.value,\n \"get-input-rect\": R,\n \"is-text-input-date\": f.value,\n onClosePicker: Xe,\n onSelectDate: et,\n onAutoApply: ot,\n onTimeUpdate: pa,\n onFlowStep: j[4] || (j[4] = (re) => m.$emit(\"flow-step\", re)),\n onUpdateMonthYear: j[5] || (j[5] = (re) => m.$emit(\"update-month-year\", re)),\n onInvalidSelect: j[6] || (j[6] = (re) => m.$emit(\"invalid-select\", o(V))),\n onAutoApplyInvalid: j[7] || (j[7] = (re) => m.$emit(\"invalid-select\", re)),\n onInvalidFixedRange: j[8] || (j[8] = (re) => m.$emit(\"invalid-fixed-range\", re)),\n onRecalculatePosition: o(p),\n onTooltipOpen: j[9] || (j[9] = (re) => m.$emit(\"tooltip-open\", re)),\n onTooltipClose: j[10] || (j[10] = (re) => m.$emit(\"tooltip-close\", re)),\n onTimePickerOpen: j[11] || (j[11] = (re) => m.$emit(\"time-picker-open\", re)),\n onTimePickerClose: j[12] || (j[12] = (re) => m.$emit(\"time-picker-close\", re)),\n onAmPmChange: j[13] || (j[13] = (re) => m.$emit(\"am-pm-change\", re)),\n onRangeStart: j[14] || (j[14] = (re) => m.$emit(\"range-start\", re)),\n onRangeEnd: j[15] || (j[15] = (re) => m.$emit(\"range-end\", re)),\n onDateUpdate: j[16] || (j[16] = (re) => m.$emit(\"date-update\", re)),\n onInvalidDate: j[17] || (j[17] = (re) => m.$emit(\"invalid-date\", re)),\n onOverlayToggle: j[18] || (j[18] = (re) => m.$emit(\"overlay-toggle\", re))\n }), Ve({ _: 2 }, [\n Re(o(z), (re, Ae) => ({\n name: re,\n fn: ke((Fe) => [\n ie(m.$slots, re, Ne(Qe({ ...Fe })))\n ])\n }))\n ]), 1040, [\"internal-model-value\", \"class\", \"open-on-top\", \"no-overlay-focus\", \"collapse\", \"is-text-input-date\", \"onRecalculatePosition\"])\n ], 16)) : Z(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ]),\n _: 3\n }, 16))\n ], 2));\n }\n}), Vn = /* @__PURE__ */ (() => {\n const e = uo;\n return e.install = (t) => {\n t.component(\"Vue3DatePicker\", e);\n }, e;\n})(), io = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: Vn\n}, Symbol.toStringTag, { value: \"Module\" }));\nObject.entries(io).forEach(([e, t]) => {\n e !== \"default\" && (Vn[e] = t);\n});\nexport {\n Vn as default\n};\n","<script setup lang=\"ts\">\nimport { computed, onMounted, type PropType, reactive, ref, useAttrs, watch } from 'vue'\nimport {\n DatepickerFormat,\n DatepickerTypes,\n DayjsFormat,\n DatepickerOutputFormat,\n DatepickerFormatsVariations\n} from '@/enums/Datepicker'\nimport type { DatepickerFormatsObjectFormat, IDatepickerPlaceholders, IDatepickerPreset } from '@/types/IDatepicker'\nimport { type DatePickerValue, type DatepickerTypesUnion, type DatepickerFormatsObject } from '@/types/IDatepicker'\n//@ts-ignore\nimport { dayjs, dayjsLocales } from '../../../utils/dayjs.js'\nimport { default as DatePicker, type DatePickerMarker } from '@vuepic/vue-datepicker'\nimport '@vuepic/vue-datepicker/dist/main.css'\nimport { McTitle, McSvgIcon, McButton } from '@/components'\nimport { useFieldErrors } from '@/composables'\nimport { ButtonSize, TitleVariations, Weights } from '@/enums'\n\nconst attrs = useAttrs()\nconst emit = defineEmits(['update:modelValue'])\n\nconst props = defineProps({\n //@ts-ignore\n modelValue: {\n type: [String, Array] as PropType<DatePickerValue>\n },\n /**\n * Тип датапикера\n */\n type: {\n type: String as () => DatepickerTypesUnion,\n default: DatepickerTypes.DatePicker\n },\n /**\n * Заголовок поля:\n */\n title: {\n type: String as PropType<string>,\n default: ''\n },\n\n /**\n * Вспомогательный текст под инпутом:\n */\n helpText: {\n type: String as PropType<string>,\n default: ''\n },\n\n /**\n * Редактируемый инпут\n */\n editable: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n placeholder: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Name\n */\n name: {\n type: String as PropType<string>,\n required: true\n },\n\n /**\n * Локаль The locale code (ISO 639-1 + optional country code)\n */\n lang: {\n type: String as PropType<string>,\n default: 'en'\n },\n /**\n * Ошибки\n */\n errors: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n /**\n * Отдаваемая дата будет в формате ISO String\n */\n toIsoFormat: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Формат отдаваемой даты\n */\n placeholders: {\n type: Object as IDatepickerPlaceholders,\n default: () => ({\n week: 'Week',\n month: 'Month',\n quarter: 'Quarter',\n year: 'Year',\n confirm: 'Confirm'\n })\n },\n /**\n * Пресеты для быстрых периодов\n **/\n customPresets: {\n type: Array as PropType<IDatepickerPreset[]>,\n default: () => []\n },\n range: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Если значение true, то датапикер отображается в открытом виде\n */\n inline: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Дата, до которой все будет задизэйблено\n **/\n minDate: {\n type: [Date, String] as PropType<Date | string>\n },\n /**\n * Дата, после которой все будет задизэйблено\n **/\n maxDate: {\n type: [String, Date] as PropType<Date | string>\n },\n /**\n * Массив дат запрещенных к выбору / Метод которые проверяет каждую дату\n **/\n disabledDates: {\n type: [Array as PropType<Date[] | string[]>, Function]\n },\n /**\n * Массив дат разрешенных к выбору / Метод которые проверяет каждую дату\n * **/\n allowedDates: {\n type: [Array as PropType<Date[] | string[]>, Function]\n },\n /**\n * Функция проверяющая и устанавливающая доступно ли время для выбора\n * Params [String] date - текущая дата\n * return Boolean, где true - время заблокировано для выбора\n * **/\n disabledTime: {\n type: [Array as PropType<Date[] | string[]>, Function]\n },\n minWidth: {\n type: String as PropType<string>,\n default: '240px'\n },\n hours: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n minutes: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n seconds: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n timezone: {\n type: String as PropType<string>,\n default: dayjs.tz.guess()\n },\n useTimezone: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Показывать ли крестик очищения поля\n * */\n clearable: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n loading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n setDefaultToday: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n markers: {\n type: Array as () => DatePickerMarker[],\n default: () => [] as DatePickerMarker[]\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\nconst pickDate = ref<DatePickerValue>(null)\nconst input = ref<InstanceType<typeof DatePicker> | null | any>(null)\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-date-picker--error': !!fieldErrors.errorText.value,\n 'mc-date-picker--disabled': props.disabled\n }\n})\n\nconst formats = reactive<DatepickerFormatsObject>({\n [DatepickerTypes.TimePicker]: {\n [DatepickerFormatsVariations.Picker]: DatepickerFormat.TimePicker,\n [DatepickerFormatsVariations.Dayjs]: DayjsFormat.TimePicker,\n [DatepickerFormatsVariations.Output]: DatepickerOutputFormat.TimePicker\n },\n [DatepickerTypes.DatePicker]: {\n [DatepickerFormatsVariations.Picker]: DatepickerFormat.DatePicker,\n [DatepickerFormatsVariations.Dayjs]: DayjsFormat.DatePicker,\n [DatepickerFormatsVariations.Output]: DatepickerOutputFormat.DatePicker\n },\n [DatepickerTypes.DateTimePicker]: {\n [DatepickerFormatsVariations.Picker]: DatepickerFormat.DateTimePicker,\n [DatepickerFormatsVariations.Dayjs]: DayjsFormat.DateTimePicker,\n [DatepickerFormatsVariations.Output]: DatepickerOutputFormat.DateTimePicker\n },\n [DatepickerTypes.WeekPicker]: {\n [DatepickerFormatsVariations.Picker]: DatepickerFormat.WeekPicker,\n [DatepickerFormatsVariations.Dayjs]: DayjsFormat.WeekPicker,\n [DatepickerFormatsVariations.Output]: DatepickerOutputFormat.WeekPicker\n },\n [DatepickerTypes.MonthPicker]: {\n [DatepickerFormatsVariations.Picker]: DatepickerFormat.MonthPicker,\n [DatepickerFormatsVariations.Dayjs]: DayjsFormat.MonthPicker,\n [DatepickerFormatsVariations.Output]: DatepickerOutputFormat.MonthPicker\n },\n [DatepickerTypes.YearPicker]: {\n [DatepickerFormatsVariations.Picker]: DatepickerFormat.YearPicker,\n [DatepickerFormatsVariations.Dayjs]: DayjsFormat.YearPicker,\n [DatepickerFormatsVariations.Output]: DatepickerOutputFormat.YearPicker\n }\n})\nconst computedType = computed((): DatepickerTypes => {\n return (props.type as DatepickerTypes) || DatepickerTypes.DatePicker\n})\nconst dateFormat = reactive<DatepickerFormatsObjectFormat>(formats[computedType.value])\n\nconst isTimePicker = computed((): boolean => {\n return computedType.value === DatepickerTypes.TimePicker\n})\nconst isDateTimePicker = computed((): boolean => {\n return computedType.value === DatepickerTypes.DateTimePicker\n})\nconst isWeekPicker = computed((): boolean => {\n return computedType.value === DatepickerTypes.WeekPicker\n})\nconst isMonthPicker = computed((): boolean => {\n return computedType.value === DatepickerTypes.MonthPicker\n})\nconst isYearPicker = computed((): boolean => {\n return computedType.value === DatepickerTypes.YearPicker\n})\nconst pickerType = computed((): Partial<Record<DatepickerTypes, boolean>> => {\n return {\n [DatepickerTypes.TimePicker]: computedType.value === DatepickerTypes.TimePicker,\n [DatepickerTypes.WeekPicker]: computedType.value === DatepickerTypes.WeekPicker,\n [DatepickerTypes.MonthPicker]: computedType.value === DatepickerTypes.MonthPicker,\n [DatepickerTypes.YearPicker]: computedType.value === DatepickerTypes.YearPicker\n }\n})\nconst isAutoApply = computed((): boolean => {\n return !isTimePicker.value && !isDateTimePicker.value && !isFooterVisible.value\n})\nconst weekNumbers = computed((): string | null => {\n return isWeekPicker.value ? 'local' : null\n})\nconst modelType = computed((): string => {\n return props.toIsoFormat && !props.useTimezone ? 'iso' : 'format'\n})\nconst hoursOptions = computed((): object => {\n return props.hours && props.hours.length ? { 'hour-options': props.hours } : {}\n})\nconst minutesOptions = computed((): object => {\n return props.minutes && props.minutes.length ? { 'minute-options': props.minutes } : {}\n})\nconst secondsOptions = computed((): object => {\n return props.seconds && props.seconds.length ? { 'second-options': props.seconds } : {}\n})\nconst isFooterVisible = computed((): boolean => {\n return (\n props.range &&\n (props.customPresets?.length || !!props.placeholders) &&\n !isTimePicker.value &&\n !isYearPicker.value &&\n !isMonthPicker.value\n )\n})\n\nonMounted(() => {\n init()\n})\n\nconst localValue = computed({\n get() {\n return getFormattedPickerDate(props.modelValue)\n },\n set(value) {\n if (!value) value = props.range ? [] : null\n const date = getFormattedOutputDate(value)\n fieldErrors.toggleErrorVisible()\n emit('update:modelValue', date)\n }\n})\n\nconst init = () => {\n props.setDefaultToday && handlePreselectToday()\n}\n\nconst handlerPreselectRange = (period: string[]): void => {\n const [start, end] = period\n input.value && (input.value.currentValue = dayjs ? [dayjs(start).toDate(), dayjs(end).toDate()] : period)\n}\n\n/**\n * Преселект при setDefaultToday = true\n * */\nconst handlePreselectToday = (): void => {\n if (isWeekPicker.value) return\n\n const hasValue = props.range\n ? localValue.value?.length && Array.isArray(localValue.value) && localValue.value.every((v) => dayjs(v).isValid())\n : //@ts-ignore\n dayjs(localValue.value).isValid()\n\n if (!hasValue) {\n let today = props.toIsoFormat\n ? dayjs().toISOString()\n : dayjs().format(dateFormat[DatepickerFormatsVariations.Output])\n localValue.value = props.range ? getFormattedPickerDate([today, today]) : getFormattedPickerDate(today)\n }\n}\n\n/**\n * Prepare dates for datepicker\n * */\nconst getFormattedPickerDate = (value: DatePickerValue): DatePickerValue => {\n if (isWeekPicker.value) return value\n let preparedValue = props.range ? (Array.isArray(value) ? value : []) : [value]\n if (!props.toIsoFormat) {\n preparedValue = preparedValue.map((pv) => dayjs(pv as string, dateFormat.output).format(dateFormat.dayjs))\n }\n\n const [start, end] = preparedValue\n return props.range ? ([start, end].filter(Boolean) as DatePickerValue) : start\n}\n\n/**\n * Prepare dates for output\n * */\nconst getFormattedOutputDate = (value: DatePickerValue): DatePickerValue => {\n if (isWeekPicker.value) return value\n let preparedValue = props.range ? (Array.isArray(value) ? value.map((pv) => String(pv)) : []) : [String(value)]\n if (!props.toIsoFormat) {\n preparedValue = preparedValue.map((pv) => dayjs(pv, dateFormat.dayjs).format(dateFormat.output))\n }\n\n const [start, end] = preparedValue.map((pv) => (pv === 'Invalid Date' ? null : pv))\n return props.range ? ([start, end].filter(Boolean) as DatePickerValue) : start\n}\n\nconst setLocale = async (): Promise<void> => {\n const locale = props.lang !== 'ar' && Object.keys(dayjsLocales).includes(props.lang) ? props.lang : 'en'\n dayjs.locale(locale)\n}\n\nconst selectPeriod = (key: string) => {\n let start = dayjs()\n //@ts-ignore\n const end = pickDate.value ? dayjs(pickDate.value) : dayjs()\n switch (key) {\n case 'week':\n start = dayjs(end).subtract(7, 'days')\n break\n case 'month':\n start = dayjs(end).subtract(1, 'months')\n break\n case 'quarter':\n start = dayjs(end).subtract(3, 'months')\n break\n case 'year':\n start = dayjs(end).subtract(1, 'years')\n break\n }\n input.value.updateInternalModelValue([start.toDate(), end.toDate()])\n}\nconst handlePickDate = (date: DatePickerValue) => {\n pickDate.value = date\n}\n\nconst handleSubmit = () => {\n input.value.selectDate()\n input.value.closeMenu()\n}\n\nwatch(\n () => props.lang,\n () => {\n setLocale()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div ref=\"field\" class=\"mc-date-picker\" :class=\"classes\">\n <label v-if=\"$slots.header || !!props.title\" :for=\"name\" class=\"mc-date-picker__header\">\n <!-- @slot Слот для заголовка над инпутом -->\n <slot name=\"title\">\n <mc-title v-if=\"props.title\" :weight=\"Weights.Medium\">{{ props.title }}</mc-title>\n </slot>\n </label>\n <div class=\"mc-date-picker__inner\">\n <div class=\"mc-date-picker__input-wrapper\" :style=\"{ minWidth }\">\n <date-picker\n v-model=\"localValue\"\n ref=\"input\"\n :type=\"type\"\n v-bind=\"{\n ...attrs,\n ...pickerType,\n ...hoursOptions,\n ...minutesOptions,\n ...secondsOptions\n }\"\n class=\"mc-date-picker__date-picker\"\n :range=\"props.range\"\n :multi-calendars=\"props.range\"\n :month-change-on-scroll=\"false\"\n :timezone=\"timezone\"\n :format=\"dateFormat.picker\"\n :model-type=\"modelType\"\n :auto-apply=\"isAutoApply\"\n :partial-flow=\"isTimePicker || isDateTimePicker\"\n :enable-time-picker=\"isTimePicker || isDateTimePicker\"\n :clearable=\"clearable\"\n :inline=\"inline\"\n :locale=\"lang\"\n :markers=\"markers\"\n :action-row=\"{}\"\n :loading=\"loading\"\n :week-numbers=\"weekNumbers\"\n :placeholder=\"placeholder\"\n :editable=\"editable\"\n :disabled=\"disabled\"\n :disabled-dates=\"disabledDates\"\n :allowed-dates=\"allowedDates\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :disabled-times=\"disabledTime\"\n @range-start=\"handlePickDate\"\n >\n <!-- @slot Слот для вставки в футер попапа календаря -->\n <template v-if=\"isFooterVisible\" #action-row>\n <div class=\"mc-datepicker__footer-popup\">\n <div class=\"mc-datepicker__footer-popup-periods\">\n <template v-if=\"customPresets && customPresets.length\">\n <mc-button\n v-for=\"preset in customPresets\"\n :key=\"preset.title\"\n variation=\"black-link\"\n secondary-color=\"purple\"\n @click=\"handlerPreselectRange(preset.period)\"\n >\n {{ preset.title }}\n </mc-button>\n </template>\n <template v-else>\n <mc-button\n v-if=\"placeholders.week\"\n variation=\"black-link\"\n secondary-color=\"purple\"\n @click=\"selectPeriod('week')\"\n >\n {{ placeholders.week }}\n </mc-button>\n <mc-button\n v-if=\"placeholders.month\"\n variation=\"black-link\"\n secondary-color=\"purple\"\n @click=\"selectPeriod('month')\"\n >\n {{ placeholders.month }}\n </mc-button>\n <mc-button\n v-if=\"placeholders.quarter\"\n variation=\"black-link\"\n secondary-color=\"purple\"\n @click=\"selectPeriod('quarter')\"\n >\n {{ placeholders.quarter }}\n </mc-button>\n <mc-button\n v-if=\"placeholders.year\"\n variation=\"black-link\"\n secondary-color=\"purple\"\n @click=\"selectPeriod('year')\"\n >\n {{ placeholders.year }}\n </mc-button>\n </template>\n </div>\n <mc-button\n v-if=\"placeholders.confirm\"\n variation=\"purple-outline\"\n :size=\"ButtonSize.Xs\"\n @click=\"handleSubmit\"\n >\n {{ placeholders.confirm }}\n </mc-button>\n </div>\n </template>\n <template #input-icon>\n <mc-svg-icon name=\"calendar\" size=\"300\" :color=\"props.disabled ? 'outline-gray' : 'black'\" />\n </template>\n <template v-if=\"$slots.header\" #header>\n <div>\n <!-- @slot Слот для вставки в хедер попапа календаря -->\n <slot name=\"header\" />\n </div>\n </template>\n <template v-if=\"$slots.sidebar\" #sidebar>\n <div>\n <!-- @slot Слот для вставки в сайдбар попапа календаря -->\n <slot name=\"sidebar\" />\n </div>\n </template>\n <!-- @slot Слот для вставки пользовательской иконки календаря -->\n <template #icon-calendar>\n <mc-svg-icon class=\"mc-date-picker__icon\" name=\"calendar\" />\n </template>\n </date-picker>\n </div>\n </div>\n <div v-if=\"!!fieldErrors.errorText.value || !!props.helpText || !!$slots.bottom\" class=\"mc-date-picker__footer\">\n <mc-title v-if=\"!!fieldErrors.errorText.value\" tag-name=\"div\" color=\"red\" :variation=\"TitleVariations.Overline\">\n {{ fieldErrors.errorText.value }}\n </mc-title>\n <br v-if=\"!!fieldErrors.errorText.value && (!!props.helpText || !!$slots.bottom)\" />\n <!-- @slot Слот для доп. текста под инпутом -->\n <slot name=\"bottom\">\n <mc-title v-if=\"!!props.helpText\" tag-name=\"div\" :variation=\"TitleVariations.Overline\">\n {{ props.helpText }}\n </mc-title>\n </slot>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n//More info https://vue3datepicker.com/installation/\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/box-shadows' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/media-queries' as *;\n@use '../../../assets/tokens/border-radius' as *;\n@use 'sass:color' as sasscolor;\n.mc-date-picker {\n $block-name: &;\n display: block;\n font-family: $font-family-main;\n &__header {\n @include reset-text-indents();\n display: block;\n margin-bottom: $space-100;\n &:empty {\n display: none;\n }\n }\n &__inner {\n display: flex;\n align-items: center;\n }\n &__input-wrapper {\n width: 100%;\n .dp__input {\n font-family: $font-family-main;\n font-size: $font-size-200;\n line-height: $line-height-200;\n height: $size-500;\n padding: $space-100 $space-300 $space-100 36px;\n border-color: $color-outline-gray;\n border-radius: $radius-100;\n cursor: pointer;\n color: $color-black;\n &:hover,\n &:focus {\n border-color: $color-purple;\n }\n &::placeholder {\n color: $color-gray;\n }\n }\n }\n &__footer {\n margin-top: $space-50;\n &:empty {\n display: none;\n }\n }\n .dp__input {\n font-family: $font-family-main;\n font-size: $font-size-200;\n line-height: $line-height-200;\n height: $size-500;\n padding: $space-100 $space-300 $space-100 36px;\n border-color: $color-outline-gray;\n border-radius: $radius-100;\n cursor: pointer;\n color: $color-black;\n &:hover,\n &:focus {\n border-color: $color-purple;\n }\n &::placeholder {\n color: $color-gray;\n }\n }\n\n &--error {\n .dp__input {\n border-color: $color-red !important;\n }\n }\n &--disabled {\n .dp__input {\n color: $color-outline-gray;\n cursor: not-allowed;\n background-color: $color-hover-gray;\n border-color: $color-outline-gray;\n box-shadow: none;\n &:hover,\n &:focus {\n border-color: $color-outline-gray;\n }\n }\n }\n // Input to top\n // Calendar below\n .dp + .dp {\n border-left: none;\n }\n .dp {\n width: 256px;\n padding: $space-200;\n font-size: $font-size-200;\n &--header-wrap {\n margin-bottom: $space-200;\n }\n &__month_year_wrap {\n justify-content: center;\n }\n &__month_year_select {\n font-size: $font-size-200;\n line-height: $line-height-200;\n font-weight: $font-weight-semi-bold;\n color: $color-black;\n width: max-content;\n height: auto;\n }\n &__input_icon {\n display: flex;\n align-items: center;\n justify-content: center;\n left: 8px;\n }\n &--clear-btn {\n margin-right: $space-100;\n svg {\n padding: 0;\n }\n &:hover {\n svg {\n color: $color-black;\n }\n }\n }\n &__calendar {\n &_item {\n flex-grow: unset;\n .dp {\n &__cell_inner {\n @include size($size-400);\n font-size: $font-size-200;\n line-height: $line-height-200;\n font-weight: $font-weight-normal;\n color: $color-black;\n border-radius: $radius-100;\n &:hover {\n color: $color-purple;\n background-color: sasscolor.scale($color-purple, $lightness: 80%);\n border-radius: $radius-100;\n }\n }\n &__cell_disabled {\n background-color: $color-hover-gray !important;\n border-radius: 0 !important;\n }\n &__cell_offset {\n color: $color-hover-gray;\n }\n &__range_between {\n color: $color-black;\n background-color: sasscolor.scale($color-purple, $lightness: 90%);\n border-radius: 0;\n }\n &__range_start,\n &__range_end,\n &__active_date {\n color: $color-white !important;\n background-color: $color-purple !important;\n border-color: $color-purple !important;\n }\n &__active_date {\n box-shadow: $shadow-s-purple;\n }\n &__today {\n color: $color-purple;\n border-color: transparent;\n border-radius: $radius-100;\n }\n }\n }\n &_header {\n &_item {\n @include size($space-400);\n font-size: $font-size-200;\n line-height: $line-height-200;\n font-weight: $font-weight-normal;\n color: $color-dark-gray;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n &_separator {\n display: none;\n }\n }\n &_row {\n margin: 0;\n }\n }\n &__btn {\n font-size: $font-size-200;\n line-height: $line-height-200;\n font-weight: $font-weight-semi-bold;\n background: transparent;\n &:hover {\n color: $color-purple;\n }\n }\n &__menu {\n border-radius: $radius-150;\n box-shadow: $shadow-s;\n z-index: 12222;\n border: transparent;\n padding: $space-200;\n &_inner {\n padding: 0;\n }\n }\n &__arrow_top,\n &__arrow_bottom,\n &__arrow_left,\n &__arrow_right {\n border: none;\n box-shadow: $shadow-s;\n z-index: -1;\n }\n &__action_row {\n padding: 0;\n margin: 0;\n .mc-datepicker__footer-popup {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n &-periods {\n display: flex;\n justify-content: space-between;\n align-items: center;\n @include child-indent-right($space-200);\n > * {\n @include child-indent-right($space-300);\n }\n .mc-button {\n @include child-indent-right($space-zero);\n }\n }\n }\n }\n }\n @at-root {\n html[dir='rtl'] {\n .mx-icon {\n &-double {\n &-right:after {\n left: $space-100;\n }\n &-left:before {\n left: -$space-100;\n }\n }\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useDebounceFn, useDraggable, useLocalStorage, useSessionStorage } from '@vueuse/core'\nimport { computed, type PropType, ref, watch } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { McPreview } from '@/components'\nimport type { ColorsUnion } from '@/types/styles/Colors'\n\ninterface DraggableInitPayload {\n x: number\n y: number\n}\n\ntype CardIdType = string | number | undefined\ntype StorageTypeUnion = 'local' | 'session'\n\nconst localStorage = useLocalStorage('McDraggable', {})\nconst sessionStorage = useSessionStorage('McDraggable', {})\nconst draggable_el = ref<HTMLElement | null>(null)\nconst debounce = useDebounceFn((method) => {\n method()\n}, 100)\n\nconst props = defineProps({\n /**\n * Дизайн:\n * purple, red, orange и т.д.\n */\n variation: {\n type: String as () => ColorTypes,\n default: 'purple' as ColorTypes\n },\n initial: {\n type: Object as PropType<DraggableInitPayload>,\n default: () =>\n ({\n x: 0,\n y: 0\n }) as DraggableInitPayload\n },\n /**\n * Key for save position to storage (**required**, if savePosition = true)\n * */\n cardId: {\n type: [String, Number] as PropType<CardIdType>\n },\n savePosition: {\n type: Boolean,\n default: false\n },\n storageType: {\n type: String as PropType<StorageTypeUnion>,\n default: 'session'\n }\n})\n\nconst uniqueId = computed((): CardIdType => {\n return props.cardId\n})\n\nconst isSessionStorageType = computed((): boolean => {\n return props.storageType === ('session' as StorageTypeUnion)\n})\nconst isLocalStorageType = computed((): boolean => {\n return props.storageType === ('local' as StorageTypeUnion)\n})\nconst initialPositions = computed((): DraggableInitPayload => {\n let local_x = props.initial.x || 0\n let local_y = props.initial.y || 0\n\n if (props.savePosition && !uniqueId.value)\n console.warn('cardId prop required, if savePosition = true')\n\n if (!uniqueId.value || !props.savePosition) return { x: local_x, y: local_y }\n if (isSessionStorageType.value) {\n //@ts-ignore\n const { x, y } = sessionStorage.value[uniqueId.value] || ({} as DraggableInitPayload)\n local_x = x\n local_y = y\n }\n if (isLocalStorageType.value) {\n //@ts-ignore\n const { x, y } = localStorage.value[uniqueId.value] || ({} as DraggableInitPayload)\n local_x = x\n local_y = y\n }\n return { x: local_x || 0, y: local_y || 0 } as DraggableInitPayload\n})\n\nconst { x, y, style } = useDraggable(draggable_el, {\n initialValue: { x: initialPositions.value.x, y: initialPositions.value.y } as DraggableInitPayload\n})\n\nconst styles = computed((): { [key: string]: ColorsUnion | string } => {\n return {\n '--mc-draggable-color': Colors[props.variation]\n }\n})\n\nconst handleSavePosition = (): void => {\n if (!uniqueId.value) return\n if (isSessionStorageType.value) {\n sessionStorage.value = {\n ...sessionStorage.value,\n [uniqueId.value]: { x: x.value, y: y.value }\n }\n }\n if (isLocalStorageType.value) {\n localStorage.value = {\n ...localStorage.value,\n [uniqueId.value]: { x: x.value, y: y.value }\n }\n }\n}\n\nwatch(\n () => style.value,\n () => {\n if (!props.savePosition) return\n debounce(handleSavePosition)\n }\n)\n</script>\n\n<template>\n <div ref=\"draggable_el\" class=\"mc-draggable\" :style=\"style\" style=\"position: fixed\">\n <div class=\"mc-draggable__inner\" :style=\"styles\">\n <mc-preview>\n <template #left>\n <slot name=\"left\" />\n </template>\n <template #top>\n <slot name=\"top\" />\n </template>\n <template #bottom>\n <slot name=\"bottom\" />\n </template>\n <template #right>\n <slot name=\"right\" />\n </template>\n </mc-preview>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/media-queries' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/border-radius' as *;\n@use '../../../assets/tokens/font-families' as *;\n.mc-draggable {\n cursor: move;\n font-family: $font-family-main;\n &__inner {\n --mc-draggable-color: #{$color-purple};\n\n padding: $space-100 $space-150 $space-100 $space-200;\n min-height: $size-700;\n display: flex;\n align-items: center;\n position: relative;\n color: white;\n user-select: none;\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: var(--mc-draggable-color);\n border-radius: $radius-200;\n }\n\n .mc-preview {\n width: 100%;\n z-index: 1;\n &__top {\n margin-bottom: $space-50;\n }\n &__left {\n display: flex;\n align-items: center;\n margin-inline-end: $size-150;\n }\n &__right {\n display: flex;\n align-items: center;\n margin-inline-start: auto;\n padding-inline-start: $space-100;\n }\n }\n\n @media #{$media-query-m-down} {\n .mc-preview {\n flex-wrap: wrap;\n\n &__center {\n flex: 1;\n }\n &__right {\n width: 100%;\n padding-top: $space-100;\n padding-inline-start: $size-400 - 2;\n }\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McSvgIcon } from '@/components'\nimport { useFieldErrors } from '@/composables'\nimport { computed, type PropType, useSlots } from 'vue'\nimport { Sizes, type SizeTypes } from '@/types/styles/Sizes'\nimport { Directions } from '@/enums/ui/Directions'\nimport type { SizesUnion } from '@/types/styles/Sizes'\nimport { TitleVariations, Weights } from '@/enums'\n\nconst emit = defineEmits(['update:modelValue'])\nconst slots = useSlots()\nconst props = defineProps({\n //@ts-ignore\n modelValue: {\n type: [Boolean, String, Number, Array as PropType<string[] | number[]>],\n validator(value: unknown, props: any): boolean {\n return props.multiple ? Array.isArray(value) : true\n }\n },\n /**\n * Name\n *\n */\n name: {\n type: String,\n default: null\n },\n /**\n * Выбранное значение\n *\n */\n checkedValue: {\n type: [String, Boolean, Number],\n default: true\n },\n /**\n * Невыбранное значение\n *\n */\n uncheckedValue: {\n type: [String, Boolean, Number],\n default: false\n },\n\n /**\n * Ошибки\n *\n */\n errors: {\n type: Array as PropType<string[]>,\n default: null\n },\n\n /**\n * Вспомогательный текст под инпутом:\n *\n */\n helpText: {\n type: String,\n default: null\n },\n\n /**\n * Подпись чекбокса:\n *\n */\n mainText: {\n type: String,\n default: null\n },\n\n /**\n * Заголовок поля:\n *\n */\n title: {\n type: String,\n default: null\n },\n\n /**\n * Отключенное состояние\n *\n */\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n checkboxSize: {\n type: String as () => SizeTypes,\n default: '250'\n },\n\n /**\n * Атрибут tabindex для главного элемента\n *\n */\n tabindex: {\n type: [String, Number]\n },\n dir: {\n type: String as () => Directions,\n default: Directions.Ltr\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\n\nconst rtl = computed((): boolean => {\n return props.dir === Directions.Rtl\n})\n\nconst classes = computed((): { [key: string]: boolean } => ({\n 'mc-field-checkbox': true,\n 'mc-field-checkbox--error': props.errors,\n 'mc-field-checkbox--disabled': props.disabled,\n 'mc-field-checkbox--empty': !props.mainText && !slots.default,\n 'mc-field-checkbox--rtl': rtl.value\n}))\n\nconst styles = computed((): { [key: string]: SizesUnion | string } => ({\n '--mc-field-checkbox-size': Sizes[props.checkboxSize as SizeTypes]\n}))\n\nconst isChecked = computed((): boolean => {\n return props.multiple && props.modelValue\n ? props.modelValue.includes(props.checkedValue)\n : props.modelValue === props.checkedValue\n})\n\nconst inputProps = computed((): object => ({\n disabled: props.disabled,\n name: props.name,\n checked: isChecked.value,\n tabindex: props.tabindex,\n type: 'checkbox',\n class: 'mc-field-checkbox__input'\n}))\n\nconst handleChange = (e: Event): void => {\n fieldErrors.toggleErrorVisible()\n\n const payload =\n props.multiple && props.modelValue\n ? props.modelValue.includes(props.checkedValue)\n ? props.modelValue.filter((v: boolean) => v !== props.checkedValue)\n : [...props.modelValue, props.checkedValue]\n : //@ts-ignore\n e.target && e.target.checked\n ? props.checkedValue\n : props.uncheckedValue\n\n emit('update:modelValue', payload)\n}\n</script>\n\n<template>\n <div :dir=\"props.dir\" :class=\"classes\" :style=\"styles\">\n <div v-if=\"props.title || $slots.header\" class=\"mc-field-text__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"header\">\n <mc-title :weight=\"Weights.Medium\">{{ props.title }}</mc-title>\n </slot>\n </div>\n <div class=\"mc-field-checkbox__input-wrap\">\n <label class=\"mc-field-checkbox__name\">\n <mc-svg-icon\n class=\"mc-field-checkbox__icon\"\n :name=\"isChecked ? 'checkbox--checked' : 'checkbox'\"\n :color=\"isChecked ? 'purple' : 'gray'\"\n :size=\"props.checkboxSize\"\n />\n <input v-bind=\"inputProps\" @change=\"handleChange\" />\n <span v-if=\"props.mainText || $slots.default\" class=\"mc-field-checkbox__name-text\">\n <!-- @slot Слот для пользовательской подписи чекбокса -->\n <slot>\n <mc-title tag-name=\"div\">{{ props.mainText }}</mc-title>\n </slot>\n </span>\n </label>\n <div class=\"mc-field-checkbox__footer\">\n <mc-title\n v-if=\"fieldErrors.errorText.value\"\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n max-width=\"100%\"\n >\n {{ fieldErrors.errorText.value }}\n </mc-title>\n <br v-if=\"fieldErrors.errorText.value\" />\n <!-- @slot Слот доп. текста под чекбоксом -->\n <slot name=\"footer\">\n <mc-title\n v-if=\"props.helpText\"\n tag-name=\"div\"\n :variation=\"TitleVariations.Overline\"\n color=\"gray\"\n max-width=\"100%\"\n >\n {{ props.helpText }}\n </mc-title>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-families' as *;\n.mc-field-checkbox {\n $block-name: &;\n --mc-field-checkbox-size: #{$size-250};\n font-family: $font-family-main;\n position: relative;\n display: block;\n min-width: var(--mc-field-checkbox-size);\n min-height: var(--mc-field-checkbox-size);\n\n #{$block-name}__icon {\n width: var(--mc-field-checkbox-size);\n height: var(--mc-field-checkbox-size);\n }\n\n &__header {\n @include reset-text-indents();\n display: block;\n margin-bottom: $space-100;\n\n &:empty {\n display: none;\n }\n }\n\n &__name {\n @include reset();\n position: relative;\n line-height: $line-height-200;\n font-size: $font-size-200;\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n }\n\n &__icon {\n z-index: 1;\n &:hover {\n color: $color-purple;\n }\n }\n\n &__name-text {\n display: inline-block;\n margin-inline-start: $space-100;\n &:before {\n @include pseudo(none);\n @include size(var(--mc-field-checkbox-size));\n @include position(absolute, 0 null null 0);\n background-size: 100%;\n }\n\n .mc-button {\n display: inline;\n white-space: normal;\n vertical-align: top;\n margin-inline-start: 1px;\n\n &__text {\n white-space: normal;\n display: inline;\n }\n }\n }\n\n &__input {\n display: none;\n }\n\n &__footer {\n padding-inline-start: $space-250;\n margin-top: $space-50;\n &:empty {\n display: none;\n }\n }\n\n &--disabled {\n #{$block-name} {\n &__icon {\n color: $color-outline-gray;\n &:hover {\n color: $color-outline-gray;\n }\n }\n &__name-text {\n &:before {\n display: block;\n border-radius: 2px;\n background-color: $color-hover-gray;\n }\n }\n }\n }\n\n &--empty {\n #{$block-name} {\n &__footer,\n &__name {\n padding: 0;\n margin: 0;\n }\n }\n }\n\n &--rtl {\n direction: rtl;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McSvgIcon } from '@/components'\nimport { computed, type PropType, useSlots, watch } from 'vue'\nimport { type ColorTypes } from '@/types/styles/Colors'\nimport type { SizeTypes } from '@/types/styles/Sizes'\nimport { useFieldErrors } from '@/composables'\nimport type { RadioVariationUnion } from '@/types/IRadio'\nimport { Directions } from '@/enums/ui/Directions'\nimport { type DirectionsUnion } from '@/types/IDirections'\nimport type { IconsListUnion } from '@/types/styles/Icons'\nimport { TitleVariations } from '@/enums'\n\nconst slots = useSlots()\nconst emit = defineEmits(['update:modelValue'])\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n default: null\n },\n value: {\n default: null\n },\n /**\n * Name\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Подпись радио:\n *\n */\n label: {\n type: [String, Number],\n default: null\n },\n /**\n * Вспомогательный текст под инпутом:\n *\n */\n helpText: {\n type: String,\n default: null\n },\n\n /**\n * Ошибки\n *\n */\n errors: {\n type: Array as PropType<string[]>,\n default: null\n },\n /**\n * Отключенное состояние\n *\n */\n disabled: {\n type: Boolean,\n default: false\n },\n\n /**\n * Атрибут tabindex для главного элемента\n *\n */\n tabindex: {\n type: [String, Number]\n },\n /**\n * Вариант активного состояния\n * circle - внутри круг\n * checkmark - внутри галочка\n * */\n variation: {\n type: String as () => RadioVariationUnion,\n default: 'circle'\n },\n /**\n * цвет\n */\n color: {\n type: String as () => ColorTypes,\n default: 'purple'\n },\n iconSize: {\n type: String as () => SizeTypes,\n default: '250'\n },\n dir: {\n type: String as () => DirectionsUnion,\n default: Directions.Ltr\n }\n})\nconst fieldErrors = useFieldErrors(props.errors)\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-field-radio-button--disabled': props.disabled,\n 'mc-field-radio-button--empty': !props.label && !slots.default,\n 'mc-field-radio-button--rtl': rtl.value\n }\n})\nconst rtl = computed((): boolean => {\n return props.dir === Directions.Rtl\n})\n\nconst activeIcon = computed((): IconsListUnion => {\n switch (props.variation) {\n case 'checkmark': {\n return 'check_circle_solid'\n }\n default: {\n return 'radio--checked'\n }\n }\n})\n\nconst iconColor = computed((): ColorTypes => {\n switch (true) {\n case props.disabled:\n return 'outline-gray'\n case inputProps.value.checked:\n return props.color as ColorTypes\n default:\n return 'gray'\n }\n})\n\nconst inputProps = computed((): { [key: string]: any } => {\n return {\n disabled: props.disabled,\n value: props.modelValue,\n name: props.name,\n checked: props.value && props.value === props.modelValue,\n tabindex: props.tabindex,\n class: 'mc-field-radio-button__input',\n type: 'radio'\n }\n})\n\nwatch(\n () => props.modelValue,\n () => {\n fieldErrors.toggleErrorVisible()\n }\n)\n\nconst handleChange = () => {\n emit('update:modelValue', props.value)\n}\n</script>\n\n<template>\n <label :dir=\"props.dir\" class=\"mc-field-radio-button\" :class=\"classes\">\n <input checked v-bind=\"inputProps\" @change=\"handleChange\" />\n <span class=\"mc-field-radio-button__icon_wrapper\">\n <mc-svg-icon\n :name=\"inputProps.checked ? activeIcon : 'circle'\"\n :color=\"iconColor\"\n :size=\"props.iconSize\"\n class=\"mc-field-radio-button__icon\"\n />\n </span>\n <span v-if=\"label || $slots.default\" class=\"mc-field-radio-button__text\">\n <!-- @slot Слот для пользовательской подписи радио -->\n <slot>\n <mc-title>{{ label }}</mc-title>\n </slot>\n <mc-title\n v-if=\"fieldErrors.errorText.value\"\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n max-width=\"100%\"\n >\n {{ fieldErrors.errorText.value }}\n </mc-title>\n <br v-if=\"fieldErrors.errorText.value\" />\n <!-- @slot -->\n <slot name=\"footer\">\n <mc-title\n v-if=\"props.helpText\"\n tag-name=\"div\"\n :variation=\"TitleVariations.Overline\"\n color=\"gray\"\n max-width=\"100%\"\n >\n {{ props.helpText }}\n </mc-title>\n </slot>\n </span>\n </label>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-field-radio-button {\n $block-name: &;\n font-family: $font-family-main;\n min-width: $size-250;\n min-height: $size-250;\n @include reset();\n position: relative;\n line-height: $line-height-200;\n font-size: $font-size-200;\n cursor: pointer;\n display: inline-flex;\n\n &__icon {\n &_wrapper {\n z-index: 1;\n margin-inline-end: $space-50;\n }\n }\n\n &__text {\n display: inline-block;\n margin: 2px 0;\n }\n\n &__input {\n display: none;\n }\n\n &--disabled {\n cursor: auto;\n\n #{$block-name}__input {\n & ~ #{$block-name}__icon_wrapper {\n .mc-svg-icon {\n border-radius: $radius-circle;\n background-color: $color-hover-gray;\n }\n }\n }\n }\n\n &--empty {\n padding: 0;\n margin: 0;\n }\n &--rtl {\n direction: rtl;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McFieldRadio } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport { useFieldErrors } from '@/composables'\nimport type { IRadioGroupOptions, IRadioGroupOption } from '@/types/IRadioGroup'\nimport { type DirectionsUnion } from '@/types/IDirections'\nimport { Directions } from '@/enums/ui/Directions'\nimport type { RadioGroupDirectionUnion } from '@/types/IRadioGroup'\nimport { RadioGroupDirection } from '@/enums/RadioGroup'\nimport type { RadioVariationUnion } from '@/types/IRadio'\nimport { TitleVariations } from '@/enums'\n\nconst emit = defineEmits(['update:modelValue', 'change'])\n//@ts-ignore\nconst props = defineProps({\n modelValue: [String, Number],\n /**\n * Объект или массив данных\n */\n options: {\n type: [Array as PropType<IRadioGroupOptions>],\n default: () => []\n },\n /**\n * Заголовок:\n *\n */\n title: {\n type: String,\n default: ''\n },\n /**\n * Вспомогательный текст под инпутом:\n *\n */\n helpText: {\n type: String,\n default: ''\n },\n /**\n * Ошибки\n *\n */\n errors: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n /**\n * Name\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Отключенное состояние\n * всего списка\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Добавление пользовательского\n * класса к radio\n */\n radioClassName: {\n type: String,\n default: ''\n },\n /**\n * Направление списка\n * `column`, `row`\n */\n direction: {\n type: String as () => RadioGroupDirectionUnion,\n default: RadioGroupDirection.Column\n },\n dir: {\n type: String as () => DirectionsUnion,\n default: Directions.Ltr\n },\n /**\n * Вариант активного состояния\n * circle - внутри круг\n * checkmark - внутри галочка\n * */\n variation: {\n type: String as () => RadioVariationUnion,\n default: 'circle'\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\n\nconst computedOptions = computed((): object => {\n if (!props.options.length) return []\n return props.options.map((o: IRadioGroupOption, i: number) => {\n const optionData = typeof o === 'object' ? o : ({ label: o, value: o } as IRadioGroupOption)\n return {\n id: Date.now() + i,\n ...optionData,\n disabled: props.disabled || optionData.disabled,\n value: optionData.value,\n modelValue: props.modelValue,\n class: props.radioClassName,\n dir: props.dir,\n variation: props.variation\n }\n })\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n [`mc-field-radio-group--direction-${props.direction}`]: !!props.direction\n }\n})\n\n/**\n * Событие по смене выбора\n * @property {event}\n */\nconst handleInput = (e: string | number): void => {\n fieldErrors.toggleErrorVisible()\n emit('update:modelValue', e)\n emit('change', e)\n}\n</script>\n\n<template>\n <div :dir=\"props.dir\" class=\"mc-field-radio-group\" :class=\"classes\">\n <div class=\"mc-field-radio-group__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"header\">\n <mc-title v-if=\"props.title\">{{ props.title }}</mc-title>\n </slot>\n </div>\n <div class=\"mc-field-radio-group__buttons\">\n <mc-field-radio\n v-for=\"radio in computedOptions\"\n :key=\"radio.id\"\n v-bind=\"radio\"\n :name=\"props.name\"\n @update:modelValue=\"handleInput\"\n />\n </div>\n <div v-if=\"fieldErrors.errorText.value || props.helpText || $slots.footer\" class=\"mc-field-radio-group__footer\">\n <mc-title\n v-if=\"fieldErrors.errorText.value\"\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n max-width=\"100%\"\n >\n {{ fieldErrors.errorText.value }}\n </mc-title>\n <br v-if=\"fieldErrors.errorText.value\" />\n <!-- @slot Слот доп. текста под инпутом -->\n <slot name=\"footer\">\n <mc-title\n v-if=\"props.helpText\"\n tag-name=\"div\"\n :variation=\"TitleVariations.Overline\"\n color=\"gray\"\n max-width=\"100%\"\n >\n {{ props.helpText }}\n </mc-title>\n </slot>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/line-heights' as *;\n.mc-field-radio-group {\n $block-name: &;\n\n &__header {\n @include reset-text-indents();\n display: block;\n margin-bottom: $space-100;\n\n &:empty {\n display: none;\n }\n }\n\n &__footer {\n line-height: $line-height-150;\n\n &:empty {\n display: none;\n }\n }\n\n &--direction {\n &-column {\n #{$block-name}__buttons {\n display: flex;\n flex-direction: column;\n @include child-indent-bottom($space-100);\n }\n }\n &-row {\n #{$block-name}__buttons {\n @include child-indent-right($space-100);\n }\n }\n }\n}\n</style>\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode('.vue-slider-dot{position:absolute;transition:all 0s;z-index:5}.vue-slider-dot:focus{outline:none}.vue-slider-dot-tooltip{position:absolute;visibility:hidden}.vue-slider-dot-hover:hover .vue-slider-dot-tooltip,.vue-slider-dot-tooltip-show{visibility:visible}.vue-slider-dot-tooltip-top{top:-10px;left:50%;transform:translate(-50%,-100%)}.vue-slider-dot-tooltip-bottom{bottom:-10px;left:50%;transform:translate(-50%,100%)}.vue-slider-dot-tooltip-left{left:-10px;top:50%;transform:translate(-100%,-50%)}.vue-slider-dot-tooltip-right{right:-10px;top:50%;transform:translate(100%,-50%)}.vue-slider-marks{position:relative;width:100%;height:100%}.vue-slider-mark{position:absolute;z-index:1}.vue-slider-ltr .vue-slider-mark,.vue-slider-rtl .vue-slider-mark{width:0;height:100%;top:50%}.vue-slider-ltr .vue-slider-mark-step,.vue-slider-rtl .vue-slider-mark-step{top:0}.vue-slider-ltr .vue-slider-mark-label,.vue-slider-rtl .vue-slider-mark-label{top:100%;margin-top:10px}.vue-slider-ltr .vue-slider-mark{transform:translate(-50%,-50%)}.vue-slider-ltr .vue-slider-mark-step{left:0}.vue-slider-ltr .vue-slider-mark-label{left:50%;transform:translate(-50%)}.vue-slider-rtl .vue-slider-mark{transform:translate(50%,-50%)}.vue-slider-rtl .vue-slider-mark-step{right:0}.vue-slider-rtl .vue-slider-mark-label{right:50%;transform:translate(50%)}.vue-slider-ttb .vue-slider-mark,.vue-slider-btt .vue-slider-mark{width:100%;height:0;left:50%}.vue-slider-ttb .vue-slider-mark-step,.vue-slider-btt .vue-slider-mark-step{left:0}.vue-slider-ttb .vue-slider-mark-label,.vue-slider-btt .vue-slider-mark-label{left:100%;margin-left:10px}.vue-slider-btt .vue-slider-mark{transform:translate(-50%,50%)}.vue-slider-btt .vue-slider-mark-step{top:0}.vue-slider-btt .vue-slider-mark-label{top:50%;transform:translateY(-50%)}.vue-slider-ttb .vue-slider-mark{transform:translate(-50%,-50%)}.vue-slider-ttb .vue-slider-mark-step{bottom:0}.vue-slider-ttb .vue-slider-mark-label{bottom:50%;transform:translateY(50%)}.vue-slider-mark-step,.vue-slider-mark-label{position:absolute}.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-rail{background-color:#ccc;border-radius:15px}.vue-slider-process{background-color:#3498db;border-radius:15px}.vue-slider-mark{z-index:4}.vue-slider-mark:first-child .vue-slider-mark-step,.vue-slider-mark:last-child .vue-slider-mark-step{display:none}.vue-slider-mark-step{width:100%;height:100%;border-radius:50%;background-color:#00000029}.vue-slider-mark-label{font-size:14px;white-space:nowrap}.vue-slider-dot-handle{cursor:pointer;width:100%;height:100%;border-radius:50%;background-color:#fff;box-sizing:border-box;box-shadow:.5px .5px 2px 1px #00000052}.vue-slider-dot-handle-focus{box-shadow:0 0 1px 2px #3498db5c}.vue-slider-dot-handle-disabled{cursor:not-allowed;background-color:#ccc}.vue-slider-dot-tooltip-inner{font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border-color:#3498db;background-color:#3498db;box-sizing:content-box}.vue-slider-dot-tooltip-inner:after{content:\"\";position:absolute}.vue-slider-dot-tooltip-inner-top:after{top:100%;left:50%;transform:translate(-50%);height:0;width:0;border-color:transparent;border-style:solid;border-width:5px;border-top-color:inherit}.vue-slider-dot-tooltip-inner-bottom:after{bottom:100%;left:50%;transform:translate(-50%);height:0;width:0;border-color:transparent;border-style:solid;border-width:5px;border-bottom-color:inherit}.vue-slider-dot-tooltip-inner-left:after{left:100%;top:50%;transform:translateY(-50%);height:0;width:0;border-color:transparent;border-style:solid;border-width:5px;border-left-color:inherit}.vue-slider-dot-tooltip-inner-right:after{right:100%;top:50%;transform:translateY(-50%);height:0;width:0;border-color:transparent;border-style:solid;border-width:5px;border-right-color:inherit}.vue-slider-dot-tooltip-wrapper{opacity:0;transition:all .3s}.vue-slider-dot-tooltip-wrapper-show{opacity:1}.vue-slider{position:relative;box-sizing:content-box;-webkit-user-select:none;user-select:none;display:block;-webkit-tap-highlight-color:rgba(0,0,0,0)}.vue-slider-rail{position:relative;width:100%;height:100%;transition-property:width,height,left,right,top,bottom}.vue-slider-process{position:absolute;z-index:1}')),document.head.appendChild(e)}}catch(r){console.error(\"vite-plugin-css-injected-by-js\",r)}})();\nvar N = Object.defineProperty;\nvar T = (s, t, e) => t in s ? N(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;\nvar l = (s, t, e) => (T(s, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nimport { openBlock as u, createElementBlock as f, normalizeClass as g, renderSlot as c, createElementVNode as D, normalizeStyle as p, toDisplayString as I, createCommentVNode as B, resolveComponent as L, mergeProps as m, Fragment as P, renderList as R, createBlock as U, withCtx as A, createVNode as _ } from \"vue\";\nconst w = (s, t) => {\n const e = s.__vccOpts || s;\n for (const [i, a] of t)\n e[i] = a;\n return e;\n}, W = {\n emits: [\"drag-start\"],\n props: {\n value: {\n type: [Number, String],\n // number | string\n default: 0\n },\n tooltip: {\n type: String,\n // 'none' | 'always' | 'focus' | 'hover' | 'active'\n required: !0\n },\n dotStyle: {\n type: Array,\n // ([key: string]: any)[]\n default: () => ({})\n },\n tooltipStyle: {\n type: Array,\n // ([key: string]: any)[]\n default: () => ({})\n },\n tooltipPlacement: {\n type: String,\n // 'top' | 'right' | 'bottom' | 'left'\n required: !0\n },\n tooltipFormatter: {\n type: [String, Array, Object, Function],\n default: void 0\n },\n focus: {\n type: Boolean,\n default: !1\n },\n disabled: {\n type: Boolean,\n default: !1\n }\n },\n computed: {\n dotClasses() {\n return [\n \"vue-slider-dot\",\n {\n \"vue-slider-dot-hover\": this.tooltip === \"hover\" || this.tooltip === \"active\",\n \"vue-slider-dot-disabled\": this.disabled,\n \"vue-slider-dot-focus\": this.focus\n }\n ];\n },\n handleClasses() {\n return [\n \"vue-slider-dot-handle\",\n {\n \"vue-slider-dot-handle-disabled\": this.disabled,\n \"vue-slider-dot-handle-focus\": this.focus\n }\n ];\n },\n tooltipClasses() {\n return [\n \"vue-slider-dot-tooltip\",\n [`vue-slider-dot-tooltip-${this.tooltipPlacement}`],\n {\n \"vue-slider-dot-tooltip-show\": this.showTooltip\n }\n ];\n },\n tooltipInnerClasses() {\n return [\n \"vue-slider-dot-tooltip-inner\",\n [`vue-slider-dot-tooltip-inner-${this.tooltipPlacement}`],\n {\n \"vue-slider-dot-tooltip-inner-disabled\": this.disabled,\n \"vue-slider-dot-tooltip-inner-focus\": this.focus\n }\n ];\n },\n showTooltip() {\n switch (this.tooltip) {\n case \"always\":\n return !0;\n case \"none\":\n return !1;\n case \"focus\":\n case \"active\":\n return !!this.focus;\n default:\n return !1;\n }\n },\n tooltipValue() {\n return this.tooltipFormatter ? typeof this.tooltipFormatter == \"string\" ? this.tooltipFormatter.replace(/\\{value\\}/, String(this.value)) : this.tooltipFormatter(this.value) : this.value;\n }\n },\n methods: {\n dragStart(s) {\n if (this.disabled)\n return !1;\n this.$emit(\"drag-start\");\n }\n }\n}, K = [\"aria-valuetext\"], q = { class: \"vue-slider-dot-tooltip-text\" };\nfunction $(s, t, e, i, a, r) {\n return u(), f(\"div\", {\n ref: \"dot\",\n class: g(r.dotClasses),\n \"aria-valuetext\": r.tooltipValue,\n onMousedown: t[0] || (t[0] = (...n) => r.dragStart && r.dragStart(...n)),\n onTouchstartPassive: t[1] || (t[1] = (...n) => r.dragStart && r.dragStart(...n))\n }, [\n c(s.$slots, \"dot\", {}, () => [\n D(\"div\", {\n class: g(r.handleClasses),\n style: p(e.dotStyle)\n }, null, 6)\n ]),\n e.tooltip !== \"none\" ? (u(), f(\"div\", {\n key: 0,\n class: g(r.tooltipClasses)\n }, [\n c(s.$slots, \"tooltip\", {}, () => [\n D(\"div\", {\n class: g(r.tooltipInnerClasses),\n style: p(e.tooltipStyle)\n }, [\n D(\"span\", q, I(r.tooltipValue), 1)\n ], 6)\n ])\n ], 2)) : B(\"\", !0)\n ], 42, K);\n}\nconst M = /* @__PURE__ */ w(W, [[\"render\", $]]), X = {\n props: {\n mark: {\n type: Object,\n // Mark\n required: !0\n },\n hideLabel: {\n type: Boolean,\n default: !1\n },\n stepStyle: {\n type: Object,\n // [key: string]: any\n default: void 0\n },\n stepActiveStyle: {\n type: Object,\n // [key: string]: any\n default: void 0\n },\n labelStyle: {\n type: Object,\n // [key: string]: any\n default: void 0\n },\n labelActiveStyle: {\n type: Object,\n // [key: string]: any\n default: void 0\n }\n },\n computed: {\n marksClasses() {\n return [\n \"vue-slider-mark\",\n {\n \"vue-slider-mark-active\": this.mark.active\n }\n ];\n },\n stepClasses() {\n return [\n \"vue-slider-mark-step\",\n {\n \"vue-slider-mark-step-active\": this.mark.active\n }\n ];\n },\n labelClasses() {\n return [\n \"vue-slider-mark-label\",\n {\n \"vue-slider-mark-label-active\": this.mark.active\n }\n ];\n }\n },\n methods: {\n labelClickHandle(s) {\n s.stopPropagation(), this.$emit(\"pressLabel\", this.mark.pos);\n }\n }\n};\nfunction G(s, t, e, i, a, r) {\n return u(), f(\"div\", {\n class: g(r.marksClasses)\n }, [\n c(s.$slots, \"step\", {}, () => [\n D(\"div\", {\n class: g(r.stepClasses),\n style: p([\n e.stepStyle,\n e.mark.style,\n e.mark.active ? e.stepActiveStyle : null,\n e.mark.active ? e.mark.activeStyle : null\n ])\n }, null, 6)\n ]),\n e.hideLabel ? B(\"\", !0) : c(s.$slots, \"label\", { key: 0 }, () => [\n D(\"div\", {\n class: g(r.labelClasses),\n style: p([\n e.labelStyle,\n e.mark.labelStyle,\n e.mark.active ? e.labelActiveStyle : null,\n e.mark.active ? e.mark.labelActiveStyle : null\n ]),\n onClick: t[0] || (t[0] = (...n) => r.labelClickHandle && r.labelClickHandle(...n))\n }, I(e.mark.label), 7)\n ])\n ], 2);\n}\nconst z = /* @__PURE__ */ w(X, [[\"render\", G]]), k = (s) => typeof s == \"number\" ? `${s}px` : s, Z = (s) => {\n const t = document.documentElement, e = document.body, i = s.getBoundingClientRect();\n return {\n y: i.top + (window.pageYOffset || t.scrollTop) - (t.clientTop || e.clientTop || 0),\n x: i.left + (window.pageXOffset || t.scrollLeft) - (t.clientLeft || e.clientLeft || 0)\n };\n}, J = (s, t, e) => {\n const i = \"targetTouches\" in s ? s.targetTouches[0] : s, a = Z(t), r = {\n x: i.pageX - a.x,\n y: i.pageY - a.y\n };\n return {\n x: e ? t.offsetWidth - r.x : r.x,\n y: e ? t.offsetHeight - r.y : r.y\n };\n}, Q = (s, t) => {\n if (t.hook) {\n const e = t.hook(s);\n if (typeof e == \"function\")\n return e;\n if (!e)\n return null;\n }\n switch (s.keyCode) {\n case 38:\n return (e) => t.direction === \"ttb\" ? e - 1 : e + 1;\n case 39:\n return (e) => t.direction === \"rtl\" ? e - 1 : e + 1;\n case 40:\n return (e) => t.direction === \"ttb\" ? e + 1 : e - 1;\n case 37:\n return (e) => t.direction === \"rtl\" ? e + 1 : e - 1;\n case 35:\n return () => t.max;\n case 36:\n return () => t.min;\n case 33:\n return (e) => e + 10;\n case 34:\n return (e) => e - 10;\n default:\n return null;\n }\n};\nclass y {\n constructor(t) {\n l(this, \"num\");\n this.num = t;\n }\n decimal(t, e) {\n const i = this.num, a = this.getDecimalLen(i), r = this.getDecimalLen(t);\n let n = 0;\n switch (e) {\n case \"+\":\n n = this.getExponent(a, r), this.num = (this.safeRoundUp(i, n) + this.safeRoundUp(t, n)) / n;\n break;\n case \"-\":\n n = this.getExponent(a, r), this.num = (this.safeRoundUp(i, n) - this.safeRoundUp(t, n)) / n;\n break;\n case \"*\":\n this.num = this.safeRoundUp(\n this.safeRoundUp(i, this.getExponent(a)),\n this.safeRoundUp(t, this.getExponent(r))\n ) / this.getExponent(a + r);\n break;\n case \"/\":\n n = this.getExponent(a, r), this.num = this.safeRoundUp(i, n) / this.safeRoundUp(t, n);\n break;\n case \"%\":\n n = this.getExponent(a, r), this.num = this.safeRoundUp(i, n) % this.safeRoundUp(t, n) / n;\n break;\n }\n return this;\n }\n plus(t) {\n return this.decimal(t, \"+\");\n }\n minus(t) {\n return this.decimal(t, \"-\");\n }\n multiply(t) {\n return this.decimal(t, \"*\");\n }\n divide(t) {\n return this.decimal(t, \"/\");\n }\n remainder(t) {\n return this.decimal(t, \"%\");\n }\n toNumber() {\n return this.num;\n }\n getDecimalLen(t) {\n const e = `${t}`.split(\"e\");\n return (`${e[0]}`.split(\".\")[1] || \"\").length - (e[1] ? +e[1] : 0);\n }\n getExponent(t, e) {\n return Math.pow(10, e !== void 0 ? Math.max(t, e) : t);\n }\n // fix: 9999999.99995 * 100000 = 999999999994.9999\n safeRoundUp(t, e) {\n return Math.round(t * e);\n }\n}\nvar Y = /* @__PURE__ */ ((s) => (s[s.VALUE = 1] = \"VALUE\", s[s.INTERVAL = 2] = \"INTERVAL\", s[s.MIN = 3] = \"MIN\", s[s.MAX = 4] = \"MAX\", s[s.ORDER = 5] = \"ORDER\", s))(Y || {});\nconst tt = {\n 1: 'The type of the \"value\" is illegal',\n 2: 'The prop \"interval\" is invalid, \"(max - min)\" must be divisible by \"interval\"',\n 3: 'The \"value\" must be greater than or equal to the \"min\".',\n 4: 'The \"value\" must be less than or equal to the \"max\".',\n 5: 'When \"order\" is false, the parameters \"minRange\", \"maxRange\", \"fixed\", \"enabled\" are invalid.'\n};\nclass et {\n constructor(t) {\n l(this, \"dotsPos\", []);\n // The position of each slider\n l(this, \"dotsValue\", []);\n // The value of each slider\n l(this, \"data\");\n l(this, \"enableCross\");\n l(this, \"fixed\");\n l(this, \"max\");\n l(this, \"min\");\n l(this, \"interval\");\n l(this, \"minRange\");\n l(this, \"maxRange\");\n l(this, \"order\");\n l(this, \"marks\");\n l(this, \"included\");\n l(this, \"process\");\n l(this, \"adsorb\");\n l(this, \"dotOptions\");\n l(this, \"onError\");\n l(this, \"cacheRangeDir\", {});\n this.data = t.data, this.max = t.max, this.min = t.min, this.interval = t.interval, this.order = t.order, this.marks = t.marks, this.included = t.included, this.process = t.process, this.adsorb = t.adsorb, this.dotOptions = t.dotOptions, this.onError = t.onError, this.order ? (this.minRange = t.minRange || 0, this.maxRange = t.maxRange || 0, this.enableCross = t.enableCross, this.fixed = t.fixed) : ((t.minRange || t.maxRange || !t.enableCross || t.fixed) && this.emitError(\n 5\n /* ORDER */\n ), this.minRange = 0, this.maxRange = 0, this.enableCross = !0, this.fixed = !1), this.setValue(t.value);\n }\n setValue(t) {\n this.setDotsValue(\n Array.isArray(t) ? this.order ? [...t].sort((e, i) => this.getIndexByValue(e) - this.getIndexByValue(i)) : [...t] : [t],\n !0\n );\n }\n setDotsValue(t, e) {\n this.dotsValue = t, e && this.syncDotsPos();\n }\n // Set the slider position\n setDotsPos(t) {\n const e = this.order ? [...t].sort((i, a) => i - a) : t;\n this.dotsPos = e, this.setDotsValue(\n e.map((i) => this.getValueByPos(i)),\n this.adsorb\n );\n }\n // Get value by position\n getValueByPos(t) {\n let e = this.parsePos(t);\n if (this.included) {\n let i = 100;\n this.markList.forEach((a) => {\n const r = Math.abs(a.pos - t);\n r < i && (i = r, e = a.value);\n });\n }\n return e;\n }\n // Sync slider position\n syncDotsPos() {\n this.dotsPos = this.dotsValue.map((t) => this.parseValue(t));\n }\n /**\n * Get all the marks\n *\n * @readonly\n * @type {Mark[]}\n * @memberof Control\n */\n get markList() {\n if (!this.marks)\n return [];\n const t = (e, i) => {\n const a = this.parseValue(e);\n return {\n pos: a,\n value: e,\n label: e,\n active: this.isActiveByPos(a),\n ...i\n };\n };\n return this.marks === !0 ? this.getValues().map((e) => t(e)) : Object.prototype.toString.call(this.marks) === \"[object Object]\" ? Object.keys(this.marks).sort((e, i) => +e - +i).map((e) => {\n const i = this.marks[e];\n return t(e, typeof i != \"string\" ? i : { label: i });\n }) : Array.isArray(this.marks) ? this.marks.map((e) => t(e)) : typeof this.marks == \"function\" ? this.getValues().map((e) => ({ value: e, result: this.marks(e) })).filter(({ result: e }) => !!e).map(({ value: e, result: i }) => t(e, i)) : [];\n }\n /**\n * Get the most recent slider index by position\n *\n * @param {number} pos\n * @returns {number}\n * @memberof Control\n */\n getRecentDot(t) {\n const e = this.dotsPos.filter((i, a) => !(this.getDotOption(a) && this.getDotOption(a).disabled)).map((i) => Math.abs(i - t));\n return e.indexOf(Math.min(...e));\n }\n /**\n * Get index by value\n *\n * @param {Value} value\n * @returns {number}\n * @memberof Control\n */\n getIndexByValue(t) {\n return this.data ? this.data.indexOf(t) : new y(+t).minus(this.min).divide(this.interval).toNumber();\n }\n /**\n * Get value by index\n *\n * @param {index} number\n * @returns {Value}\n * @memberof Control\n */\n getValueByIndex(t) {\n return t < 0 ? t = 0 : t > this.total && (t = this.total), this.data ? this.data[t] : new y(t).multiply(this.interval).plus(this.min).toNumber();\n }\n /**\n * Set the position of a single slider\n *\n * @param {number} pos\n * @param {number} index\n */\n setDotPos(t, e) {\n t = this.getValidPos(t, e).pos;\n const i = t - this.dotsPos[e];\n if (!i)\n return;\n let a = new Array(this.dotsPos.length);\n this.fixed ? a = this.getFixedChangePosArr(i, e) : this.minRange || this.maxRange ? a = this.getLimitRangeChangePosArr(t, i, e) : a[e] = i, this.setDotsPos(this.dotsPos.map((r, n) => r + (a[n] || 0)));\n }\n /**\n * In fixed mode, get the position of all slider changes\n *\n * @param {number} changePos Change distance of a single slider\n * @param {number} index slider index\n * @returns {DotsPosChangeArray}\n * @memberof Control\n */\n getFixedChangePosArr(t, e) {\n return this.dotsPos.forEach((i, a) => {\n if (a !== e) {\n const { pos: r, inRange: n } = this.getValidPos(i + t, a);\n n || (t = Math.min(Math.abs(r - i), Math.abs(t)) * (t < 0 ? -1 : 1));\n }\n }), this.dotsPos.map((i) => t);\n }\n /**\n * In minRange/maxRange mode, get the position of all slider changes\n *\n * @param {number} pos position of a single slider\n * @param {number} changePos Change distance of a single slider\n * @param {number} index slider index\n * @returns {DotsPosChangeArray}\n * @memberof Control\n */\n getLimitRangeChangePosArr(t, e, i) {\n const a = [{ index: i, changePos: e }], r = e;\n return [this.minRange, this.maxRange].forEach((n, S) => {\n if (!n)\n return !1;\n const o = S === 0, h = e > 0;\n let b = 0;\n o ? b = h ? 1 : -1 : b = h ? -1 : 1;\n const H = (V, j) => {\n const E = Math.abs(V - j);\n return o ? E < this.minRangeDir : E > this.maxRangeDir;\n };\n let v = i + b, x = this.dotsPos[v], C = t;\n for (; this.isPos(x) && H(x, C); ) {\n const { pos: V } = this.getValidPos(x + r, v);\n a.push({\n index: v,\n changePos: V - x\n }), v = v + b, C = V, x = this.dotsPos[v];\n }\n }), this.dotsPos.map((n, S) => {\n const o = a.filter((h) => h.index === S);\n return o.length ? o[0].changePos : 0;\n });\n }\n isPos(t) {\n return typeof t == \"number\";\n }\n /**\n * Get a valid position by pos\n *\n * @param {number} pos\n * @param {number} index\n * @returns {{ pos: number, inRange: boolean }}\n */\n getValidPos(t, e) {\n const i = this.valuePosRange[e];\n let a = !0;\n return t < i[0] ? (t = i[0], a = !1) : t > i[1] && (t = i[1], a = !1), {\n pos: t,\n inRange: a\n };\n }\n /**\n * Calculate the position of the slider by value\n *\n * @param {Value} val\n * @returns {number}\n */\n parseValue(t) {\n if (this.data)\n t = this.data.indexOf(t);\n else if (typeof t == \"number\" || typeof t == \"string\") {\n if (t = +t, t < this.min)\n return this.emitError(\n 3\n /* MIN */\n ), 0;\n if (t > this.max)\n return this.emitError(\n 4\n /* MAX */\n ), 0;\n if (typeof t != \"number\" || t !== t)\n return this.emitError(\n 1\n /* VALUE */\n ), 0;\n t = new y(t).minus(this.min).divide(this.interval).toNumber();\n }\n const e = new y(t).multiply(this.gap).toNumber();\n return e < 0 ? 0 : e > 100 ? 100 : e;\n }\n /**\n * Calculate the value by position\n *\n * @param {number} pos\n * @returns {Value}\n * @memberof Control\n */\n parsePos(t) {\n const e = Math.round(t / this.gap);\n return this.getValueByIndex(e);\n }\n /**\n * Determine if the location is active\n *\n * @param {number} pos\n * @returns {boolean}\n * @memberof Control\n */\n isActiveByPos(t) {\n return this.processArray.some(([e, i]) => t >= e && t <= i);\n }\n /**\n * Get each value\n *\n * @returns {Value[]}\n * @memberof Control\n */\n getValues() {\n if (this.data)\n return this.data;\n {\n const t = [];\n for (let e = 0; e <= this.total; e++)\n t.push(new y(e).multiply(this.interval).plus(this.min).toNumber());\n return t;\n }\n }\n /**\n * Calculate the distance of the range\n * @param range number\n */\n getRangeDir(t) {\n return t ? new y(t).divide(\n new y(this.data ? this.data.length - 1 : this.max).minus(this.data ? 0 : this.min).toNumber()\n ).multiply(100).toNumber() : 100;\n }\n emitError(t) {\n this.onError && this.onError(t, tt[t]);\n }\n get processArray() {\n if (this.process) {\n if (typeof this.process == \"function\")\n return this.process(this.dotsPos);\n if (this.dotsPos.length === 1)\n return [[0, this.dotsPos[0]]];\n if (this.dotsPos.length > 1)\n return [[Math.min(...this.dotsPos), Math.max(...this.dotsPos)]];\n }\n return [];\n }\n /**\n * The total number of values\n *\n * @type {number}\n * @memberof Control\n */\n get total() {\n let t = 0;\n return this.data ? t = this.data.length - 1 : t = new y(this.max).minus(this.min).divide(this.interval).toNumber(), t - Math.floor(t) !== 0 ? (this.emitError(\n 2\n /* INTERVAL */\n ), 0) : t;\n }\n // Distance between each value\n get gap() {\n return 100 / this.total;\n }\n // The minimum distance between the two sliders\n get minRangeDir() {\n return this.cacheRangeDir[this.minRange] ? this.cacheRangeDir[this.minRange] : this.cacheRangeDir[this.minRange] = this.getRangeDir(this.minRange);\n }\n // Maximum distance between the two sliders\n get maxRangeDir() {\n return this.cacheRangeDir[this.maxRange] ? this.cacheRangeDir[this.maxRange] : this.cacheRangeDir[this.maxRange] = this.getRangeDir(this.maxRange);\n }\n getDotOption(t) {\n return Array.isArray(this.dotOptions) ? this.dotOptions[t] : this.dotOptions;\n }\n getDotRange(t, e, i) {\n if (!this.dotOptions)\n return i;\n const a = this.getDotOption(t);\n return a && a[e] !== void 0 ? this.parseValue(a[e]) : i;\n }\n /**\n * Sliding range of each slider\n *\n * @type {Array<[number, number]>}\n * @memberof Control\n */\n get valuePosRange() {\n const t = this.dotsPos, e = [];\n return t.forEach((i, a) => {\n e.push([\n Math.max(\n this.minRange ? this.minRangeDir * a : 0,\n this.enableCross ? 0 : t[a - 1] || 0,\n this.getDotRange(a, \"min\", 0)\n ),\n Math.min(\n this.minRange ? 100 - this.minRangeDir * (t.length - 1 - a) : 100,\n this.enableCross ? 100 : t[a + 1] || 100,\n this.getDotRange(a, \"max\", 100)\n )\n ]);\n }), e;\n }\n get dotsIndex() {\n return this.dotsValue.map((t) => this.getIndexByValue(t));\n }\n}\nclass st {\n constructor(t) {\n l(this, \"map\");\n l(this, \"states\", 0);\n this.map = t;\n }\n add(t) {\n this.states |= t;\n }\n delete(t) {\n this.states &= ~t;\n }\n toggle(t) {\n this.has(t) ? this.delete(t) : this.add(t);\n }\n has(t) {\n return !!(this.states & t);\n }\n}\nconst O = 4, d = {\n // StateMap\n None: 0,\n Drag: 2,\n Focus: 4\n}, it = {\n emits: [\"update:modelValue\", \"change\", \"drag-start\", \"drag-end\", \"dragging\", \"error\"],\n components: {\n VueSliderDot: M,\n VueSliderMark: z\n },\n props: {\n modelValue: {\n type: [Number, String, Array],\n default: 0\n },\n silent: {\n type: Boolean,\n default: !1\n },\n direction: {\n type: String,\n default: \"ltr\",\n validator: (s) => [\"ltr\", \"rtl\", \"ttb\", \"btt\"].indexOf(s) > -1\n },\n width: {\n type: [Number, String],\n default: void 0\n },\n height: {\n type: [Number, String],\n default: void 0\n },\n dotSize: {\n type: [Array, Number],\n // The size of the slider, optional [width, height] | size\n default: 14\n },\n contained: {\n type: Boolean,\n default: !1\n },\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n interval: {\n type: Number,\n default: 1\n },\n disabled: {\n type: Boolean,\n default: !1\n },\n clickable: {\n type: Boolean,\n default: !0\n },\n dragOnClick: {\n type: Boolean,\n default: !0\n },\n duration: {\n type: Number,\n default: 0.5\n },\n data: {\n type: [Object, Array],\n // Value[] | object[] | DataObject\n default: void 0\n },\n dataValue: {\n type: String,\n default: \"value\"\n },\n dataLabel: {\n type: String,\n default: \"label\"\n },\n lazy: {\n type: Boolean,\n default: !1\n },\n tooltip: {\n type: String,\n default: \"active\",\n validator: (s) => [\"none\", \"always\", \"focus\", \"hover\", \"active\"].indexOf(s) > -1\n },\n tooltipPlacement: {\n type: [String, Array],\n default: void 0,\n validator: (s) => (Array.isArray(s) ? s : [s]).every(\n (t) => [\"top\", \"right\", \"bottom\", \"left\"].indexOf(t) > -1\n )\n },\n tooltipFormatter: {\n type: [String, Array, Function],\n default: \"\"\n },\n useKeyboard: {\n type: Boolean,\n default: !0\n },\n keydownHook: {\n type: [Boolean, Function],\n default: void 0\n },\n enableCross: {\n type: Boolean,\n default: !0\n },\n fixed: {\n type: Boolean,\n default: !1\n },\n order: {\n type: Boolean,\n default: !0\n },\n minRange: {\n type: Number,\n default: void 0\n },\n maxRange: {\n type: Number,\n default: void 0\n },\n marks: {\n type: [Boolean, Object, Array, Function],\n default: !1\n },\n process: {\n type: [Boolean, Function],\n default: !0\n },\n zoom: {\n type: [Number],\n default: void 0\n },\n included: {\n type: [Boolean],\n default: !1\n },\n adsorb: {\n type: [Boolean],\n default: !1\n },\n hideLabel: {\n type: [Boolean],\n default: !1\n },\n dotOptions: {\n type: Object,\n default: void 0\n },\n dotAttrs: {\n type: Object,\n default: void 0\n },\n railStyle: {\n type: Object,\n default: null\n },\n processStyle: {\n type: Object,\n default: null\n },\n dotStyle: {\n type: Object,\n default: null\n },\n tooltipStyle: {\n type: Object,\n default: null\n },\n stepStyle: {\n type: Object,\n default: null\n },\n stepActiveStyle: {\n type: Object,\n default: null\n },\n labelStyle: {\n type: Object,\n default: null\n },\n labelActiveStyle: {\n type: Object,\n default: null\n }\n },\n data() {\n return {\n control: null,\n // Control instance\n states: new st(d),\n scale: 1,\n focusDotIndex: 0\n };\n },\n computed: {\n tailSize() {\n return k((this.isHorizontal ? this.height : this.width) || O);\n },\n containerClasses() {\n return [\n \"vue-slider\",\n [`vue-slider-${this.direction}`],\n {\n \"vue-slider-disabled\": this.disabled\n }\n ];\n },\n containerStyles() {\n const [s, t] = Array.isArray(this.dotSize) ? this.dotSize : [this.dotSize, this.dotSize], e = this.width ? k(this.width) : this.isHorizontal ? \"auto\" : k(O), i = this.height ? k(this.height) : this.isHorizontal ? k(O) : \"auto\";\n return {\n padding: this.contained ? `${t / 2}px ${s / 2}px` : this.isHorizontal ? `${t / 2}px 0` : `0 ${s / 2}px`,\n width: e,\n height: i\n };\n },\n processArray() {\n return this.control.processArray.map(([s, t, e], i) => {\n s > t && ([s, t] = [t, s]);\n const a = this.isHorizontal ? \"width\" : \"height\";\n return {\n start: s,\n end: t,\n index: i,\n style: {\n [this.isHorizontal ? \"height\" : \"width\"]: \"100%\",\n [this.isHorizontal ? \"top\" : \"left\"]: 0,\n [this.mainDirection]: `${s}%`,\n [a]: `${t - s}%`,\n transitionProperty: `${a},${this.mainDirection}`,\n transitionDuration: `${this.animateTime}s`,\n ...this.processStyle,\n ...e\n }\n };\n });\n },\n dotBaseStyle() {\n const [s, t] = Array.isArray(this.dotSize) ? this.dotSize : [this.dotSize, this.dotSize];\n let e;\n return this.isHorizontal ? e = {\n transform: `translate(${this.isReverse ? \"50%\" : \"-50%\"}, -50%)`,\n \"-WebkitTransform\": `translate(${this.isReverse ? \"50%\" : \"-50%\"}, -50%)`,\n top: \"50%\",\n [this.direction === \"ltr\" ? \"left\" : \"right\"]: \"0\"\n } : e = {\n transform: `translate(-50%, ${this.isReverse ? \"50%\" : \"-50%\"})`,\n \"-WebkitTransform\": `translate(-50%, ${this.isReverse ? \"50%\" : \"-50%\"})`,\n left: \"50%\",\n [this.direction === \"btt\" ? \"bottom\" : \"top\"]: \"0\"\n }, {\n width: `${s}px`,\n height: `${t}px`,\n ...e\n };\n },\n mainDirection() {\n switch (this.direction) {\n case \"ltr\":\n return \"left\";\n case \"rtl\":\n return \"right\";\n case \"btt\":\n return \"bottom\";\n case \"ttb\":\n return \"top\";\n }\n },\n isHorizontal() {\n return this.direction === \"ltr\" || this.direction === \"rtl\";\n },\n isReverse() {\n return this.direction === \"rtl\" || this.direction === \"btt\";\n },\n tooltipDirections() {\n const s = this.tooltipPlacement || (this.isHorizontal ? \"top\" : \"left\");\n return Array.isArray(s) ? s : this.dots.map(() => s);\n },\n dots() {\n return this.control.dotsPos.map((s, t) => ({\n pos: s,\n index: t,\n value: this.control.dotsValue[t],\n focus: this.states.has(d.Focus) && this.focusDotIndex === t,\n disabled: this.disabled,\n style: this.dotStyle,\n ...(Array.isArray(this.dotOptions) ? this.dotOptions[t] : this.dotOptions) || {}\n }));\n },\n animateTime() {\n return this.states.has(d.Drag) ? 0 : this.duration;\n },\n canSort() {\n return this.order && !this.minRange && !this.maxRange && !this.fixed && this.enableCross;\n },\n sliderData() {\n return this.isObjectArrayData(this.data) ? this.data.map((s) => s[this.dataValue]) : this.isObjectData(this.data) ? Object.keys(this.data) : this.data;\n },\n sliderMarks() {\n if (this.marks)\n return this.marks;\n if (this.isObjectArrayData(this.data))\n return (s) => {\n const t = { label: s };\n return this.data.some((e) => e[this.dataValue] === s ? (t.label = e[this.dataLabel], !0) : !1), t;\n };\n if (this.isObjectData(this.data))\n return this.data;\n },\n sliderTooltipFormatter() {\n if (this.tooltipFormatter)\n return this.tooltipFormatter;\n if (this.isObjectArrayData(this.data))\n return (s) => {\n let t = \"\" + s;\n return this.data.some((e) => e[this.dataValue] === s ? (t = e[this.dataLabel], !0) : !1), t;\n };\n if (this.isObjectData(this.data)) {\n const s = this.data;\n return (t) => s[t];\n }\n },\n // Slider value and component internal value are inconsistent\n isNotSync() {\n const s = this.control.dotsValue;\n return Array.isArray(this.modelValue) ? this.modelValue.length !== s.length || this.modelValue.some((t, e) => t !== s[e]) : this.modelValue !== s[0];\n },\n /**\n * Get the drag range of the slider\n *\n * @private\n * @param {number} index slider index\n * @returns {[number, number]} range [start, end]\n * @memberof VueSlider\n */\n dragRange() {\n const s = this.dots[this.focusDotIndex - 1], t = this.dots[this.focusDotIndex + 1];\n return [s ? s.pos : -1 / 0, t ? t.pos : 1 / 0];\n }\n },\n created() {\n this.initControl();\n },\n mounted() {\n this.bindEvent();\n },\n beforeUnmount() {\n this.unbindEvent();\n },\n methods: {\n isObjectData(s) {\n return !!s && Object.prototype.toString.call(s) === \"[object Object]\";\n },\n isObjectArrayData(s) {\n return !!s && Array.isArray(s) && s.length > 0 && typeof s[0] == \"object\";\n },\n bindEvent() {\n document.addEventListener(\"touchmove\", this.dragMove, { passive: !1 }), document.addEventListener(\"touchend\", this.dragEnd, { passive: !1 }), document.addEventListener(\"mousedown\", this.blurHandle), document.addEventListener(\"mousemove\", this.dragMove, { passive: !1 }), document.addEventListener(\"mouseup\", this.dragEnd), document.addEventListener(\"mouseleave\", this.dragEnd), document.addEventListener(\"keydown\", this.keydownHandle);\n },\n unbindEvent() {\n document.removeEventListener(\"touchmove\", this.dragMove), document.removeEventListener(\"touchend\", this.dragEnd), document.removeEventListener(\"mousedown\", this.blurHandle), document.removeEventListener(\"mousemove\", this.dragMove), document.removeEventListener(\"mouseup\", this.dragEnd), document.removeEventListener(\"mouseleave\", this.dragEnd), document.removeEventListener(\"keydown\", this.keydownHandle);\n },\n setScale() {\n const s = new y(\n Math.floor(this.isHorizontal ? this.$refs.rail.offsetWidth : this.$refs.rail.offsetHeight)\n );\n this.zoom !== void 0 && s.multiply(this.zoom), s.divide(100), this.scale = s.toNumber();\n },\n initControl() {\n this.control = new et({\n value: this.modelValue,\n data: this.sliderData,\n enableCross: this.enableCross,\n fixed: this.fixed,\n max: this.max,\n min: this.min,\n interval: this.interval,\n minRange: this.minRange,\n maxRange: this.maxRange,\n order: this.order,\n marks: this.sliderMarks,\n included: this.included,\n process: this.process,\n adsorb: this.adsorb,\n dotOptions: this.dotOptions,\n onError: this.emitError\n }), this.syncValueByPos(), [\n \"data\",\n \"enableCross\",\n \"fixed\",\n \"max\",\n \"min\",\n \"interval\",\n \"minRange\",\n \"maxRange\",\n \"order\",\n \"marks\",\n \"process\",\n \"adsorb\",\n \"included\",\n \"dotOptions\"\n ].forEach((s) => {\n this.$watch(s, (t) => {\n if (s === \"data\" && Array.isArray(this.control.data) && Array.isArray(t) && this.control.data.length === t.length && t.every((e, i) => e === this.control.data[i]))\n return !1;\n switch (s) {\n case \"data\":\n case \"dataLabel\":\n case \"dataValue\":\n this.control.data = this.sliderData;\n break;\n case \"mark\":\n this.control.marks = this.sliderMarks;\n break;\n default:\n this.control[s] = t;\n }\n [\"data\", \"max\", \"min\", \"interval\"].indexOf(s) > -1 && this.control.syncDotsPos();\n });\n });\n },\n syncValueByPos() {\n const s = this.control.dotsValue;\n if (this.isDiff(s, Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue])) {\n const t = s.length === 1 ? s[0] : [...s];\n this.$emit(\"change\", t, this.focusDotIndex), this.$emit(\"update:modelValue\", t, this.focusDotIndex);\n }\n },\n isDiff(s, t) {\n return s.length !== t.length || s.some((e, i) => e !== t[i]);\n },\n emitError(s, t) {\n this.silent || console.error(`[VueSlider error]: ${t}`), this.$emit(\"error\", s, t);\n },\n dragStartOnProcess(s) {\n if (this.dragOnClick) {\n this.setScale();\n const t = this.getPosByEvent(s), e = this.control.getRecentDot(t);\n if (this.dots[e].disabled)\n return;\n this.dragStart(e), this.control.setDotPos(t, this.focusDotIndex), this.lazy || this.syncValueByPos();\n }\n },\n dragStart(s) {\n this.focusDotIndex = s, this.setScale(), this.states.add(d.Drag), this.states.add(d.Focus), this.$emit(\"drag-start\", this.focusDotIndex);\n },\n dragMove(s) {\n if (!this.states.has(d.Drag))\n return !1;\n s.preventDefault();\n const t = this.getPosByEvent(s);\n this.isCrossDot(t), this.control.setDotPos(t, this.focusDotIndex), this.lazy || this.syncValueByPos();\n const e = this.control.dotsValue;\n this.$emit(\"dragging\", e.length === 1 ? e[0] : [...e], this.focusDotIndex);\n },\n // If the component is sorted, then when the slider crosses, toggle the currently selected slider index\n isCrossDot(s) {\n if (this.canSort) {\n const t = this.focusDotIndex;\n let e = s;\n if (e > this.dragRange[1] ? (e = this.dragRange[1], this.focusDotIndex++) : e < this.dragRange[0] && (e = this.dragRange[0], this.focusDotIndex--), t !== this.focusDotIndex) {\n const i = this.$refs[`dot-${this.focusDotIndex}`];\n i && i.$el && i.$el.focus(), this.control.setDotPos(e, t);\n }\n }\n },\n dragEnd(s) {\n if (!this.states.has(d.Drag))\n return !1;\n setTimeout(() => {\n this.lazy && this.syncValueByPos(), this.included && this.isNotSync ? this.control.setValue(this.modelValue) : this.control.syncDotsPos(), this.states.delete(d.Drag), (!this.useKeyboard || \"targetTouches\" in s) && this.states.delete(d.Focus), this.$emit(\"drag-end\", this.focusDotIndex);\n });\n },\n blurHandle(s) {\n if (!this.states.has(d.Focus) || !this.$refs.container || this.$refs.container.contains(s.target))\n return !1;\n this.states.delete(d.Focus);\n },\n clickHandle(s) {\n if (!this.clickable || this.disabled)\n return !1;\n if (this.states.has(d.Drag))\n return;\n this.setScale();\n const t = this.getPosByEvent(s);\n this.setValueByPos(t);\n },\n focus(s = 0) {\n this.states.add(d.Focus), this.focusDotIndex = s;\n },\n blur() {\n this.states.delete(d.Focus);\n },\n getValue() {\n const s = this.control.dotsValue;\n return s.length === 1 ? s[0] : s;\n },\n getIndex() {\n const s = this.control.dotsIndex;\n return s.length === 1 ? s[0] : s;\n },\n setValue(s) {\n this.control.setValue(Array.isArray(s) ? [...s] : [s]), this.syncValueByPos();\n },\n setIndex(s) {\n const t = Array.isArray(s) ? s.map((e) => this.control.getValueByIndex(e)) : this.control.getValueByIndex(s);\n this.setValue(t);\n },\n setValueByPos(s) {\n const t = this.control.getRecentDot(s);\n if (this.disabled || this.dots[t].disabled)\n return !1;\n this.focusDotIndex = t, this.control.setDotPos(s, t), this.syncValueByPos(), this.useKeyboard && this.states.add(d.Focus), setTimeout(() => {\n this.included && this.isNotSync ? this.control.setValue(this.modelValue) : this.control.syncDotsPos();\n });\n },\n keydownHandle(s) {\n if (!this.useKeyboard || !this.states.has(d.Focus))\n return !1;\n const t = this.included && this.marks, e = Q(s, {\n direction: this.direction,\n max: t ? this.control.markList.length - 1 : this.control.total,\n min: 0,\n hook: this.keydownHook\n });\n if (e) {\n s.preventDefault();\n let i = -1, a = 0;\n t ? (this.control.markList.some((r, n) => r.value === this.control.dotsValue[this.focusDotIndex] ? (i = e(n), !0) : !1), i < 0 ? i = 0 : i > this.control.markList.length - 1 && (i = this.control.markList.length - 1), a = this.control.markList[i].pos) : (i = e(\n this.control.getIndexByValue(this.control.dotsValue[this.focusDotIndex])\n ), a = this.control.parseValue(this.control.getValueByIndex(i))), this.isCrossDot(a), this.control.setDotPos(a, this.focusDotIndex), this.syncValueByPos();\n }\n },\n getPosByEvent(s) {\n return J(s, this.$refs.rail, this.isReverse)[this.isHorizontal ? \"x\" : \"y\"] / this.scale;\n }\n },\n watch: {\n modelValue: {\n handler() {\n this.control && !this.states.has(d.Drag) && this.isNotSync && (this.control.setValue(this.modelValue), this.syncValueByPos());\n },\n deep: !0\n }\n }\n}, rt = {\n key: 0,\n class: \"vue-slider-marks\"\n};\nfunction at(s, t, e, i, a, r) {\n const n = L(\"VueSliderMark\"), S = L(\"VueSliderDot\");\n return u(), f(\"div\", m({\n ref: \"container\",\n class: r.containerClasses,\n style: r.containerStyles,\n onClick: t[0] || (t[0] = (...o) => r.clickHandle && r.clickHandle(...o)),\n onTouchstartPassive: t[1] || (t[1] = (...o) => r.dragStartOnProcess && r.dragStartOnProcess(...o)),\n onMousedown: t[2] || (t[2] = (...o) => r.dragStartOnProcess && r.dragStartOnProcess(...o))\n }, s.$attrs), [\n D(\"div\", {\n ref: \"rail\",\n class: \"vue-slider-rail\",\n style: p(e.railStyle)\n }, [\n (u(!0), f(P, null, R(r.processArray, (o, h) => c(s.$slots, \"process\", m({ ref_for: !0 }, { ...o }), () => [\n (u(), f(\"div\", {\n class: \"vue-slider-process\",\n key: `process-${h}`,\n style: p(o.style)\n }, null, 4))\n ])), 256)),\n r.sliderMarks ? (u(), f(\"div\", rt, [\n (u(!0), f(P, null, R(a.control.markList, (o, h) => c(s.$slots, \"mark\", m({ ref_for: !0 }, { ...o }), () => [\n (u(), U(n, {\n key: `mark-${h}`,\n mark: o,\n hideLabel: e.hideLabel,\n style: p({\n [r.isHorizontal ? \"height\" : \"width\"]: \"100%\",\n [r.isHorizontal ? \"width\" : \"height\"]: r.tailSize,\n [r.mainDirection]: `${o.pos}%`\n }),\n stepStyle: e.stepStyle,\n stepActiveStyle: e.stepActiveStyle,\n labelStyle: e.labelStyle,\n labelActiveStyle: e.labelActiveStyle,\n onPressLabel: (b) => e.clickable && r.setValueByPos(b)\n }, {\n step: A(() => [\n c(s.$slots, \"step\", m({ ref_for: !0 }, { ...o }))\n ]),\n label: A(() => [\n c(s.$slots, \"label\", m({ ref_for: !0 }, { ...o }))\n ]),\n _: 2\n }, 1032, [\"mark\", \"hideLabel\", \"style\", \"stepStyle\", \"stepActiveStyle\", \"labelStyle\", \"labelActiveStyle\", \"onPressLabel\"]))\n ])), 256))\n ])) : B(\"\", !0),\n (u(!0), f(P, null, R(r.dots, (o, h) => (u(), f(P, null, [\n _(S, m({\n ref_for: !0,\n ref: `dot-${h}`,\n value: o.value,\n disabled: o.disabled,\n focus: o.focus,\n \"dot-style\": [\n o.style,\n o.disabled ? o.disabledStyle : null,\n o.focus ? o.focusStyle : null\n ],\n tooltip: o.tooltip || e.tooltip,\n \"tooltip-style\": [\n e.tooltipStyle,\n o.tooltipStyle,\n o.disabled ? o.tooltipDisabledStyle : null,\n o.focus ? o.tooltipFocusStyle : null\n ],\n \"tooltip-formatter\": Array.isArray(r.sliderTooltipFormatter) ? r.sliderTooltipFormatter[h] : r.sliderTooltipFormatter,\n \"tooltip-placement\": r.tooltipDirections[h],\n style: [\n r.dotBaseStyle,\n {\n [r.mainDirection]: `${o.pos}%`,\n transition: `${r.mainDirection} ${r.animateTime}s`\n }\n ],\n \"onDrag-start\": () => r.dragStart(h),\n role: \"slider\",\n \"aria-valuenow\": o.value,\n \"aria-valuemin\": this.min,\n \"aria-valuemax\": this.max,\n \"aria-orientation\": this.isHorizontal ? \"horizontal\" : \"vertical\",\n tabindex: \"0\",\n nativeOnFocus: () => !o.disabled && r.focus(h),\n nativeOnBlur: () => r.blur()\n }, { ...e.dotAttrs }), {\n dot: A(() => [\n c(s.$slots, \"dot\", m({ ref_for: !0 }, { ...o }))\n ]),\n tooltip: A(() => [\n c(s.$slots, \"tooltip\", m({ ref_for: !0 }, { ...o }))\n ]),\n _: 2\n }, 1040, [\"value\", \"disabled\", \"focus\", \"dot-style\", \"tooltip\", \"tooltip-style\", \"tooltip-formatter\", \"tooltip-placement\", \"style\", \"onDrag-start\", \"aria-valuenow\", \"aria-valuemin\", \"aria-valuemax\", \"aria-orientation\", \"nativeOnFocus\", \"nativeOnBlur\"]),\n c(s.$slots, \"default\", m({ ref_for: !0 }, { value: r.getValue() }))\n ], 64))), 256))\n ], 4)\n ], 16);\n}\nconst F = /* @__PURE__ */ w(it, [[\"render\", at]]);\nF.VueSliderMark = z;\nF.VueSliderDot = M;\nexport {\n Y as ERROR_TYPE,\n M as VueSliderDot,\n z as VueSliderMark,\n F as default\n};\n","<script setup lang=\"ts\">\nimport { default as VueSlider } from 'vue-3-slider-component'\nimport { computed, type PropType, reactive } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport type { TooltipPositionsUnion } from '@/types/ITooltip'\nimport { McTitle } from '@/components'\nimport { useFieldErrors } from '@/composables'\nimport { TitleVariations, Weights } from '@/enums'\n\ntype RangeValue = string[] | number[] | number | string | null\n\nconst emit = defineEmits(['update:modelValue', 'dragging'])\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n type: [Number, String, Array] as PropType<RangeValue>,\n required: true\n },\n /**\n * Мин. значение\n */\n min: {\n type: [String, Number] as PropType<number | string>,\n default: 0\n },\n /**\n * Макс. значение\n */\n max: {\n type: [String, Number] as PropType<number | string>,\n default: 100\n },\n /**\n * The interval between two values.\n */\n step: {\n type: [String, Number] as PropType<number | string>,\n default: 1\n },\n title: {\n type: String as PropType<string | null>,\n default: null\n },\n helpText: {\n type: String as PropType<string | null>,\n default: null\n },\n /**\n * Цвет слайдера\n */\n color: {\n type: String as () => ColorTypes,\n default: 'purple'\n },\n /**\n * Is it lazy to update the value.\n * Useful whenever you need to consume a high-loss operation\n */\n lazy: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Whether to disable the component.\n */\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Control Tooltip display.\n * 'none' | 'always' | 'hover' | 'focus' | 'active'\n */\n tooltip: {\n type: String as PropType<string>,\n default: 'hover'\n },\n /**\n * The placement of the Tooltip.\n * 'top' | 'right' | 'bottom' | 'left'\n */\n tooltipPlacement: {\n type: String as () => TooltipPositionsUnion,\n default: 'top'\n },\n coloredTooltip: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n smooth: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n showLabels: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n errors: {\n type: Array as PropType<string[]>,\n default: () => []\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\n\nconst tooltipFormatter = (value: string): string => {\n //@ts-ignore\n if (Number(value) !== value) return value\n return ('' + value).replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\n}\n\nconst computedValue = computed({\n get() {\n return props.modelValue\n },\n set(value) {\n handleInput(value)\n }\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-range-slider': true,\n [`mc-range-slider--color-${props.color}`]: !!props.color,\n 'mc-range-slider--colored-tooltip': props.coloredTooltip\n }\n})\n\nconst styles = computed((): { [key: string]: string } => {\n return {\n '--mc-range-slider-color': Colors[props.color]\n }\n})\n\nconst sliderProps = reactive({\n style: styles.value,\n interval: +props.step,\n min: +props.min,\n max: +props.max,\n disabled: props.disabled,\n lazy: props.lazy,\n tooltip: props.tooltip,\n marks: props.showLabels,\n adsorb: !props.smooth,\n 'tooltip-placement': props.tooltipPlacement,\n 'tooltip-formatter': tooltipFormatter,\n 'dot-size': 20\n})\nconst handleInput = (value: RangeValue): void => {\n /**\n * Событие по изменению значения\n */\n emit('update:modelValue', value)\n}\n\nconst handleDrag = (value: RangeValue): void => {\n /**\n * Событие по изменению значения\n * (если нужно отслеживать value в ленивом режиме)\n */\n emit('dragging', value)\n}\n</script>\n\n<template>\n <div :class=\"classes\">\n <div class=\"mc-field-range__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"header\">\n <mc-title v-if=\"props.title\" :weight=\"Weights.Medium\">\n {{ props.title }}\n </mc-title>\n </slot>\n </div>\n <vue-slider v-model=\"computedValue\" v-bind=\"sliderProps\" @change=\"handleInput\" @dragging=\"handleDrag\" />\n <template v-if=\"(fieldErrors.errorText.value || props.helpText || $slots.footer) && props.showLabels\">\n <br />\n </template>\n <div v-if=\"fieldErrors.errorText.value || props.helpText || $slots.footer\" class=\"mc-field-range__footer\">\n <template v-if=\"fieldErrors.errorText.value\">\n <mc-title\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n class=\"mc-field-range__error-text\"\n :html-data=\"fieldErrors.errorText.value\"\n />\n <br />\n </template>\n <!-- @slot Слот доп. текста под инпутом -->\n <slot name=\"footer\">\n <mc-title\n v-if=\"props.helpText\"\n tag-name=\"div\"\n :variation=\"TitleVariations.Overline\"\n color=\"gray\"\n max-width=\"100%\"\n >\n {{ helpText }}\n </mc-title>\n </slot>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/box-shadows' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/font-families' as *;\n.mc-range-slider {\n $block-name: &;\n font-family: $font-family-main;\n --mc-range-slider-color: #{$color-purple};\n &__header {\n @include reset-text-indents();\n display: block;\n margin-bottom: $space-100;\n\n &:empty {\n display: none;\n }\n }\n &__footer {\n margin-top: $space-50;\n line-height: $line-height-150;\n\n &:empty {\n display: none;\n }\n }\n\n .vue-slider-dot-tooltip-inner {\n line-height: $line-height-200;\n font-size: $font-size-200;\n padding: $space-100 $space-150;\n background-color: $color-black;\n border-color: $color-black;\n }\n .vue-slider-process {\n background-color: var(--mc-range-slider-color);\n }\n\n .vue-slider-dot-handle-focus {\n box-shadow: $shadow-s;\n }\n .vue-slider-dot-handle {\n box-shadow: $shadow-s;\n &:hover {\n border: 2px solid var(--mc-range-slider-color);\n }\n &:active {\n border: 2px solid var(--mc-range-slider-color);\n }\n }\n &--colored-tooltip {\n .vue-slider-dot-tooltip-inner {\n background-color: var(--mc-range-slider-color);\n border-color: var(--mc-range-slider-color);\n padding: $space-100 $space-150;\n }\n }\n &.vue-slider {\n .vue-slider-rail {\n cursor: pointer;\n }\n &-disabled {\n .vue-slider-rail {\n cursor: auto;\n }\n }\n }\n}\n</style>\n","import { openBlock, createBlock, withKeys, withModifiers, renderSlot, createVNode, withDirectives, Fragment, renderList, toDisplayString, vShow, createCommentVNode, Transition, withCtx, createTextVNode } from 'vue';\n\nfunction isEmpty (opt) {\n if (opt === 0) return false\n if (Array.isArray(opt) && opt.length === 0) return true\n return !opt\n}\n\nfunction not (fun) {\n return (...params) => !fun(...params)\n}\n\nfunction includes (str, query) {\n /* istanbul ignore else */\n if (str === undefined) str = 'undefined';\n if (str === null) str = 'null';\n if (str === false) str = 'false';\n const text = str.toString().toLowerCase();\n return text.indexOf(query.trim()) !== -1\n}\n\nfunction filterOptions (options, search, label, customLabel) {\n return search ? options\n .filter((option) => includes(customLabel(option, label), search))\n .sort((a, b) => customLabel(a, label).length - customLabel(b, label).length) : options\n}\n\nfunction stripGroups (options) {\n return options.filter((option) => !option.$isLabel)\n}\n\nfunction flattenOptions (values, label) {\n return (options) =>\n options.reduce((prev, curr) => {\n /* istanbul ignore else */\n if (curr[values] && curr[values].length) {\n prev.push({\n $groupLabel: curr[label],\n $isLabel: true\n });\n return prev.concat(curr[values])\n }\n return prev\n }, [])\n}\n\nfunction filterGroups (search, label, values, groupLabel, customLabel) {\n return (groups) =>\n groups.map((group) => {\n /* istanbul ignore else */\n if (!group[values]) {\n console.warn(`Options passed to vue-multiselect do not contain groups, despite the config.`);\n return []\n }\n const groupOptions = filterOptions(group[values], search, label, customLabel);\n\n return groupOptions.length\n ? {\n [groupLabel]: group[groupLabel],\n [values]: groupOptions\n }\n : []\n })\n}\n\nconst flow = (...fns) => (x) => fns.reduce((v, f) => f(v), x);\n\nvar multiselectMixin = {\n data () {\n return {\n search: '',\n isOpen: false,\n preferredOpenDirection: 'below',\n optimizedHeight: this.maxHeight\n }\n },\n props: {\n /**\n * Decide whether to filter the results based on search query.\n * Useful for async filtering, where we search through more complex data.\n * @type {Boolean}\n */\n internalSearch: {\n type: Boolean,\n default: true\n },\n /**\n * Array of available options: Objects, Strings or Integers.\n * If array of objects, visible label will default to option.label.\n * If `labal` prop is passed, label will equal option['label']\n * @type {Array}\n */\n options: {\n type: Array,\n required: true\n },\n /**\n * Equivalent to the `multiple` attribute on a `<select>` input.\n * @default false\n * @type {Boolean}\n */\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Key to compare objects\n * @default 'id'\n * @type {String}\n */\n trackBy: {\n type: String\n },\n /**\n * Label to look for in option Object\n * @default 'label'\n * @type {String}\n */\n label: {\n type: String\n },\n /**\n * Enable/disable search in options\n * @default true\n * @type {Boolean}\n */\n searchable: {\n type: Boolean,\n default: true\n },\n /**\n * Clear the search input after `)\n * @default true\n * @type {Boolean}\n */\n clearOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Hide already selected options\n * @default false\n * @type {Boolean}\n */\n hideSelected: {\n type: Boolean,\n default: false\n },\n /**\n * Equivalent to the `placeholder` attribute on a `<select>` input.\n * @default 'Select option'\n * @type {String}\n */\n placeholder: {\n type: String,\n default: 'Select option'\n },\n /**\n * Allow to remove all selected values\n * @default true\n * @type {Boolean}\n */\n allowEmpty: {\n type: Boolean,\n default: true\n },\n /**\n * Reset this.internalValue, this.search after this.internalValue changes.\n * Useful if want to create a stateless dropdown.\n * @default false\n * @type {Boolean}\n */\n resetAfter: {\n type: Boolean,\n default: false\n },\n /**\n * Enable/disable closing after selecting an option\n * @default true\n * @type {Boolean}\n */\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Function to interpolate the custom label\n * @default false\n * @type {Function}\n */\n customLabel: {\n type: Function,\n default (option, label) {\n if (isEmpty(option)) return ''\n return label ? option[label] : option\n }\n },\n /**\n * Disable / Enable tagging\n * @default false\n * @type {Boolean}\n */\n taggable: {\n type: Boolean,\n default: false\n },\n /**\n * String to show when highlighting a potential tag\n * @default 'Press enter to create a tag'\n * @type {String}\n */\n tagPlaceholder: {\n type: String,\n default: 'Press enter to create a tag'\n },\n /**\n * By default new tags will appear above the search results.\n * Changing to 'bottom' will revert this behaviour\n * and will proritize the search results\n * @default 'top'\n * @type {String}\n */\n tagPosition: {\n type: String,\n default: 'top'\n },\n /**\n * Number of allowed selected options. No limit if 0.\n * @default 0\n * @type {Number}\n */\n max: {\n type: [Number, Boolean],\n default: false\n },\n /**\n * Will be passed with all events as second param.\n * Useful for identifying events origin.\n * @default null\n * @type {String|Integer}\n */\n id: {\n default: null\n },\n /**\n * Limits the options displayed in the dropdown\n * to the first X options.\n * @default 1000\n * @type {Integer}\n */\n optionsLimit: {\n type: Number,\n default: 1000\n },\n /**\n * Name of the property containing\n * the group values\n * @default 1000\n * @type {String}\n */\n groupValues: {\n type: String\n },\n /**\n * Name of the property containing\n * the group label\n * @default 1000\n * @type {String}\n */\n groupLabel: {\n type: String\n },\n /**\n * Allow to select all group values\n * by selecting the group label\n * @default false\n * @type {Boolean}\n */\n groupSelect: {\n type: Boolean,\n default: false\n },\n /**\n * Array of keyboard keys to block\n * when selecting\n * @default 1000\n * @type {String}\n */\n blockKeys: {\n type: Array,\n default () {\n return []\n }\n },\n /**\n * Prevent from wiping up the search value\n * @default false\n * @type {Boolean}\n */\n preserveSearch: {\n type: Boolean,\n default: false\n },\n /**\n * Select 1st options if value is empty\n * @default false\n * @type {Boolean}\n */\n preselectFirst: {\n type: Boolean,\n default: false\n },\n /**\n * Prevent autofocus\n * @default false\n * @type {Boolean}\n */\n preventAutofocus: {\n type: Boolean,\n default: false\n }\n },\n mounted () {\n /* istanbul ignore else */\n if (!this.multiple && this.max) {\n console.warn('[Vue-Multiselect warn]: Max prop should not be used when prop Multiple equals false.');\n }\n if (\n this.preselectFirst &&\n !this.internalValue.length &&\n this.options.length\n ) {\n this.select(this.filteredOptions[0]);\n }\n },\n computed: {\n internalValue () {\n return this.modelValue || this.modelValue === 0\n ? Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue]\n : []\n },\n filteredOptions () {\n const search = this.search || '';\n const normalizedSearch = search.toLowerCase().trim();\n\n let options = this.options.concat();\n\n /* istanbul ignore else */\n if (this.internalSearch) {\n options = this.groupValues\n ? this.filterAndFlat(options, normalizedSearch, this.label)\n : filterOptions(options, normalizedSearch, this.label, this.customLabel);\n } else {\n options = this.groupValues ? flattenOptions(this.groupValues, this.groupLabel)(options) : options;\n }\n\n options = this.hideSelected\n ? options.filter(not(this.isSelected))\n : options;\n\n /* istanbul ignore else */\n if (this.taggable && normalizedSearch.length && !this.isExistingOption(normalizedSearch)) {\n if (this.tagPosition === 'bottom') {\n options.push({isTag: true, label: search});\n } else {\n options.unshift({isTag: true, label: search});\n }\n }\n\n return options.slice(0, this.optionsLimit)\n },\n valueKeys () {\n if (this.trackBy) {\n return this.internalValue.map((element) => element[this.trackBy])\n } else {\n return this.internalValue\n }\n },\n optionKeys () {\n const options = this.groupValues ? this.flatAndStrip(this.options) : this.options;\n return options.map((element) => this.customLabel(element, this.label).toString().toLowerCase())\n },\n currentOptionLabel () {\n return this.multiple\n ? this.searchable ? '' : this.placeholder\n : this.internalValue.length\n ? this.getOptionLabel(this.internalValue[0])\n : this.searchable ? '' : this.placeholder\n }\n },\n watch: {\n internalValue: {\n handler () {\n /* istanbul ignore else */\n if (this.resetAfter && this.internalValue.length) {\n this.search = '';\n this.$emit('update:modelValue', this.multiple ? [] : null);\n }\n },\n deep: true\n },\n search () {\n this.$emit('search-change', this.search);\n }\n },\n emits: ['open', 'search-change', 'close', 'select', 'update:modelValue', 'remove', 'tag'],\n methods: {\n /**\n * Returns the internalValue in a way it can be emited to the parent\n * @returns {Object||Array||String||Integer}\n */\n getValue () {\n return this.multiple\n ? this.internalValue\n : this.internalValue.length === 0\n ? null\n : this.internalValue[0]\n },\n /**\n * Filters and then flattens the options list\n * @param {Array}\n * @return {Array} returns a filtered and flat options list\n */\n filterAndFlat (options, search, label) {\n return flow(\n filterGroups(search, label, this.groupValues, this.groupLabel, this.customLabel),\n flattenOptions(this.groupValues, this.groupLabel)\n )(options)\n },\n /**\n * Flattens and then strips the group labels from the options list\n * @param {Array}\n * @return {Array} returns a flat options list without group labels\n */\n flatAndStrip (options) {\n return flow(\n flattenOptions(this.groupValues, this.groupLabel),\n stripGroups\n )(options)\n },\n /**\n * Updates the search value\n * @param {String}\n */\n updateSearch (query) {\n this.search = query;\n },\n /**\n * Finds out if the given query is already present\n * in the available options\n * @param {String}\n * @return {Boolean} returns true if element is available\n */\n isExistingOption (query) {\n return !this.options\n ? false\n : this.optionKeys.indexOf(query) > -1\n },\n /**\n * Finds out if the given element is already present\n * in the result value\n * @param {Object||String||Integer} option passed element to check\n * @returns {Boolean} returns true if element is selected\n */\n isSelected (option) {\n const opt = this.trackBy\n ? option[this.trackBy]\n : option;\n return this.valueKeys.indexOf(opt) > -1\n },\n /**\n * Finds out if the given option is disabled\n * @param {Object||String||Integer} option passed element to check\n * @returns {Boolean} returns true if element is disabled\n */\n isOptionDisabled (option) {\n return !!option.$isDisabled\n },\n /**\n * Returns empty string when options is null/undefined\n * Returns tag query if option is tag.\n * Returns the customLabel() results and casts it to string.\n *\n * @param {Object||String||Integer} Passed option\n * @returns {Object||String}\n */\n getOptionLabel (option) {\n if (isEmpty(option)) return ''\n /* istanbul ignore else */\n if (option.isTag) return option.label\n /* istanbul ignore else */\n if (option.$isLabel) return option.$groupLabel\n\n const label = this.customLabel(option, this.label);\n /* istanbul ignore else */\n if (isEmpty(label)) return ''\n return label\n },\n /**\n * Add the given option to the list of selected options\n * or sets the option as the selected option.\n * If option is already selected -> remove it from the results.\n *\n * @param {Object||String||Integer} option to select/deselect\n * @param {Boolean} block removing\n */\n select (option, key) {\n /* istanbul ignore else */\n if (option.$isLabel && this.groupSelect) {\n this.selectGroup(option);\n return\n }\n if (this.blockKeys.indexOf(key) !== -1 ||\n this.disabled ||\n option.$isDisabled ||\n option.$isLabel\n ) return\n /* istanbul ignore else */\n if (this.max && this.multiple && this.internalValue.length === this.max) return\n /* istanbul ignore else */\n if (key === 'Tab' && !this.pointerDirty) return\n if (option.isTag) {\n this.$emit('tag', option.label, this.id);\n this.search = '';\n if (this.closeOnSelect && !this.multiple) this.deactivate();\n } else {\n const isSelected = this.isSelected(option);\n\n if (isSelected) {\n if (key !== 'Tab') this.removeElement(option);\n return\n }\n\n if (this.multiple) {\n this.$emit('update:modelValue', this.internalValue.concat([option]));\n } else {\n this.$emit('update:modelValue', option);\n }\n\n this.$emit('select', option, this.id);\n\n /* istanbul ignore else */\n if (this.clearOnSelect) this.search = '';\n }\n /* istanbul ignore else */\n if (this.closeOnSelect) this.deactivate();\n },\n /**\n * Add the given group options to the list of selected options\n * If all group optiona are already selected -> remove it from the results.\n *\n * @param {Object||String||Integer} group to select/deselect\n */\n selectGroup (selectedGroup) {\n const group = this.options.find((option) => {\n return option[this.groupLabel] === selectedGroup.$groupLabel\n });\n\n if (!group) return\n\n if (this.wholeGroupSelected(group)) {\n this.$emit('remove', group[this.groupValues], this.id);\n\n const groupValues = this.trackBy ? group[this.groupValues].map(val => val[this.trackBy]) : group[this.groupValues];\n const newValue = this.internalValue.filter(\n option => groupValues.indexOf(this.trackBy ? option[this.trackBy] : option) === -1\n );\n\n this.$emit('update:modelValue', newValue);\n } else {\n let optionsToAdd = group[this.groupValues].filter(\n option => !(this.isOptionDisabled(option) || this.isSelected(option))\n );\n\n // if max is defined then just select options respecting max\n if (this.max) {\n optionsToAdd.splice(this.max - this.internalValue.length);\n }\n\n this.$emit('select', optionsToAdd, this.id);\n this.$emit(\n 'update:modelValue',\n this.internalValue.concat(optionsToAdd)\n );\n }\n\n if (this.closeOnSelect) this.deactivate();\n },\n /**\n * Helper to identify if all values in a group are selected\n *\n * @param {Object} group to validated selected values against\n */\n wholeGroupSelected (group) {\n return group[this.groupValues].every((option) => this.isSelected(option) || this.isOptionDisabled(option)\n )\n },\n /**\n * Helper to identify if all values in a group are disabled\n *\n * @param {Object} group to check for disabled values\n */\n wholeGroupDisabled (group) {\n return group[this.groupValues].every(this.isOptionDisabled)\n },\n /**\n * Removes the given option from the selected options.\n * Additionally checks this.allowEmpty prop if option can be removed when\n * it is the last selected option.\n *\n * @param {type} option description\n * @return {type} description\n */\n removeElement (option, shouldClose = true) {\n /* istanbul ignore else */\n if (this.disabled) return\n /* istanbul ignore else */\n if (option.$isDisabled) return\n /* istanbul ignore else */\n if (!this.allowEmpty && this.internalValue.length <= 1) {\n this.deactivate();\n return\n }\n\n const index = typeof option === 'object'\n ? this.valueKeys.indexOf(option[this.trackBy])\n : this.valueKeys.indexOf(option);\n\n if (this.multiple) {\n const newValue = this.internalValue.slice(0, index).concat(this.internalValue.slice(index + 1));\n this.$emit('update:modelValue', newValue);\n } else {\n this.$emit('update:modelValue', null);\n }\n this.$emit('remove', option, this.id);\n\n /* istanbul ignore else */\n if (this.closeOnSelect && shouldClose) this.deactivate();\n },\n /**\n * Calls this.removeElement() with the last element\n * from this.internalValue (selected element Array)\n *\n * @fires this#removeElement\n */\n removeLastElement () {\n /* istanbul ignore else */\n if (this.blockKeys.indexOf('Delete') !== -1) return\n /* istanbul ignore else */\n if (this.search.length === 0 && Array.isArray(this.internalValue) && this.internalValue.length) {\n this.removeElement(this.internalValue[this.internalValue.length - 1], false);\n }\n },\n /**\n * Opens the multiselect’s dropdown.\n * Sets this.isOpen to TRUE\n */\n activate () {\n /* istanbul ignore else */\n if (this.isOpen || this.disabled) return\n\n this.adjustPosition();\n /* istanbul ignore else */\n if (this.groupValues && this.pointer === 0 && this.filteredOptions.length) {\n this.pointer = 1;\n }\n\n this.isOpen = true;\n /* istanbul ignore else */\n if (this.searchable) {\n if (!this.preserveSearch) this.search = '';\n if (!this.preventAutofocus) this.$nextTick(() => this.$refs.search && this.$refs.search.focus());\n } else if (!this.preventAutofocus) {\n if (typeof this.$el !== 'undefined') this.$el.focus();\n }\n this.$emit('open', this.id);\n },\n /**\n * Closes the multiselect’s dropdown.\n * Sets this.isOpen to FALSE\n */\n deactivate () {\n /* istanbul ignore else */\n if (!this.isOpen) return\n\n this.isOpen = false;\n /* istanbul ignore else */\n if (this.searchable) {\n if (this.$refs.search !== null && typeof this.$refs.search !== 'undefined') this.$refs.search.blur();\n } else {\n if (typeof this.$el !== 'undefined') this.$el.blur();\n }\n if (!this.preserveSearch) this.search = '';\n this.$emit('close', this.getValue(), this.id);\n },\n /**\n * Call this.activate() or this.deactivate()\n * depending on this.isOpen value.\n *\n * @fires this#activate || this#deactivate\n * @property {Boolean} isOpen indicates if dropdown is open\n */\n toggle () {\n this.isOpen\n ? this.deactivate()\n : this.activate();\n },\n /**\n * Updates the hasEnoughSpace variable used for\n * detecting where to expand the dropdown\n */\n adjustPosition () {\n if (typeof window === 'undefined') return\n\n const spaceAbove = this.$el.getBoundingClientRect().top;\n const spaceBelow = window.innerHeight - this.$el.getBoundingClientRect().bottom;\n const hasEnoughSpaceBelow = spaceBelow > this.maxHeight;\n\n if (hasEnoughSpaceBelow || spaceBelow > spaceAbove || this.openDirection === 'below' || this.openDirection === 'bottom') {\n this.preferredOpenDirection = 'below';\n this.optimizedHeight = Math.min(spaceBelow - 40, this.maxHeight);\n } else {\n this.preferredOpenDirection = 'above';\n this.optimizedHeight = Math.min(spaceAbove - 40, this.maxHeight);\n }\n }\n }\n};\n\nvar pointerMixin = {\n data () {\n return {\n pointer: 0,\n pointerDirty: false\n }\n },\n props: {\n /**\n * Enable/disable highlighting of the pointed value.\n * @type {Boolean}\n * @default true\n */\n showPointer: {\n type: Boolean,\n default: true\n },\n optionHeight: {\n type: Number,\n default: 40\n }\n },\n computed: {\n pointerPosition () {\n return this.pointer * this.optionHeight\n },\n visibleElements () {\n return this.optimizedHeight / this.optionHeight\n }\n },\n watch: {\n filteredOptions () {\n this.pointerAdjust();\n },\n isOpen () {\n this.pointerDirty = false;\n },\n pointer () {\n this.$refs.search && this.$refs.search.setAttribute('aria-activedescendant', this.id + '-' + this.pointer.toString());\n }\n },\n methods: {\n optionHighlight (index, option) {\n return {\n 'multiselect__option--highlight': index === this.pointer && this.showPointer,\n 'multiselect__option--selected': this.isSelected(option)\n }\n },\n groupHighlight (index, selectedGroup) {\n if (!this.groupSelect) {\n return [\n 'multiselect__option--disabled',\n {'multiselect__option--group': selectedGroup.$isLabel}\n ]\n }\n\n const group = this.options.find((option) => {\n return option[this.groupLabel] === selectedGroup.$groupLabel\n });\n\n return group && !this.wholeGroupDisabled(group) ? [\n 'multiselect__option--group',\n {'multiselect__option--highlight': index === this.pointer && this.showPointer},\n {'multiselect__option--group-selected': this.wholeGroupSelected(group)}\n ] : 'multiselect__option--disabled'\n },\n addPointerElement ({key} = 'Enter') {\n /* istanbul ignore else */\n if (this.filteredOptions.length > 0) {\n this.select(this.filteredOptions[this.pointer], key);\n }\n this.pointerReset();\n },\n pointerForward () {\n /* istanbul ignore else */\n if (this.pointer < this.filteredOptions.length - 1) {\n this.pointer++;\n /* istanbul ignore next */\n if (this.$refs.list.scrollTop <= this.pointerPosition - (this.visibleElements - 1) * this.optionHeight) {\n this.$refs.list.scrollTop = this.pointerPosition - (this.visibleElements - 1) * this.optionHeight;\n }\n /* istanbul ignore else */\n if (\n this.filteredOptions[this.pointer] &&\n this.filteredOptions[this.pointer].$isLabel &&\n !this.groupSelect\n ) this.pointerForward();\n }\n this.pointerDirty = true;\n },\n pointerBackward () {\n if (this.pointer > 0) {\n this.pointer--;\n /* istanbul ignore else */\n if (this.$refs.list.scrollTop >= this.pointerPosition) {\n this.$refs.list.scrollTop = this.pointerPosition;\n }\n /* istanbul ignore else */\n if (\n this.filteredOptions[this.pointer] &&\n this.filteredOptions[this.pointer].$isLabel &&\n !this.groupSelect\n ) this.pointerBackward();\n } else {\n /* istanbul ignore else */\n if (\n this.filteredOptions[this.pointer] &&\n this.filteredOptions[0].$isLabel &&\n !this.groupSelect\n ) this.pointerForward();\n }\n this.pointerDirty = true;\n },\n pointerReset () {\n /* istanbul ignore else */\n if (!this.closeOnSelect) return\n this.pointer = 0;\n /* istanbul ignore else */\n if (this.$refs.list) {\n this.$refs.list.scrollTop = 0;\n }\n },\n pointerAdjust () {\n /* istanbul ignore else */\n if (this.pointer >= this.filteredOptions.length - 1) {\n this.pointer = this.filteredOptions.length\n ? this.filteredOptions.length - 1\n : 0;\n }\n\n if (this.filteredOptions.length > 0 &&\n this.filteredOptions[this.pointer].$isLabel &&\n !this.groupSelect\n ) {\n this.pointerForward();\n }\n },\n pointerSet (index) {\n this.pointer = index;\n this.pointerDirty = true;\n }\n }\n};\n\nvar script = {\n name: 'vue-multiselect',\n mixins: [multiselectMixin, pointerMixin],\n compatConfig: {\n MODE: 3,\n ATTR_ENUMERATED_COERCION: false\n },\n props: {\n /**\n * name attribute to match optional label element\n * @default ''\n * @type {String}\n */\n name: {\n type: String,\n default: ''\n },\n /**\n * Presets the selected options value.\n * @type {Object||Array||String||Integer}\n */\n modelValue: {\n type: null,\n default () {\n return []\n }\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectLabel: {\n type: String,\n default: 'Press enter to select'\n },\n /**\n * String to show when pointing to an option\n * @default 'Press enter to select'\n * @type {String}\n */\n selectGroupLabel: {\n type: String,\n default: 'Press enter to select group'\n },\n /**\n * String to show next to selected option\n * @default 'Selected'\n * @type {String}\n */\n selectedLabel: {\n type: String,\n default: 'Selected'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectLabel: {\n type: String,\n default: 'Press enter to remove'\n },\n /**\n * String to show when pointing to an already selected option\n * @default 'Press enter to remove'\n * @type {String}\n */\n deselectGroupLabel: {\n type: String,\n default: 'Press enter to deselect group'\n },\n /**\n * Decide whether to show pointer labels\n * @default true\n * @type {Boolean}\n */\n showLabels: {\n type: Boolean,\n default: true\n },\n /**\n * Limit the display of selected options. The rest will be hidden within the limitText string.\n * @default 99999\n * @type {Integer}\n */\n limit: {\n type: Number,\n default: 99999\n },\n /**\n * Sets maxHeight style value of the dropdown\n * @default 300\n * @type {Integer}\n */\n maxHeight: {\n type: Number,\n default: 300\n },\n /**\n * Function that process the message shown when selected\n * elements pass the defined limit.\n * @default 'and * more'\n * @param {Int} count Number of elements more than limit\n * @type {Function}\n */\n limitText: {\n type: Function,\n default: (count) => `and ${count} more`\n },\n /**\n * Set true to trigger the loading spinner.\n * @default False\n * @type {Boolean}\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Disables the multiselect if true.\n * @default false\n * @type {Boolean}\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Enables search input's spellcheck if true.\n * @default false\n * @type {Boolean}\n */\n spellcheck: {\n type: Boolean,\n default: false\n },\n /**\n * Fixed opening direction\n * @default ''\n * @type {String}\n */\n openDirection: {\n type: String,\n default: ''\n },\n /**\n * Shows slot with message about empty options\n * @default true\n * @type {Boolean}\n */\n showNoOptions: {\n type: Boolean,\n default: true\n },\n showNoResults: {\n type: Boolean,\n default: true\n },\n tabindex: {\n type: Number,\n default: 0\n },\n required: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n hasOptionGroup () {\n return this.groupValues && this.groupLabel && this.groupSelect\n },\n isSingleLabelVisible () {\n return (\n (this.singleValue || this.singleValue === 0) &&\n (!this.isOpen || !this.searchable) &&\n !this.visibleValues.length\n )\n },\n isPlaceholderVisible () {\n return !this.internalValue.length && (!this.searchable || !this.isOpen)\n },\n visibleValues () {\n return this.multiple ? this.internalValue.slice(0, this.limit) : []\n },\n singleValue () {\n return this.internalValue[0]\n },\n deselectLabelText () {\n return this.showLabels ? this.deselectLabel : ''\n },\n deselectGroupLabelText () {\n return this.showLabels ? this.deselectGroupLabel : ''\n },\n selectLabelText () {\n return this.showLabels ? this.selectLabel : ''\n },\n selectGroupLabelText () {\n return this.showLabels ? this.selectGroupLabel : ''\n },\n selectedLabelText () {\n return this.showLabels ? this.selectedLabel : ''\n },\n inputStyle () {\n if (\n this.searchable ||\n (this.multiple && this.modelValue && this.modelValue.length)\n ) {\n // Hide input by setting the width to 0 allowing it to receive focus\n return this.isOpen\n ? {width: '100%'}\n : {width: '0', position: 'absolute', padding: '0'}\n }\n return ''\n },\n contentStyle () {\n return this.options.length\n ? {display: 'inline-block'}\n : {display: 'block'}\n },\n isAbove () {\n if (this.openDirection === 'above' || this.openDirection === 'top') {\n return true\n } else if (\n this.openDirection === 'below' ||\n this.openDirection === 'bottom'\n ) {\n return false\n } else {\n return this.preferredOpenDirection === 'above'\n }\n },\n showSearchInput () {\n return (\n this.searchable &&\n (this.hasSingleSelectedSlot &&\n (this.visibleSingleValue || this.visibleSingleValue === 0)\n ? this.isOpen\n : true)\n )\n }\n }\n};\n\nconst _hoisted_1 = {\n ref: \"tags\",\n class: \"multiselect__tags\"\n};\nconst _hoisted_2 = { class: \"multiselect__tags-wrap\" };\nconst _hoisted_3 = { class: \"multiselect__spinner\" };\nconst _hoisted_4 = { key: 0 };\nconst _hoisted_5 = { class: \"multiselect__option\" };\nconst _hoisted_6 = { class: \"multiselect__option\" };\nconst _hoisted_7 = /*#__PURE__*/createTextVNode(\"No elements found. Consider changing the search query.\");\nconst _hoisted_8 = { class: \"multiselect__option\" };\nconst _hoisted_9 = /*#__PURE__*/createTextVNode(\"List is empty.\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (openBlock(), createBlock(\"div\", {\n tabindex: _ctx.searchable ? -1 : $props.tabindex,\n class: [{ 'multiselect--active': _ctx.isOpen, 'multiselect--disabled': $props.disabled, 'multiselect--above': $options.isAbove, 'multiselect--has-options-group': $options.hasOptionGroup }, \"multiselect\"],\n onFocus: _cache[14] || (_cache[14] = $event => (_ctx.activate())),\n onBlur: _cache[15] || (_cache[15] = $event => (_ctx.searchable ? false : _ctx.deactivate())),\n onKeydown: [\n _cache[16] || (_cache[16] = withKeys(withModifiers($event => (_ctx.pointerForward()), [\"self\",\"prevent\"]), [\"down\"])),\n _cache[17] || (_cache[17] = withKeys(withModifiers($event => (_ctx.pointerBackward()), [\"self\",\"prevent\"]), [\"up\"]))\n ],\n onKeypress: _cache[18] || (_cache[18] = withKeys(withModifiers($event => (_ctx.addPointerElement($event)), [\"stop\",\"self\"]), [\"enter\",\"tab\"])),\n onKeyup: _cache[19] || (_cache[19] = withKeys($event => (_ctx.deactivate()), [\"esc\"])),\n role: \"combobox\",\n \"aria-owns\": 'listbox-'+_ctx.id\n }, [\n renderSlot(_ctx.$slots, \"caret\", { toggle: _ctx.toggle }, () => [\n createVNode(\"div\", {\n onMousedown: _cache[1] || (_cache[1] = withModifiers($event => (_ctx.toggle()), [\"prevent\",\"stop\"])),\n class: \"multiselect__select\"\n }, null, 32 /* HYDRATE_EVENTS */)\n ]),\n renderSlot(_ctx.$slots, \"clear\", { search: _ctx.search }),\n createVNode(\"div\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"selection\", {\n search: _ctx.search,\n remove: _ctx.removeElement,\n values: $options.visibleValues,\n isOpen: _ctx.isOpen\n }, () => [\n withDirectives(createVNode(\"div\", _hoisted_2, [\n (openBlock(true), createBlock(Fragment, null, renderList($options.visibleValues, (option, index) => {\n return renderSlot(_ctx.$slots, \"tag\", {\n option: option,\n search: _ctx.search,\n remove: _ctx.removeElement\n }, () => [\n (openBlock(), createBlock(\"span\", {\n class: \"multiselect__tag\",\n key: index\n }, [\n createVNode(\"span\", {\n textContent: toDisplayString(_ctx.getOptionLabel(option))\n }, null, 8 /* PROPS */, [\"textContent\"]),\n createVNode(\"i\", {\n tabindex: \"1\",\n onKeypress: withKeys(withModifiers($event => (_ctx.removeElement(option)), [\"prevent\"]), [\"enter\"]),\n onMousedown: withModifiers($event => (_ctx.removeElement(option)), [\"prevent\"]),\n class: \"multiselect__tag-icon\"\n }, null, 40 /* PROPS, HYDRATE_EVENTS */, [\"onKeypress\", \"onMousedown\"])\n ]))\n ])\n }), 256 /* UNKEYED_FRAGMENT */))\n ], 512 /* NEED_PATCH */), [\n [vShow, $options.visibleValues.length > 0]\n ]),\n (_ctx.internalValue && _ctx.internalValue.length > $props.limit)\n ? renderSlot(_ctx.$slots, \"limit\", { key: 0 }, () => [\n createVNode(\"strong\", {\n class: \"multiselect__strong\",\n textContent: toDisplayString($props.limitText(_ctx.internalValue.length - $props.limit))\n }, null, 8 /* PROPS */, [\"textContent\"])\n ])\n : createCommentVNode(\"v-if\", true)\n ]),\n createVNode(Transition, { name: \"multiselect__loading\" }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"loading\", {}, () => [\n withDirectives(createVNode(\"div\", _hoisted_3, null, 512 /* NEED_PATCH */), [\n [vShow, $props.loading]\n ])\n ])\n ]),\n _: 3 /* FORWARDED */\n }),\n (_ctx.searchable)\n ? (openBlock(), createBlock(\"input\", {\n key: 0,\n ref: \"search\",\n name: $props.name,\n id: _ctx.id,\n type: \"text\",\n autocomplete: \"off\",\n spellcheck: $props.spellcheck,\n placeholder: _ctx.placeholder,\n required: $props.required,\n style: $options.inputStyle,\n value: _ctx.search,\n disabled: $props.disabled,\n tabindex: $props.tabindex,\n onInput: _cache[2] || (_cache[2] = $event => (_ctx.updateSearch($event.target.value))),\n onFocus: _cache[3] || (_cache[3] = withModifiers($event => (_ctx.activate()), [\"prevent\"])),\n onBlur: _cache[4] || (_cache[4] = withModifiers($event => (_ctx.deactivate()), [\"prevent\"])),\n onKeyup: _cache[5] || (_cache[5] = withKeys($event => (_ctx.deactivate()), [\"esc\"])),\n onKeydown: [\n _cache[6] || (_cache[6] = withKeys(withModifiers($event => (_ctx.pointerForward()), [\"prevent\"]), [\"down\"])),\n _cache[7] || (_cache[7] = withKeys(withModifiers($event => (_ctx.pointerBackward()), [\"prevent\"]), [\"up\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers($event => (_ctx.removeLastElement()), [\"stop\"]), [\"delete\"]))\n ],\n onKeypress: _cache[8] || (_cache[8] = withKeys(withModifiers($event => (_ctx.addPointerElement($event)), [\"prevent\",\"stop\",\"self\"]), [\"enter\"])),\n class: \"multiselect__input\",\n \"aria-controls\": 'listbox-'+_ctx.id\n }, null, 44 /* STYLE, PROPS, HYDRATE_EVENTS */, [\"name\", \"id\", \"spellcheck\", \"placeholder\", \"required\", \"value\", \"disabled\", \"tabindex\", \"aria-controls\"]))\n : createCommentVNode(\"v-if\", true),\n ($options.isSingleLabelVisible)\n ? (openBlock(), createBlock(\"span\", {\n key: 1,\n class: \"multiselect__single\",\n onMousedown: _cache[10] || (_cache[10] = withModifiers((...args) => (_ctx.toggle && _ctx.toggle(...args)), [\"prevent\"]))\n }, [\n renderSlot(_ctx.$slots, \"singleLabel\", { option: $options.singleValue }, () => [\n createTextVNode(toDisplayString(_ctx.currentOptionLabel), 1 /* TEXT */)\n ])\n ], 32 /* HYDRATE_EVENTS */))\n : createCommentVNode(\"v-if\", true),\n ($options.isPlaceholderVisible)\n ? (openBlock(), createBlock(\"span\", {\n key: 2,\n class: \"multiselect__placeholder\",\n onMousedown: _cache[11] || (_cache[11] = withModifiers((...args) => (_ctx.toggle && _ctx.toggle(...args)), [\"prevent\"]))\n }, [\n renderSlot(_ctx.$slots, \"placeholder\", {}, () => [\n createTextVNode(toDisplayString(_ctx.placeholder), 1 /* TEXT */)\n ])\n ], 32 /* HYDRATE_EVENTS */))\n : createCommentVNode(\"v-if\", true)\n ], 512 /* NEED_PATCH */),\n createVNode(Transition, { name: \"multiselect\" }, {\n default: withCtx(() => [\n withDirectives(createVNode(\"div\", {\n class: \"multiselect__content-wrapper\",\n onFocus: _cache[12] || (_cache[12] = (...args) => (_ctx.activate && _ctx.activate(...args))),\n tabindex: \"-1\",\n onMousedown: _cache[13] || (_cache[13] = withModifiers(() => {}, [\"prevent\"])),\n style: { maxHeight: _ctx.optimizedHeight + 'px' },\n ref: \"list\"\n }, [\n createVNode(\"ul\", {\n class: \"multiselect__content\",\n style: $options.contentStyle,\n role: \"listbox\",\n id: 'listbox-'+_ctx.id,\n \"aria-multiselectable\": _ctx.multiple\n }, [\n renderSlot(_ctx.$slots, \"beforeList\"),\n (_ctx.multiple && _ctx.max === _ctx.internalValue.length)\n ? (openBlock(), createBlock(\"li\", _hoisted_4, [\n createVNode(\"span\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"maxElements\", {}, () => [\n createTextVNode(\"Maximum of \" + toDisplayString(_ctx.max) + \" options selected. First remove a selected option to select another.\", 1 /* TEXT */)\n ])\n ])\n ]))\n : createCommentVNode(\"v-if\", true),\n (!_ctx.max || _ctx.internalValue.length < _ctx.max)\n ? (openBlock(true), createBlock(Fragment, { key: 1 }, renderList(_ctx.filteredOptions, (option, index) => {\n return (openBlock(), createBlock(\"li\", {\n class: \"multiselect__element\",\n key: index,\n \"aria-selected\": _ctx.isSelected(option),\n id: _ctx.id + '-' + index,\n role: !(option && (option.$isLabel || option.$isDisabled)) ? 'option' : null\n }, [\n (!(option && (option.$isLabel || option.$isDisabled)))\n ? (openBlock(), createBlock(\"span\", {\n key: 0,\n class: [_ctx.optionHighlight(index, option), \"multiselect__option\"],\n onClick: withModifiers($event => (_ctx.select(option)), [\"stop\"]),\n onMouseenter: withModifiers($event => (_ctx.pointerSet(index)), [\"self\"]),\n \"data-select\": option && option.isTag ? _ctx.tagPlaceholder : $options.selectLabelText,\n \"data-selected\": $options.selectedLabelText,\n \"data-deselect\": $options.deselectLabelText\n }, [\n renderSlot(_ctx.$slots, \"option\", {\n option: option,\n search: _ctx.search,\n index: index\n }, () => [\n createVNode(\"span\", null, toDisplayString(_ctx.getOptionLabel(option)), 1 /* TEXT */)\n ])\n ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, [\"onClick\", \"onMouseenter\", \"data-select\", \"data-selected\", \"data-deselect\"]))\n : createCommentVNode(\"v-if\", true),\n (option && (option.$isLabel || option.$isDisabled))\n ? (openBlock(), createBlock(\"span\", {\n key: 1,\n \"data-select\": _ctx.groupSelect && $options.selectGroupLabelText,\n \"data-deselect\": _ctx.groupSelect && $options.deselectGroupLabelText,\n class: [_ctx.groupHighlight(index, option), \"multiselect__option\"],\n onMouseenter: withModifiers($event => (_ctx.groupSelect && _ctx.pointerSet(index)), [\"self\"]),\n onMousedown: withModifiers($event => (_ctx.selectGroup(option)), [\"prevent\"])\n }, [\n renderSlot(_ctx.$slots, \"option\", {\n option: option,\n search: _ctx.search,\n index: index\n }, () => [\n createVNode(\"span\", null, toDisplayString(_ctx.getOptionLabel(option)), 1 /* TEXT */)\n ])\n ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, [\"data-select\", \"data-deselect\", \"onMouseenter\", \"onMousedown\"]))\n : createCommentVNode(\"v-if\", true)\n ], 8 /* PROPS */, [\"aria-selected\", \"id\", \"role\"]))\n }), 128 /* KEYED_FRAGMENT */))\n : createCommentVNode(\"v-if\", true),\n withDirectives(createVNode(\"li\", null, [\n createVNode(\"span\", _hoisted_6, [\n renderSlot(_ctx.$slots, \"noResult\", { search: _ctx.search }, () => [\n _hoisted_7\n ])\n ])\n ], 512 /* NEED_PATCH */), [\n [vShow, $props.showNoResults && (_ctx.filteredOptions.length === 0 && _ctx.search && !$props.loading)]\n ]),\n withDirectives(createVNode(\"li\", null, [\n createVNode(\"span\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"noOptions\", {}, () => [\n _hoisted_9\n ])\n ])\n ], 512 /* NEED_PATCH */), [\n [vShow, $props.showNoOptions && ((_ctx.options.length === 0 || ($options.hasOptionGroup === true && _ctx.filteredOptions.length === 0)) && !_ctx.search && !$props.loading)]\n ]),\n renderSlot(_ctx.$slots, \"afterList\")\n ], 12 /* STYLE, PROPS */, [\"id\", \"aria-multiselectable\"])\n ], 36 /* STYLE, HYDRATE_EVENTS */), [\n [vShow, _ctx.isOpen]\n ])\n ]),\n _: 3 /* FORWARDED */\n })\n ], 42 /* CLASS, PROPS, HYDRATE_EVENTS */, [\"tabindex\", \"aria-owns\"]))\n}\n\nscript.render = render;\n\nexport default script;\nexport { script as Multiselect, multiselectMixin, pointerMixin };\n","<script setup lang=\"ts\">\nimport { computed, type PropType, ref, watch } from 'vue'\nimport { default as MultiSelect } from 'vue-multiselect'\nimport { McTitle, McSvgIcon, McAvatar, McTooltip, McPreview } from '@/components'\nimport type { ISelectGroupOptions, ISelectOption, ISelectOptions } from '@/types/ISelect'\nimport { type DirectionsUnion } from '@/types/IDirections'\nimport { Directions } from '@/enums/ui/Directions'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { useFieldErrors } from '@/composables'\nimport type { IconsListUnion } from '@/types/styles/Icons'\nimport { SelectGroupKeys } from '@/enums/Select'\nimport type { SelectListDirectionsUnion } from '@/types/ISelect'\nimport { PreviewSizes, TitleVariations, TooltipPositions, Weights } from '@/enums'\n\nconst emit = defineEmits<{\n (e: 'original-input', value: ISelectOptions[]): void\n (e: 'tag', value: string): void\n (e: 'search-change', value: string): void\n (e: 'update:modelValue', value: string[] | number[] | string | number | null): void\n (e: 'handle-open'): void\n (e: 'handle-close'): void\n}>()\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n type: [Array, String, Number] as PropType<string[] | number[] | string | number | null>\n },\n /**\n * Заголовок поля:\n *\n */\n title: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Вспомогательный текст под инпутом:\n *\n */\n helpText: {\n type: String as PropType<string>,\n default: null\n },\n /**\n * Массив элементов\n * выпадающего списка\n * [\n * {\n * name: String,\n * value: String | Number,\n * text: String - доступен, если optionWithPreview=true\n * icon: String - доступен, если optionWithPreview=true\n * }\n * ]\n */\n options: {\n type: Array as PropType<ISelectOptions | ISelectGroupOptions>,\n default: () => [] as ISelectOptions\n },\n /**\n * Выполняется ли поиск из списка\n * при вводе в инпут\n */\n searchable: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Множественный выбор\n */\n multiple: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Скрывать из списка\n * выбранные элементы\n */\n hideSelected: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Допустимо ли\n * пустое значение\n */\n allowEmpty: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Отключенное состояние\n */\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Ссылка на аватар/картинку\n * в начале label\n */\n avatar: {\n type: String as PropType<string>,\n default: null\n },\n /**\n * Имя иконки\n * в начале label\n */\n icon: {\n type: String as () => IconsListUnion,\n default: null\n },\n /**\n * Цвет фона\n */\n backgroundColor: {\n type: String as () => ColorTypes,\n default: null\n },\n /**\n * placeholder\n */\n placeholder: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Направление открытия списка:\n * `above (top), below (bottom), auto`\n */\n openDirection: {\n type: String as () => SelectListDirectionsUnion,\n default: 'auto'\n },\n /**\n * Селект в режиме тэгирования, когда можно вводить свои значения и добавлять их в опции\n * */\n taggable: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Помечать в списке выбранные\n * элементы\n */\n showLabels: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Поиск по опциям\n * */\n internalSearch: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Ошибки\n */\n errors: {\n type: Array as PropType<string[]>,\n default: null\n },\n /**\n * Name\n */\n name: {\n type: String as PropType<string>,\n required: true\n },\n /**\n * Если нужен тултип\n * над элементами списка\n */\n optionsTooltip: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * При группировке опций, дает возвожность выбрать сразу группу\n * */\n groupSelect: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n required: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Если айтемам в селекте нужны превью с иконками и описанием\n */\n optionWithPreview: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n tabindex: {\n type: [String, Number],\n default: null\n },\n /**\n * Если нужно ограничить максимальную высоту блока с выбранными элементами\n */\n maxHeight: {\n type: String as PropType<string>,\n default: null\n },\n /**\n * Рендерить ли выпадающий список абсолютно, что бы помещался в ограниченном пространстве\n * */\n renderAbsoluteList: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Для какого языка селект\n */\n locale: {\n type: String as PropType<string>,\n default: null\n },\n /**\n * Текст для пустого селекта, когда неичего не найдено\n */\n noResultsText: {\n type: String as PropType<string>,\n default: 'No results'\n },\n /**\n * Показывать ли состояние лоадинга\n */\n loading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n dir: {\n type: String as () => DirectionsUnion,\n default: Directions.Ltr\n },\n /**\n * На какое после смотреть что бы считать его заголовком строки\n * */\n titleField: {\n type: String as PropType<string>,\n default: 'name'\n },\n /**\n * На какое после смотреть что бы считать его значением строки\n * */\n valueField: {\n type: String as PropType<string>,\n default: 'value'\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\nconst searchValue = ref<string | null>(null)\nconst field_select_ref = ref<InstanceType<typeof MultiSelect> | null>(null)\nconst field_select_wrapper_ref = ref<InstanceType<typeof HTMLDivElement> | null>(null)\nconst local_options = ref<ISelectOptions>([])\n\nconst isGroupedOptions = computed((): boolean => {\n return props.options.some(\n (o) =>\n Object.prototype.hasOwnProperty.call(o, SelectGroupKeys.Label) &&\n Object.prototype.hasOwnProperty.call(o, SelectGroupKeys.Values) &&\n //@ts-ignore\n Array.isArray(o[SelectGroupKeys.Values])\n )\n})\nconst hasTitle = computed(() => {\n return !!props.title\n})\nconst hasPrepend = computed(() => {\n return props.avatar || props.icon\n})\nconst isValueMustBeArray = computed(() => {\n return props.multiple\n})\n\nconst tagBind = computed(() => {\n return {\n label: props.titleField,\n trackBy: props.valueField,\n loading: props.loading,\n options: computedOptions.value,\n searchable: props.searchable,\n showLabels: props.showLabels,\n multiple: props.multiple,\n hideSelected: props.hideSelected,\n allowEmpty: props.allowEmpty,\n openDirection: props.openDirection,\n id: props.name,\n taggable: props.taggable,\n tagPlaceholder: '',\n placeholder: props.placeholder,\n disabled: props.disabled,\n internalSearch: props.internalSearch,\n tabindex: +props.tabindex,\n groupSelect: props.groupSelect && props.multiple,\n ...(isGroupedOptions.value ? { groupLabel: SelectGroupKeys.Label } : {}),\n ...(isGroupedOptions.value ? { groupValues: SelectGroupKeys.Values } : {})\n }\n})\n\nconst computedOptions = computed((): ISelectOptions => {\n //@ts-ignore\n return !isGroupedOptions.value\n ? ([...props.options, ...local_options.value].filter(\n //@ts-ignore\n (v, i, a) => a.findIndex((afi: ISelectOption) => afi[props.valueField] === v[props.valueField]) === i\n ) as ISelectOptions)\n : props.options\n})\nconst rtl = computed((): boolean => {\n return props.dir === Directions.Rtl\n})\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-field-select': true,\n 'mc-field-select--error': !!fieldErrors.errorText.value,\n 'mc-field-select--disabled': props.disabled,\n [`mc-field-select--bg-${props.backgroundColor}`]: !!props.backgroundColor,\n 'mc-field-select--is-empty-options-list': isEmptyOptionsList.value || props.loading,\n 'mc-field-select--with-preview': props.optionWithPreview,\n 'mc-field-select--max-height': !!props.maxHeight,\n 'mc-field-select--rtl': rtl.value\n }\n})\nconst computedTitle = computed(() => {\n return `${props.title}${props.required ? ' *' : ''}`\n})\nconst styles = computed((): { [key: string]: string } => {\n const darkColors = ['gray', 'dark-gray', 'black']\n const lightColors = ['white']\n let placeHolderColor: ColorTypes = 'gray'\n let borderColor: ColorTypes = props.backgroundColor\n let backgroundColor: ColorTypes = props.backgroundColor\n let labelColor: ColorTypes = 'black'\n if (!props.backgroundColor || lightColors.includes(props.backgroundColor)) {\n borderColor = 'purple'\n }\n if (darkColors.includes(props.backgroundColor)) {\n labelColor = 'white'\n placeHolderColor = 'white'\n borderColor = 'black'\n }\n if (props.disabled && !props.backgroundColor) {\n backgroundColor = 'hover-gray'\n }\n return {\n '--mc-field-select-max-height': props.maxHeight,\n '--mc-field-select-color': backgroundColor && Colors[backgroundColor],\n '--mc-field-select-border-color': borderColor && Colors[borderColor],\n '--mc-field-select-label-color': Colors[labelColor],\n '--mc-field-select-placeholder-color': Colors[placeHolderColor]\n }\n})\n\nconst isEmptyOptionsList = computed((): boolean => {\n if ((props.hideSelected && !searchValue.value) || !props.options.length) {\n if (props.multiple) {\n if (isGroupedOptions.value) return false\n return Array.isArray(props.modelValue) && props.options.length === props.modelValue.length\n } else {\n return !!props.modelValue && computedOptions.value?.length === 1 && !searchValue.value\n }\n } else if (props.options.length === 0) return !props.options.length\n return false\n})\n\nconst computedModelValue = computed({\n get() {\n let preparedValue: any = isValueMustBeArray.value ? props.modelValue || [] : [props.modelValue].filter(Boolean)\n preparedValue = preparedValue.map((pv: string): ISelectOption => {\n //@ts-ignore\n const options = isGroupedOptions.value\n ? computedOptions.value.map((co) => co[SelectGroupKeys.Values]).flat()\n : computedOptions.value\n const item = options.find((co) => String(co[props.valueField]) === String(pv))\n return {\n [props.titleField]: item?.[props.titleField],\n [props.valueField]: item?.[props.valueField],\n text: item?.text,\n icon: item?.icon\n }\n })\n\n const [first] = preparedValue\n return isValueMustBeArray.value ? preparedValue : first\n },\n set(value) {\n let preparedValue = isValueMustBeArray.value ? (Array.isArray(value) ? value : []) : [value]\n preparedValue = preparedValue.filter(Boolean).map((v) => v[props.valueField])\n\n const [first] = preparedValue\n emitOriginalInput(value)\n emitInput(isValueMustBeArray.value ? preparedValue : first)\n }\n})\n\nconst actualizeSavedOptions = (): void => {\n //Фильтруем локальные опции и оставляем только те, значения которых выбраны в селекте\n local_options.value = local_options.value.filter((lo: ISelectOption) =>\n props.modelValue?.constructor === Array\n ? props.modelValue.map((v) => String(v)).includes(String(lo[props.valueField]))\n : String(lo[props.valueField]) === String(props.modelValue)\n )\n\n //Делаем Юник, что бы опции не повторялись\n local_options.value = local_options.value.filter(\n (v, i, a) => a.findIndex((afi) => String(afi[props.valueField]) === String(v[props.valueField])) === i\n )\n}\n\nconst handleTag = (value: string): void => {\n const preparedValue = { [props.titleField]: value, [props.valueField]: value }\n local_options.value.push(preparedValue)\n\n computedModelValue.value = isValueMustBeArray.value ? [...computedModelValue.value, preparedValue] : preparedValue\n /**\n * Событие по добавлению\n * тега в опции (по Enter)\n */\n emit('tag', value)\n}\n\nconst handleSearchChange = (value: string): void => {\n searchValue.value = value\n /**\n * Событие по вводу данных в инпут\n */\n emit('search-change', value)\n}\n\nconst emitInput = (value: number[] | string[] | number | string): void => {\n fieldErrors.toggleErrorVisible()\n /**\n * Событие инпута (выбранное значение)\n */\n emit('update:modelValue', value)\n}\nconst emitOriginalInput = (value: ISelectOptions[]): void => {\n /**\n * Истинное значение инпута\n */\n emit('original-input', value)\n}\n\nconst handleOpen = (): void => {\n emit('handle-open')\n}\nconst handleClose = (): void => {\n emit('handle-close')\n}\n\nwatch(\n () => props.options,\n (val) => {\n //Пушим все входящие опции в локальные опции\n local_options.value.push(...val)\n actualizeSavedOptions()\n },\n { immediate: true }\n)\n\nwatch(\n () => props.modelValue,\n () => {\n actualizeSavedOptions()\n },\n { immediate: true, deep: true }\n)\n</script>\n\n<template>\n <div ref=\"field_select_wrapper_ref\" :dir=\"dir\" :class=\"classes\" :style=\"styles\">\n <div class=\"mc-field-select__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"header\">\n <mc-title v-if=\"hasTitle\" max-width=\"100%\" :weight=\"Weights.Medium\">\n {{ computedTitle }}\n </mc-title>\n </slot>\n </div>\n <div class=\"mc-field-select__main\">\n <multi-select\n ref=\"field_select_ref\"\n v-model=\"computedModelValue\"\n v-bind=\"tagBind\"\n @tag=\"handleTag\"\n @search-change=\"handleSearchChange\"\n @open=\"handleOpen\"\n @close=\"handleClose\"\n >\n <template #singleLabel=\"{ option }\">\n <mc-preview v-if=\"props.optionWithPreview\" class=\"option__desc\" :size=\"PreviewSizes.L\">\n <template v-if=\"!!option.icon\" #left>\n <mc-svg-icon :name=\"option.icon\" size=\"400\" />\n </template>\n <template #top>\n <mc-title :weight=\"Weights.SemiBold\" :html-data=\"option[props.titleField]\" />\n </template>\n <!-- Слот для замены стандартной стрелки при выведенном превью -->\n <template #right>\n <!-- @slot -->\n <slot name=\"arrow\" />\n </template>\n <template v-if=\"!!option.text\" #bottom>\n <mc-title color=\"gray\">{{ option.text }}</mc-title>\n </template>\n </mc-preview>\n <div v-else class=\"mc-field-select__single-label\">\n <div v-if=\"hasPrepend\" class=\"mc-field-select__prepend\">\n <mc-avatar v-if=\"avatar\" :src=\"avatar\" />\n <mc-svg-icon v-else :name=\"props.icon\" />\n </div>\n <div\n class=\"mc-field-select__label-text\"\n :class=\"hasPrepend ? 'mc-field-select__label-text--indent-left' : ''\"\n >\n {{ option ? option[props.titleField] : placeholder }}\n </div>\n </div>\n </template>\n\n <template v-if=\"optionsTooltip || props.optionWithPreview\" #option=\"{ option }\">\n <mc-preview v-if=\"props.optionWithPreview\" class=\"option__desc\" :size=\"PreviewSizes.L\">\n <template v-if=\"!!option.icon\" #left>\n <mc-svg-icon :name=\"option.icon\" size=\"400\" />\n </template>\n <template #top>\n <mc-title :weight=\"Weights.SemiBold\" :html-data=\"option[props.titleField]\" />\n </template>\n <template v-if=\"!!option.text\" #bottom>\n <mc-title color=\"gray\">{{ option.text }}</mc-title>\n </template>\n </mc-preview>\n <mc-tooltip\n v-else\n class=\"mc-field-select__options-tooltip-target\"\n max-width=\"m\"\n color=\"black\"\n :placement=\"TooltipPositions.Top\"\n :content=\"option[props.titleField]\"\n >\n <span>{{ option[props.titleField] }}</span>\n </mc-tooltip>\n </template>\n <template #noResult>\n <!-- @slot Слот для текста, если ничего не найдено -->\n <slot name=\"noResult\">\n <span>{{ props.noResultsText }}</span>\n </slot>\n </template>\n </multi-select>\n </div>\n <div v-if=\"fieldErrors.errorText.value || props.helpText || $slots.footer\" class=\"mc-field-select__footer\">\n <mc-title\n v-if=\"fieldErrors.errorText.value\"\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n max-width=\"100%\"\n >\n {{ fieldErrors.errorText.value }}\n </mc-title>\n <br v-if=\"fieldErrors.errorText.value\" />\n <!-- @slot Слот доп. текста под инпутом -->\n <slot name=\"footer\">\n <mc-title\n v-if=\"props.helpText\"\n tag-name=\"div\"\n :variation=\"TitleVariations.Overline\"\n color=\"gray\"\n max-width=\"100%\"\n >\n {{ props.helpText }}\n </mc-title>\n </slot>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use 'vue-multiselect/dist/vue-multiselect.css' as *;\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/box-shadows' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-field-select {\n $block-name: &;\n --mc-field-select-color: initial;\n --mc-field-select-label-color: #{$color-black};\n --mc-field-select-border-color: initial;\n --mc-field-select-max-height: initial;\n --mc-field-select-placeholder-color: #{$color-gray};\n font-family: $font-family-main;\n @include custom-scroll($space-100);\n &__header {\n @include reset-text-indents();\n display: block;\n margin-bottom: $space-100;\n\n &:empty {\n display: none;\n }\n }\n &__footer {\n margin-top: $space-50;\n line-height: $line-height-150;\n &:empty {\n display: none;\n }\n }\n &__single-label {\n @include reset-text-indents();\n position: relative;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n @include child-indent-right($space-50);\n }\n &__prepend {\n position: absolute;\n }\n &__label-text {\n @include ellipsis();\n font-size: $font-size-200;\n line-height: $line-height-200;\n padding-inline-start: $space-50;\n color: var(--mc-field-select-label-color);\n &--indent-left {\n margin-inline-start: $space-300;\n }\n }\n .multiselect {\n &__placeholder {\n @include ellipsis();\n color: var(--mc-field-select-placeholder-color);\n font-size: $font-size-200;\n line-height: $line-height-200;\n margin-bottom: $space-150 - 1px;\n padding-top: $space-150 - 1px;\n padding-inline-start: $space-50;\n width: 100%;\n }\n &__single {\n font-size: $font-size-200;\n line-height: $line-height-200;\n padding-inline-start: $space-50;\n margin-bottom: $space-150 - 1px;\n margin-top: $space-150 - 1px;\n background-color: transparent;\n min-height: auto;\n @include input-placeholder() {\n color: $color-gray;\n }\n }\n &__input {\n padding-inline-start: $space-50;\n margin-bottom: $space-150 - 2px;\n padding-top: $space-150 - 1px;\n font-size: $font-size-200;\n line-height: $line-height-200;\n min-height: auto;\n background-color: $color-transparent;\n @include input-placeholder() {\n color: $color-gray;\n }\n }\n &__select {\n overflow: hidden;\n height: $space-350;\n width: $space-300;\n inset-inline-end: $space-100;\n top: 6px;\n padding: 0;\n z-index: 1;\n &::before {\n direction: ltr;\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-top: 5px solid var(--mc-field-select-label-color);\n }\n }\n &__tags {\n @include reset-text-indents();\n position: relative;\n border: 1px solid $color-outline-gray;\n border-radius: $radius-100 !important;\n padding: 0;\n padding-inline: $space-100 $space-500;\n overflow: hidden;\n text-align: start;\n &:hover {\n border-color: $color-purple;\n }\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n @include size(100%);\n background-color: var(--mc-field-select-color);\n opacity: 0.6;\n }\n }\n &__tags-wrap {\n position: relative;\n padding-top: 4px;\n padding-bottom: 3px;\n top: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: -1px;\n min-height: $size-500 - 2px;\n @include child-indent-right($space-100);\n }\n &__tag {\n display: inline-flex;\n align-items: center;\n height: $size-300;\n font-family: $font-family-main;\n margin-top: $space-50;\n margin-bottom: $space-50;\n margin-right: unset;\n background-color: $color-lighter-purple;\n color: $color-black;\n padding: $size-50 $size-50 $size-50 $size-100;\n border-radius: 100px;\n font-size: $font-size-200;\n line-height: $line-height-200;\n span {\n @include ellipsis();\n flex: 1 1 auto;\n //overflow: visible;\n }\n }\n &__tag-icon {\n @include size($size-200);\n position: relative;\n background-color: $color-purple;\n border-radius: $radius-circle;\n flex: 0 0 auto;\n margin-inline-start: $space-100;\n &:hover {\n background-color: $color-red;\n }\n &::after {\n @include align(true, true, absolute);\n top: 45%;\n color: $color-white;\n }\n }\n &__content {\n padding: $size-100;\n max-width: 100%;\n font-size: $font-size-200;\n line-height: $line-height-200;\n }\n &__content-wrapper {\n top: calc(100% + #{$size-100});\n border: none;\n border-radius: $radius-150;\n box-shadow: $shadow-s;\n transition: opacity $duration-s ease;\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 300px;\n }\n &--above {\n .multiselect__content-wrapper {\n bottom: calc(100% + #{$size-100});\n top: auto;\n }\n }\n &__option {\n min-height: $size-500;\n display: flex;\n align-items: center;\n border-radius: $radius-100;\n padding: $space-150;\n span {\n @include ellipsis();\n }\n &--highlight {\n background-color: $color-hover-gray;\n color: $color-black;\n }\n &--selected {\n background-color: $color-lighter-purple !important;\n color: $color-black !important;\n font-weight: $font-weight-medium;\n }\n &--group.multiselect__option--disabled {\n background-color: $color-white !important;\n }\n }\n\n &--active {\n .multiselect {\n &__tags {\n border-color: var(--mc-field-select-border-color);\n &:before {\n background-color: $color-transparent;\n }\n }\n &__select {\n &::before {\n border-color: $color-purple $color-transparent $color-transparent;\n }\n }\n }\n }\n &__spinner {\n &:after,\n &:before {\n border-top-color: $color-purple;\n @include size($space-300);\n top: calc(50% - 8px);\n left: calc(50% - 3px);\n }\n }\n }\n\n &--error {\n .multiselect {\n &__tags {\n border-color: $color-red !important;\n }\n }\n }\n\n &--is-empty-options-list {\n .multiselect {\n &__content-wrapper {\n display: none !important;\n }\n }\n }\n\n &--disabled {\n cursor: not-allowed;\n .multiselect--disabled {\n opacity: 1;\n background: transparent;\n .multiselect {\n &__placeholder {\n color: $color-gray;\n }\n &__single {\n & #{$block-name}__label-text {\n color: $color-gray;\n }\n }\n &__select {\n background-color: transparent;\n &::before {\n border-color: $color-outline-gray transparent transparent;\n }\n }\n }\n }\n }\n\n &--with-preview {\n .mc-preview {\n align-items: center;\n }\n .multiselect {\n &__select {\n display: none;\n }\n &__tags {\n padding: 0;\n padding-inline: $space-100;\n cursor: pointer;\n border-color: $color-outline-light;\n }\n }\n }\n\n &--max-height {\n .multiselect {\n &__tags {\n max-height: var(--mc-field-select-max-height);\n overflow-y: auto;\n position: initial;\n }\n &__spinner {\n background: transparent;\n right: calc(#{$space-50} / 2);\n top: calc(#{$space-50} / 2);\n }\n }\n }\n\n &__options-tooltip-target {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &--rtl {\n direction: rtl;\n }\n}\n</style>\n","var props = {\n // common\n mask: undefined,\n prepare: Function,\n prepareChar: Function,\n validate: Function,\n commit: Function,\n overwrite: {\n type: Boolean,\n required: false,\n default: undefined\n },\n eager: {\n required: false,\n default: undefined,\n validator: value => ['append', 'remove'].includes(value) || typeof value === 'boolean'\n },\n skipInvalid: {\n type: Boolean,\n required: false,\n default: undefined\n },\n // pattern\n placeholderChar: String,\n displayChar: String,\n lazy: {\n type: Boolean,\n required: false,\n default: undefined\n },\n definitions: Object,\n blocks: Object,\n // enum\n enum: Array,\n // range\n maxLength: Number,\n from: Number,\n to: Number,\n // date\n pattern: String,\n format: Function,\n parse: Function,\n autofix: {\n required: false,\n default: undefined,\n validator: value => value === 'pad' || typeof value === 'boolean'\n },\n // number\n radix: String,\n thousandsSeparator: String,\n mapToRadix: Array,\n scale: Number,\n normalizeZeros: {\n type: Boolean,\n required: false,\n default: undefined\n },\n padFractionalZeros: {\n type: Boolean,\n required: false,\n default: undefined\n },\n min: [Number, Date],\n max: [Number, Date],\n // dynamic\n dispatch: Function\n};\n\nexport { props as default };\n","import { isRef, ref, watch, onMounted, onUnmounted, readonly } from 'vue-demi';\nimport IMask from 'imask/esm/imask';\n\nfunction useIMask(props, _temp) {\n let {\n emit,\n onAccept,\n onComplete,\n defaultValue,\n defaultUnmaskedValue,\n defaultTypedValue\n } = _temp === void 0 ? {} : _temp;\n const _props = isRef(props) ? props : ref(props);\n const el = ref();\n const mask = ref();\n const masked = ref('');\n const unmasked = ref('');\n const typed = ref();\n let $el;\n let $lastAcceptedValue = masked.value;\n let $lastAcceptedUnmaskedValue = unmasked.value;\n let $lastAcceptedTypedValue = typed.value;\n function storeLastAcceptedValues() {\n $lastAcceptedTypedValue = typed.value = mask.value.typedValue;\n $lastAcceptedUnmaskedValue = unmasked.value = mask.value.unmaskedValue;\n $lastAcceptedValue = masked.value = mask.value.value;\n }\n function _onAccept(event) {\n storeLastAcceptedValues();\n if (emit) {\n emit('accept', masked.value, event);\n emit('accept:masked', masked.value, event);\n emit('accept:typed', typed.value, event);\n emit('accept:unmasked', unmasked.value, event);\n }\n onAccept == null || onAccept(event);\n }\n function _onComplete(event) {\n if (emit) {\n emit('complete', mask.value.value, event);\n emit('complete:masked', mask.value.value, event);\n emit('complete:typed', mask.value.typedValue, event);\n emit('complete:unmasked', mask.value.unmaskedValue, event);\n }\n onComplete == null || onComplete(event);\n }\n const updateUnmaskedValue = () => {\n if (!mask.value || unmasked.value === undefined) return;\n if ($lastAcceptedUnmaskedValue !== unmasked.value) {\n mask.value.unmaskedValue = unmasked.value;\n if (mask.value.unmaskedValue !== unmasked.value) _onAccept();\n }\n $lastAcceptedUnmaskedValue = undefined;\n };\n watch(unmasked, updateUnmaskedValue);\n const updateMaskedValue = () => {\n if (!mask.value || masked.value === undefined) return;\n if ($lastAcceptedValue !== masked.value) {\n mask.value.value = masked.value;\n if (mask.value.value !== masked.value) _onAccept();\n }\n $lastAcceptedValue = undefined;\n };\n watch(masked, updateMaskedValue);\n const updateTypedValue = () => {\n if (!mask.value || typed.value === undefined) return;\n if ($lastAcceptedTypedValue !== typed.value) {\n mask.value.typedValue = typed.value;\n if (!mask.value.masked.typedValueEquals(typed.value)) _onAccept();\n }\n $lastAcceptedTypedValue = undefined;\n };\n watch(typed, updateTypedValue);\n function _initMask() {\n $el = el.value;\n const $props = _props.value;\n if (!$el || !($props != null && $props.mask)) return;\n mask.value = IMask($el, $props);\n if (defaultValue !== undefined) masked.value = defaultValue;\n if (defaultUnmaskedValue !== undefined) unmasked.value = defaultUnmaskedValue;\n if (defaultTypedValue !== undefined) typed.value = defaultTypedValue;\n updateUnmaskedValue();\n updateMaskedValue();\n updateTypedValue();\n storeLastAcceptedValues();\n mask.value.on('accept', _onAccept).on('complete', _onComplete);\n }\n function _destroyMask() {\n var _mask$value;\n (_mask$value = mask.value) == null || _mask$value.destroy();\n mask.value = undefined;\n }\n onMounted(_initMask);\n onUnmounted(_destroyMask);\n watch([el, _props], () => {\n const $newEl = el.value;\n const $props = _props.value;\n if (!($props != null && $props.mask) || $newEl !== $el) _destroyMask();\n if ($newEl) {\n if (!mask.value) {\n _initMask();\n } else {\n mask.value.updateOptions($props);\n }\n }\n });\n return {\n el,\n mask: readonly(mask),\n masked,\n unmasked,\n typed\n };\n}\n\nexport { useIMask as default };\n","function extractOptionsFromProps(props, exclude) {\n props = {\n ...props\n };\n\n // keep only defined props\n Object.keys(props).forEach(prop => {\n if (props[prop] === undefined || exclude.includes(prop)) delete props[prop];\n });\n return props;\n}\n\nexport { extractOptionsFromProps };\n","import { defineComponent, toRef, watch, h } from 'vue-demi';\nimport props from './props.js';\nimport useIMask from './composable.js';\nimport { extractOptionsFromProps } from './utils.js';\nimport 'imask/esm/imask';\n\n// order does matter = priority\nconst VALUE_PROPS = ['typed', 'unmasked', 'value', 'modelValue'];\nvar Component3 = defineComponent({\n name: 'imask-input',\n inheritAttrs: false,\n props: {\n // plugin\n modelValue: String,\n value: String,\n unmasked: String,\n typed: {\n validator: () => true\n },\n ...props\n },\n emits: ['update:modelValue', 'update:masked', 'update:value', 'update:unmasked', 'update:typed', 'accept', 'accept:value', 'accept:masked', 'accept:unmasked', 'accept:typed', 'complete', 'complete:value', 'complete:masked', 'complete:unmasked', 'complete:typed'],\n setup(props, _ref) {\n let {\n attrs,\n emit\n } = _ref;\n const {\n el,\n mask,\n masked,\n unmasked,\n typed\n } = useIMask(extractOptionsFromProps(props, VALUE_PROPS), {\n emit,\n onAccept: event => {\n // emit more events\n const v = masked.value;\n emit('accept:value', v, event);\n emit('update:value', v, event);\n emit('update:masked', v, event);\n emit('update:modelValue', v, event);\n emit('update:unmasked', unmasked.value, event);\n emit('update:typed', typed.value, event);\n },\n onComplete: event => {\n emit('complete:value', masked.value, event);\n }\n });\n const pvalue = toRef(props, 'value');\n const pmodelValue = toRef(props, 'modelValue');\n const punmasked = toRef(props, 'unmasked');\n const ptyped = toRef(props, 'typed');\n masked.value = pmodelValue.value || pvalue.value || '';\n unmasked.value = punmasked.value || '';\n typed.value = ptyped.value;\n watch(pvalue, v => masked.value = v);\n watch(pmodelValue, v => masked.value = v);\n watch(punmasked, v => unmasked.value = v);\n watch(ptyped, v => typed.value = v);\n return () => {\n // TODO type?\n const data = {\n ...attrs,\n value: props.value != null ? props.value : props.modelValue != null ? props.modelValue : mask.value ? mask.value.displayValue : '',\n ref: el\n };\n if (!props.mask) {\n data.onInput = event => {\n emit('update:modelValue', event.target.value);\n emit('update:value', event.target.value);\n };\n }\n return h('input', data);\n };\n }\n});\n\nexport { Component3 as default };\n","import { Vue2 } from 'vue-demi';\nimport IMask from 'imask/esm/imask';\nimport props from './props.js';\nimport { extractOptionsFromProps } from './utils.js';\n\nvar Component2 = Vue2 == null ? void 0 : Vue2.extend({\n name: 'imask-input',\n data() {\n return {};\n },\n render(createElement) {\n const data = {\n domProps: {\n value: this.maskRef ? this.maskRef.value : this.value\n },\n on: {\n ...this.$listeners\n }\n };\n\n // if there is no mask use default input event\n if (!this.$props.mask) {\n data.on.input = event => this.$emit('input', event.target.value);\n } else {\n delete data.on.input;\n }\n return createElement('input', data);\n },\n mounted() {\n if (!this.$props.mask) return;\n this._initMask();\n },\n destroyed() {\n this._destroyMask();\n },\n computed: {\n maskOptions() {\n return extractOptionsFromProps(this.$props, ['value', 'unmask']);\n }\n },\n watch: {\n '$props': {\n handler(props) {\n const maskOptions = this.maskOptions;\n if (maskOptions.mask) {\n if (this.maskRef) {\n this.maskRef.updateOptions(maskOptions);\n if ('value' in props) this._updateValue();\n } else {\n this._initMask(maskOptions);\n if (props.value !== this._maskValue()) this._onAccept();\n }\n } else {\n this._destroyMask();\n if ('value' in props) this.$el.value = props.value;\n }\n },\n deep: true\n }\n },\n methods: {\n _maskValue() {\n var _this$maskRef, _this$maskRef2, _this$maskRef3;\n if (this.unmask === 'typed') return (_this$maskRef = this.maskRef) == null ? void 0 : _this$maskRef.typedValue;\n if (this.unmask) return (_this$maskRef2 = this.maskRef) == null ? void 0 : _this$maskRef2.unmaskedValue;\n return (_this$maskRef3 = this.maskRef) == null ? void 0 : _this$maskRef3.value;\n },\n _updateValue() {\n if (!this.maskRef) return;\n const value = this.value == null && this.unmask !== 'typed' ? '' : this.value;\n if (this.unmask === 'typed') this.maskRef.typedValue = value;else if (this.unmask) this.maskRef.unmaskedValue = value;else this.maskRef.value = value;\n },\n _onAccept() {\n const val = this._maskValue();\n this.$emit('input', val);\n this.$emit('accept', val);\n },\n _onComplete() {\n this.$emit('complete', this._maskValue());\n },\n _initMask(maskOptions) {\n if (!maskOptions) maskOptions = this.maskOptions;\n this.maskRef = IMask(this.$el, maskOptions).on('accept', this._onAccept.bind(this)).on('complete', this._onComplete.bind(this));\n this._updateValue();\n },\n _destroyMask() {\n if (this.maskRef) {\n this.maskRef.destroy();\n delete this.maskRef;\n }\n }\n },\n props: {\n value: {},\n unmask: {\n validator: value => value === 'typed' || typeof value === 'boolean'\n },\n ...props\n }\n});\n\nexport { Component2 as default };\n","import { isVue3 } from 'vue-demi';\nimport Component3 from './component3-composition.js';\nimport Component2 from './component2.js';\nimport './props.js';\nimport './composable.js';\nimport 'imask/esm/imask';\nimport './utils.js';\n\nvar component = isVue3 ? Component3 : Component2;\n\nexport { component as default };\n","<script setup lang=\"ts\">\nimport { IMaskComponent, IMask } from 'vue-imask'\nimport { McTitle, McButton, McSvgIcon, McTooltip } from '@/components'\nimport { Spaces } from '@/types/styles/Spaces'\nimport { computed, onMounted, type PropType, ref, useAttrs, useSlots } from 'vue'\nimport type { DirectionsUnion } from '@/types/IDirections'\nimport { Directions } from '@/enums/ui/Directions'\nimport type { InputTypesUnion, InputValue } from '@/types/IInput'\nimport { useFieldErrors } from '@/composables'\nimport { InputTypes, Autocomplete } from '@/enums/Input'\nimport type { IconsListUnion } from '@/types/styles/Icons'\nimport { type ColorTypes } from '@/types/styles/Colors'\nimport { useTextareaAutosize } from '@vueuse/core'\nimport { ButtonSize, ButtonType, HorizontalAlignment, TitleVariations, Weights } from '@/enums'\n\nconst { textarea } = useTextareaAutosize()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n (e: 'keydown', value: KeyboardEvent): void\n (e: 'copy', value: string): void\n}>()\nconst slots = useSlots()\nconst attrs = useAttrs()\nconst props = defineProps({\n /**\n * Значение\n *\n */\n modelValue: {\n type: [String, Number] as PropType<InputValue>,\n default: null\n },\n /**\n * Тип:\n * `textarea, textarea-autosize и\n * нативные как text, password, email и т.д.`\n *\n * кастомный num - разрешает ввод только цифр и дробных чисел, без ислчений ввиде буквы 'E'\n * кастомный int - разрешает ввод только целочисленных значений\n * кастомный amount_format - форматирует ввод числовых данных разделяя на разряды(1 000 000)\n * date - добавляет placeholder, маску и ограничения ввода\n * uppercase\\lowercase - форматирует текст согласну значению (верхний\\нижний регистр)\n * phone_number - добавляет '+' к номеру телефона при фокусе без возможности удалить его\n */\n type: {\n type: String as () => InputTypesUnion,\n default: InputTypes.Text\n },\n\n /**\n * Заголовок поля:\n *\n */\n title: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Маска поля:\n *\n * tokens - https://imask.js.org/guide.html\n *\n */\n mask: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Вспомогательный текст под инпутом:\n *\n */\n helpText: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Отключенное состояние\n *\n */\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n\n /**\n * Ошибки\n *\n */\n errors: {\n type: Array as PropType<string[]>,\n default: null\n },\n\n /**\n * Placeholder\n *\n */\n placeholder: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Name\n *\n */\n name: {\n type: String as PropType<string>,\n required: true\n },\n /**\n * плейсхолдеры для короткого обозначения даты (для маски dd.mm.yyyy)\n * {\n * date: 'd',\n * month: 'm',\n * year: 'y',\n * }\n *\n */\n dateMaskPlaceholder: {\n type: Object,\n default: () => ({})\n },\n /**\n * Максимальная длина строки в инпуте\n *\n */\n maxLength: {\n type: Number as PropType<number>,\n default: null\n },\n\n /**\n * Состояние копирования\n *\n */\n copy: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n\n /**\n * Автокомплит введённого ранее текста: on, off\n *\n */\n autocomplete: {\n type: String as () => Autocomplete,\n default: Autocomplete.On\n },\n\n /**\n * только чтение текста\n *\n */\n readOnly: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n\n /**\n * Атрибут tabindex для главного элемента\n *\n */\n tabindex: {\n type: [String, Number]\n },\n\n /**\n * Tooltip для кнопка \"показать пароль\"\n *\n */\n passwordTooltip: {\n type: String as PropType<string>,\n default: 'Show/Hide'\n },\n\n /**\n * Tooltip для кнопка \"Скрыть пароль\", если не указывать, то будет аналогичен \"показать\"\n *\n */\n passwordHideTooltip: {\n type: String as PropType<string>,\n default: null\n },\n\n /**\n * Очищаем данные от маски на выходе\n */\n clearOutput: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n\n /**\n * Кастомные настройки для маски\n * См. https://imask.js.org/guide.html\n *\n * Например:\n * {\n * autofix: true,\n * blocks: {\n * d: {mask: IMask.MaskedRange, placeholderChar: 'd', from: 1, to: 31, maxLength: 2},\n * m: {mask: IMask.MaskedRange, placeholderChar: 'm', from: 1, to: 12, maxLength: 2},\n * Y: {mask: IMask.MaskedRange, placeholderChar: 'y', from: 1900, to: 2999, maxLength: 4}\n * }\n * }\n */\n maskOptions: {\n type: Object,\n default: null\n },\n required: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Для какого языка поле ввода\n */\n locale: {\n type: String as PropType<string>,\n default: null\n },\n /**\n * Мобильное ли разрешение\n * (Используется для триггера тултипа в кнопке с паролем)\n */\n isMobile: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Свойство на ограничение количества символов после точки для числовых типов (num || amount_format)\n */\n maxDecimals: {\n type: Number as PropType<number>,\n default: 2\n },\n dir: {\n type: String as () => DirectionsUnion,\n default: Directions.Ltr\n }\n})\n\nconst prependWidth = ref<number>(0)\nconst appendWidth = ref<number>(0)\nconst prettyType = ref<string>(props.type)\nconst fieldErrors = useFieldErrors(props.errors)\n\nconst isRtl = computed((): boolean => {\n return props.dir === Directions.Rtl\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-field-text': true,\n 'mc-field-text--error': !!fieldErrors.errorText.value,\n 'mc-field-text--textarea': isTextarea.value,\n 'mc-field-text--textarea-autosize': isTextareaAutosize.value,\n 'mc-field-text--disabled': props.disabled,\n 'mc-field-text--copy': props.copy,\n 'mc-field-text--rtl': isRtl.value\n }\n})\nconst computedTitle = computed((): string => {\n return `${props.title}${props.required ? ' *' : ''}`\n})\nconst isDate = computed((): boolean => {\n return prettyType.value === InputTypes.Date\n})\nconst isMaskVisible = computed((): boolean => {\n return !!props.mask || !!props.maskOptions || isDate.value\n})\nconst isTextarea = computed((): boolean => {\n return props.type === InputTypes.Textarea\n})\nconst isTextareaAutosize = computed((): boolean => {\n return props.type === InputTypes.TextareaAutosize\n})\nconst isPassword = computed((): boolean => {\n return props.type === InputTypes.Password\n})\nconst isAmountFormat = computed((): boolean => {\n return props.type === InputTypes.AmountFormat\n})\nconst hasCharCounter = computed((): boolean => {\n return !!props.maxLength && (isTextarea.value || isTextareaAutosize.value)\n})\nconst isPasswordType = computed((): boolean => {\n return prettyType.value === InputTypes.Password\n})\nconst passwordIcon = computed((): IconsListUnion => {\n return isPasswordType.value ? 'visibility' : 'visibility_off'\n})\nconst charCounter = computed((): string | number => {\n return props.modelValue ? String(props.modelValue).length : 0\n})\nconst charCounterTitle = computed((): string => {\n return `${charCounter.value}/${props.maxLength}`\n})\nconst charCounterColor = computed((): ColorTypes => {\n return props.maxLength < +charCounter.value ? 'red' : 'dark-gray'\n})\nconst dateMask = computed((): object => {\n return {\n mask: Date,\n autofix: true,\n blocks: {\n d: {\n mask: IMask.MaskedRange,\n placeholderChar: props.dateMaskPlaceholder.date || 'd',\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: IMask.MaskedRange,\n placeholderChar: props.dateMaskPlaceholder.month || 'm',\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: IMask.MaskedRange,\n placeholderChar: props.dateMaskPlaceholder.year || 'y',\n from: 1900,\n to: 2999,\n maxLength: 4\n }\n }\n }\n})\nconst maskInputAttrs = computed((): object => {\n return {\n ...inputAttrs.value,\n mask: props.mask,\n lazy: false,\n overwrite: false,\n unmask: props.clearOutput,\n definitions: {\n '#': /./\n },\n readonly: props.readOnly,\n maxlength: props.maxLength,\n type: 'tel',\n ...attrs,\n ...(props.maskOptions ?? {}),\n ...(isDate.value ? dateMask.value : {})\n }\n})\n\nconst computedValue = computed({\n get() {\n if (isAmountFormat.value && !isRtl.value) {\n return getAmountFormat(String(props.modelValue))\n } else return props.modelValue\n },\n set(value: string) {\n fieldErrors.toggleErrorVisible()\n emit('update:modelValue', value)\n }\n})\n\nconst handleInput = (e: Event): void => {\n computedValue.value = getPreparedInputValue(e) as string\n}\nconst inputAttrs = computed((): object => {\n return {\n style: inputStyles.value,\n placeholder: props.placeholder,\n disabled: props.disabled,\n name: props.name,\n id: props.name,\n autocomplete: props.autocomplete,\n tabindex: props.tabindex,\n ...attrs,\n class: ['mc-field-text__input', attrs.class || ''].join(' ')\n }\n})\nconst inputStyles = computed((): object => {\n const space = parseInt(Spaces['150'])\n let bottomStyle = {}\n if (isTextarea.value || isTextareaAutosize.value) {\n const spaceBottomToken = hasCharCounter.value ? '400' : '150'\n const spaceBottomValue = Spaces[spaceBottomToken]\n bottomStyle = { paddingBottom: `${+spaceBottomValue.replace('px', '') - 1}px` }\n }\n return {\n paddingInlineStart: prependWidth.value && `${prependWidth.value + space}px`,\n paddingInlineEnd: appendWidth.value && `${appendWidth.value + space}px`,\n ...(!isTextarea.value && !isTextareaAutosize.value ? { boxSizing: 'border-box' } : {}),\n ...bottomStyle\n }\n})\n\nonMounted(() => {\n calculatePadding()\n})\n\nconst setDecimalsLimit = (val: string): string => {\n if (val && props.maxDecimals) {\n const [integerPart, decimalPart] = val.split('.')\n if (decimalPart?.length > props.maxDecimals) {\n return `${integerPart}.${decimalPart.slice(0, props.maxDecimals)}`\n }\n }\n return val\n}\n/**\n * Remove leading zero from input if length > 1 && number isn't decimal\n * */\nconst removeLeadingZero = (val: string): string => {\n let result = val\n const [first_char] = val || []\n if (val.length > 1 && +first_char === 0 && val.indexOf('.') === -1) result = val.slice(1)\n return result\n}\nconst getPreparedInputValue = (e: Event): InputValue => {\n const target = e.target as HTMLInputElement\n let value: InputValue = isDate.value && target && target.value ? target.value?.substring(0, 10) : target.value\n let cursor_position: number = getCaretPos(target)?.start\n let prepared_value = formattedToNumber(value)\n\n switch (props.type) {\n case InputTypes.Num: {\n //eslint-disable-next-line\n let [num] = /-?\\d*[\\.]?\\d*/.exec(String(value)) || []\n num = setDecimalsLimit(num as string)\n num = removeLeadingZero(num)\n value = num\n target.value = num\n break\n }\n case InputTypes.Int: {\n let [int] = /-?\\d*/.exec(String(target.value)) || []\n int = removeLeadingZero(int as string)\n value = int\n target.value = int\n break\n }\n case InputTypes.AmountFormat: {\n value = setDecimalsLimit(value)\n value = removeLeadingZero(value)\n prepared_value = formattedToNumber(value)\n\n const float_value = parseFloat(prepared_value)\n const without_spaces_value = prepared_value.replace(/ /gm, '')\n\n value = prepared_value\n ? String(float_value) === without_spaces_value\n ? float_value\n : without_spaces_value || float_value || prepared_value\n : null\n const formatted_value = getAmountFormat(prepared_value)\n target.value = isRtl.value ? formatted_value.replace(/ /gm, '') : formatted_value\n const space_length = target.value?.slice(0, cursor_position).replace(/[^ ]/gm, '')?.length || 0\n setCaretPos(target, cursor_position + space_length, cursor_position + space_length)\n break\n }\n case InputTypes.Uppercase: {\n value = value?.toUpperCase()\n target.value = value\n setCaretPos(target, cursor_position, cursor_position)\n break\n }\n case InputTypes.Lowercase: {\n value = value?.toLowerCase()\n target.value = value\n setCaretPos(target, cursor_position, cursor_position)\n break\n }\n case InputTypes.Password:\n value = value?.replace(/ /gm, '')\n target.value = value\n setCaretPos(target, cursor_position, cursor_position)\n break\n case InputTypes.PhoneNumber:\n if (value.length === 0) value = '+'\n if (value.charAt(0) !== '+') value = '+' + value\n value = value.replace(/(?!^)\\D/g, '')\n target.value = value\n break\n }\n\n return value\n}\n\nconst prepareHandleKeyDown = (e: KeyboardEvent): void => {\n switch (props.type) {\n case InputTypes.AmountFormat:\n case InputTypes.Num: {\n if (e.key === '.' && typeof props.modelValue === 'string' && props.modelValue?.includes('.')) {\n e.preventDefault()\n }\n break\n }\n }\n emit('keydown', e)\n}\n\nconst formattedToNumber = (value: string): string => {\n if (!value) return value as string\n //eslint-disable-next-line\n const [first] = /-?\\d*[\\.]?\\d*/.exec(String(value)?.replace(/ /gm, '')?.trim()) || []\n\n return first as string\n}\n\nconst setCaretPos = (ctrl: HTMLInputElement, start: number, end: number): void => {\n if (ctrl.setSelectionRange) {\n ctrl.focus()\n ctrl.setSelectionRange(start, end)\n }\n}\n\nconst getCaretPos = (ctrl: HTMLInputElement) => {\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\n return { start: ctrl.selectionStart, end: ctrl.selectionEnd }\n } else {\n return { start: 0, end: 0 }\n }\n}\n\nconst getAmountFormat = (value: string): string => {\n const formatted_number = formattedToNumber(value)\n const has_fraction = !!String(formatted_number)?.match(/\\./)\n\n const [int, fraction] = String(formatted_number)\n //eslint-disable-next-line\n .replace(/[^\\d\\.-]/g, '')\n .replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, ' ')\n .split('.')\n\n const formatted_values = [int, fraction?.replace(/ /gm, '') || '']\n if (has_fraction) {\n return formatted_values.join('.')\n }\n return formatted_values.filter((v) => !!v).join('.')\n}\n\nconst calculatePadding = (): void => {\n prependWidth.value = +calculateSlotPadding('prepend')\n appendWidth.value = +calculateSlotPadding('append')\n}\n\nconst calculateSlotPadding = (name: string): string => {\n const tokenSpace = parseInt(Spaces['50'])\n\n let result = slots[name]\n ? //@ts-ignore\n (slots[name] || []).reduce((acc) => {\n return acc + tokenSpace\n }, 0) + tokenSpace\n : tokenSpace\n\n if (name === 'prepend') return result\n\n /**\n * Также увеличиваем padding при наличии кнопки копирования и если тип password\n */\n\n const iconSpace = parseInt(Spaces['300'])\n\n result = result ? result + tokenSpace : tokenSpace\n props.copy && (result += iconSpace)\n isPassword.value && (result += iconSpace)\n return result\n}\n\nconst handlerCopy = (): void => {\n /**\n * Событие по кнопке копирования\n */\n emit('copy', props.modelValue as string)\n}\n\nconst togglePasswordVisibility = (): void => {\n prettyType.value = isPasswordType.value ? InputTypes.Text : InputTypes.Password\n}\n</script>\n\n<template>\n <div ref=\"field\" :dir=\"props.dir\" :class=\"classes\">\n <label :for=\"name\" class=\"mc-field-text__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"header\">\n <mc-title v-if=\"title\" max-width=\"100%\" :weight=\"Weights.Medium\">\n {{ computedTitle }}\n </mc-title>\n </slot>\n </label>\n <div class=\"mc-field-text__inner\">\n <div class=\"mc-field-text__main\">\n <div v-if=\"$slots.prepend\" class=\"mc-field-text__prepend\">\n <!-- @slot Слот в начале инпута -->\n <slot name=\"prepend\" />\n </div>\n <label class=\"mc-field-text__input-wrapper\">\n <textarea\n v-if=\"isTextarea\"\n :value=\"computedValue\"\n v-bind=\"inputAttrs\"\n :maxlength=\"maxLength\"\n rows=\"1\"\n @input=\"handleInput\"\n />\n <textarea\n v-else-if=\"isTextareaAutosize\"\n :value=\"computedValue\"\n ref=\"textarea\"\n v-bind=\"inputAttrs\"\n @input=\"handleInput\"\n />\n <template v-else>\n <!-- When possible, prefer to use input type=\"tel\" to avoid glitch on android devices -->\n <i-mask-component\n v-if=\"isMaskVisible\"\n :value=\"computedValue\"\n v-bind=\"maskInputAttrs\"\n @input=\"handleInput\"\n />\n <input\n v-else\n :value=\"computedValue\"\n ref=\"input\"\n v-bind=\"inputAttrs\"\n :type=\"prettyType\"\n :readonly=\"props.readOnly\"\n :maxlength=\"maxLength\"\n @keydown=\"prepareHandleKeyDown\"\n @input=\"handleInput\"\n />\n </template>\n </label>\n <div\n v-if=\"$slots.append || copy || isPassword\"\n class=\"mc-field-text__append\"\n :class=\"{ 'mc-field-text__append--indent-bottom': hasCharCounter }\"\n >\n <!-- @slot Слот в конце инпута -->\n <slot name=\"append\" />\n <mc-button v-if=\"copy\" variation=\"black-link\" :size=\"ButtonSize.MCompact\" @click.prevent=\"handlerCopy\">\n <template #icon-append>\n <mc-svg-icon name=\"copy\" />\n </template>\n </mc-button>\n <mc-tooltip\n v-if=\"isPassword\"\n :content=\"isPasswordType ? props.passwordTooltip : props.passwordHideTooltip || props.passwordTooltip\"\n >\n <mc-button\n variation=\"black-link\"\n :size=\"ButtonSize.MCompact\"\n tabindex=\"-1\"\n :type=\"ButtonType.Button\"\n @click.prevent=\"togglePasswordVisibility\"\n >\n <template #icon-append>\n <mc-svg-icon :name=\"passwordIcon\" />\n </template>\n </mc-button>\n </mc-tooltip>\n </div>\n <mc-title\n v-if=\"hasCharCounter\"\n class=\"mc-field-text__char-counter\"\n :variation=\"TitleVariations.Overline\"\n :text-align=\"HorizontalAlignment.Right\"\n :color=\"charCounterColor\"\n >\n {{ charCounterTitle }}\n </mc-title>\n </div>\n <div v-if=\"$slots.right\" class=\"mc-field-text__right\">\n <!-- @slot Слот справа инпута -->\n <slot name=\"right\" />\n </div>\n </div>\n <div v-if=\"fieldErrors.errorText.value || props.helpText || $slots.footer\" class=\"mc-field-text__footer\">\n <mc-title\n v-if=\"fieldErrors.errorText.value\"\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n class=\"mc-field-text__error-text\"\n :html-data=\"fieldErrors.errorText.value\"\n />\n <br v-if=\"fieldErrors.errorText.value\" />\n <!-- @slot Слот доп. текста под инпутом -->\n <slot name=\"footer\">\n <mc-title\n v-if=\"props.helpText\"\n tag-name=\"div\"\n :variation=\"TitleVariations.Overline\"\n color=\"gray\"\n max-width=\"100%\"\n >\n {{ props.helpText }}\n </mc-title>\n </slot>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-field-text {\n $block-name: &;\n display: block;\n\n &__header {\n @include reset-text-indents();\n display: block;\n margin-bottom: $space-100;\n\n &:empty {\n display: none;\n }\n }\n\n &__inner {\n display: flex;\n align-items: center;\n }\n\n &__right {\n flex-shrink: 0;\n }\n\n &__main {\n position: relative;\n width: 100%;\n @include custom-scroll($space-50);\n }\n\n &__prepend,\n &__append {\n @include reset-text-indents();\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n\n &:empty {\n display: none;\n }\n\n @include child-indent-right($space-50);\n }\n\n &__prepend {\n inset-inline-start: 0;\n padding: $space-100 0;\n padding-inline: $space-100 $space-50;\n }\n\n &__append {\n inset-inline-end: $space-100;\n &--indent-bottom {\n padding-bottom: $space-400;\n }\n }\n\n &__char-counter {\n width: auto !important;\n position: absolute;\n inset-inline-end: $space-150;\n bottom: $space-150;\n background-color: $color-transparent;\n }\n\n &__input-wrapper {\n display: block;\n }\n\n &__input {\n font-family: $font-family-main;\n display: inline-block;\n vertical-align: middle;\n width: 100%;\n height: $size-500;\n margin: 0;\n border: 1px solid $color-outline-gray;\n border-radius: $radius-100;\n padding: $space-150 - 1px $space-150;\n line-height: $line-height-200;\n font-size: $font-size-200;\n background-color: $color-white;\n -moz-appearance: textfield;\n transition:\n background-color $duration-s ease,\n border-color $duration-s ease;\n color: $color-black;\n\n &:focus,\n &:hover {\n outline: 0;\n border-color: $color-purple;\n }\n\n &::-webkit-search-cancel-button,\n &::-webkit-search-decoration,\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n }\n\n @include input-placeholder() {\n color: $color-gray;\n }\n }\n\n &__footer {\n margin-top: $space-50;\n line-height: $line-height-150;\n\n &:empty {\n display: none;\n }\n }\n\n &--error {\n #{$block-name} {\n &__input {\n border-color: $color-red;\n }\n }\n }\n\n &--textarea {\n #{$block-name} {\n &__append,\n &__prepend {\n align-items: flex-start;\n }\n\n &__input {\n height: auto;\n min-height: 92px;\n resize: vertical;\n }\n }\n }\n\n &--textarea-autosize {\n #{$block-name} {\n &__input {\n height: auto;\n resize: vertical;\n }\n }\n }\n\n &--disabled {\n #{$block-name} {\n &__input {\n color: $color-gray;\n cursor: not-allowed;\n background-color: $color-hover-gray;\n border-color: $color-outline-gray;\n }\n }\n }\n\n &--copy {\n #{$block-name} {\n &__input {\n color: $color-dark-gray;\n background-color: $color-hover-gray;\n border-color: $color-outline-gray;\n }\n }\n }\n\n &--rtl {\n direction: rtl;\n input {\n direction: rtl;\n }\n }\n\n &__empty-tooltip {\n display: contents;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle } from '@/components'\nimport { useFieldErrors } from '@/composables'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { computed, type PropType } from 'vue'\nimport type { HorizontalAlignmentUnion } from '@/types/styles/Alignment'\nimport type { HorizontalAlignment } from '@/enums/ui/Alignment'\nimport { TitleVariations } from '@/enums'\n\nconst emit = defineEmits(['update:modelValue'])\nconst props = defineProps({\n /**\n * Значение\n *\n */\n modelValue: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: null\n },\n /**\n * Выбранное значение\n */\n checkedValue: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: true\n },\n /**\n * Невыбранное значение\n */\n uncheckedValue: {\n type: [Boolean, String, Number] as PropType<boolean | string | number>,\n default: false\n },\n /**\n * Изменение цвета текста\n * при переключении\n */\n coloredText: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Отключенное состояние\n */\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Позиция текста\n * относительно переключателя\n */\n textPosition: {\n type: String as () => HorizontalAlignmentUnion,\n default: 'left'\n },\n /**\n * Активный цвет\n */\n color: {\n type: String as () => ColorTypes,\n default: 'purple' as ColorTypes\n },\n /**\n * Ошибки\n *\n */\n errors: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n /**\n * Атрибут tabindex для главного элемента\n */\n tabindex: {\n type: [String, Number] as PropType<string | number>\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\n\nconst _value = computed((): boolean => {\n return props.modelValue === props.checkedValue\n})\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-field-toggle': true,\n 'mc-field-toggle--checked': _value.value,\n 'mc-field-toggle--disabled': props.disabled,\n 'mc-field-toggle--colored-text': props.coloredText,\n [`mc-field-toggle--text-position-${props.textPosition as HorizontalAlignment}`]: !!props.textPosition\n }\n})\n\nconst styles = computed((): { [key: string]: string | undefined } => {\n let disabledColor: ColorTypes\n let saturateValue: string = 'initial'\n switch (props.color) {\n case 'purple' as ColorTypes: {\n disabledColor = 'light-purple' as ColorTypes\n break\n }\n default: {\n disabledColor = props.color\n saturateValue = '50%'\n }\n }\n return {\n '--mc-field-toggle-color': props.color && Colors[props.color],\n '--mc-field-toggle-disabled-color': disabledColor && Colors[disabledColor],\n '--mc-field-toggle-saturate-value': saturateValue\n }\n})\nconst inputProps = computed<object>(() => {\n return {\n checked: _value.value,\n disabled: props.disabled,\n tabindex: props.tabindex,\n class: 'mc-field-toggle__field',\n type: 'checkbox'\n }\n})\n\nconst change = (e: Event): void => {\n const target = e.target as HTMLInputElement\n const checked: boolean = target.checked\n fieldErrors.toggleErrorVisible()\n /**\n * Событие тоггла\n */\n emit('update:modelValue', checked ? props.checkedValue : props.uncheckedValue)\n}\n</script>\n\n<template>\n <div class=\"mc-field-toggle__content\">\n <label :class=\"classes\" :style=\"styles\">\n <span class=\"mc-field-toggle__text\">\n <!-- @slot Слот для тайтла тогглера -->\n <slot />\n </span>\n <span class=\"mc-field-toggle__wrapper\">\n <input v-bind=\"inputProps\" @input=\"change\" />\n <span class=\"mc-field-toggle__slider\"></span>\n </span>\n </label>\n <mc-title\n v-if=\"fieldErrors.errorText.value\"\n tag-name=\"div\"\n color=\"red\"\n :variation=\"TitleVariations.Overline\"\n max-width=\"100%\"\n >\n {{ fieldErrors.errorText.value }}\n </mc-title>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-field-toggle {\n $block-name: &;\n $toggle-indent: calc(#{$space-50} / 2);\n --mc-field-toggle-disabled-color: #{$color-purple};\n font-family: $font-family-main;\n --mc-field-toggle-color: initial;\n --mc-field-disabled-color: initial;\n --mc-field-toggle-saturate-value: initial;\n display: flex;\n align-items: center;\n cursor: pointer;\n\n &__text {\n color: $color-black;\n transition: color $duration-m;\n line-height: $line-height-200;\n font-size: $font-size-200;\n margin-inline-end: $space-100;\n text-align: right;\n\n &:empty {\n margin-inline-end: 0;\n }\n }\n\n &--colored-text {\n #{$block-name}__text {\n color: $color-gray;\n }\n\n @at-root #{$block-name}--checked#{$block-name}--colored-text {\n #{$block-name}__text {\n color: $color-purple;\n }\n }\n @at-root #{$block-name}--disabled#{$block-name}--colored-text {\n #{$block-name}__text {\n color: $color-outline-gray;\n }\n }\n @at-root #{$block-name}--checked#{$block-name}--disabled#{$block-name}--colored-text {\n #{$block-name}__text {\n color: $color-light-purple;\n }\n }\n }\n\n &--text-position-right {\n #{$block-name}__text {\n order: 2;\n margin-inline: $space-100 0;\n text-align: left;\n }\n }\n &__content {\n @include child-indent-bottom($space-50);\n }\n\n &__wrapper {\n position: relative;\n display: inline-block;\n @include size($size-550, $size-250);\n flex-shrink: 0;\n & > #{$block-name}__field {\n opacity: 0;\n @include size(0);\n\n &:checked + #{$block-name}__slider {\n background-color: $color-purple;\n\n &:before {\n inset-inline-start: calc(#{$space-300} + #{$toggle-indent});\n }\n }\n }\n\n #{$block-name}__slider {\n @include position(absolute, 0 0 0 0);\n background-color: $color-gray;\n transition: $duration-m;\n border-radius: 100px;\n\n &::before {\n @include pseudo();\n @include size($size-200);\n @include position(null, null null $toggle-indent $toggle-indent);\n background-color: $color-white;\n transition: $duration-m;\n border-radius: $radius-circle;\n }\n }\n }\n\n &--disabled {\n cursor: auto;\n #{$block-name}__slider {\n background-color: $color-outline-gray !important;\n &::before {\n background-color: $color-hover-gray;\n }\n }\n }\n #{$block-name}__wrapper > #{$block-name}__field:checked + #{$block-name}__slider {\n background-color: var(--mc-field-toggle-color);\n }\n &#{$block-name}--disabled {\n &#{$block-name}--checked #{$block-name}__slider {\n background-color: var(--mc-field-toggle-disabled-color) !important;\n filter: saturate(var(--mc-field-toggle-saturate-value));\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onMounted, watch, ref, onBeforeUnmount } from 'vue'\n\nconst emit = defineEmits(['loading', 'hide'])\nconst props = defineProps({\n /**\n * За какое расстояние(px) инициировать loading event\n * **/\n overlap: {\n type: Number,\n default: 100,\n },\n /**\n * Активен ли триггер\n * */\n active: {\n type: Boolean,\n default: false,\n },\n /**\n * Компонент в котором происходит скролл, указывается для большей точности\n * Дефолтно используется область видимости браузера для отслеживания появления компопнента\n * **/\n root: {\n type: String,\n default: null,\n },\n})\nconst observer = ref<IntersectionObserver | null>()\nconst el = ref<HTMLElement | null>()\nconst id = ref<string>(`indicator_${Date.now()}`)\n\nonMounted(() => {\n setObserver()\n})\n\nonBeforeUnmount(() => {\n clearAllListeners()\n})\n\nconst setObserver = (): void => {\n el.value = document.getElementById(id.value)\n // создаем IntersectionObserver - смотрит за тем когда элемент попадает во viewport\n observer.value = new IntersectionObserver(\n ([entry]) => {\n // если попадает во viewport делаем $emit\n if ((entry.intersectionRatio === 1 || entry.isIntersecting) && props.active) {\n return emit('loading')\n } else {\n return emit('hide')\n }\n },\n {\n ...(props.root ? { root: el.value?.closest(props.root) } : {}),\n rootMargin: `${props.overlap}px`,\n threshold: 0.1,\n },\n )\n // назначаем слушателя на observer\n el.value && observer.value.observe(el.value)\n}\n\nconst clearAllListeners = (): void => {\n observer.value && observer.value.disconnect()\n observer.value = null\n}\n\nwatch(() => props.active, (value): void => {\n clearAllListeners()\n if (value) {\n setObserver()\n }\n})\n</script>\n\n<template>\n <section class=\"el-infinity-loading__wrapper\">\n <div :id=\"id\" class=\"el-infinity-loading\"></div>\n </section>\n</template>\n\n<style lang=\"scss\">\n.el-infinity-loading {\n $block-name: &;\n height: 1px;\n width: 100%;\n z-index: 999999;\n user-select: none;\n pointer-events: none;\n background-color: transparent;\n &__wrapper {\n position: relative;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McSvgIcon, McButton } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport { HorizontalAlignment, TitleVariations, Weights } from '@/enums'\nimport type { IconsListUnion } from '@/types'\n\nimport { default as noTableDataImg } from '@/assets/img/no_table_data.png'\n\nconst emit = defineEmits<{\n (e: 'click'): void\n}>()\n\nconst props = defineProps({\n img: {\n type: String as PropType<string>,\n default: noTableDataImg\n },\n icon: {\n type: String as () => IconsListUnion,\n default: null\n },\n title: {\n type: String as PropType<string>,\n default: ''\n },\n text: {\n type: String as PropType<string>,\n default: ''\n },\n href: {\n type: String as PropType<string>,\n default: ''\n },\n btnName: {\n type: String as PropType<string>,\n default: ''\n },\n noAction: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n loading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Вариант блока\n * small - стандартный, небольшие отступы\n * large - большие отступы (напр. для табов в админке) + немного меняются дефолтные шрифты тайтла\n * */\n variation: {\n type: String as PropType<'small' | 'large'>,\n default: 'small'\n }\n})\n\nconst btnAttrs = computed((): { [key: string]: boolean | string } => {\n return {\n class: 'mt-200',\n loading: props.loading,\n ...(props.href ? { href: props.href } : {})\n }\n})\n\nconst btnListeners = computed((): { [key: string]: Function } => {\n return !props.href\n ? {\n click: () => handleClick()\n }\n : {}\n})\n\nconst titleExtraProps = computed((): { [key: string]: string } => {\n return props.variation === 'large'\n ? {\n variation: TitleVariations.Subtitle,\n weight: Weights.SemiBold\n }\n : {}\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-no-data': true,\n [`mc-no-data--variation-${props.variation}`]: !!props.variation\n }\n})\n\nconst handleClick = (): void => {\n emit('click')\n}\n</script>\n\n<template>\n <div class=\"mc-no-data__wrapper\">\n <section :class=\"classes\">\n <mc-svg-icon v-if=\"props.icon\" :weight=\"0.5\" :name=\"props.icon\" size=\"1000\" color=\"outline-gray\" />\n <img v-if=\"props.img\" :src=\"props.img\" alt=\"no_entity\" />\n <slot v-if=\"title || $slots.title\" name=\"title\">\n <mc-title\n v-if=\"props.title\"\n v-bind=\"titleExtraProps\"\n color=\"gray\"\n :text-align=\"HorizontalAlignment.Center\"\n :html-data=\"props.title\"\n />\n </slot>\n <div v-if=\"text || $slots.text\" class=\"mc-no-data__text\">\n <slot name=\"text\">\n <mc-title\n color=\"gray\"\n :variation=\"TitleVariations.Article\"\n :text-align=\"HorizontalAlignment.Center\"\n :html-data=\"text\"\n />\n </slot>\n </div>\n <div v-if=\"(btnName && !noAction) || $slots.action\" class=\"mc-no-data__actions\">\n <slot name=\"action\">\n <mc-button v-bind=\"btnAttrs\" v-on=\"btnListeners\">\n {{ btnName }}\n </mc-button>\n </slot>\n </div>\n </section>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/media-queries' as *;\n.mc-no-data {\n min-width: 100px;\n max-width: 100%;\n padding: 0 $space-200;\n width: 98%;\n text-align: center;\n @include child-indent-bottom($space-100);\n\n img {\n max-width: $size-1000;\n width: 100%;\n min-width: 0;\n margin-bottom: $space-150 !important;\n user-select: none;\n }\n\n &__text {\n a {\n color: $color-purple;\n text-decoration: none;\n }\n }\n\n &__wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n padding: $space-200;\n width: 100%;\n height: 100%;\n @include align(true, true, absolute);\n\n @media #{$media-query-l} {\n padding: $space-300 $space-300 $space-400;\n }\n .mc-no-data {\n position: static;\n transform: none;\n }\n }\n\n &__actions {\n margin-top: $space-200;\n }\n\n &--variation {\n &-large {\n padding: $space-400;\n @include child-indent-bottom($space-150);\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McSvgIcon, McButton, McPreview } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport type { IconsListUnion } from '@/types/styles/Icons'\nimport { Weights } from '@/enums/ui/Weights'\n\n\nconst emit = defineEmits(['click'])\nconst props = defineProps({\n /**\n * Дизайн:\n * purple, red, orange и т.д.\n */\n variation: {\n type: String as () => ColorTypes,\n default: 'purple' as ColorTypes,\n },\n /**\n * Заголовок блока\n */\n title: {\n type: String as PropType<string>,\n },\n /**\n * Содержимое блока\n */\n content: {\n type: String as PropType<string>,\n default: null,\n },\n /**\n * Отобразить кнопку внтури блока\n */\n buttonVisible: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n /**\n * Текст кнопки\n */\n buttonText: {\n type: String as PropType<string>,\n default: '',\n },\n /**\n * Название иконки\n */\n iconName: {\n type: String as () => IconsListUnion,\n default: 'info' as IconsListUnion,\n },\n /**\n * Отображать иконку\n */\n iconVisible: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n})\n\nconst styles = computed((): { [key: string]: string } => {\n return {\n '--mc-notification-color': Colors[props.variation],\n }\n})\n\nconst handleClick = (e: Event):void => {\n /**\n * Событие клика по кнопке\n */\n emit('click', e)\n}\n</script>\n\n<template>\n <div class=\"mc-notification\" :style=\"styles\">\n <div class=\"mc-notification__inner\">\n <mc-preview>\n <template v-if=\"props.iconVisible && ($slots.left || props.iconName)\" #left>\n <!-- @slot Слот для иконки -->\n <slot name=\"left\">\n <mc-svg-icon :name=\"props.iconName\" size=\"300\" />\n </slot>\n </template>\n\n <template v-if=\"$slots.header || props.title\" #top>\n <!-- @slot Слот заголовка -->\n <slot name=\"header\">\n <mc-title\n v-if=\"props.title\"\n :color=\"props.variation\"\n :weight=\"Weights.SemiBold\"\n class=\"mc-notification__title\"\n >\n {{ props.title }}\n </mc-title>\n </slot>\n </template>\n\n <template v-if=\"props.content || $slots.default\" #bottom>\n <div class=\"mc-notification__text\">\n <!-- @slot Слот для контента -->\n <slot>\n <mc-title :color=\"props.variation\">{{ props.content }}</mc-title>\n </slot>\n </div>\n </template>\n\n <template v-if=\"$slots.right || props.buttonVisible\" #right>\n <!-- @slot Слот для кнопок -->\n <slot name=\"right\">\n <mc-button\n v-if=\"props.buttonVisible\"\n :variation=\"props.variation\"\n class=\"mc-notification__button\"\n @click=\"handleClick\"\n >\n {{ props.buttonText }}\n </mc-button>\n </slot>\n </template>\n </mc-preview>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/media-queries' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-notification {\n $block-name: &;\n --mc-notification-color: #{$color-orange};\n position: relative;\n background-color: $color-white;\n border-radius: $radius-150;\n overflow: hidden;\n &:before {\n content: '';\n @include position(absolute, 0 null null 0);\n display: block;\n height: 100%;\n width: $size-50;\n background-color: var(--mc-notification-color);\n }\n\n &__text {\n font-size: $font-size-200;\n line-height: $line-height-200;\n }\n\n #{$block-name}__text,\n #{$block-name}__title {\n filter: contrast(59%);\n }\n\n &__inner {\n padding: $space-100 $space-150 $space-100 $space-200;\n min-height: $size-700;\n display: flex;\n align-items: center;\n position: relative;\n color: var(--mc-notification-color);\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: var(--mc-notification-color);\n opacity: 0.1;\n }\n\n .mc-preview {\n width: 100%;\n z-index: 1;\n &__top {\n margin-bottom: $space-50;\n }\n &__left {\n display: flex;\n align-items: center;\n margin-inline-end: $size-150;\n }\n &__right {\n display: flex;\n align-items: center;\n margin-inline-start: auto;\n padding-inline-start: $space-100;\n }\n }\n\n @media #{$media-query-m-down} {\n .mc-preview {\n flex-wrap: wrap;\n\n &__center {\n flex: 1;\n }\n &__right {\n width: 100%;\n padding-top: $space-100;\n padding-inline-start: $size-400 - 2;\n }\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { useFieldErrors } from '@/composables'\n\nconst props = defineProps({\n /**\n * Процент\n *\n */\n percent: {\n type: Number as PropType<number>,\n default: 0\n },\n /**\n * Число для отображения, если не укказано, используется процент\n *\n */\n amount: {\n type: [String, Number, Boolean] as PropType<string | number | boolean>,\n default: null\n },\n /**\n * Цвет\n *\n */\n color: {\n type: String as () => ColorTypes,\n default: 'dark-gray'\n },\n /**\n * Цвет текста\n *\n */\n helpTextColor: {\n type: String as () => ColorTypes,\n default: 'gray'\n },\n /**\n * Вспомогательный текст\n */\n helpText: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Ошибки\n */\n errors: {\n type: Array as PropType<string[]>,\n default: () => []\n },\n /**\n * Поменять местами подписи\n */\n reverseHeaders: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Использовать моноширинный шрифт для percent и amount\n */\n monospaceNumbers: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst fieldErrors = useFieldErrors(props.errors)\nconst wrapperClasses = computed(() => ({\n 'mc-progress': true,\n 'mc-progress--error': fieldErrors.errorText.value\n}))\nconst topClasses = computed(() => ({\n 'mc-progress__top': true,\n 'mc-progress__top--reverse-headers': props.reverseHeaders\n}))\nconst percentClasses = computed(() => ({\n 'mc-progress__percent': true,\n 'mc-progress__percent--monospace': props.monospaceNumbers\n}))\nconst lineClasses = computed(() => ({\n 'mc-progress__line': true\n}))\nconst styles = computed((): { [key: string]: string } => {\n return {\n '--mc-progress-color': Colors[props.color]\n }\n})\nconst helpTextStyles = computed(() => {\n return {\n '--mc-progress-help-text-color': Colors[props.helpTextColor]\n }\n})\nconst lineStyles = computed(() => {\n return {\n width: `${fieldErrors.errorText.value ? 2 : Math.sign(props.percent) > 0 ? props.percent : 0}%`\n }\n})\nconst percentValue = computed(() => {\n if (fieldErrors.errorText.value) return 0\n return props.amount ?? `${props.percent}%`\n})\n</script>\n\n<template>\n <div :class=\"wrapperClasses\" :style=\"styles\">\n <div :class=\"topClasses\">\n <div :class=\"percentClasses\">\n {{ percentValue }}\n </div>\n <div v-if=\"props.helpText\" class=\"mc-progress__help-text\" :style=\"helpTextStyles\">\n {{ props.helpText }}\n </div>\n </div>\n <div class=\"mc-progress__wrapper-line\">\n <div :class=\"lineClasses\" :style=\"lineStyles\"></div>\n </div>\n <div v-if=\"fieldErrors.errorText.value\" class=\"mc-progress__errors-container\">\n {{ fieldErrors.errorText.value }}\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/border-radius' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n.mc-progress {\n $block-name: &;\n --mc-progress-color: #{$color-dark-gray};\n --mc-progress-help-text-color: #{$color-gray};\n position: relative;\n width: 100%;\n font-family: $font-family-main;\n line-height: $line-height-200;\n font-size: $font-size-200;\n &__percent {\n flex-shrink: 0;\n color: var(--mc-progress-color);\n &--monospace {\n font-feature-settings: 'tnum';\n font-variant-numeric: tabular-nums;\n }\n }\n &--error {\n #{$block-name} {\n &__percent {\n color: $color-red;\n }\n &__line {\n background-color: $color-red;\n }\n }\n }\n\n &__top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: $space-100;\n &--reverse-headers {\n flex-direction: row-reverse;\n }\n }\n\n &__help-text {\n color: var(--mc-progress-help-text-color);\n }\n\n &__wrapper-line {\n height: $size-100;\n border-radius: $radius-100;\n background-color: $color-hover-gray;\n width: 100%;\n }\n\n &__line {\n height: 100%;\n border-radius: $radius-100;\n max-width: 100%;\n background-color: var(--mc-progress-color);\n }\n\n &__errors-container {\n margin-top: $space-150;\n color: $color-red;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { Spaces, type SpaceTypes } from '@/types/styles/Spaces'\nimport type { ColorsUnion } from '@/types/styles/Colors'\nimport type { SpacesUnion } from '@/types/styles/Spaces'\n\nconst props = defineProps({\n /**\n * Толщина `s, m`\n */\n weight: {\n type: String as PropType<'s' | 'm'>,\n default: 's',\n },\n /**\n * Цвет (токены)\n */\n color: {\n type: String as () => ColorTypes,\n default: 'outline-gray',\n },\n /**\n * Отступ слева и справа: 50, 200... ...1000\n */\n indentX: {\n type: String as () => SpaceTypes,\n default: '',\n },\n /**\n * Отступ сверху и снизу: 50, 200... ...1000\n */\n indentY: {\n type: String as () => SpaceTypes,\n default: '',\n },\n /**\n * Отступ сверху: 50, 200... ...1000\n */\n indentTop: {\n type: String as () => SpaceTypes,\n default: '',\n },\n /**\n * Отступ снизу: 50, 200... ...1000\n */\n indentBottom: {\n type: String as () => SpaceTypes,\n default: '',\n },\n /**\n * Отступ слева: 50, 200... ...1000\n */\n indentLeft: {\n type: String as () => SpaceTypes,\n default: '',\n },\n /**\n * Отступ справа: 50, 200... ...1000\n */\n indentRight: {\n type: String as () => SpaceTypes,\n default: '',\n },\n})\n\nconst indents = computed((): { [key: string]: SpaceTypes } => ({\n top: props.indentTop || props.indentY,\n bottom: props.indentBottom || props.indentY,\n left: props.indentLeft || props.indentX,\n right: props.indentRight || props.indentX,\n}))\n\nconst classes = computed((): { [key: string]: boolean } => ({\n 'mc-separator': true,\n}))\n\nconst styles = computed((): { [key: string]: ColorsUnion | SpacesUnion | string } => {\n let style = {} as { [key: string]: ColorsUnion | SpacesUnion | string }\n if (props.color) style['--mc-separator-color'] = Colors[props.color]\n if (indents.value.top) style['--mc-separator-indent-top'] = Spaces[indents.value.top]\n if (indents.value.bottom) style['--mc-separator-indent-bottom'] = Spaces[indents.value.bottom]\n if (indents.value.left) style['--mc-separator-indent-left'] = Spaces[indents.value.left]\n if (indents.value.right) style['--mc-separator-indent-right'] = Spaces[indents.value.right]\n\n let weight: string | undefined\n switch (props.weight) {\n case 's': {\n weight = '1px'\n break\n }\n case 'm': {\n weight = '2px'\n }\n }\n if (weight) style['--mc-separator-weight'] = weight\n\n return style\n})\n</script>\n\n<template>\n <div :class=\"classes\" :style=\"styles\">\n <div class=\"mc-separator__wrapper\">\n <slot />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n.mc-separator {\n $block-name: &;\n --mc-separator-color: initial;\n --mc-separator-indent-top: initial;\n --mc-separator-indent-bottom: initial;\n --mc-separator-indent-left: initial;\n --mc-separator-indent-right: initial;\n --mc-separator-weight: initial;\n width: 100%;\n margin-top: var(--mc-separator-indent-top);\n margin-bottom: var(--mc-separator-indent-bottom);\n margin-inline-start: var(--mc-separator-indent-left);\n margin-inline-end: var(--mc-separator-indent-right);\n height: var(--mc-separator-weight);\n &__wrapper {\n @include size(100%);\n background-color: var(--mc-separator-color);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { onMounted, type PropType, ref, watch } from 'vue'\n\ninterface animationPayload {\n contentHeight: string | number\n}\n\nconst emit = defineEmits<{\n (e: 'slide-open-start', value: boolean): void\n (e: 'slide-close-start', value: boolean): void\n (e: 'slide-open-end', value: boolean): void\n (e: 'slide-close-end', value: boolean): void\n}>()\n\nconst props = defineProps({\n /*\n * Состояние\n */\n active: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /*\n * Продолжительность тоггла\n */\n duration: {\n type: Number as PropType<number>,\n default: 300\n },\n type: {\n type: String as PropType<string>,\n default: 'ease-out'\n },\n /*\n * Если нужен другой тег\n */\n tag: {\n type: String as PropType<string>,\n default: 'div'\n },\n /*\n * Применять ли атрибут hidden\n * к элементы при закрытии\n */\n useHidden: {\n type: Boolean as PropType<boolean>,\n default: true\n }\n})\n\nconst open = ref<boolean>(props.active)\nconst animation_in_progress = ref<boolean>(false)\nconst animation = ref<Animation | null>(null)\nconst container = ref<HTMLDivElement>()\n\nonMounted((): void => {\n init()\n})\n\nconst init = (): void => {\n if (container.value && !open.value) {\n container.value.style.height = '0'\n }\n}\n\nconst animate = (): void => {\n if (!container.value || animation_in_progress.value) return\n animation_in_progress.value = true\n // Получаем фактическую высоту содержимого\n const contentHeight = container.value.scrollHeight\n\n const payload = {\n contentHeight\n } as animationPayload\n\n // Отменяем предыдущую анимацию, если она была\n if (animation.value) {\n animation.value.cancel()\n }\n open.value ? handleClose(payload) : handleOpen(payload)\n}\n\nconst toggleOpenValue = (): void => {\n open.value = !open.value\n}\n\nconst handleClose = ({ contentHeight }: animationPayload) => {\n emit('slide-close-start', open.value)\n\n if (container.value) {\n animation.value = container.value.animate([{ height: `${contentHeight}px` }, { height: '0' }], {\n duration: props.duration,\n easing: props.type,\n fill: 'forwards'\n })\n animation.value.onfinish = () => {\n emit('slide-close-end', open.value)\n animation_in_progress.value = false\n toggleOpenValue()\n }\n }\n}\n\nconst handleOpen = ({ contentHeight }: animationPayload) => {\n emit('slide-open-start', open.value)\n\n if (container.value) {\n animation.value = container.value.animate([{ height: '0' }, { height: `${contentHeight}px` }], {\n duration: props.duration,\n easing: props.type,\n fill: 'forwards'\n })\n\n animation.value.onfinish = () => {\n emit('slide-open-end', open.value)\n animation_in_progress.value = false\n toggleOpenValue()\n }\n }\n}\n\nwatch(\n () => props.active,\n (): void => {\n animate()\n }\n)\n</script>\n\n<template>\n <component ref=\"container\" :is=\"props.tag\" class=\"mc-slide-up-down\">\n <slot />\n </component>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/font-families' as *;\n.mc-slide-up-down {\n overflow: hidden;\n font-family: $font-family-main;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted, computed, h, useSlots, createApp, type PropType } from 'vue'\nimport { Spaces } from '@/types'\n\nconst props = defineProps({\n visibleCount: {\n type: Number as PropType<number>,\n default: Infinity\n },\n collapsed: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst slots = useSlots()\nconst container = ref<HTMLElement | null>(null)\nconst children =\n (slots.default && slots.default()[0].children?.length\n ? slots.default()[0].children\n : //@ts-ignore\n slots.default()) || []\n\n//@ts-ignore\nconst visibleChildren = ref<any[]>(children || [])\nconst hiddenCount = ref<number>(0)\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-stack': true,\n 'mc-stack--collapsed': props.collapsed\n }\n})\n\nonMounted(() => {\n const resizeObserver = new ResizeObserver(updateChildrenVisible)\n if (container.value) resizeObserver.observe(container.value)\n\n updateChildrenVisible()\n\n onUnmounted(() => {\n resizeObserver.disconnect()\n })\n})\n\nconst updateChildrenVisible = (): void => {\n if (!container.value) return\n\n let totalWidth = 0\n const visibleItems = []\n let itemCount = 0\n hiddenCount.value = 0\n\n const tempContainer = document.createElement('div')\n tempContainer.style.position = 'absolute'\n tempContainer.style.visibility = 'hidden'\n tempContainer.style.whiteSpace = 'nowrap'\n document.body.appendChild(tempContainer)\n\n //@ts-ignore\n for (const item of children) {\n const vnode = h(item)\n const itemNode = document.createElement('div')\n tempContainer.appendChild(itemNode)\n\n const app = createApp({ render: () => vnode })\n app.mount(itemNode)\n\n const itemWidth = props.collapsed\n ? itemNode.getBoundingClientRect().width + 6\n : itemNode.getBoundingClientRect().width\n app.unmount()\n itemNode.remove()\n\n const moreContentWidth = +Spaces['300'].replace('px', '')\n const itemIndent = props.collapsed ? -Spaces['200'].replace('px', '') : +Spaces['150'].replace('px', '')\n\n if (\n totalWidth + (itemWidth + itemIndent) <= container.value.clientWidth - moreContentWidth &&\n itemCount < props.visibleCount\n ) {\n totalWidth += itemWidth + itemIndent\n visibleItems.push(item)\n itemCount++\n } else {\n //@ts-ignore\n hiddenCount.value = children.length - visibleItems.length\n break\n }\n }\n document.body.removeChild(tempContainer)\n visibleChildren.value = visibleItems\n}\n</script>\n\n<template>\n <div ref=\"container\" :class=\"classes\">\n <div ref=\"content\" class=\"mc-stack__content\">\n <template v-for=\"(child, i) in visibleChildren\" :key=\"`mc-stack-item-${i}`\">\n <component :is=\"child\" />\n </template>\n <span v-if=\"hiddenCount > 0\" class=\"mc-stack__more-label\">+{{ hiddenCount }}</span>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/styles/mixins' as *;\n.mc-stack {\n $block-name: &;\n overflow: hidden;\n white-space: nowrap;\n &__content {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n @include child-indent-right($space-150);\n }\n &--collapsed {\n #{$block-name}__content {\n @include child-indent-right(-#{$space-200});\n & > *:not(#{$block-name}__more-label) {\n border: 2px solid $color-white;\n }\n }\n #{$block-name}__more-label {\n margin-inline-start: $space-250;\n }\n }\n &__more-label {\n margin-inline-start: $space-50;\n white-space: nowrap;\n font-size: $font-size-200;\n line-height: $line-height-200;\n color: $color-gray;\n font-weight: $font-weight-semi-bold;\n font-family: $font-family-main;\n width: $space-300;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { default as iconsSpriteIcon } from '@/assets/iconsSprite.svg'\nimport { Sizes, type SizeTypes } from '@/types/styles/Sizes'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { computed, type PropType } from 'vue'\nimport type { DirectionsUnion } from '@/types/IDirections'\nimport { type IconsListUnion } from '@/types/styles/Icons'\nimport { Directions } from '@/enums/ui/Directions'\n\nconst props = defineProps({\n /**\n * Путь к спрайту с иконками\n * */\n spritePath: {\n type: String,\n default: iconsSpriteIcon,\n validator(value: string): boolean {\n return !!value\n }\n },\n /**\n * Имя иконки\n */\n name: {\n type: String as () => IconsListUnion,\n required: true\n },\n /**\n * Цвет иконки\n * (по токенам)\n */\n color: {\n type: String as () => ColorTypes,\n default: ''\n },\n /**\n * Размер\n */\n size: {\n type: String as () => SizeTypes,\n default: '250'\n },\n /**\n * Толщина линий 0-5 если нужно больше, нужно дописать список в стилях\n * stroke-width\n */\n weight: {\n type: Number as PropType<number>,\n default: 1.5\n },\n /**\n * Отображение иконки,\n * если не найдена по имени\n * в 'name'\n */\n defaultName: {\n type: String as PropType<string>,\n default: ''\n },\n dir: {\n type: String as () => DirectionsUnion,\n default: Directions.Ltr\n }\n})\n\nconst classes = computed((): { [key: string]: boolean } => ({\n 'mc-svg-icon': true,\n [`mc-svg-icon--dir-${props.dir}`]: !!props.dir\n}))\n\nconst styles = computed((): { [key: string]: string } => ({\n ['--mc-svg-icon-size']: Sizes[props.size],\n ['--mc-svg-icon-weight']: String(props.weight)?.replace('.', '')?.split('')?.join('.'),\n ['--mc-svg-icon-color']: props.color && Colors[props.color]\n}))\n</script>\n\n<template>\n <svg :class=\"classes\" :style=\"styles\">\n <use :xlink:href=\"`${props.spritePath}#${props.name}`\"></use>\n </svg>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/sizes' as *;\n.mc-svg-icon {\n --mc-svg-icon-size: #{$size-250};\n --mc-svg-icon-weight: 1.5;\n --mc-svg-icon-color: initial;\n @include reset();\n @include reset-text-indents();\n\n @include size(inherit);\n width: var(--mc-svg-icon-size);\n height: var(--mc-svg-icon-size);\n min-width: var(--mc-svg-icon-size);\n min-height: var(--mc-svg-icon-size);\n stroke-width: var(--mc-svg-icon-weight);\n color: var(--mc-svg-icon-color);\n use {\n stroke-width: var(--mc-svg-icon-weight);\n }\n &--dir {\n &-rtl {\n transform: scale(-1, 1);\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { default as DOMPurify } from 'isomorphic-dompurify'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport { type HorizontalAlignmentUnion } from '@/types/styles/Alignment'\nimport { LineHeights, type LineHeightTypes } from '@/types/styles/LineHeights'\nimport { type WeightsUnion } from '@/types/styles/Weights'\n\nimport { computed, type PropType, useAttrs } from 'vue'\nimport { FontWeights } from '@/types/styles/FontWeights'\nimport { adaptiveAdditionalProps, adaptivePropsParams, adaptivePropsSizes } from '@/utils/mcTitleAdaptiveProps'\nimport type { TitleVariationsUnion } from '@/types/ITitle'\nimport { useHelper } from '@/composables'\n\nconst helper = useHelper()\nconst attrs = useAttrs()\nconst props = defineProps({\n ...adaptiveAdditionalProps,\n /**\n * Уровень: `h1`, `h2`, `h3`, `h4`, `subtitle`, `body`, `overline`, `article`, 'info'.\n */\n variation: {\n type: String as () => TitleVariationsUnion,\n default: 'body'\n },\n /**\n * В одну строку с точками в конце, если не вмещается\n */\n ellipsis: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Если нужен другой тэг\n */\n tagName: {\n type: String as PropType<string>,\n default: 'div'\n },\n /**\n * Заглавные буквы\n */\n uppercase: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Цвет\n */\n color: {\n type: String as () => ColorTypes,\n default: 'black'\n },\n /**\n * Позиция текста:\n * `left, center, right`\n */\n textAlign: {\n type: String as () => HorizontalAlignmentUnion,\n default: 'left'\n },\n /**\n * Если нужна иная высота строки: `100`, `200`, `300` и т.д.\n */\n lineHeight: {\n type: String as () => LineHeightTypes,\n default: ''\n },\n /**\n * Толщина текста:\n * normal, medium, semi-bold\n */\n weight: {\n type: String as () => WeightsUnion,\n default: ''\n },\n /**\n * Если нужно указать свою\n * максимальную ширину\n */\n maxWidth: {\n type: String as PropType<string>,\n default: '100%'\n },\n preLine: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n nowrap: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n plainText: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * ** Analog v-html, component use DOMPurify**\n * */\n htmlData: {\n type: String as PropType<string>,\n default: ''\n }\n})\n\nconst id = computed(() => {\n return attrs.id as string\n})\n\nconst responsivePropsClasses = computed((): { [key: string]: boolean } => {\n const result: { [key: string]: any } = {}\n result[`mc-title--variation-${props.variation}`] = !!props.variation\n adaptivePropsParams.forEach((value) => {\n adaptivePropsSizes.forEach((size) => {\n //@ts-ignore\n const sizeValue: string | undefined | unknown = props[`${value}${helper.upperFirst(size)}`]\n result[`mc-title--${value}-${size}-${sizeValue}`] = !!sizeValue\n })\n })\n\n return result\n})\n\nconst classes = computed((): { [key: string]: boolean } => ({\n 'mc-title': true,\n ['mc-title--ellipsis']: props.ellipsis,\n [`mc-title--text-align-${props.textAlign}`]: !!props.textAlign,\n [`mc-title--pre-line`]: props.preLine,\n [`mc-title--nowrap`]: props.nowrap,\n 'mc-title--uppercase': props.uppercase,\n 'mc-title--line-height': !!props.lineHeight,\n 'mc-title--weight': !!props.weight,\n 'mc-title--plain-text': props.plainText,\n ...responsivePropsClasses.value\n}))\nconst style = computed((): { [key: string]: string } => {\n let style: { [key: string]: string } = {}\n if (props.color) style['--mc-title-color'] = Colors[props.color]\n if (props.weight) style['--mc-title-weight'] = FontWeights[props.weight]\n if (props.lineHeight) style['--mc-title-line-height'] = LineHeights[props.lineHeight]\n\n return style\n})\n\nconst contentStyle = computed((): { [key: string]: string } => ({\n 'max-width': props.maxWidth\n}))\n</script>\n\n<template>\n <div :class=\"classes\" :style=\"style\" :id=\"id\">\n <!-- @slot -->\n <slot name=\"icon-prepend\" />\n <div\n v-if=\"props.htmlData\"\n class=\"mc-title__text\"\n :style=\"contentStyle\"\n v-html=\"DOMPurify.sanitize(props.htmlData)\"\n />\n <div v-else class=\"mc-title__text\" :style=\"contentStyle\"><slot /></div>\n\n <!-- @slot -->\n <slot name=\"icon-append\" />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/letter-spacings' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/media-queries' as *;\n.mc-title {\n $block-name: &;\n --mc-title-color: initial;\n --mc-title-weight: initial;\n --mc-title-line-height: initial;\n color: var(--mc-title-color);\n font-family: $font-family-main;\n @mixin variations() {\n &-h1 {\n font-size: $font-size-700;\n line-height: $line-height-600;\n font-weight: $font-weight-semi-bold;\n #{$block-name}__text {\n max-width: 920px;\n }\n }\n &-h2 {\n font-size: $font-size-600;\n line-height: $line-height-500;\n font-weight: $font-weight-semi-bold;\n #{$block-name}__text {\n max-width: 820px;\n }\n }\n &-h3 {\n font-size: $font-size-500;\n line-height: $line-height-400;\n font-weight: $font-weight-semi-bold;\n #{$block-name}__text {\n max-width: 720px;\n }\n }\n &-h4 {\n font-size: $font-size-400;\n line-height: $line-height-300;\n font-weight: $font-weight-bold;\n #{$block-name}__text {\n max-width: 700px;\n }\n }\n\n &-subtitle {\n font-size: $font-size-300;\n line-height: $line-height-250;\n #{$block-name}__text {\n max-width: 640px;\n }\n }\n &-article {\n font-size: $font-size-200;\n line-height: $line-height-250;\n #{$block-name}__text {\n max-width: 536px;\n }\n }\n &-info {\n font-size: $font-size-300;\n line-height: $line-height-300;\n }\n &-body {\n font-size: $font-size-200;\n line-height: $line-height-200;\n #{$block-name}__text {\n max-width: 330px;\n }\n }\n &-overline {\n font-size: $font-size-100;\n line-height: $line-height-150;\n font-weight: $font-weight-medium;\n #{$block-name}__text {\n max-width: 330px;\n }\n }\n }\n\n margin-top: 0;\n margin-bottom: 0;\n display: inline-flex;\n max-width: 100%;\n width: 100%;\n text-decoration: none;\n //@include child-indent-right($space-50);\n\n &__text {\n padding-bottom: 1px; // fix overflow\n margin-bottom: -1px; // fix overflow\n }\n\n > *:not(:empty):not(:last-child) {\n margin-inline-end: $space-50;\n }\n\n .mc-svg-icon,\n .mc-button {\n @include reset-text-indents();\n }\n\n &--pre-line {\n #{$block-name}__text {\n white-space: pre-line !important;\n word-break: normal;\n }\n }\n\n &--nowrap {\n #{$block-name}__text {\n white-space: nowrap;\n }\n }\n\n &--variation {\n @include variations;\n }\n\n &--ellipsis {\n align-items: center;\n\n #{$block-name} {\n &__text {\n @include ellipsis($display: inline-block);\n @include layout-flex-fix();\n }\n }\n }\n\n &--uppercase {\n text-transform: uppercase;\n letter-spacing: $letter-spacing-m;\n }\n &--plain-text {\n #{$block-name} {\n &__text {\n unicode-bidi: plaintext;\n }\n }\n }\n\n &--text-align {\n &-left {\n justify-content: flex-start;\n text-align: start;\n }\n &-center {\n justify-content: center;\n text-align: center;\n }\n &-right {\n justify-content: flex-end;\n text-align: end;\n }\n }\n &--line-height {\n line-height: var(--mc-title-line-height);\n }\n &--weight {\n font-weight: var(--mc-title-weight);\n }\n @each $media, $value in $token-media-queries {\n @media #{$value} {\n &--variation-#{$media} {\n @include variations;\n }\n &--weight-#{$media} {\n &-normal {\n font-weight: $font-weight-normal;\n }\n &-medium {\n font-weight: $font-weight-medium;\n }\n &-semi-bold {\n font-weight: $font-weight-semi-bold;\n }\n &-bold {\n font-weight: $font-weight-bold;\n }\n }\n }\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-weight: inherit;\n font-style: inherit;\n font-size: inherit;\n line-height: inherit;\n margin-block-start: 0;\n margin-block-end: 0;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport type { TooltipPositionsUnion, TooltipSizesUnion } from '@/types/ITooltip'\nimport { useTooltip } from '@/composables'\nimport { computed, type PropType } from 'vue'\nimport type { ITooltip } from '@/types/ITooltip'\nimport { TooltipPositions, TooltipSizes } from '@/enums/Tooltip'\n\nconst vTooltip = useTooltip()\n\nconst props = defineProps({\n /**\n * Текст подсказки:\n */\n content: {\n type: String as PropType<string>,\n required: true,\n },\n /**\n * Расположение:\n */\n placement: {\n type: String as () => TooltipPositionsUnion,\n default: TooltipPositions.Top,\n },\n /**\n * Цвет:\n */\n color: {\n type: String as () => ColorTypes,\n default: Colors.black,\n },\n /**\n * Цвет текста:\n */\n textColor: {\n type: String as () => ColorTypes,\n default: Colors.white,\n },\n /**\n * Максимальный размер\n */\n size: {\n type: String as () => TooltipSizesUnion,\n default: TooltipSizes.S,\n },\n /**\n * Всключить стрелку\n */\n arrowVisible: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n})\n\nconst tooltipProps = computed<ITooltip>((): ITooltip => {\n return {\n content: props.content,\n size: props.size,\n placement: props.placement,\n arrow: props.arrowVisible,\n color: props.color,\n textColor: props.textColor,\n } as ITooltip\n})\n</script>\n\n<template>\n <div v-tooltip=\"tooltipProps\" class=\"mc-tooltip-target\">\n <!-- @slot Слот для элемента, у которого будет всплывать тултип -->\n <slot />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/tooltip' as *;\n@use '../../../assets/tokens/font-families' as *;\n\n.mc-tooltip-target {\n $block-name: &;\n max-width: 100%;\n width: max-content;\n font-family: $font-family-main;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { type PropType, provide, ref } from 'vue'\nimport type { ICollapse, ICollapseEmitPayload } from '@/types/ICollapse'\nimport { useDebounceFn } from '@vueuse/core'\n\n/**\n * Работает с дочерними mc-collapse\n */\n\nconst debounceFn = useDebounceFn((method) => {\n method()\n}, 50)\n\nconst props = defineProps({\n isSingleOpen: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n defaultOpenIndex: {\n type: Number as PropType<number>\n }\n})\nconst collapses = ref<ICollapse[]>([])\n\nconst recalculateCollapses = ({ value, component }: ICollapseEmitPayload) => {\n if (!value) return\n\n collapses.value.forEach(collapse => {\n if (collapse.id !== component.id) {\n collapse.close()\n }\n })\n}\n\nconst handleTrigger = (event: string, { value, component }: ICollapseEmitPayload): void => {\n if (props.isSingleOpen) recalculateCollapses({ value, component })\n}\n\nconst selfRegisterCollapseMethod = (payload: ICollapse): void => {\n collapses.value.push(payload)\n const openIndex = props.defaultOpenIndex\n debounceFn(() => {\n if ((openIndex || openIndex === 0) && !!collapses.value[openIndex]) {\n collapses.value[openIndex].open()\n }\n })\n}\nprovide('selfRegisterCollapseMethod', selfRegisterCollapseMethod)\nprovide('accordionTriggerMethod', handleTrigger)\n</script>\n\n<template>\n <div class=\"mc-accordion\">\n <!-- @slot Слот для дочерних mc-collapse -->\n <slot />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/font-families' as *;\n.mc-accordion {\n $block-name: &;\n font-family: $font-family-main;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport { CellSizes } from '@/enums/Cell'\nimport type { CellSizesUnion } from '@/types/ICell'\nimport { TitleVariations } from '@/enums/Title'\nconst props = defineProps({\n /**\n * Заголовок\n */\n title: {\n type: String as PropType<string>,\n default: '',\n },\n /**\n * Размеры отступов: 's, m, l'\n */\n size: {\n type: String as () => CellSizesUnion,\n default: CellSizes.M,\n },\n /**\n * Заглавные буквы заголовка\n */\n uppercase: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n /**\n * Три точки\n */\n ellipsis: {\n type: Boolean as PropType<boolean>,\n default: true,\n }\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n [`mc-cell--size-${props.size}`]: !!props.size\n }\n})\n</script>\n\n<template>\n <section class=\"mc-cell\" :class=\"classes\">\n <div class=\"mc-cell__title\">\n <!-- @slot Слот заголовка -->\n <slot name=\"title\">\n <mc-title :variation=\"TitleVariations.Overline\" :uppercase=\"props.uppercase\" :ellipsis=\"props.ellipsis\">\n {{ props.title }}\n </mc-title>\n </slot>\n </div>\n <div class=\"mc-cell__content\">\n <!-- @slot Слот контента -->\n <slot />\n </div>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/font-families' as *;\n.mc-cell {\n $block-name: &;\n font-family: $font-family-main;\n\n &--size {\n &-s {\n #{$block-name}__content {\n margin-top: 0;\n }\n }\n\n &-m {\n #{$block-name}__content {\n margin-top: $space-50;\n }\n }\n\n &-l {\n #{$block-name}__content {\n margin-top: $space-100;\n }\n }\n }\n\n &__content {\n display: inline-flex;\n flex-direction: column;\n width: 100%;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McSvgIcon, McSlideUpDown } from '@/components'\nimport { computed, type PropType, ref, useSlots, watch, inject, onMounted } from 'vue'\nimport type { ICollapse, ICollapseEmitPayload } from '@/types/ICollapse'\nimport { useRandomNumber } from '@/composables'\n\nconst randomNumber = useRandomNumber()\nconst selfRegisterCollapseMethod: Function = inject('selfRegisterCollapseMethod', () => {})\nconst accordionTriggerMethod: Function = inject('accordionTriggerMethod', () => {})\n\nconst slots = useSlots()\nconst emit = defineEmits<{\n (e: 'toggle', value: ICollapseEmitPayload): void\n (e: 'open', value: ICollapseEmitPayload): void\n (e: 'close', value: ICollapseEmitPayload): void\n (e: 'collapse-open-start', value: ICollapseEmitPayload): void\n (e: 'collapse-open-end', value: ICollapseEmitPayload): void\n (e: 'collapse-close-start', value: ICollapseEmitPayload): void\n (e: 'collapse-close-end', value: ICollapseEmitPayload): void\n}>()\nconst props = defineProps({\n /*\n * Если нужно\n * отключённое состояние\n */\n isDisabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /*\n * Если нужен бордер\n */\n border: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Иконка состояния коллапса\n *\n */\n icon: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst id = ref<number>(randomNumber.timestamp(5))\nconst isCollapsed = ref<boolean>(false)\nconst animated = ref<boolean>(false)\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-collapse--is-open': isCollapsed.value,\n 'mc-collapse--is-disabled': props.isDisabled,\n 'mc-collapse--is-empty': isEmpty.value,\n 'mc-collapse--has-icon': props.icon,\n 'mc-collapse--border': props.border\n }\n})\nconst isEmpty = computed((): boolean => {\n return !slots.body\n})\n\nconst iCollapseParams = computed((): ICollapse => {\n return {\n isDisabled: props.isDisabled,\n border: props.border,\n icon: props.icon,\n id: id.value,\n isCollapsed: isCollapsed.value,\n open: open,\n close: close,\n toggle: toggle\n }\n})\n\nonMounted((): void => {\n if (selfRegisterCollapseMethod) {\n const payload: ICollapse = iCollapseParams.value\n\n selfRegisterCollapseMethod(payload)\n }\n})\n\nwatch(\n () => isCollapsed.value,\n (value: boolean): void => {\n /**\n * Событие тоггла\n */\n const payload: ICollapseEmitPayload = { value, component: iCollapseParams.value }\n emit('toggle', payload)\n value ? emit('open', payload) : emit('close', payload)\n if (accordionTriggerMethod) {\n accordionTriggerMethod(value ? 'open' : 'close', payload)\n }\n }\n)\nconst open = (): void => {\n if (props.isDisabled || animated.value) return\n isCollapsed.value = true\n}\nconst close = (): void => {\n if (props.isDisabled || animated.value) return\n isCollapsed.value = false\n}\nconst toggle = (): void => {\n if (props.isDisabled || animated.value) return\n isCollapsed.value = !isCollapsed.value\n}\nconst slideOpenStart = (value: boolean): void => {\n animated.value = true\n const payload: ICollapseEmitPayload = { value, component: iCollapseParams.value }\n /**\n * Событие перед началом открытия\n */\n emit('collapse-open-start', payload)\n}\nconst slideOpenEnd = (value: boolean): void => {\n animated.value = false\n const payload: ICollapseEmitPayload = { value, component: iCollapseParams.value }\n /**\n * Событие после открытия\n */\n emit('collapse-open-end', payload)\n}\nconst slideCloseStart = (value: boolean): void => {\n animated.value = true\n const payload: ICollapseEmitPayload = { value, component: iCollapseParams.value }\n /**\n * Событие перед началом закрытия\n */\n emit('collapse-close-start', payload)\n}\nconst slideCloseEnd = (value: boolean): void => {\n animated.value = false\n const payload: ICollapseEmitPayload = { value, component: iCollapseParams.value }\n /**\n * Событие после закрытия\n */\n emit('collapse-close-end', payload)\n}\n</script>\n\n<template>\n <section class=\"mc-collapse\" :class=\"classes\">\n <div class=\"mc-collapse__header\" tabindex=\"0\" @keyup.esc=\"close\">\n <mc-svg-icon\n v-if=\"icon && !isEmpty\"\n class=\"mc-collapse__icon\"\n name=\"arrow_drop_down\"\n :color=\"isDisabled ? 'outline-gray' : 'black'\"\n />\n <!-- @slot Слот для элемента по которому будет меняться состояние компонента -->\n <div v-if=\"slots.activator\" @click=\"toggle\">\n <slot name=\"activator\" />\n </div>\n <a v-if=\"slots.body\" class=\"mc-collapse__link\" href=\"#\" @click.prevent=\"toggle\" />\n </div>\n <mc-slide-up-down\n class=\"mc-collapse__body\"\n :active=\"isCollapsed\"\n :duration=\"300\"\n @slide-open-start=\"slideOpenStart\"\n @slide-open-end=\"slideOpenEnd\"\n @slide-close-start=\"slideCloseStart\"\n @slide-close-end=\"slideCloseEnd\"\n >\n <div class=\"mc-collapse__body-inner\">\n <!-- @slot Слот контента -->\n <slot name=\"body\" />\n </div>\n </mc-slide-up-down>\n <div v-if=\"slots.bottom\" class=\"mc-collapse__bottom\">\n <!-- @slot Общий нижний слот -->\n <slot name=\"bottom\" />\n </div>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-collapse {\n $block-name: &;\n\n &--border {\n border-radius: $radius-100;\n border: 1px solid $color-outline-gray;\n\n #{$block-name} {\n &__header {\n display: flex;\n padding: $space-100 $space-200;\n }\n }\n }\n\n &__link {\n display: block;\n @include position(absolute, 0);\n z-index: 1;\n }\n\n &__header {\n display: inline-flex;\n align-items: center;\n outline: none;\n cursor: pointer;\n position: relative;\n }\n\n &__icon {\n transition: all $duration-s;\n margin-inline: $space-50 $space-50;\n }\n\n &__body {\n #{$block-name} {\n border: none;\n border-radius: 0;\n border-bottom: 1px solid $color-outline-gray;\n\n &__header {\n padding-inline: $space-400 $space-200;\n }\n\n &__body {\n #{$block-name} {\n &__header {\n padding-inline-start: $space-800;\n }\n }\n }\n\n &:first-child {\n border-top: 1px solid $color-outline-gray;\n }\n\n &:last-child {\n border-bottom: none;\n }\n }\n }\n\n &__bottom {\n position: relative;\n }\n\n &--is-open {\n > #{$block-name} {\n &__header {\n #{$block-name} {\n &__icon {\n transform: rotate(180deg);\n }\n }\n }\n }\n }\n\n &--is-empty {\n #{$block-name} {\n &__header {\n cursor: default;\n &:hover {\n color: inherit;\n }\n }\n &__link {\n cursor: default;\n }\n }\n }\n\n &--is-disabled {\n #{$block-name} {\n &__header {\n cursor: not-allowed;\n color: $color-outline-gray;\n &:hover {\n color: $color-outline-gray;\n }\n }\n &__link {\n cursor: not-allowed;\n }\n }\n }\n\n &--has-icon {\n &#{$block-name}--is-empty {\n #{$block-name}__header {\n padding-inline-start: $space-400;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, type PropType, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useThrottleFn } from '@vueuse/core'\nimport { McDropdownPanel } from '@/components'\nimport type { DropdownListPositionsUnion, DropdownPositionsUnion } from '@/types/IDropdown'\nimport { DropdownListPositions, DropdownPositions } from '@/enums/Dropdown'\n\nconst throttle = useThrottleFn((method) => {\n method()\n}, 200)\n\nconst id = 'dropdown-element-id'\nconst localList_position = ref<string | null>(null)\nconst local_position = ref<string | null>(null)\nconst dropdown_body = ref<HTMLElement | null>(null)\nconst activator = ref<HTMLElement | null>(null)\nconst is_open = ref<boolean>(false)\nconst route = useRoute()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'select', value: any): void\n}>()\n\nconst props = defineProps({\n /**\n * Состояние видимости контента\n */\n modelValue: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n items: {\n type: Array as PropType<any[]>,\n default: () => []\n },\n /**\n * Выравнивание\n * контента: 'left', 'right', 'auto'\n */\n position: {\n type: String as () => DropdownPositionsUnion,\n default: DropdownPositions.Left\n },\n /**\n * Направление отображения\n * контента: 'top', 'bottom', 'auto'\n */\n listPosition: {\n type: String as () => DropdownListPositionsUnion,\n default: DropdownListPositions.Bottom\n },\n /**\n * Минимальная ширина выпадаюзего списка\n */\n listMinWidth: {\n type: String as PropType<string>,\n default: 'inherit'\n },\n /**\n * Минимальная ширина выпадаюзего списка\n */\n listMaxHeight: {\n type: Number as PropType<number>,\n default: 300\n },\n hideOnSelect: {\n type: Boolean as PropType<boolean>,\n default: true\n }\n})\n\nconst dropdownClasses = computed((): { [key: string]: boolean } => {\n return {\n [`mc-dropdown--position-${local_position.value}`]: !!local_position.value,\n [`mc-dropdown--list-position-${localList_position.value}`]: !!localList_position.value,\n ['mc-dropdown--is-open']: is_open.value\n }\n})\n\nconst dropdownStyles = computed((): { [key: string]: string | number } => {\n return {\n '--dropdown-body-min-width': props.listMinWidth\n }\n})\n\nonMounted((): void => {\n window.addEventListener('resize', throttledCalculateDropdownPosition)\n window.addEventListener('transitionrun', throttledCalculateDropdownPosition)\n})\n\nonBeforeUnmount((): void => {\n window.removeEventListener('resize', throttledCalculateDropdownPosition)\n window.removeEventListener('transitionrun', throttledCalculateDropdownPosition)\n})\n\nconst toggleDropdown = (): void => {\n setOpenState(!is_open.value)\n}\n\nconst handleClickOutside = (e: Event): void => {\n const target = e.target as HTMLElement\n if (is_open.value && !target.closest(`#${id}`)) closeDropdown()\n}\n\nconst closeDropdown = (): void => {\n setOpenState(false)\n}\n\nconst setOpenState = (payload: boolean): void => {\n is_open.value = payload\n emit('update:modelValue', payload)\n\n if (is_open.value) document.addEventListener('click', handleClickOutside)\n else document.removeEventListener('click', handleClickOutside)\n}\n\nconst handleItemClick = (payload: any): void => {\n emit('select', payload)\n if (props.hideOnSelect) closeDropdown()\n}\n\nconst calculateDropdownPosition = (): void => {\n if (!dropdown_body.value) return\n const rect = activator.value?.getBoundingClientRect()\n if (!rect) return\n const space_below: number = window.innerHeight - rect.bottom\n const space_left: number = window.innerWidth - rect.left\n const { offsetHeight: dropdown_height, offsetWidth: dropdown_width } = dropdown_body.value\n // Определяем направление отображения списка\n const auto_list_position: string =\n space_below < dropdown_height ? DropdownListPositions.Top : DropdownListPositions.Bottom\n const auto_position: string = space_left > dropdown_width ? DropdownPositions.Left : DropdownPositions.Right\n // Устанавливаем значения в зависимости от position\n localList_position.value = props.listPosition === DropdownListPositions.Auto ? auto_list_position : props.listPosition\n local_position.value = props.position === DropdownPositions.Auto ? auto_position : props.position\n}\n\nconst throttledCalculateDropdownPosition = () => throttle(() => calculateDropdownPosition())\n\nwatch(() => route, closeDropdown)\nwatch(\n () => props.modelValue,\n (val: boolean): void => {\n if (is_open.value !== val) setOpenState(val)\n\n nextTick((): void => {\n calculateDropdownPosition()\n })\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div class=\"mc-dropdown\" :id=\"id\" :class=\"dropdownClasses\" :style=\"dropdownStyles\">\n <div\n class=\"mc-dropdown__toggle\"\n ref=\"activator\"\n tabindex=\"0\"\n @keyup.esc=\"closeDropdown\"\n @click.prevent.stop=\"toggleDropdown\"\n >\n <!-- @slot активатора переключения состояния -->\n <slot name=\"activator\" />\n </div>\n <div ref=\"dropdown_body\" class=\"mc-dropdown__body\">\n <!-- @slot контента -->\n <mc-dropdown-panel :max-height=\"listMaxHeight\">\n <slot>\n <div\n v-for=\"(item, index) in items\"\n :key=\"`dropdown-list-item-${item.id || item.key || index}`\"\n class=\"mc-dropdown-panel__item\"\n @click=\"handleItemClick(item)\"\n >\n <slot name=\"item\" :item=\"item\"></slot>\n </div>\n </slot>\n </mc-dropdown-panel>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/z-indexes' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use 'sass:color' as sasscolor;\n.mc-dropdown {\n $block-name: &;\n --dropdown-body-min-width: inherit;\n\n position: relative;\n display: inline-block;\n\n &__toggle {\n outline: none;\n @include reset-text-indents();\n .mc-svg-icon {\n transition: all $duration-s;\n }\n }\n\n &__body {\n @include position(absolute, null null null 0);\n z-index: $z-index-dropdown;\n height: 0;\n overflow: hidden;\n margin: 0;\n background-color: transparent;\n opacity: 0;\n visibility: hidden;\n min-width: var(--dropdown-body-min-width);\n transition:\n opacity $duration-s,\n transform $duration-s;\n\n .mc-button {\n &:not(.nuxt-link-active):not(.mc-button--is-active):not(.mc-button--variation-red-flat) {\n &:hover {\n background-color: sasscolor.scale($color-purple, $lightness: 90%);\n .mc-button__background {\n opacity: 0 !important;\n }\n }\n }\n }\n }\n\n &--list-position-top {\n #{$block-name} {\n &__body {\n bottom: 100%;\n margin-bottom: $space-100;\n }\n }\n }\n\n &--list-position-bottom {\n #{$block-name} {\n &__body {\n top: 100%;\n margin-top: $space-100;\n }\n }\n }\n\n &--is-open {\n #{$block-name} {\n &__body {\n height: auto;\n visibility: visible;\n overflow: visible;\n opacity: 1;\n }\n }\n\n #{$block-name} {\n &__toggle--rotate-icon {\n .rotate {\n position: relative;\n transform: rotate(180deg);\n }\n }\n }\n }\n\n &--position-right {\n #{$block-name} {\n &__body {\n inset-inline-start: auto;\n inset-inline-end: 0;\n }\n }\n }\n\n &--position-left {\n #{$block-name} {\n &__body {\n inset-inline-start: 0;\n inset-inline-end: auto;\n }\n }\n }\n .mc-dropdown-panel {\n &__item {\n & > * {\n width: 100%;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue'\n\nconst props = defineProps({\n maxHeight: {\n type: Number as PropType<number>,\n default: 300\n }\n})\n\nconst panelStyles = computed((): { [key: string]: string } => {\n return {\n '--panel-max-height': `${props.maxHeight}px`\n }\n})\n</script>\n\n<template>\n <section class=\"mc-dropdown-panel\" :style=\"panelStyles\">\n <!-- @slot Слот контента -->\n <slot />\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/box-shadows' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/border-radius' as *;\n.mc-dropdown-panel {\n $block-name: &;\n --panel-max-height: 300px;\n\n font-family: $font-family-main;\n box-shadow: $shadow-s;\n border-radius: $radius-150;\n background-color: $color-white;\n padding: $space-100;\n max-width: 320px;\n max-height: var(--panel-max-height);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n overflow-y: auto;\n @include hide-scrollbar();\n\n &:empty {\n display: none;\n }\n\n .mc-button {\n &--size-m {\n font-weight: $font-weight-medium;\n padding: $space-100;\n .mc-svg-icon {\n @include size($size-300);\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { Teleport } from 'vue'\nimport {\n McSvgIcon,\n McButton,\n McTitle,\n McFieldSelect,\n McFieldText,\n McTooltip,\n McFilterTags,\n McFilterTypeRange,\n McFilterTypeDate,\n McFilterTypeText,\n McFilterTypeRelation,\n McChip\n} from '@/components'\nimport { defaultPlaceholders } from '@/mocks/filterMocks'\n\nimport { computed, onBeforeUnmount, onMounted, type PropType, reactive, ref, watch, nextTick } from 'vue'\nimport type {\n ButtonVariationUnion,\n FilterConditionName,\n FilterConditionValue,\n IFastFilter,\n IFilter,\n IFilterCondition,\n IFilterParsedValue,\n IFilterParsedValueFilter,\n IFilterParsedValueFilterName,\n IFilterPlaceholders,\n IFilterPreset,\n IFilterValue,\n ISelectOption,\n FilterRelationValue,\n FilterRelationName,\n IFilterRelationTag,\n IFilterRangeValue,\n IFilterTag,\n IRelationFilter,\n IFilterDateValue,\n IBaseFilter,\n FilterTextValue,\n IRangeFilter\n} from '@/types'\nimport { useHelper, UseEncodeDecode } from '@/composables'\nimport { ButtonSize, ChipSize, FilterRelations, FilterTypes, TooltipPositions, TooltipSizes } from '@/enums'\nimport { useLocalStorage } from '@vueuse/core'\n\nconst helper = useHelper()\nconst emit = defineEmits<{\n (e: 'error', value: string): void\n (e: 'clear', value: string): void\n (e: 'delete-preset', value: string): void\n (e: 'update:modelValue', value: IFilterValue): void\n (e: 'confirm', value: IFilterValue): void\n}>()\nconst props = defineProps({\n /**\n * Имя фильтра\n * (для записи данных в стор)\n */\n name: {\n type: String as PropType<string>,\n required: true\n },\n /**\n * Значение фильтра\n */\n modelValue: {\n type: Object as PropType<IFilterValue>,\n required: true,\n default: () => ({ filter: null, filter_name: null })\n },\n /**\n * Типы фильтров\n */\n filters: {\n type: Array as PropType<IFilter[]>,\n required: true,\n default: () => []\n },\n /**\n * Лоадинг кнопки применить фильтр\n */\n buttonConfirmIsLoading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Использовать ли teleport (для рендеринга вне компонента)\n * Если да то необходимо создать блок с id=\"filterTeleportTarget\" в который будет рендериться тело фильтра\n */\n useTeleport: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Доступен ли фильтр для открытия\n */\n disabledOpen: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Нужно ли учитывать часовой пояс при работе с фильтром типа Date\n * */\n useTimezone: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Переводы плейсхолеров и текстов\n */\n placeholders: {\n type: Object as PropType<Partial<IFilterPlaceholders>>,\n default: () => ({})\n }\n})\n\nconst isOpen = ref<boolean>(false)\n\n// текущие значения фильтра filter / filter_name\nconst currentValues = ref<IFilterParsedValueFilter>({})\nconst currentValuesName = ref<IFilterParsedValueFilterName>({})\n\n//временные значения, до нажатия на кнопку применить фильтр\nconst temporaryFilter = ref<IFilterParsedValueFilter>({})\nconst temporaryFilterName = ref<IFilterParsedValueFilterName>({})\n\n// текущие выбранные значения в типе фильтра\nconst currentCondition = ref<FilterConditionValue>({})\nconst currentConditionName = ref<FilterConditionName>({})\n\n// значение выбранного фильтра из списка фильтров\nconst selectedOptionFilter = ref<string | null>(null)\n\nconst activeTag = ref<IFilterRelationTag | null>(null)\n\nconst placeholders = reactive<IFilterPlaceholders>(helper.deepMerge(defaultPlaceholders, props.placeholders))\n\nconst isDisableConfirmButton = computed(() => {\n return helper.isEqual(computedModelValue.value.filter, currentValues.value)\n})\n\nconst newPresetName = ref<string>('')\nconst activePreset = ref<IFilterPreset | null>(null)\nconst temporaryActivePreset = ref<IFilterPreset | null>(null)\nconst filterLocalStorage = useLocalStorage<Record<string, IFilterPreset[]>>('mcFilterPresets', {})\nconst presets = ref<IFilterPreset[]>([])\n\nconst computedModelValue = computed({\n get(): IFilterParsedValue {\n const { filter = null, filter_name = null } = props.modelValue || {}\n\n return {\n filter: filter,\n filter_name: UseEncodeDecode.decode(filter_name)\n } as IFilterParsedValue\n },\n set(val: IFilterParsedValue) {\n const { filter = null, filter_name = {} } = val || {}\n\n const payload: IFilterValue = {\n filter: filter,\n filter_name: UseEncodeDecode.encode(filter_name)\n } as IFilterValue\n emit('update:modelValue', payload)\n }\n})\n\n// выбранный фильтр из списка фильтров\nconst currentFilter = computed((): IFilter => {\n return props.filters.find((f) => String(f.value) === String(selectedOptionFilter.value)) || ({} as IFilter)\n})\nconst isCurrentComponentIsRelation = computed((): boolean => {\n return currentFilter.value?.type === FilterTypes.Relation\n})\nconst isCurrentComponentIsDate = computed((): boolean => {\n return currentFilter.value?.type === FilterTypes.Date\n})\nconst isCurrentComponentIsText = computed((): boolean => {\n return currentFilter.value?.type === FilterTypes.Text\n})\nconst isCurrentComponentIsRange = computed((): boolean => {\n return currentFilter.value?.type === FilterTypes.Range\n})\n\n// отфильтрованные быстрые фильтры\nconst fastFilters = computed((): IFastFilter[] => {\n const selected = (currentValues.value && Object.keys(currentValues.value)) || []\n return props.filters.filter((f) => f.type === FilterTypes.Fast && !selected.includes(f.value)) as IFastFilter[]\n})\n\n// отфильтрованные фильтры кроме быстрых\nconst regularFilters = computed((): ISelectOption[] => {\n return props.filters.filter((f) => f.type !== FilterTypes.Fast)\n})\n\nconst visibilityToggleVariation = computed((): ButtonVariationUnion => {\n return isOpen.value || !isDisableConfirmButton.value ? 'purple-invert' : 'black-flat'\n})\n\n// видна ли кнопка добавить фильтр\nconst hasButtonAdd = computed((): boolean => {\n return (\n !helper.isEmpty(currentCondition.value) && !!currentFilter.value && currentFilter.value.type !== FilterTypes.Fast\n )\n})\n\n// задизэйблена ли кнопка создать, для пресетов\nconst buttonCreateIsDisable = computed((): boolean => {\n return !newPresetName.value.trim()\n})\n\nonMounted((): void => {\n updatePresets()\n window.addEventListener('storage', updatePresets)\n\n init()\n})\n\nonBeforeUnmount((): void => {\n window.removeEventListener('storage', updatePresets)\n})\n\nconst init = () => {\n temporaryFilter.value = computedModelValue.value.filter\n temporaryFilterName.value = computedModelValue.value.filter_name\n\n currentValues.value = computedModelValue.value.filter\n currentValuesName.value = computedModelValue.value.filter_name\n}\n\nconst updatePresets = (): void => {\n presets.value = filterLocalStorage.value[props.name] || ([] as IFilterPreset[])\n}\n\nconst handlerSetFastFilter = (tag: IFastFilter): void => {\n const { relation, value } = tag\n\n const filterValue = relation ? { [relation]: tag.default } : tag.default\n\n selectedOptionFilter.value = value\n handleConditionChange({ value: filterValue, valueName: tag.name })\n handleStoreTag()\n}\n\nconst handleConditionChange = ({ value, valueName }: IFilterCondition): void => {\n currentCondition.value = value\n currentConditionName.value = valueName || ''\n}\n\nconst handleStoreTag = (): void => {\n activeTag.value ? editTag() : addTag()\n}\n\nconst editTag = (): void => {\n switch (currentFilter.value?.type) {\n case FilterTypes.Relation: {\n editRelationValue()\n break\n }\n default: {\n addSimpleValue()\n break\n }\n }\n activeTag.value = null\n}\n\nconst addTag = (): void => {\n switch (currentFilter.value?.type) {\n case FilterTypes.Relation: {\n addRelationValue()\n break\n }\n default: {\n addSimpleValue()\n break\n }\n }\n activeTag.value = null\n}\n\nconst editRelationValue = (): void => {\n if (activeTag.value) {\n const tagRelationValue = activeTag.value.relationKey === FilterRelations.Exists ? [0] : [activeTag.value.value]\n const tagRelation = {\n [activeTag.value.category]: {\n [activeTag.value.relationKey as FilterRelations]: tagRelationValue\n }\n }\n\n const selectedRelation: IFilterParsedValueFilter = {\n [selectedOptionFilter.value as string]: helper.cloneDeep(currentCondition.value)\n }\n if (helper.isEqual(selectedRelation, tagRelation)) {\n /**\n * Событие по возникшей ошибке\n */\n emit('error', placeholders.messages.same_filter)\n return\n }\n }\n const { category, categoryName }: { category: FilterRelationValue; categoryName: FilterRelationName } =\n getCategoriesWithNewRelation()\n\n if (activeTag.value) {\n if (activeTag.value.relationKey === FilterRelations.Exists) {\n delete category[activeTag.value.relationKey]\n delete categoryName[activeTag.value.relationKey]\n } else {\n const numerableValues = category[activeTag.value.relationKey]\n const index = numerableValues?.indexOf(String(activeTag.value.value)) ?? -1\n if (index !== -1) {\n category?.[activeTag.value.relationKey]?.splice(index, 1)\n helper.isEmpty(category[activeTag.value.relationKey]) && delete category[activeTag.value.relationKey]\n delete categoryName?.[activeTag.value.relationKey]?.[activeTag.value.value]\n helper.isEmpty(categoryName[activeTag.value.relationKey]) && delete categoryName[activeTag.value.relationKey]\n }\n }\n }\n\n setFilterValues(category, categoryName)\n}\n\nconst addRelationValue = (): void => {\n const { category, categoryName } = getCategoriesWithNewRelation()\n setFilterValues(category, categoryName)\n}\n\nconst getCategoriesWithNewRelation = (): { category: FilterRelationValue; categoryName: FilterRelationName } => {\n const relationKeys = Object.keys(currentCondition.value) as FilterRelations[]\n const values = helper.cloneDeep(currentValues.value)\n const valuesName = helper.cloneDeep(currentValuesName.value)\n const selectedCategory: FilterRelationValue = values[selectedOptionFilter.value as string]\n const selectedCategoryName: FilterRelationName = valuesName[selectedOptionFilter.value as string]\n\n selectedCategory &&\n relationKeys.forEach((k) => {\n if (k === FilterRelations.Exists) {\n selectedCategory[FilterRelations.Exists] = 0\n selectedCategoryName[FilterRelations.Exists] = null\n } else {\n //@ts-ignore\n const conditionValue = currentCondition.value[k]\n //@ts-ignore\n const conditionName = currentConditionName.value[k]\n\n if (k in selectedCategory) {\n //@ts-ignore\n selectedCategory[k] = helper.uniqWith([...selectedCategory[k], ...conditionValue], helper.isEqual)\n selectedCategoryName[k] = {\n ...selectedCategoryName[k],\n ...conditionName\n }\n } else {\n selectedCategory[k] = conditionValue\n selectedCategoryName[k] = conditionName\n }\n }\n })\n return { category: selectedCategory, categoryName: selectedCategoryName }\n}\n\nconst setFilterValues = (val: FilterConditionValue, valName: FilterConditionName): void => {\n const newVal: IFilterParsedValueFilter = {\n ...currentValues.value,\n [selectedOptionFilter.value as string]: val || currentCondition.value\n }\n if (helper.isEqual(currentValues.value, newVal)) {\n /**\n * Событие по возникшей ошибке\n */\n emit('error', placeholders.messages.same_filter)\n return\n }\n currentValues.value = newVal\n currentValuesName.value = {\n ...currentValuesName.value,\n [selectedOptionFilter.value as string]: valName || currentConditionName.value\n }\n\n setEmptyCondition()\n}\n\nconst setEmptyCondition = (): void => {\n switch (currentFilter.value?.type) {\n case FilterTypes.Text:\n case FilterTypes.Relation:\n handleConditionChange({ value: '' })\n break\n case FilterTypes.Range:\n case FilterTypes.Date:\n handleConditionChange({ value: {} })\n break\n default:\n break\n }\n}\n\nconst addSimpleValue = (): void => {\n if (currentFilter.value?.type === FilterTypes.Range && Object.keys(currentCondition.value || {}).length === 2) {\n const _currentCondition = currentCondition.value as IFilterRangeValue\n if (_currentCondition.more && _currentCondition.less && _currentCondition.more > _currentCondition.less) {\n /**\n * Событие по возникшей ошибке\n */\n emit('error', placeholders.messages.more_than)\n return\n }\n }\n setFilterValues(currentCondition.value, currentCondition.value as FilterConditionName)\n}\n\nconst onTagsChange = (val: IFilterParsedValueFilterName): void => {\n activeTag.value = null\n if (helper.isEmpty(val)) {\n currentValues.value = {}\n currentValuesName.value = {}\n return\n }\n currentValuesName.value = helper.cloneDeep(val)\n setRelationsToArrayFormat(val)\n}\n\nconst handleClearAllTags = (): void => {\n temporaryFilter.value = {}\n temporaryFilterName.value = {}\n\n currentValues.value = {}\n currentValuesName.value = {}\n /**\n * Событие по очистке выбранных фильтров из поля\n */\n emit('clear', placeholders.messages.accidentally_cleared)\n}\n\nconst setRelationsToArrayFormat = (obj: IFilterParsedValueFilterName): void => {\n const newObj = helper.cloneDeep(obj)\n const relationKeys = [FilterRelations.Is, FilterRelations.IsNot]\n for (let [categoryKey, categoryVal] of Object.entries(obj)) {\n if (categoryVal.constructor === Object) {\n for (let [key, val] of Object.entries(categoryVal)) {\n if (relationKeys.includes(key as FilterRelations) && val?.constructor === Object) {\n newObj[categoryKey][key] = [...Object.keys(val)]\n }\n }\n }\n }\n currentValues.value = newObj\n}\n\nconst onTagClick = (tag: IFilterTag): void => {\n activeTag.value = (helper.isEqual(activeTag.value, tag) ? null : tag) as IFilterRelationTag\n if (!activeTag.value) {\n setEmptyCondition()\n return\n }\n let condition = null\n let conditionName = null\n if (tag.relationKey) {\n condition = {\n [tag.relationKey]: tag.relationKey === FilterRelations.Exists ? [0] : [String(tag.value)]\n }\n conditionName = {\n [tag.relationKey]: tag.relationKey === FilterRelations.Exists ? [0] : { [tag.value]: tag.title }\n }\n } else {\n condition = tag.value?.constructor === Object ? tag.value : String(tag.value)\n conditionName = tag.value\n }\n\n selectedOptionFilter.value = tag.category\n nextTick(() => {\n currentCondition.value = condition\n currentConditionName.value = conditionName\n })\n}\n\nconst handleConfirm = (): void => {\n /**\n * Событие по изменению значения фильтра\n */\n computedModelValue.value = {\n filter: currentValues.value,\n filter_name: currentValuesName.value\n } as IFilterParsedValue\n\n const payload: IFilterValue = {\n filter: currentValues.value,\n filter_name: UseEncodeDecode.encode(currentValuesName.value)\n } as IFilterValue\n\n emit('confirm', payload)\n}\n\n/**\n * PRESETS BELOW\n * */\n\nconst handlePresetMouseUp = (preset: IFilterPreset) => {\n if (activePreset.value && activePreset.value.name === preset.name) {\n activePreset.value = null\n currentValues.value = {}\n currentValuesName.value = {}\n } else {\n activePreset.value = preset\n currentValues.value = helper.cloneDeep(preset.filter)\n currentValuesName.value = helper.cloneDeep(preset.filter_name)\n }\n if (!isOpen.value) {\n handleConfirm()\n }\n}\n\nconst handleDeletePreset = (preset: IFilterPreset | null): void => {\n const filteredPresets = filterLocalStorage.value[props.name]?.filter((p) => preset && p.name !== preset.name)\n filterLocalStorage.value[props.name] = [...filteredPresets]\n temporaryActivePreset.value = helper.cloneDeep(activePreset.value)\n activePreset.value = null\n currentValues.value = {}\n currentValuesName.value = {}\n /**\n * Событие по удалению пресета\n */\n emit('delete-preset', placeholders.messages.accidentally_deleted)\n}\n\nconst handleCreatePreset = (): void => {\n if (\n filterLocalStorage.value[props.name] &&\n filterLocalStorage.value[props.name].find((p) => p.name?.trim() === newPresetName.value?.trim())\n ) {\n emit('error', placeholders.messages.same_preset_name)\n return\n }\n const preset: IFilterPreset = {\n name: newPresetName.value?.trim(),\n filter: helper.cloneDeep(currentValues.value),\n filter_name: helper.cloneDeep(currentValuesName.value)\n }\n\n const currentPreset = filterLocalStorage.value[props.name]\n if (currentPreset) {\n filterLocalStorage.value[props.name] = [preset, ...currentPreset]\n } else {\n filterLocalStorage.value[props.name] = [preset]\n }\n\n newPresetName.value = ''\n activePreset.value = { ...preset }\n}\n\nconst getPresetButtonVariation = (preset: IFilterPreset): ButtonVariationUnion => {\n return activePreset.value && activePreset.value.name === preset.name ? 'purple-invert' : 'gray-outline'\n}\n\nwatch(\n () => props.modelValue,\n (val: IFilterValue): void => {\n const filter_value: IFilterValue = val || {\n filter: null,\n filter_name: null\n }\n currentValues.value = { ...filter_value.filter }\n if (filter_value.filter_name) {\n try {\n currentValuesName.value = UseEncodeDecode.decode(filter_value.filter_name)\n } catch (e) {\n console.error(`Can't parse filters`)\n }\n }\n },\n { deep: true }\n)\n\nwatch(\n () => currentFilter.value,\n (): void => {\n handleConditionChange({ value: '' })\n },\n { deep: true }\n)\n\nwatch(\n () => currentValues.value,\n (): void => {\n if (activePreset.value) {\n const mappedPresets = filterLocalStorage.value[props.name].map((p) => {\n if (activePreset.value && p.name === activePreset.value.name) {\n return {\n name: p.name,\n filter: helper.cloneDeep(currentValues.value),\n filter_name: helper.cloneDeep(currentValuesName.value)\n }\n }\n return p\n })\n filterLocalStorage.value[props.name] = [...mappedPresets]\n }\n }\n)\n</script>\n\n<template>\n <div class=\"mc-filter\">\n <div class=\"mc-filter__header\">\n <mc-tooltip :content=\"placeholders.main_tooltip\" :placement=\"TooltipPositions.Top\" :size=\"TooltipSizes.S\">\n <mc-button\n :variation=\"visibilityToggleVariation\"\n :disabled=\"disabledOpen\"\n :bg-flat=\"isOpen\"\n :size=\"ButtonSize.MCompact\"\n @click=\"isOpen = !isOpen\"\n >\n <template #icon-prepend>\n <mc-svg-icon name=\"filter_list\" />\n </template>\n </mc-button>\n </mc-tooltip>\n <div v-if=\"presets\" class=\"mc-filter__presets\">\n <div class=\"mc-filter__presets-inner\">\n <mc-button\n v-for=\"preset in presets\"\n :key=\"preset.name\"\n :variation=\"getPresetButtonVariation(preset)\"\n secondary-color=\"purple\"\n @mouseup=\"() => handlePresetMouseUp(preset)\"\n >\n {{ preset.name }}\n </mc-button>\n </div>\n </div>\n </div>\n <component v-if=\"isOpen\" :is=\"useTeleport ? Teleport : 'div'\" to=\"#filterTeleportTarget\">\n <div class=\"mc-filter__body\">\n <div class=\"mc-filter__body-top\">\n <div class=\"mc-filter__body-top-left\">\n <mc-field-select\n v-model=\"selectedOptionFilter\"\n :title=\"placeholders.value\"\n :options=\"regularFilters\"\n :placeholder=\"placeholders.choose\"\n :hide-selected=\"false\"\n class=\"mc-filter__main-select\"\n name=\"filter_value_name\"\n />\n <template v-if=\"currentFilter\">\n <mc-filter-type-relation\n v-if=\"isCurrentComponentIsRelation\"\n :model-value=\"currentCondition as FilterRelationValue\"\n :filter=\"currentFilter as IRelationFilter\"\n :placeholders=\"placeholders\"\n :current-values=\"!activeTag ? currentValues : {}\"\n :use-timezone=\"props.useTimezone\"\n @update:modelValue=\"handleConditionChange\"\n />\n <mc-filter-type-date\n v-else-if=\"isCurrentComponentIsDate\"\n :model-value=\"currentCondition as IFilterDateValue\"\n :filter=\"currentFilter as IBaseFilter\"\n :placeholders=\"placeholders\"\n :current-values=\"!activeTag ? currentValues : {}\"\n :use-timezone=\"props.useTimezone\"\n @update:modelValue=\"handleConditionChange\"\n />\n <mc-filter-type-text\n v-else-if=\"isCurrentComponentIsText\"\n :model-value=\"currentCondition as FilterTextValue\"\n :filter=\"currentFilter as IBaseFilter\"\n :placeholders=\"placeholders\"\n :current-values=\"!activeTag ? currentValues : {}\"\n :use-timezone=\"props.useTimezone\"\n @update:modelValue=\"handleConditionChange\"\n />\n <mc-filter-type-range\n v-else-if=\"isCurrentComponentIsRange\"\n :model-value=\"currentCondition as IFilterRangeValue\"\n :filter=\"currentFilter as IRangeFilter\"\n :placeholders=\"placeholders\"\n :current-values=\"!activeTag ? currentValues : {}\"\n :use-timezone=\"props.useTimezone\"\n @update:modelValue=\"handleConditionChange\"\n />\n <mc-button v-if=\"hasButtonAdd\" variation=\"purple-outline\" @click=\"handleStoreTag\">\n {{ placeholders.actions[activeTag ? 'save' : 'add'] }}\n </mc-button>\n </template>\n </div>\n </div>\n <mc-filter-tags\n :model-value=\"currentValuesName\"\n :filters=\"filters\"\n :placeholders=\"placeholders\"\n :active-tag=\"activeTag\"\n :use-timezone=\"props.useTimezone\"\n @tag-change=\"(payload: IFilterParsedValueFilterName) => onTagsChange(payload)\"\n @tag-click=\"(payload: IFilterTag) => onTagClick(payload)\"\n @clear=\"handleClearAllTags\"\n />\n <section class=\"mc-filter__body-fast-tags-wrapper\">\n <mc-tooltip\n v-for=\"(tag, i) in fastFilters\"\n :key=\"i\"\n :content=\"tag.description || ''\"\n :placement=\"TooltipPositions.Top\"\n :size=\"TooltipSizes.S\"\n >\n <mc-chip variation=\"gray-outline\" text-color=\"black\" :size=\"ChipSize.S\" @click=\"handlerSetFastFilter(tag)\">\n {{ tag.name }}\n </mc-chip>\n </mc-tooltip>\n </section>\n <div class=\"mc-filter__body-bottom\">\n <div class=\"mc-filter__body-bottom-left\">\n <mc-button\n :disabled=\"isDisableConfirmButton\"\n :loading=\"buttonConfirmIsLoading\"\n :size=\"ButtonSize.S\"\n @click=\"handleConfirm\"\n >\n {{ placeholders.actions.confirm }}\n </mc-button>\n <mc-button\n v-if=\"activePreset\"\n variation=\"red-outline\"\n :size=\"ButtonSize.S\"\n @click=\"() => handleDeletePreset(activePreset)\"\n >\n {{ placeholders.actions.delete_preset }}\n <template #icon-append>\n <mc-svg-icon name=\"delete\" size=\"250\" color=\"red\" />\n </template>\n </mc-button>\n </div>\n <div class=\"mc-filter__body-bottom-right\">\n <mc-title class=\"mc-filter__preset-input-title\">\n {{ placeholders.create_preset }}\n <template #icon-append>\n <mc-tooltip\n :content=\"placeholders.enter_preset_tooltip\"\n :placement=\"TooltipPositions.Top\"\n :size=\"TooltipSizes.S\"\n >\n <mc-svg-icon name=\"help_solid\" size=\"250\" color=\"outline-gray\" />\n </mc-tooltip>\n </template>\n </mc-title>\n <mc-field-text\n v-model=\"newPresetName\"\n :placeholder=\"placeholders.enter_preset_name\"\n :max-length=\"20\"\n class=\"mc-filter__preset-input\"\n name=\"preset_name\"\n />\n <mc-button\n :disabled=\"buttonCreateIsDisable\"\n variation=\"purple-outline\"\n :size=\"ButtonSize.S\"\n @click=\"handleCreatePreset\"\n >\n {{ placeholders.actions.create }}\n </mc-button>\n </div>\n </div>\n </div>\n </component>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use 'sass:color' as sasscolor;\n\n.mc-filter {\n $block-name: &;\n flex-grow: 1;\n min-width: 0;\n &__header {\n display: flex;\n @include child-indent-right($space-100);\n }\n\n &__presets {\n position: relative;\n flex-grow: 1;\n min-width: 0;\n &::after {\n @include pseudo();\n @include position(null, 0 0 0 null);\n width: $size-1000;\n background: linear-gradient(90deg, hsla(0, 0%, 100%, 0) 0, $color-white);\n pointer-events: none;\n }\n\n &-inner {\n display: flex;\n flex-wrap: nowrap;\n overflow-x: auto;\n height: calc(#{$space-500} + 2px);\n @include child-indent-right($space-100);\n & {\n @include hide-scrollbar();\n }\n &::after {\n @include pseudo(block, static);\n min-width: $space-300;\n }\n }\n }\n\n &__body {\n padding: $space-200 $space-200 $space-300 $space-200;\n background-color: $color-hover-gray;\n @include child-indent-bottom($space-200);\n &-top {\n display: flex;\n @include child-indent-right($space-400);\n\n &-left,\n &-right {\n @include child-indent-right($space-100);\n }\n &-left {\n display: flex;\n align-items: flex-end;\n }\n }\n &-bottom {\n display: flex;\n align-items: center;\n justify-content: space-between;\n @include child-indent-right($space-400);\n\n &-left {\n > *:not(:first-child) {\n margin-inline-start: $space-200;\n }\n }\n &-right {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n @include child-indent-right($space-100);\n .mc-title,\n .mc-tooltip-target {\n display: inline-flex;\n align-items: center;\n }\n }\n .mc-button {\n &--disabled {\n opacity: 1;\n background-color: sasscolor.scale($color-dark-gray, $lightness: 80%);\n color: $color-dark-gray;\n border-color: sasscolor.scale($color-dark-gray, $lightness: 100%);\n .mc-button__background {\n display: none;\n }\n }\n }\n }\n &-fast-tags-wrapper {\n margin: -($space-50);\n & > .mc-tooltip-target {\n .mc-chip {\n cursor: pointer;\n margin: calc(#{$space-100} / 2) calc(#{$space-50} / 2);\n &:hover {\n background-color: $color-outline-gray;\n }\n }\n }\n }\n }\n &__main-select,\n &__preset-input {\n width: 270px;\n }\n &__preset-input-title {\n width: auto;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McChip } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport type { ChipVariationUnion } from '@/types'\nimport { ChipSize, Weights } from '@/enums'\nimport { type IFilterTag } from '@/types/IFilter'\n\nconst emit = defineEmits<{\n (e: 'close'): void\n}>()\n\nconst props = defineProps({\n /**\n * Объект тэга\n */\n tag: {\n type: Object as PropType<IFilterTag>,\n required: true\n },\n /**\n * Закрывающийся\n */\n closable: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Активный\n */\n isActive: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst computedCategory = computed((): string => {\n const append = props.tag.title ? ':' : ''\n return `${props.tag.categoryName}${append}`\n})\n\nconst computedVariation = computed((): ChipVariationUnion => {\n return props.closable ? 'purple-invert' : 'hover-gray'\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-filter-chip': true,\n 'mc-filter-chip--closable': props.closable,\n 'mc-filter-chip--is-active': props.isActive\n }\n})\n\nconst handleChipClick = (e: Event): void => {\n e.stopPropagation()\n /**\n * Событие по закрытию тэга\n */\n emit('close')\n}\n</script>\n\n<template>\n <mc-chip\n :closable=\"closable\"\n :variation=\"computedVariation\"\n :class=\"classes\"\n :size=\"ChipSize.S\"\n @close=\"handleChipClick\"\n >\n <mc-title v-if=\"tag.categoryName\" :weight=\"Weights.SemiBold\">{{ computedCategory }}</mc-title\n >&nbsp;\n <mc-title v-if=\"tag.title\">{{ tag.title }}</mc-title>\n </mc-chip>\n</template>\n\n<style lang=\"scss\">\n@use 'sass:color' as sasscolor;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/colors' as *;\n.mc-filter-chip {\n $block-name: &;\n border-radius: $space-50;\n &--closable {\n border-radius: $space-150;\n &:hover {\n cursor: pointer;\n background-color: sasscolor.scale($color-purple, $lightness: 60%);\n }\n }\n &--is-active {\n background-color: sasscolor.scale($color-purple, $lightness: 60%);\n }\n .mc-title {\n width: auto;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { dayjs } from '@/utils/dayjs'\n\nimport { McButton, McTooltip, McTitle, McGridRow, McGridCol, McFilterChip } from '@/components'\nimport { computed, type PropType, ref, watch } from 'vue'\nimport { useRandomNumber, useHelper } from '@/composables'\nimport { TooltipPositions, TooltipSizes } from '@/enums'\nimport { FilterRelations, FilterTypes } from '@/enums/Filter'\nimport type {\n FilterConditionName,\n IFilter,\n IFilterTag,\n IFilterPlaceholders,\n IFilterParsedValueFilterName,\n FilterMoreLessConditionName,\n RangeFilterValue,\n DateFilterValue\n} from '@/types/IFilter'\n\nconst helper = useHelper()\nconst randomNumber = useRandomNumber()\n\nconst emit = defineEmits<{\n (e: 'tag-click', value: IFilterTag): void\n (e: 'tag-change', value: IFilterParsedValueFilterName): void\n (e: 'clear'): void\n}>()\nconst props = defineProps({\n /**\n * Данные фильтра\n */\n modelValue: {\n type: Object as PropType<IFilterParsedValueFilterName>,\n default: () => ({})\n },\n /**\n * Типы фильтров\n */\n filters: {\n type: Array as PropType<IFilter[]>,\n required: true,\n default: () => []\n },\n /**\n * Переводы локализаций\n */\n placeholders: {\n type: Object as PropType<IFilterPlaceholders>,\n required: true\n },\n /**\n * Активный тэг\n */\n activeTag: {\n type: Object as PropType<IFilterTag | null>,\n default: () => ({})\n },\n useTimezone: {\n type: Boolean as PropType<boolean>,\n default: true\n }\n})\n\nconst simpleValues = ref<IFilterParsedValueFilterName>({})\nconst relationValues = ref<IFilterParsedValueFilterName>({})\nconst prettyActiveTag = ref<IFilterTag | null>(null)\n\nconst fastFilterTags = computed((): IFilterTag[] => {\n return simpleTags.value.filter((st) => st && st.type === FilterTypes.Fast)\n})\n\nconst tagsWithoutFast = computed(() => {\n return simpleTags.value.filter((st) => st && st.type !== FilterTypes.Fast)\n})\n\nconst simpleTags = computed((): IFilterTag[] => {\n const tags: IFilterTag[] = []\n !helper.isEmpty(simpleValues.value) &&\n Object.entries(simpleValues.value).forEach(([key, value]) => {\n const _key = key as string\n let _value = value as FilterConditionName\n\n const filter: IFilter = props.filters.find((f) => f.value === _key) || ({} as IFilter)\n if (filter && filter.type === FilterTypes.Fast) {\n tags.push({\n id: randomNumber.timestamp(5),\n categoryName: filter?.name,\n category: _key,\n type: FilterTypes.Fast\n } as IFilterTag)\n } else if (filter) {\n _value = value as FilterMoreLessConditionName\n const from = _value.more ? `${props.placeholders.from} ${getFormattedVal(_value.more, filter)}` : ''\n\n const to = _value.less\n ? `${props.placeholders.to} ${getFormattedVal(\n filter.type === FilterTypes.Date\n ? props.useTimezone\n ? dayjs(_value.less).subtract(1, 'days').format()\n : dayjs(_value.less).format()\n : _value.less,\n filter\n )}`\n : ''\n const space = from && to ? ' ' : ''\n const title = typeof value === 'object' ? `${from}${space}${to}`.toLowerCase() : value\n tags.push({\n id: randomNumber.timestamp(5),\n categoryName: filter?.name,\n title,\n value,\n category: _key\n } as IFilterTag)\n }\n })\n return tags\n})\n\nconst relationRows = computed((): IFilterTag[][] => {\n let tags: IFilterTag[][] = []\n\n if (!helper.isEmpty(relationValues.value)) {\n tags = Object.entries(relationValues.value).map(([relationKey, relationVal]) => {\n const _relationKey = relationKey as string\n const _relationVal = relationVal as IFilterParsedValueFilterName\n\n if (relationKey === FilterRelations.Exists) {\n const empties: IFilterTag[] = Object.keys(_relationVal).map((key) => {\n const filter = props.filters.find((f) => f.value === key)\n return {\n id: randomNumber.timestamp(5),\n categoryName: filter?.name,\n value: key,\n category: key,\n relationKey,\n closable: true\n } as IFilterTag\n })\n const head = {\n id: randomNumber.timestamp(5),\n categoryName: props.placeholders.actions.empty,\n relationKey: FilterRelations.Exists\n } as IFilterTag\n\n return [head, ...empties]\n }\n const values: IFilterTag[] = []\n Object.entries(_relationVal).forEach(([categoryKey, categoryVal]) => {\n const _categoryKey = categoryKey as string\n const _categoryVal = categoryVal as FilterConditionName\n\n const filter: IFilter = props.filters.find((f) => f.value === _categoryKey) || ({} as IFilter)\n Object.entries(_categoryVal).forEach(([key, val]) => {\n values.push({\n id: randomNumber.timestamp(5),\n categoryName: filter?.name,\n title: val,\n value: key,\n category: _categoryKey,\n relationKey,\n closable: true\n } as IFilterTag)\n })\n })\n const head = {\n id: randomNumber.timestamp(5),\n //@ts-ignore\n categoryName: props.placeholders.actions?.[_relationKey],\n relationKey\n } as IFilterTag\n\n return [head, ...values]\n })\n }\n return tags.filter((t) => t.length > 1)\n})\n\nconst hasButtonClear = computed(() => {\n return relationRows.value.length || simpleTags.value.length\n})\n\nconst splitTags = (value: FilterConditionName) => {\n simpleValues.value = {}\n relationValues.value = {}\n if (helper.isEmpty(value)) return\n addInitTags(value)\n}\n\nconst addInitTags = (parentVal: FilterConditionName, parentKey?: string) => {\n const relationKeys = [FilterRelations.Is, FilterRelations.IsNot, FilterRelations.Exists]\n\n for (let [key, val] of Object.entries(parentVal)) {\n if (relationKeys.includes(key as FilterRelations)) {\n relationValues.value[key] = {\n ...((relationValues.value[key] || {}) as object),\n ...(parentKey ? { [parentKey]: val } : {})\n } as FilterConditionName\n continue\n }\n if (val.constructor !== Object && parentKey) {\n simpleValues.value[parentKey] = parentVal\n continue\n }\n const filter = props.filters.find((f) => f.value === key)\n if (filter && filter.type === FilterTypes.Fast) {\n simpleValues.value[key] = { value: key } as FilterConditionName\n continue\n }\n val && addInitTags(val, key)\n }\n}\n\nconst onTagClick = (tag: IFilterTag) => {\n prettyActiveTag.value = helper.isEqual(prettyActiveTag.value, tag) ? null : tag\n /**\n * Событие по клику на тэг\n */\n emit('tag-click', tag)\n}\nconst onTagClose = (tag: IFilterTag, relationKey?: FilterRelations) => {\n const value = helper.cloneDeep(props.modelValue)\n switch (relationKey) {\n case FilterRelations.Exists:\n delete value[tag.category][relationKey]\n break\n case FilterRelations.Is:\n case FilterRelations.IsNot:\n //@ts-ignore\n delete value[tag.category][relationKey][tag.value]\n if (helper.isEmpty(value[tag.category][relationKey])) {\n delete value[tag.category][relationKey]\n }\n break\n default:\n delete value[tag.category]\n break\n }\n\n if (helper.isEmpty(value[tag.category])) {\n delete value[tag.category]\n }\n /**\n * Событие по изменению набора тэгов\n */\n emit('tag-change', value as IFilterParsedValueFilterName)\n}\n\nconst handleClear = () => {\n /**\n * Событие по очистке всех тэгов\n */\n emit('clear')\n}\n\nconst getFormattedVal = (val: RangeFilterValue | DateFilterValue, filter: IFilter) => {\n switch (filter.type) {\n case FilterTypes.Date:\n return dayjs(val).format('DD.MM.YYYY')\n case FilterTypes.Range:\n return getFormattedNum(val)\n default:\n return val\n }\n}\n\nconst getFormattedNum = (num: RangeFilterValue) => {\n return num\n}\n\nconst checkTagIsActive = (tag: IFilterTag) => {\n return helper.isEqual(prettyActiveTag.value, tag)\n}\n\nwatch(\n () => props.modelValue,\n (val) => {\n splitTags(val)\n },\n { deep: true, immediate: true }\n)\n\nwatch(\n () => props.activeTag,\n (val) => {\n prettyActiveTag.value = val\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div class=\"mc-filter-tags\">\n <mc-title>{{ props.placeholders.added_filters }}</mc-title>\n <div class=\"mc-filter-tags__body\">\n <div class=\"mc-filter-tags__body-left\">\n <mc-grid-row v-if=\"tagsWithoutFast.length\" :gutter-x=\"4\" :gutter-y=\"8\">\n <mc-grid-col v-for=\"tag in tagsWithoutFast\" :key=\"tag.id\">\n <mc-filter-chip\n :tag=\"tag\"\n :is-active=\"checkTagIsActive(tag)\"\n closable\n @click=\"() => onTagClick(tag)\"\n @close=\"() => onTagClose(tag)\"\n />\n </mc-grid-col>\n </mc-grid-row>\n <template v-if=\"relationRows.length\">\n <mc-grid-row v-for=\"(row, index) in relationRows\" :key=\"index\" :gutter-x=\"4\" :gutter-y=\"8\">\n <mc-grid-col v-for=\"tag in row\" :key=\"tag.id\">\n <mc-filter-chip\n :tag=\"tag\"\n :is-active=\"checkTagIsActive(tag)\"\n :closable=\"tag.closable\"\n @click=\"() => onTagClick(tag)\"\n @close=\"() => onTagClose(tag, row[0].relationKey)\"\n />\n </mc-grid-col>\n </mc-grid-row>\n </template>\n <mc-grid-row v-if=\"fastFilterTags.length\" :gutter-x=\"4\" :gutter-y=\"8\">\n <mc-grid-col v-for=\"tag in fastFilterTags\" :key=\"tag.id\">\n <mc-tooltip :content=\"tag.description || ''\" :placement=\"TooltipPositions.Top\" :size=\"TooltipSizes.S\">\n <mc-filter-chip :tag=\"tag\" closable @close=\"() => onTagClose(tag)\" />\n </mc-tooltip>\n </mc-grid-col>\n </mc-grid-row>\n </div>\n <div class=\"mc-filter-tags__body-right\">\n <mc-button v-if=\"hasButtonClear\" variation=\"dark-gray-outline\" @click=\"handleClear\">\n {{ placeholders.actions.clear }}\n </mc-button>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/border-radius' as *;\n.mc-filter-tags {\n $block-name: &;\n @include child-indent-bottom($space-100);\n &__body {\n display: flex;\n justify-content: space-between;\n padding: $space-100;\n border: 1px solid $color-outline-gray;\n border-radius: $radius-100;\n background-color: $color-white;\n min-height: $space-500;\n &-left {\n flex-grow: 1;\n }\n &-right {\n margin-inline-start: $space-100;\n .mc-button {\n padding: $space-50 $space-150;\n height: $space-300;\n }\n }\n .mc-grid-row {\n &:not(:last-child) {\n margin-bottom: $space-50 !important;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport McDatepicker from '@/components/elements/McDatepicker/McDatepicker.vue'\nimport { computed, type PropType } from 'vue'\nimport type { IBaseFilter, IFilterCondition, IFilterDateValue } from '@/types/IFilter'\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: IFilterCondition): void\n}>()\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n type: Object as PropType<IFilterDateValue>,\n default: () => ({}) as IFilterDateValue\n },\n /**\n * Объект выбранного\n * фильтра\n */\n filter: {\n type: Object as PropType<IBaseFilter>,\n default: () => ({})\n },\n /**\n * Переводы локализаций\n */\n placeholders: {\n type: Object,\n required: true\n },\n useTimezone: {\n type: Boolean as PropType<boolean>,\n default: true\n }\n})\n\nconst period = computed({\n get() {\n return props.modelValue ? [props.modelValue.more, props.modelValue.less] : []\n },\n set(val) {\n const period: IFilterDateValue = { more: val?.[0], less: val?.[1] }\n /**\n * Событие по изменению периода\n */\n emit('update:modelValue', { value: period })\n }\n})\n</script>\n\n<template>\n <mc-datepicker\n v-model=\"period\"\n :placeholders=\"placeholders.calendar\"\n :placeholder=\"filter.placeholder || placeholders.choose\"\n :use-timezone=\"props.useTimezone\"\n name=\"condition_dates\"\n class=\"mc-filter-type-date\"\n range\n />\n</template>\n\n<style lang=\"scss\">\n.mc-filter-type-date {\n $block-name: &;\n width: 300px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McFieldText } from '@/components'\nimport type { IFilterCondition, IFilterPlaceholders, IFilterRangeValue, IRangeFilter } from '@/types/IFilter.js'\nimport { computed, type PropType, ref, watch } from 'vue'\nimport { InputTypes } from '@/enums'\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: IFilterCondition): void\n}>()\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n type: Object as PropType<IFilterRangeValue>,\n default: () => ({\n more: null,\n less: null\n } as IFilterRangeValue)\n },\n /**\n * Объект выбранного\n * фильтра\n */\n filter: {\n type: Object as PropType<IRangeFilter>,\n default: () => ({})\n },\n /**\n * Переводы локализаций\n */\n placeholders: {\n type: Object as PropType<IFilterPlaceholders>,\n required: true\n }\n})\n\nconst currentMore = ref<string | number | null>(null)\nconst currentLess = ref<string | number | null>(null)\n\nconst more = computed<string | number | null>({\n get() {\n return props.modelValue?.more\n },\n set(val) {\n currentMore.value = val || null\n emitValue()\n }\n})\n\nconst less = computed<string | number | null>({\n get() {\n return props.modelValue?.less\n },\n set(val) {\n currentLess.value = val || null\n emitValue()\n }\n})\n\nwatch(\n () => props.modelValue,\n (val: IFilterRangeValue): void => {\n if (val) {\n currentMore.value = props.modelValue.more || null\n currentLess.value = props.modelValue.less || null\n }\n },\n { deep: true }\n)\n\nconst hasValue = (val: string | number | null) => {\n return val || Number.isInteger(val)\n}\n\nconst emitValue = () => {\n const hasMore = hasValue(currentMore.value)\n const hasLess = hasValue(currentLess.value)\n const hasMin = props.filter.min && hasValue(props.filter.min)\n const hasMax = props.filter.max && hasValue(props.filter.max)\n\n let more = hasMore ? Number(currentMore.value) : null\n let less = hasLess ? Number(currentLess.value) : null\n\n if (props.filter.min && more && more < props.filter.min && hasMin) {\n more = props.filter.min\n }\n if (props.filter.max && less && less > props.filter.max && hasMax) {\n less = props.filter.max\n }\n if (props.filter.max && more && more > props.filter.max && hasMax) {\n more = props.filter.max\n }\n if (props.filter.min && less && less < props.filter.min && hasMin) {\n less = props.filter.min\n }\n const result: IFilterRangeValue = {\n more: more || null,\n less: less || null\n }\n currentLess.value = less\n currentMore.value = more\n\n /**\n * Событие по изменению интервала\n */\n emit('update:modelValue', { value: result })\n}\n</script>\n\n<template>\n <div class=\"mc-filter-type-range\">\n <mc-field-text\n v-model=\"more\"\n :placeholder=\"placeholders.from.toLowerCase()\"\n :type=\"InputTypes.AmountFormat\"\n name=\"range_more\"\n />\n <mc-field-text\n v-model=\"less\"\n :placeholder=\"placeholders.to.toLowerCase()\"\n :type=\"InputTypes.AmountFormat\"\n name=\"range_less\"\n />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/spacings' as *;\n.mc-filter-type-range {\n $block-name: &;\n display: flex;\n @include child-indent-right($space-100);\n .mc-field-text {\n width: 146px;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McButton, McTitle, McFieldSelect, McFieldText } from '@/components'\nimport { computed, type PropType, ref, watch, nextTick } from 'vue'\nimport type {\n IFilterPlaceholders,\n FilterRelationValue,\n IRelationFilter,\n FilterOption,\n IFilterParsedValueFilter,\n FilterConditionValue,\n FilterRelationName,\n IFilterCondition\n} from '@/types'\nimport { FilterRelations } from '@/enums'\nimport { useHelper } from '@/composables'\nimport { useDebounceFn } from '@vueuse/core'\n\nconst helper = useHelper()\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: IFilterCondition): void\n}>()\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n type: Object as PropType<FilterRelationValue>,\n default: () => ({})\n },\n /**\n * Объект выбранного\n * фильтра\n */\n filter: {\n type: Object as PropType<IRelationFilter>,\n default: () => ({})\n },\n /**\n * Переводы локализаций\n */\n placeholders: {\n type: Object as PropType<IFilterPlaceholders>,\n required: true\n },\n /**\n * Текущее значение\n * добавленных фильтров\n */\n currentValues: {\n type: Object as PropType<IFilterParsedValueFilter>,\n default: () => ({})\n }\n})\nconst debounce = useDebounceFn((method) => {\n method()\n}, 100)\nconst relations = ref<FilterRelations[]>(Object.values(FilterRelations))\nconst relationType = ref<FilterRelations>(FilterRelations.Is)\nconst ajaxOptions = ref<FilterOption[]>([])\nconst loading = ref<boolean>(false)\n\nconst component = computed(() => {\n return props.filter.is_text ? McFieldText : McFieldSelect\n})\n\nconst computedPlaceholder = computed(() => {\n return props.filter.placeholder || props.filter.is_text ? props.placeholders.enter : props.placeholders.choose\n})\n\nconst isAjax = computed((): boolean => {\n return props.filter.getAjaxOptions?.constructor === Function\n})\n\nconst computedOptions = computed(() => {\n let options: FilterOption[] = isAjax.value ? ajaxOptions.value : props.filter.options || []\n\n if (props.currentValues[props.filter.value]) {\n const category: FilterConditionValue = props.currentValues[props.filter.value] || ({} as FilterRelationValue)\n\n let selected: FilterConditionValue[] = []\n for (let [key, val] of Object.entries(category)) {\n if (key === FilterRelations.Exists) {\n return []\n }\n selected = [...selected, ...(Array.isArray(val) ? val : [[val]])]\n }\n\n options = options.filter((o) => !selected.includes(String(o.value)))\n }\n\n return options\n})\n\nconst selectedOptionValue = computed<FilterRelationValue>({\n get() {\n let val: FilterConditionValue = props.modelValue\n if (val) {\n for (let [relationKey, relationVal] of Object.entries(props.modelValue)) {\n let _relationKey = relationKey as string\n let _relationVal = relationVal as string\n\n if (_relationKey === FilterRelations.Exists) {\n val = ''\n } else {\n val = _relationVal?.[0] || ''\n }\n }\n if (isAjax.value && val) {\n addAjaxOption(val as FilterRelationValue)\n }\n }\n return val as FilterRelationValue\n },\n set(val: FilterRelationValue) {\n if (relationType.value === FilterRelations.Exists) return\n setValue(val)\n }\n})\n\nconst changeRelationType = (relation: FilterRelations): void => {\n if (relationType.value === relation) return\n relationType.value = relation\n setValue(selectedOptionValue.value)\n}\nconst setAjaxOptions = async (value: string): Promise<void> => {\n loading.value = true\n ajaxOptions.value = props.filter.getAjaxOptions && (await props.filter.getAjaxOptions(value))\n loading.value = false\n}\n\nconst addAjaxOption = async (value: FilterRelationValue): Promise<void> => {\n const option = props.filter.getAjaxOne && (await props.filter.getAjaxOne(value))\n ajaxOptions.value = helper.uniqWith([...ajaxOptions.value, option], helper.isEqual)\n}\n\nconst handleSearchChange = (value: string | unknown): void => {\n if (!isAjax.value || !value) return\n debounce(() => setAjaxOptions(value as string))\n}\n\nconst setValue = (value: FilterRelationValue): void => {\n let currentValue: FilterRelationValue | null = null\n let currentValueName: FilterRelationName | null = null\n const hasVal = value || Number.isInteger(value)\n if (relationType.value !== FilterRelations.Exists && hasVal) {\n const name = props.filter.is_text\n ? value\n : computedOptions.value.find((o) => String(o.value) === String(value))?.name\n currentValue = { [relationType.value]: [String(value)] }\n currentValueName = { [relationType.value]: { [String(value)]: name } }\n }\n\n if (relationType.value === FilterRelations.Exists && !props.currentValues[props.filter.value]) {\n currentValue = { [FilterRelations.Exists]: 0 }\n currentValueName = { [FilterRelations.Exists]: null }\n }\n /**\n * Событие по изменению значения\n */\n\n const payload: IFilterCondition = {\n value: currentValue as FilterRelationValue,\n valueName: currentValueName as FilterRelationName\n }\n emit('update:modelValue', payload)\n}\n\nwatch(\n () => props.modelValue,\n (val): void => {\n if (val) {\n for (let relationKey of Object.keys(val)) {\n relationType.value = relationKey as FilterRelations\n }\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.filter,\n (): void => {\n relationType.value = FilterRelations.Is\n nextTick(() => (ajaxOptions.value = []))\n }\n)\n</script>\n\n<template>\n <component\n :is=\"component\"\n v-model=\"selectedOptionValue as string\"\n :options=\"computedOptions\"\n :internal-search=\"!isAjax\"\n :placeholder=\"computedPlaceholder\"\n :loading=\"loading\"\n :disabled=\"relationType === FilterRelations.Exists\"\n hide-selected\n class=\"mc-filter-type-relation\"\n :name=\"`relation_${props.filter.type}`\"\n @search-change=\"handleSearchChange\"\n >\n <template #header>\n <div class=\"mc-filter-type-relation__header\">\n <mc-title>{{ placeholders.condition }}</mc-title>\n <div class=\"mc-filter-type-relation__buttons\">\n <mc-button\n v-for=\"relation in relations\"\n :key=\"relation\"\n :variation=\"relationType === relation ? 'purple' : 'dark-gray-outline'\"\n @click=\"() => changeRelationType(relation)\"\n >\n {{ placeholders.actions[`${relation === FilterRelations.Exists ? 'empty' : relation}`] }}\n </mc-button>\n </div>\n </div>\n </template>\n </component>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/sizes' as *;\n.mc-filter-type-relation {\n $block-name: &;\n width: 300px;\n &__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: -$space-50;\n margin-top: -$space-50;\n }\n &__buttons {\n display: flex;\n @include child-indent-right($space-50);\n .mc-button {\n height: $size-300;\n padding: $space-50 $space-150;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McFieldText } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport type { FilterTextValue, IBaseFilter, IFilterCondition, IFilterPlaceholders } from '@/types'\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: IFilterCondition): void\n}>()\nconst props = defineProps({\n /**\n * Значение\n */\n modelValue: {\n type: [String, Number] as PropType<FilterTextValue>,\n default: null\n },\n /**\n * Объект выбранного\n * фильтра\n */\n filter: {\n type: Object as PropType<IBaseFilter>,\n default: () => ({})\n },\n /**\n * Переводы локализаций\n */\n placeholders: {\n type: Object as PropType<IFilterPlaceholders>,\n required: true\n }\n})\n\nconst text = computed({\n get(): FilterTextValue {\n return props.modelValue\n },\n set(val: FilterTextValue) {\n /**\n * Событие по изменению значения\n */\n emit('update:modelValue', { value: val })\n }\n})\n</script>\n\n<template>\n <mc-field-text\n v-model=\"text\"\n :placeholder=\"filter.placeholder || placeholders.enter\"\n class=\"mc-filter-type-text\"\n name=\"mc_filter_type_text\"\n />\n</template>\n\n<style lang=\"scss\">\n.mc-filter-type-text {\n $block-name: &;\n width: 300px;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { adaptiveAdditionalProps, adaptivePropsParams, adaptivePropsSizes } from '@/utils/mcGridColAdaptiveProps'\nimport { computed, inject } from 'vue'\nimport type { IGridGutters } from '@/types/IGrid'\nimport type { ColumnSpanUnion } from '@/types/styles/Grid'\nimport { useHelper } from '@/composables'\n\nconst helper = useHelper()\nconst provideData = inject('provideData', { gutterX: 0, gutterY: 0 } as IGridGutters)\n\nconst props = defineProps({\n ...adaptiveAdditionalProps,\n /**\n * Кол-во колонок (всего 12)\n */\n span: { type: [String as () => ColumnSpanUnion] },\n\n /**\n * Очерёдность\n */\n order: { type: Number },\n\n /**\n * Отступ (margin-left)\n */\n offset: { type: Number },\n\n /**\n * Отступ (left)\n */\n push: { type: Number },\n\n /**\n * Отступ (right)\n */\n pull: { type: Number },\n /**\n * Автоматически тянущаяся колонка\n * на всё свободное пространство\n */\n stretchSelf: {\n type: Boolean,\n default: false\n },\n\n /**\n * Основа флекса, которая является начальным размером элемента\n * (указывать с единицами измерения: px, %...)\n */\n basis: {\n type: String,\n default: 'auto'\n }\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n const list = {} as { [key: string]: boolean }\n adaptivePropsParams.forEach((value) => {\n //@ts-ignore\n list[`mc-grid-col--${value}-${props[value]}`] = !!props[value]\n adaptivePropsSizes.forEach((size) => {\n //@ts-ignore\n const sizeValue = props[`${value}${helper.upperFirst(size)}`]\n list[`mc-grid-col--${value}-${size}-${sizeValue}`] = !!sizeValue\n })\n })\n return list\n})\n\nconst styles = computed((): { [key: string]: string | number } => {\n let colStyle = {} as { [key: string]: string | number }\n\n if (provideData.gutterX !== 0) {\n colStyle['padding-left'] = `${provideData.gutterX / 2}px`\n colStyle['padding-right'] = `${provideData.gutterX / 2}px`\n }\n\n if (provideData.gutterY !== 0) {\n colStyle['padding-top'] = `${provideData.gutterY / 2}px`\n colStyle['padding-bottom'] = `${provideData.gutterY / 2}px`\n }\n\n if (props.stretchSelf) {\n colStyle['flex'] = `1 0 ${props.basis}`\n } else if (props.basis !== 'auto') {\n colStyle['flex'] = `0 0 ${props.basis}`\n }\n\n return props.order ? { ...colStyle, order: props.order } : colStyle\n})\n</script>\n\n<template>\n <div :class=\"classes\" :style=\"styles\" class=\"mc-grid-col\">\n <!-- @slot Слот контента -->\n <slot />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '@/assets/styles/mixins' as *;\n@use '@/assets/tokens/media-queries' as *;\n.mc-grid-col {\n $block-name: &;\n box-sizing: border-box;\n $cols: 12;\n\n display: block;\n position: relative;\n max-width: 100%;\n\n @mixin generate-col($viewport: '') {\n @for $i from 1 through $cols {\n &--span#{$viewport}-#{$i} {\n flex: 0 0 calc((#{$i} / #{$cols}) * 100%);\n max-width: calc((#{$i} / #{$cols}) * 100%);\n }\n\n &--push#{$viewport}-#{$i} {\n inset-inline-start: calc((#{$i} / #{$cols}) * 100%);\n }\n\n &--pull#{$viewport}-#{$i} {\n inset-inline-end: calc((#{$i} / #{$cols}) * 100%);\n }\n\n &--offset#{$viewport}-#{$i} {\n margin-inline-start: calc((#{$i} / #{$cols}) * 100%);\n }\n\n &--order#{$viewport}-#{$i} {\n order: #{$i};\n }\n }\n }\n\n @include generate-col('');\n\n @media #{$media-query-xs} {\n @include generate-col('-xs');\n }\n\n @media #{$media-query-s} {\n @include generate-col('-s');\n }\n\n @media #{$media-query-m} {\n @include generate-col('-m');\n }\n\n @media #{$media-query-l} {\n @include generate-col('-l');\n }\n\n @media #{$media-query-xl} {\n @include generate-col('-xl');\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\nimport type { IGridGutters } from '@/types/IGrid'\nimport { ColumnAlignment, ColumnJustifyAlignment } from '@/enums/Grid'\nimport type { ColumnAlignmentUnion, ColumnJustifyAlignmentUnion } from '@/types/styles/Grid'\n\nconst props = defineProps({\n /**\n * Расстояние между колонками по горизонтали\n */\n gutterX: {\n type: Number,\n default: 0\n },\n\n /**\n * Расстояние между колонками по вертикали\n */\n gutterY: {\n type: Number,\n default: 0\n },\n\n /**\n * Выравнивание по горизонтали\n */\n justify: {\n type: String as () => ColumnJustifyAlignmentUnion,\n default: ColumnJustifyAlignment.Left\n },\n\n /**\n * Выравнивание по вертикали\n */\n align: {\n type: String as () => ColumnAlignmentUnion,\n default: ColumnAlignment.Top\n },\n\n /**\n * Автоматически тянущиеся колонки\n */\n stretch: {\n type: Boolean,\n default: false\n },\n\n /**\n * Перенос колонок\n */\n wrap: {\n type: Boolean,\n default: true\n }\n})\n\nprovide('provideData', { gutterX: props.gutterX, gutterY: props.gutterY } as IGridGutters)\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n [`mc-grid-row--justify-${props.justify}`]: !!props.justify,\n [`mc-grid-row--align-${props.align}`]: !!props.align,\n ['mc-grid-row--stretch']: !!props.stretch\n }\n})\n\nconst styles = computed((): { [key: string]: string | number } => {\n let result = {} as { [key: string]: string | number }\n\n if (props.gutterX !== 0) {\n result['margin-left'] = `${-props.gutterX / 2}px`\n result['margin-right'] = `${-props.gutterX / 2}px`\n }\n\n if (props.gutterY !== 0) {\n result['margin-top'] = `${-props.gutterY / 2}px`\n result['margin-bottom'] = `${-props.gutterY / 2}px`\n }\n\n if (props.wrap) {\n result['flex-wrap'] = 'wrap'\n }\n let justify\n switch (props.justify) {\n case 'left':\n justify = 'flex-start'\n break\n case 'right':\n justify = 'flex-end'\n break\n case 'center':\n justify = 'center'\n break\n case 'around':\n justify = 'space-around'\n break\n case 'between':\n justify = 'space-between'\n break\n }\n let align\n switch (props.align) {\n case 'top':\n align = 'flex-start'\n break\n case 'middle':\n align = 'center'\n break\n case 'bottom':\n align = 'flex-end'\n break\n case 'stretch':\n align = 'stretch'\n break\n }\n if (align) result['--mc-grid-row-align'] = align\n if (justify) result['--mc-grid-row-justify'] = justify\n\n return result\n})\n</script>\n\n<template>\n <div class=\"mc-grid-row\" :class=\"classes\" :style=\"styles\">\n <!-- @slot Слот для дочерних mc-grid-col -->\n <slot />\n </div>\n</template>\n\n<style lang=\"scss\">\n.mc-grid-row {\n $block-name: &;\n\n --mc-grid-row-justify: initial;\n --mc-grid-row-align: initial;\n\n display: flex;\n flex-direction: row;\n justify-content: var(--mc-grid-row-justify);\n align-items: var(--mc-grid-row-align);\n &--stretch {\n > .mc-grid-col {\n flex: 1;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { Colors, type ColorTypes, Sizes, type SizeTypes } from '@/types'\nimport { computed } from 'vue'\n\nconst props = defineProps({\n size: {\n type: String as () => SizeTypes,\n default: '500'\n },\n backgroundColor: {\n type: String as () => ColorTypes,\n default: 'white'\n }\n})\nconst styles = computed((): { [key: string]: string } => {\n return {\n '--mc-overlay-color': props.backgroundColor && Colors[props.backgroundColor],\n '--mc-overlay-spinner-size': props.size && Sizes[props.size]\n }\n})\n</script>\n\n<template>\n <section ref=\"overlay\" class=\"mc-overlay\" :style=\"styles\">\n <div class=\"mc-overlay__background\" />\n <section class=\"mc-overlay__spinner\" />\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/z-indexes' as *;\n@use '../../../assets/tokens/colors' as *;\n.mc-overlay {\n $block-name: &;\n --mc-overlay-spinner-size: initial;\n --mc-overlay-color: initial;\n position: absolute;\n top: 0;\n inset-inline-start: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: $z-index-overlay;\n &__background {\n position: absolute;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background-color: var(--mc-overlay-color);\n opacity: 0.85;\n }\n &__spinner {\n display: block;\n border: 2px solid $color-purple;\n border-inline-start-color: transparent;\n border-radius: 50%;\n animation: rotate 1.5s infinite linear;\n\n width: var(--mc-overlay-spinner-size);\n min-width: var(--mc-overlay-spinner-size);\n height: var(--mc-overlay-spinner-size);\n min-height: var(--mc-overlay-spinner-size);\n\n @keyframes rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport type { PreviewSizesUnion } from '@/types/IPreview'\n\nconst props = defineProps({\n /**\n * Размеры:\n * `s, m, l`\n */\n size: {\n type: String as () => PreviewSizesUnion,\n default: 'm'\n }\n})\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-preview': true,\n [`mc-preview--size-${props.size}`]: !!props.size\n }\n})\n</script>\n\n<template>\n <section :class=\"classes\">\n <div v-if=\"$slots.left\" class=\"mc-preview__left\">\n <!-- @slot Слот слева -->\n <slot name=\"left\" />\n </div>\n <div class=\"mc-preview__center\">\n <div class=\"mc-preview__top\">\n <!-- @slot Слот сверху -->\n <slot name=\"top\" />\n </div>\n <div v-if=\"$slots.bottom\" class=\"mc-preview__bottom\">\n <!-- @slot Слот внизу -->\n <slot name=\"bottom\" />\n </div>\n </div>\n <div v-if=\"$slots.right\" class=\"mc-preview__right\">\n <!-- @slot Слот справа -->\n <slot name=\"right\" />\n </div>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n.mc-preview {\n $block-name: &;\n display: flex;\n flex-wrap: nowrap;\n max-width: 100%;\n &__left {\n flex: 0 0 auto;\n &:empty {\n display: none;\n }\n }\n &__center {\n @include layout-flex-fix();\n flex: 1 1 auto;\n align-self: center;\n }\n &__top {\n &:empty {\n display: none;\n }\n }\n &__bottom {\n &:empty {\n display: none;\n }\n }\n &__right {\n flex: 0 0 auto;\n &:empty {\n display: none;\n }\n }\n @mixin previewIndents($indent, $bottom: unset) {\n #{$block-name}__left {\n margin-inline-end: $indent;\n }\n #{$block-name}__right {\n margin-inline-start: $indent;\n }\n @if $bottom {\n #{$block-name}__bottom {\n margin-top: $bottom;\n }\n }\n }\n &--size {\n &-s {\n @include previewIndents($space-50);\n }\n &-m {\n @include previewIndents($space-100);\n }\n &-l {\n @include previewIndents($space-150, $space-50);\n }\n &-xl {\n @include previewIndents($space-200, $space-50);\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, type PropType, provide, reactive, ref, watch } from 'vue'\nimport { McSideBarTop, McSideBarCenter, McSideBarBottom } from '@/components'\n\nimport type {\n IconsListUnion,\n ISideBarApp,\n ISideBarChatra,\n ISideBarMenuItem,\n ISidebarThemeConfig,\n ISidebarThemeConfigProvide,\n TitleVariationsUnion\n} from '@/types'\nimport { defaultThemes } from '@/mocks/sidebar'\nimport { SidebarTheme, TitleVariations } from '@/enums'\n\nconst emit = defineEmits<{\n (e: 'absolute-mode', value: boolean): void\n (e: 'hidden-mode', value: boolean): void\n (e: 'compact', value: boolean): void\n (e: 'chatraClick'): void\n}>()\nconst props = defineProps({\n /**\n * Название сервиса\n *\n */\n logoTitle: {\n type: String as PropType<string>,\n default: 'Dashboard'\n },\n /**\n * Размер текста названия сервиса\n *\n */\n logoTitleVariation: {\n type: String as () => TitleVariationsUnion,\n default: TitleVariations.Subtitle\n },\n /**\n * Путь до изображения\n *\n */\n logoSrc: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Имя иконки\n * заголовка\n */\n logoIcon: {\n type: String as () => IconsListUnion,\n default: ''\n },\n /**\n * Заголовок\n * центрального блока\n */\n menuMainTitle: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Центральное меню\n *\n */\n menuMain: {\n type: Array as PropType<ISideBarMenuItem[]>,\n default: () => []\n },\n /**\n * Каунты для пунктов меню\n * вставляются в пункты с ключем 'count_key'\n *\n */\n counts: {\n type: Object as PropType<Record<string, number | null>>,\n default: () => ({})\n },\n /**\n * Меню приложений\n *\n */\n menuApps: {\n type: Array as PropType<ISideBarApp[]>,\n default: () => []\n },\n /**\n * Config чатры\n *\n */\n chatraConfig: {\n type: Object as PropType<ISideBarChatra>,\n default: () => ({})\n },\n /**\n * Текст кнопки\n * сворачивания меню\n */\n hideText: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Компактный вид\n */\n compact: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Цветовая схема\n */\n variable: {\n type: String as PropType<SidebarTheme>,\n default: SidebarTheme.Black\n },\n /**\n * Ширина сайдбара\n */\n width: {\n type: String as PropType<string>,\n default: '216px'\n },\n /**\n * Ширина компактного сайдбара\n */\n compactWidth: {\n type: String as PropType<string>,\n default: '56px'\n },\n /**\n * Брейкпоинт после которого\n * сайдбар становится абсолютным и появляется затемненный бэкдроп\n */\n absoluteBreakpoint: {\n type: Number as PropType<number>,\n default: null\n },\n /**\n * Брейкпоинт после которого\n * сайдбар полностью прячется\n */\n hiddenBreakpoint: {\n type: Number as PropType<number>,\n default: null\n }\n})\n\nconst is_hidden = ref<boolean>(false)\nconst pretty_compact = ref<boolean>(props.compact)\nconst has_compact_class = ref<boolean>(props.compact)\nconst window_width = ref<number>(0)\n\nconst sideBarClasses = computed((): { [key: string]: boolean } => {\n return {\n 'mc-side-bar--compact': has_compact_class.value,\n [currentThemeConfig.value.className]: true\n }\n})\n\nconst sideBarStyles = computed((): { [key: string]: string } => {\n return {\n overflow: `${is_hidden.value ? 'hidden' : 'visible'}`,\n width: has_compact_class.value ? props.compactWidth : props.width\n }\n})\n\nconst wrapperStyles = computed((): { [key: string]: string | undefined } => {\n const position =\n hiddenMode.value && has_compact_class.value\n ? {\n position: 'absolute',\n left: `-${props.compactWidth}`\n }\n : {}\n\n let width = {\n width: has_compact_class.value ? props.compactWidth : props.width\n }\n if (absoluteMode.value) {\n width.width = props.compactWidth\n }\n if (hiddenMode.value) {\n width.width = '0px'\n }\n return {\n ...width,\n ...position\n }\n})\n\nconst backdropClasses = computed((): { [key: string]: boolean } => {\n return {\n 'mc-side-bar-wrapper__backdrop--full-width':\n !has_compact_class.value && window_width.value < props.absoluteBreakpoint\n }\n})\n\nconst absoluteMode = computed((): boolean => {\n return !!props.absoluteBreakpoint && window_width.value < props.absoluteBreakpoint\n})\n\nconst hiddenMode = computed((): boolean => {\n return !!props.hiddenBreakpoint && window_width.value < props.hiddenBreakpoint\n})\n\nconst currentThemeConfig = computed((): ISidebarThemeConfig => {\n return sidebarThemeConfig.value[props.variable] || sidebarThemeConfig.value[SidebarTheme.Black]\n})\n\nconst sidebarThemeConfig = computed((): Record<SidebarTheme, ISidebarThemeConfig> => {\n return {\n black: defaultThemes.black,\n white: defaultThemes.white\n }\n})\n\nonMounted((): void => {\n if (props.absoluteBreakpoint || (props.hiddenBreakpoint && window)) {\n resize()\n window.addEventListener('resize', resize)\n }\n})\n\nonBeforeUnmount((): void => {\n window.removeEventListener('resize', resize)\n})\n\nconst handleToggleSize = (): void => {\n has_compact_class.value = !has_compact_class.value\n emit('compact', has_compact_class.value)\n}\n\nconst openSideBar = (): void => {\n has_compact_class.value = false\n emit('compact', has_compact_class.value)\n}\n\nconst resize = (): void => {\n window_width.value = window.innerWidth\n}\n\nwatch(\n () => has_compact_class.value,\n (value: boolean): void => {\n if (value) {\n setTimeout((): void => {\n pretty_compact.value = value\n }, 280)\n } else {\n pretty_compact.value = value\n }\n is_hidden.value = true\n setTimeout((): void => {\n is_hidden.value = false\n }, 280)\n }\n)\n\nwatch(\n () => props.compact,\n (value: boolean): void => {\n has_compact_class.value = value\n }\n)\n\nwatch(\n () => absoluteMode.value,\n (value: boolean): void => {\n emit('absolute-mode', value)\n },\n { immediate: true }\n)\n\nwatch(\n () => hiddenMode.value,\n (value: boolean): void => {\n emit('hidden-mode', value)\n },\n { immediate: true }\n)\n\nprovide('provideData', reactive<ISidebarThemeConfigProvide>({ currentThemeConfig: currentThemeConfig.value }))\n</script>\n\n<template>\n <article ref=\"sidebar-wrapper\" class=\"mc-side-bar-wrapper\" :style=\"wrapperStyles\">\n <section class=\"mc-side-bar-wrapper__backdrop\" :class=\"backdropClasses\" @click.stop.prevent=\"handleToggleSize\">\n <div ref=\"sidebar\" class=\"mc-side-bar\" :class=\"sideBarClasses\" :style=\"sideBarStyles\" @click.stop>\n <mc-side-bar-top\n :logo-title=\"logoTitle\"\n :logo-title-variation=\"logoTitleVariation\"\n :logo-src=\"logoSrc\"\n :logo-icon=\"logoIcon\"\n :compact=\"pretty_compact\"\n :menu-apps=\"menuApps\"\n >\n <template #title-append>\n <slot name=\"title-append\" />\n </template>\n </mc-side-bar-top>\n <section class=\"mc-side-bar__scrollable-container\">\n <mc-side-bar-center\n :title=\"menuMainTitle\"\n :menu-main=\"menuMain\"\n :counts=\"counts\"\n :chatra-config=\"chatraConfig\"\n :compact=\"pretty_compact\"\n @handlerChatraClick=\"emit('chatraClick')\"\n @open-side-bar=\"openSideBar\"\n />\n <mc-side-bar-bottom\n :hide-text=\"hideText\"\n :compact=\"pretty_compact\"\n :hidden-mode=\"hiddenMode\"\n :sidebar-width=\"width\"\n @toggle-size=\"handleToggleSize\"\n >\n <template #bottom-message>\n <slot name=\"bottom-message\" />\n </template>\n </mc-side-bar-bottom>\n </section>\n </div>\n </section>\n </article>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/colors' as *;\n.mc-side-bar {\n $block-name: &;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n padding: $space-250 $space-100 $space-400;\n transition: width 300ms ease;\n overflow-x: hidden;\n overflow-y: auto;\n @include child-indent-bottom($space-400);\n &--color-theme-black {\n background-color: $color-black;\n }\n &--color-theme-white {\n background-color: $color-white;\n border-inline-end: 1px solid $color-hover-gray;\n }\n &__scrollable-container {\n overflow-y: auto;\n overflow-x: hidden;\n height: 100%;\n display: flex;\n flex-direction: column;\n @include hide-scrollbar;\n }\n &-wrapper {\n height: 100%;\n transition: width 300ms ease;\n &__backdrop {\n position: absolute;\n background-color: rgba($color-black, 0.6);\n z-index: 25;\n height: inherit;\n .mc-side-bar {\n height: inherit;\n }\n &--full-width {\n width: 100%;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McSideBarButton } from '@/components'\nimport { computed, inject, type PropType } from 'vue'\nimport type { ButtonVariationUnion, ColorTypes, ISidebarThemeConfigProvide } from '@/types'\nimport { defaultThemes } from '@/mocks/sidebar'\nimport { SidebarTheme } from '@/enums'\n\nconst provideData = inject<ISidebarThemeConfigProvide>('provideData', {} as ISidebarThemeConfigProvide)\nconst emit = defineEmits<{\n (e: 'toggle-size', value: boolean): void\n}>()\nconst props = defineProps({\n /**\n * Текст кнопки\n * сворачивания меню\n */\n hideText: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Компактный вид\n */\n compact: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n hiddenMode: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n sidebarWidth: {\n type: String as PropType<string>,\n default: null\n }\n})\n\nconst themeConfig = computed(() => {\n return provideData.currentThemeConfig || defaultThemes[SidebarTheme.Black]\n})\n\nconst closeButtonProps = computed((): { variable: ButtonVariationUnion; secondaryColor: ColorTypes } => {\n return themeConfig.value?.closeButton\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-side-bar-bottom--compact': props.compact\n }\n})\n\nconst messageStyles = computed((): { [key: string]: string } => {\n return {\n minWidth: props.sidebarWidth\n }\n})\n\nconst handleClick = (): void => {\n emit('toggle-size', !props.compact)\n}\n</script>\n\n<template>\n <div class=\"mc-side-bar-bottom\" :class=\"classes\">\n <div v-if=\"!compact && $slots['bottom-message']\" class=\"mc-side-bar-bottom__slot-message\" :style=\"messageStyles\">\n <slot name=\"bottom-message\" />\n </div>\n <mc-side-bar-button\n v-if=\"!hiddenMode\"\n class=\"mc-side-bar-bottom__hide-button\"\n icon=\"arrow_backward\"\n :title=\"hideText\"\n :compact=\"compact\"\n :variation=\"closeButtonProps.variable\"\n :secondary-color=\"closeButtonProps.secondaryColor\"\n @click.stop.prevent=\"handleClick\"\n />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/tokens/durations' as *;\n@use '../../../../assets/tokens/spacings' as *;\n.mc-side-bar-bottom {\n $block-name: &;\n\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n justify-content: flex-end;\n min-height: max-content;\n\n &__hide-button {\n .mc-side-bar-button__icon {\n transition: transform $duration-s;\n }\n }\n\n &--compact {\n #{$block-name}__hide-button {\n .mc-side-bar-button__icon {\n transform: rotate(180deg);\n }\n }\n }\n &__slot-message {\n margin-inline-start: -$space-100;\n margin-inline-end: -$space-100;\n padding-inline-start: $space-100;\n padding-inline-end: $space-100;\n & + * {\n margin-top: $space-500;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McButton, McSvgIcon, McChip } from '@/components'\nimport type { ButtonVariationUnion, ColorTypes, IconsListUnion, ISidebarThemeConfigProvide } from '@/types'\nimport { computed, inject, type PropType, useAttrs } from 'vue'\nimport { ButtonSize, HorizontalAlignment, SidebarTheme, TooltipPositions } from '@/enums'\nimport { defaultThemes } from '@/mocks/sidebar'\n\nconst attrs = useAttrs()\nconst provideData = inject<ISidebarThemeConfigProvide>('provideData', {} as ISidebarThemeConfigProvide)\nconst props = defineProps({\n /**\n * Если нужна ссылка внутри приложения:\n */\n to: {\n type: Object as PropType<string>,\n default: null\n },\n /**\n * Если нужна обычная ссылка:\n * `https://mcpay.io/`\n */\n href: {\n type: String as PropType<string>,\n default: null\n },\n /**\n * Если нужна иконка\n */\n icon: {\n type: String as () => IconsListUnion,\n default: ''\n },\n /**\n * Если нужен конкретный\n * цвет иконки\n */\n iconColor: {\n type: String as () => ColorTypes,\n default: 'currentColor'\n },\n /**\n * Тайтл кнопки\n */\n title: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Compact size\n */\n compact: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Дизайн:\n * `purple, red, purple-outline, purple-invert, purple-flat и т.д.`\n */\n variation: {\n type: String as () => ButtonVariationUnion\n },\n /**\n * Если нужен другой цвет при взаимодействии\n */\n secondaryColor: {\n type: String as () => ColorTypes\n },\n withTooltip: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n withIndicator: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n isActive: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Additional info\n */\n info: {\n type: [String, Number] as PropType<string | number | null>,\n default: ''\n },\n /**\n * Exact\n *\n */\n exact: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Отключенное состояние\n *\n */\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst themeConfig = computed(() => {\n return provideData.currentThemeConfig || defaultThemes[SidebarTheme.Black]\n})\n\nconst classes = computed(() => {\n return {\n 'mc-side-bar-button': true,\n [`mc-side-bar--${themeConfig.value.mode || 'black'}__button`]: true,\n 'purple-hover': !props.secondaryColor && themeConfig.value.mainMenuLinks.variable === 'black-flat',\n //@ts-ignore\n [attrs.class]: !!attrs.class\n }\n})\n\nconst btnAttrs = computed(() => {\n return {\n ...attrs,\n variation: props.variation || themeConfig.value.mainMenuLinks.variable,\n secondaryColor: props.secondaryColor || themeConfig.value.mainMenuLinks.secondaryColor,\n textAlign: HorizontalAlignment.Left,\n fullWidth: true,\n size: props.compact ? ButtonSize.SCompact : ButtonSize.S,\n href: props.href,\n to: props.to,\n exact: props.exact,\n disabled: props.disabled,\n isActive: props.isActive,\n tooltip: props.compact && props.withTooltip ? props.title : '',\n tooltipPlacement: TooltipPositions.Right\n }\n})\n</script>\n\n<template>\n <mc-button v-bind=\"btnAttrs\" :class=\"classes\">\n <template #icon-prepend>\n <mc-svg-icon v-if=\"icon\" :fill=\"iconColor\" class=\"mc-side-bar-button__icon\" :name=\"icon\" />\n <span v-if=\"icon && compact && (info || withIndicator)\" class=\"mc-side-bar-button__dot\" />\n </template>\n <template v-if=\"!compact\">{{ title }}</template>\n <template v-if=\"!compact\" #icon-append>\n <mc-chip\n v-if=\"info || withIndicator\"\n variation=\"purple\"\n class=\"mc-side-bar-button__chip\"\n :class=\"{ indicator: withIndicator }\"\n >\n {{ withIndicator ? '' : info }}\n </mc-chip>\n </template>\n </mc-button>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/sizes' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/border-radius' as *;\n.mc-side-bar-button {\n $block-name: &;\n &__tooltip {\n width: 100%;\n }\n &__dot {\n @include position(absolute, $space-100 6px null null);\n @include size($size-100);\n background-color: $color-purple;\n border-radius: $radius-circle;\n }\n &__chip {\n &.indicator {\n margin: 6px;\n padding: 0 !important;\n width: $size-150;\n min-height: $size-150;\n }\n }\n &.mc-button {\n padding: $space-100;\n opacity: 1;\n height: auto;\n border-radius: $space-50;\n justify-content: flex-start;\n .mc-svg-icon {\n @include size($size-300);\n }\n &.purple-hover:hover {\n background-color: $color-lighter-purple;\n }\n\n .mc-button__text {\n margin-inline-end: $space-100;\n }\n .mc-button__prepend {\n margin-inline-end: $space-100;\n }\n .mc-button__append {\n margin-inline-start: auto;\n }\n .mc-chip {\n height: auto;\n padding: $space-50 $space-100;\n font-variant-numeric: tabular-nums;\n }\n }\n}\n.mc-side-bar {\n &--black__button {\n &.mc-button--is-active,\n &.mc-button.nuxt-link-active {\n color: $color-white;\n background-color: rgba(92, 102, 112, 0.4);\n pointer-events: auto;\n }\n }\n &--white__button {\n &.mc-button--is-active,\n &.mc-button.nuxt-link-active {\n color: $color-purple;\n background-color: $color-lighter-purple;\n pointer-events: auto;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McTitle, McSideBarButton, McSeparator, McButton, McSvgIcon } from '@/components'\nimport { useRandomNumber } from '@/composables'\nimport { computed, inject, nextTick, onBeforeMount, type PropType, ref, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport type { ISideBarChatra, ISideBarMenuItem, ISideBarMenuItemEnrichment, ISidebarThemeConfigProvide } from '@/types'\nimport { ButtonSize, SidebarTheme } from '@/enums'\nimport McSlideUpDown from '@/components/elements/McSlideUpDown/McSlideUpDown.vue'\nimport { defaultThemes } from '@/mocks/sidebar'\n\nconst route = useRoute()\nconst randomNumber = useRandomNumber()\nconst provideData = inject<ISidebarThemeConfigProvide>('provideData', {} as ISidebarThemeConfigProvide)\nconst emit = defineEmits<{\n (e: 'open-side-bar'): void\n (e: 'handlerChatraClick'): void\n}>()\nconst props = defineProps({\n /**\n * Заголовок\n */\n title: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Центральное меню\n */\n menuMain: {\n type: Array as PropType<ISideBarMenuItem[]>,\n default: () => []\n },\n /**\n * Каунты для пунктов меню\n * вставляются в пункты с ключем 'count_key'\n *\n */\n counts: {\n type: Object as PropType<Record<string, number | null>>,\n default: () => ({})\n },\n /**\n * Id чатры\n *\n */\n chatraConfig: {\n type: Object as PropType<ISideBarChatra>,\n default: () => ({})\n },\n /**\n * Компактный вид\n */\n compact: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst loading = ref<boolean>(true)\nconst preparedMainMenu = ref<ISideBarMenuItemEnrichment[]>([])\n\nconst themeConfig = computed(() => {\n return provideData.currentThemeConfig || defaultThemes[SidebarTheme.Black]\n})\n\nonBeforeMount((): void => {\n setMainMenu()\n})\n\nwatch(\n () => props.menuMain,\n (): void => {\n setMainMenu()\n },\n { deep: true }\n)\nwatch(\n () => props.compact,\n (): void => {\n setMainMenu()\n }\n)\n\n// если переходим на роут с вложенным меню, открываем вложенное меню\nwatch(\n () => route,\n (newRoute, oldRoute): void => {\n loading.value = true\n if (oldRoute.path !== newRoute.path) {\n const target_route = preparedMainMenu.value.find(\n (r) => r.to === newRoute.path || r.menu?.find((childRoute) => childRoute.to === newRoute.path)\n )\n target_route?.menu && !props.compact && (target_route.open = true)\n }\n nextTick(() => {\n preparedMainMenu.value.forEach((mi) => {\n const exact_route = mi.to === newRoute.path\n const route_menu_match_new_route =\n mi.menu && mi.menu.some((mim) => mim.to?.match(newRoute?.path) || newRoute.path?.match(mim.to as string))\n if (!(exact_route || route_menu_match_new_route)) mi.open = false\n })\n loading.value = false\n })\n }\n)\n\nconst getMenuItemHeadClasses = (menuMainItem: ISideBarMenuItemEnrichment) => {\n return {\n open: menuMainItem.open,\n active: menuMainItem.active(),\n 'with-submenu': menuMainItem.menu && menuMainItem.menu.length,\n [`mc-side-bar--${themeConfig.value.mode || 'black'}__button`]: true,\n 'purple-hover': themeConfig.value.mainMenuLinks.variable === 'black-flat',\n [`mc-button--variation-${themeConfig.value.mainMenuLinks.variable}`]: !!themeConfig.value.mainMenuLinks.variable,\n ['mc-side-bar--black__button mc-button nuxt-link-active']:\n menuMainItem.menu && menuMainItem.menu.length && !menuMainItem.open && menuMainItem.active()\n }\n}\n\nconst handlerSidebarItemClick = () => {\n props.compact && emit('open-side-bar')\n}\n\n// заранее формируем меню один раз, так как компьютед излишен и во вторых нужна переменная \"open\" что бы ее тогглить\nconst setMainMenu = (): void => {\n loading.value = true\n preparedMainMenu.value = props.menuMain.map((i: ISideBarMenuItem) => {\n const active = () => {\n return (i.menu && i.menu.some((r) => route?.path?.match(r.to as string))) || !!route?.path?.match(i.to as string)\n }\n\n return {\n id: randomNumber.timestamp(5),\n ...i,\n active,\n indicator: () => i.menu && i.menu.some((r) => !!props.counts?.[r.count_key]),\n open: !props.compact && active()\n } as ISideBarMenuItemEnrichment\n })\n loading.value = false\n}\n</script>\n\n<template>\n <div class=\"mc-side-bar-center\">\n <mc-title v-if=\"title\" class=\"mc-side-bar-center__title\" :color=\"compact ? 'transparent' : 'dark-gray'\">\n {{ title }}\n </mc-title>\n <!-- v-show hides jumping with child menu opening after locale switch -->\n <div v-show=\"!loading\" v-if=\"preparedMainMenu && preparedMainMenu.length\" class=\"mc-side-bar-center__content\">\n <div\n v-for=\"menuMainItem in preparedMainMenu\"\n :key=\"menuMainItem.id\"\n :class=\"{ 'item-active': menuMainItem.active() }\"\n class=\"mc-side-bar-center__content-item item\"\n >\n <div class=\"item__head\" :class=\"getMenuItemHeadClasses(menuMainItem)\" @click=\"handlerSidebarItemClick\">\n <!-- TODO refactor info -->\n <mc-side-bar-button\n :info=\"\n !(menuMainItem.menu && !!menuMainItem.menu.length)\n ? menuMainItem.info || props.counts[menuMainItem.count_key] || null\n : null\n \"\n :href=\"menuMainItem.href\"\n :to=\"menuMainItem.to\"\n :icon=\"menuMainItem.icon\"\n :icon-color=\"menuMainItem.iconColor\"\n :title=\"menuMainItem.name\"\n :compact=\"compact\"\n :is-active=\"menuMainItem.active()\"\n :with-submenu=\"menuMainItem.menu && !!menuMainItem.menu.length\"\n :with-indicator=\"menuMainItem.indicator() && !menuMainItem.open\"\n with-tooltip\n class=\"item__head-button--no-hover\"\n />\n <mc-button\n v-if=\"menuMainItem.menu && menuMainItem.menu.length && !compact\"\n :variation=\"menuMainItem.active() ? 'white-link' : 'gray-link'\"\n :size=\"ButtonSize.MCompact\"\n class=\"item__head-arrow\"\n :class=\"{\n rotate: menuMainItem.active() ? menuMainItem.active() && menuMainItem.open : menuMainItem.open\n }\"\n @click=\"menuMainItem.open = !menuMainItem.open\"\n >\n <template #icon-prepend>\n <mc-svg-icon name=\"arrow_forward\" />\n </template>\n </mc-button>\n </div>\n <mc-slide-up-down\n v-if=\"menuMainItem.menu && menuMainItem.menu.length\"\n class=\"item__submenu\"\n :active=\"menuMainItem.active() ? menuMainItem.active() && menuMainItem.open : menuMainItem.open\"\n >\n <mc-side-bar-button\n v-for=\"(menuItem, i) in menuMainItem.menu\"\n :key=\"i\"\n :info=\"counts[menuItem.count_key]\"\n :href=\"menuItem.href\"\n :to=\"menuItem.to\"\n :icon=\"menuItem.icon\"\n :icon-color=\"menuItem.iconColor\"\n :title=\"menuItem.name\"\n :compact=\"compact\"\n with-tooltip\n />\n </mc-slide-up-down>\n </div>\n </div>\n <mc-separator\n v-if=\"chatraConfig.title\"\n color=\"dark-gray\"\n indent-top=\"150\"\n indent-bottom=\"150\"\n :indent-left=\"compact ? '50' : '100'\"\n :indent-right=\"compact ? '50' : '100'\"\n />\n <mc-side-bar-button\n v-if=\"chatraConfig.title\"\n icon=\"chat_messages\"\n :title=\"chatraConfig.title\"\n :compact=\"compact\"\n with-tooltip\n @click=\"emit('handlerChatraClick')\"\n />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/colors' as *;\n.mc-side-bar-center {\n $block-name: &;\n margin-bottom: $space-150;\n &__title {\n margin: $space-100;\n }\n\n &__content {\n @include child-indent-bottom($space-50);\n .item {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n @include child-indent-bottom($space-50);\n &-active {\n .item__head.active:not(.with-submenu),\n .nuxt-link-exact-active {\n pointer-events: none;\n }\n }\n .with-submenu {\n pointer-events: all !important;\n .item__head {\n &-button--no-hover {\n .mc-button {\n background: none;\n }\n }\n }\n .mc-side-bar-button {\n &__tooltip {\n width: calc(100% - #{$space-250});\n .mc-button {\n &__text {\n margin-inline-end: $space-zero;\n }\n }\n }\n }\n }\n &__head {\n display: flex;\n align-items: center;\n border-radius: 4px;\n\n .mc-button {\n &__background {\n display: none;\n }\n }\n &:hover {\n background-color: rgba($color-gray, 0.1);\n }\n &-arrow {\n &.rotate {\n .mc-svg-icon {\n transform: rotate(90deg);\n }\n }\n .mc-svg-icon {\n transition: all 0.3s ease;\n }\n }\n &-button {\n &--no-hover {\n .mc-button {\n &:hover {\n background-color: unset;\n }\n }\n .mc-side-bar-button__with-submenu {\n background-color: unset;\n }\n &:hover {\n background-color: unset;\n }\n }\n }\n &.active {\n padding: 0;\n border-radius: 4px;\n border: none;\n &.open {\n background-color: unset;\n }\n }\n }\n &__submenu {\n overflow: hidden;\n transition: all 0.3s ease;\n @include child-indent-bottom($space-50);\n .mc-side-bar-button {\n padding-inline-start: $space-500;\n height: 42px;\n }\n &.open {\n max-height: 230px;\n }\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McDropdown, McButton, McSvgIcon, McPreview, McTitle } from '@/components'\nimport { computed, inject, type PropType, ref } from 'vue'\nimport { useHelper } from '@/composables'\nimport { ButtonSize, DropdownPositions, HorizontalAlignment, SidebarTheme, TitleVariations, Weights } from '@/enums'\nimport type {\n ButtonVariationUnion,\n DropdownPositionsUnion,\n IconsListUnion,\n ISideBarApp,\n ISidebarThemeConfig,\n ISidebarThemeConfigProvide,\n TitleVariationsUnion\n} from '@/types'\nimport { defaultThemes } from '@/mocks/sidebar'\n\nconst helper = useHelper()\nconst provideData = inject<ISidebarThemeConfigProvide>('provideData', {} as ISidebarThemeConfigProvide)\nconst props = defineProps({\n /**\n * Меню приложений\n *\n */\n menuApps: {\n type: Array as PropType<ISideBarApp[]>,\n default: () => []\n },\n /**\n * Название сервиса\n *\n */\n logoTitle: {\n type: String as PropType<string>,\n default: 'Dashboard'\n },\n /**\n * Размер текста названия сервиса\n *\n */\n logoTitleVariation: {\n type: String as () => TitleVariationsUnion,\n default: TitleVariations.Subtitle\n },\n /**\n * Путь до изображения\n */\n logoSrc: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Имя иконки\n * заголовка\n */\n logoIcon: {\n type: String as () => IconsListUnion,\n default: ''\n },\n dropdownPosition: {\n type: String as () => DropdownPositionsUnion,\n default: DropdownPositions.Left\n },\n /**\n * Компактный вид\n */\n compact: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst dropIsOpen = ref<boolean>(false)\n\nconst themeConfig = computed((): ISidebarThemeConfig => {\n return provideData.currentThemeConfig || defaultThemes[SidebarTheme.Black]\n})\n\nconst computedMenuApps = computed((): ISideBarApp[] | null => {\n if (helper.isEmpty(props.menuApps)) return null\n return props.menuApps.filter((app) => !Object.prototype.hasOwnProperty.call(app, 'isVisible') || app.isVisible)\n})\n</script>\n\n<template>\n <div class=\"mc-side-bar-top\" :class=\"`mc-side-bar-top--theme-${themeConfig.dropdownActivator}`\">\n <mc-preview v-if=\"!computedMenuApps\">\n <template v-if=\"logoSrc\" #left>\n <img class=\"mc-side-bar-top__img\" :src=\"logoSrc\" width=\"24\" height=\"24\" :alt=\"logoTitle\" />\n </template>\n <template #top>\n <mc-title v-if=\"!compact\" :weight=\"Weights.SemiBold\" :variation=\"logoTitleVariation\">\n {{ logoTitle }}\n <template #icon-append>\n <slot name=\"title-append\" />\n </template>\n </mc-title>\n </template>\n </mc-preview>\n <mc-dropdown v-else v-model=\"dropIsOpen\" :position=\"dropdownPosition\" :items=\"computedMenuApps\">\n <template #activator>\n <mc-preview>\n <template #left>\n <img v-if=\"logoSrc\" class=\"mc-side-bar-top__img\" :src=\"logoSrc\" width=\"24\" height=\"24\" :alt=\"logoTitle\" />\n <mc-svg-icon v-else-if=\"logoIcon\" class=\"rotate\" :name=\"logoIcon\" />\n </template>\n <template #top>\n <mc-button\n :variation=\"`${themeConfig.dropdownActivator}-link` as ButtonVariationUnion\"\n :size=\"compact ? ButtonSize.LCompact : ButtonSize.L\"\n class=\"mc-side-bar-top__activator-btn\"\n >\n <mc-title v-if=\"!compact\" :weight=\"Weights.SemiBold\" :variation=\"logoTitleVariation\">\n {{ logoTitle }}\n <template #icon-append>\n <slot name=\"title-append\" />\n </template>\n </mc-title>\n <template #icon-append>\n <mc-svg-icon class=\"rotate\" name=\"arrow_drop_down\" color=\"gray\" />\n </template>\n </mc-button>\n </template>\n </mc-preview>\n </template>\n <template #item=\"{ item }\">\n <mc-button\n full-width\n :text-align=\"HorizontalAlignment.Left\"\n variation=\"black-flat\"\n :href=\"item.href\"\n :to=\"item.to\"\n :target=\"item.target\"\n :is-active=\"item.isActive\"\n :exact=\"item.exact\"\n >\n <template #icon-prepend>\n <mc-svg-icon v-if=\"item.icon\" :name=\"item.icon\" />\n <img v-else-if=\"item.image\" :src=\"item.image\" width=\"24\" height=\"24\" alt=\"service image\" />\n </template>\n {{ item.name }}\n </mc-button>\n </template>\n </mc-dropdown>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/line-heights' as *;\n@use '../../../../assets/tokens/sizes' as *;\n@use '../../../../assets/tokens/font-sizes' as *;\n.mc-side-bar-top {\n $block-name: &;\n @include reset-text-indents();\n position: sticky;\n top: -($space-250);\n padding: $space-250 $space-100;\n background: $color-white;\n margin: -($space-250) (-($space-100)) $space-150 !important;\n z-index: 2;\n .mc-dropdown__toggle {\n &:hover {\n cursor: pointer;\n }\n .mc-preview__left {\n margin-inline-end: 0;\n }\n .mc-button {\n line-height: $line-height-250;\n &__text {\n margin-inline-start: $space-100;\n }\n &__append {\n margin-inline-start: 0;\n }\n .rotate {\n @include size($size-200);\n }\n }\n }\n &__img {\n margin-inline-start: $space-100;\n }\n &__activator-btn {\n font-size: $font-size-400;\n line-height: $line-height-300;\n }\n &--theme-white {\n background: $color-black;\n .mc-preview__top {\n .mc-title {\n color: $color-white;\n }\n }\n }\n &--theme-black {\n background: $color-white;\n .mc-preview__top {\n .mc-title {\n color: $color-black;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType, ref, inject, onMounted, useAttrs } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport type { ITab } from '@/types/ITabs'\nimport type { IRoute } from '@/types/IRoute'\nimport { type IconsListUnion } from '@/types/styles/Icons'\n\nconst selfRegisterTabToMcTabs: Function = inject('selfRegisterTabMethod', () => {})\nconst attrs = useAttrs()\nconst props = defineProps({\n /**\n * Если нужен иной фрагмент в url после #\n * (по умолчанию берётся из 'name')\n */\n id: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Имя таба (unique)\n */\n name: {\n type: String as PropType<string>,\n required: true,\n default: ''\n },\n /**\n * Вставка в начало имени таба\n * (не влияет на значение вставленное в url)\n */\n prefix: {\n type: String as PropType<string>,\n default: ''\n },\n /**\n * Вставка в конец имени таба\n * (не влияет на значение вставленное в url)\n */\n suffix: {\n type: String as PropType<string>,\n default: ''\n },\n appendCount: {\n type: Number as PropType<number>,\n default: null\n },\n appendCountColor: {\n type: String as () => ColorTypes,\n default: 'black'\n },\n /**\n * Отключенное состояние\n */\n isDisabled: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Виден ли таб\n */\n visible: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Классы иконки в начале\n */\n iconPrepend: {\n type: String as () => IconsListUnion,\n default: ''\n },\n /**\n * Классы иконки в конце\n */\n iconAppend: {\n type: String as () => IconsListUnion,\n default: ''\n },\n /**\n * Цвет иконки в начале\n */\n iconPrependColor: {\n type: String as () => ColorTypes,\n default: ''\n },\n /**\n * Цвет иконки в конце\n */\n iconAppendColor: {\n type: String as () => ColorTypes,\n default: ''\n },\n /**\n * Если нужна ссылка внутри приложения:\n * `{name: 'test', params: { id: test.id }}`\n */\n to: {\n type: Object as PropType<IRoute>,\n default: null\n },\n /**\n * Если нужна обычная ссылка:\n * `https://mediacube.agency/`\n */\n href: {\n type: String as PropType<string>,\n default: ''\n }\n})\n\nconst isActive = ref<boolean>(false)\nconst isVisible = ref<boolean>(true)\n\nconst computedId = computed((): string => {\n return props.id ? props.id : props.name.toLowerCase().replace(/ /g, '-')\n})\n\nconst hash = computed((): string => {\n return props.isDisabled ? '#' : `#${computedId.value}`\n})\n\nconst hasAppendCount = computed((): boolean => {\n return !!props.appendCount || props.appendCount === 0\n})\n\nconst appendCountStyles = computed((): string => {\n return `--mc-tab-append-count-color: ${Colors[props.appendCountColor]}`\n})\n\nconst computedTabName = computed((): string => {\n return [props.prefix, props.name, props.suffix].filter(Boolean).join('')\n})\n\nconst header = computed(() => {\n return props.visible ? computedTabName.value : ''\n})\n\nonMounted(() => {\n if (selfRegisterTabToMcTabs) {\n const payload: Partial<ITab> = {\n isActive: isActive.value,\n isVisible: isVisible.value,\n computedId: computedId.value,\n hash: hash.value,\n hasAppendCount: hasAppendCount.value,\n appendCountStyles: appendCountStyles.value,\n header: header.value,\n id: props.id,\n name: props.name,\n to: props.to,\n href: props.href,\n iconAppendColor: props.iconAppendColor,\n iconPrependColor: props.iconPrependColor,\n iconAppend: props.iconAppend,\n iconPrepend: props.iconPrepend,\n visible: props.visible,\n isDisabled: props.isDisabled,\n appendCountColor: props.appendCountColor,\n appendCount: props.appendCount,\n suffix: props.suffix,\n prefix: props.prefix,\n showTab,\n hideTab,\n onClick: attrs.onClick,\n ...attrs\n }\n selfRegisterTabToMcTabs(payload)\n }\n})\n\nconst showTab = () => {\n isActive.value = true\n}\nconst hideTab = () => {\n isActive.value = false\n}\n</script>\n\n<template>\n <section\n v-show=\"isActive\"\n :id=\"id\"\n :aria-hidden=\"!isActive\"\n class=\"tabs-component-panel\"\n role=\"tabpanel\"\n :href=\"href\"\n :to=\"to\"\n >\n <!-- @slot контента -->\n <slot v-if=\"visible\" />\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/colors' as *;\n\n.tabs-component-panel {\n $block-name: &;\n}\n.tabs-component-tab {\n --mc-tab-append-count-color: #{$color-black};\n &__tab {\n &-name-append-count {\n color: var(--mc-tab-append-count-color);\n }\n }\n a:empty {\n margin: 0;\n padding: 0;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McGridRow } from '@/components'\nimport { computed, onBeforeUnmount, onMounted, type PropType, reactive, ref } from 'vue'\nimport { Spaces, type SpaceTypes } from '@/types/styles/Spaces'\nimport type { SpacesUnion } from '@/types/styles/Spaces'\nimport type { ColumnJustifyAlignmentUnion } from '@/types/styles/Grid'\nimport { ColumnAlignment, ColumnJustifyAlignment } from '@/enums/Grid'\n\nconst emit = defineEmits(['content-scrolled'])\nconst props = defineProps({\n wrap: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n gutterY: {\n type: Number as PropType<number>,\n default: 0\n },\n gutterX: {\n type: Number as PropType<number>,\n default: 0\n },\n justify: {\n type: String as () => ColumnJustifyAlignmentUnion,\n default: ColumnJustifyAlignment.Left\n },\n scrollable: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n gutterBottom: {\n type: String as () => SpaceTypes,\n default: null\n },\n hasScroll: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n withBlur: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n moreSpace: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n rtl: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n scrollSpeed: {\n type: Number as PropType<number>,\n default: 1\n },\n tagName: {\n type: String as PropType<string>,\n default: 'div'\n }\n})\n\nconst drag_options = reactive({\n scroll_pos: 0,\n start_client_pos: 0,\n distance: 0,\n is_drag: false,\n mouse_is_down: false\n})\n\nconst show_left_blur = ref<boolean>(false)\nconst show_right_blur = ref<boolean>(false)\nconst observer = ref<MutationObserver | null>(null)\nconst scrollContainer = ref<HTMLElement | null>(null)\n\nconst containerProps = computed((): { [key: string]: string | number | boolean } => {\n return {\n wrap: props.wrap,\n align: ColumnAlignment.Top,\n gutterY: props.gutterY,\n gutterX: props.gutterX,\n justify: props.justify\n }\n})\n\nconst containerClasses = computed((): { [key: string]: boolean } => {\n return {\n 'mc-wrap-scroll': true,\n 'mc-wrap-scroll--scrollable': props.scrollable,\n 'mc-wrap-scroll--no-scrollbar': !props.hasScroll,\n 'mc-wrap-scroll--more-space': props.moreSpace\n }\n})\n\nconst containerStyles = computed((): { [key: string]: SpacesUnion } => {\n return {\n '--mc-wrap-scroll-bottom': Spaces[props.gutterBottom]\n }\n})\n\nconst wrapperClasses = computed(() => {\n return {\n [`mc-wrap-scroll__wrapper--left-blur`]: props.withBlur && show_left_blur.value,\n [`mc-wrap-scroll__wrapper--right-blur`]: props.withBlur && show_right_blur.value,\n [`mc-wrap-scroll__wrapper--more-space`]: props.moreSpace\n }\n})\n\nonMounted(() => {\n window.addEventListener('mousemove', onMouseMove)\n window.addEventListener('mouseup', onMouseUp)\n init()\n setTimeout(() => handlerScroll(), 10)\n})\n\nonBeforeUnmount(() => {\n window.removeEventListener('mousemove', onMouseMove)\n window.removeEventListener('mouseup', onMouseUp)\n scrollContainer.value && scrollContainer.value.removeEventListener('scroll', handlerScroll)\n observer.value && observer.value.disconnect()\n})\n\nconst init = () => {\n if (scrollContainer.value) {\n scrollContainer.value.addEventListener('scroll', handlerScroll)\n if (props.withBlur) createMutationObserver()\n }\n}\nconst handlerScroll = () => {\n emit('content-scrolled')\n if (!props.withBlur) return\n if (scrollContainer.value) {\n try {\n const container_width = Math.ceil(scrollContainer.value.getBoundingClientRect()?.width)\n const scroll_width = Math.ceil(scrollContainer.value.scrollWidth)\n const scroll_left = Math.ceil(scrollContainer.value.scrollLeft)\n // Левый блюр\n show_left_blur.value = props.rtl\n ? scroll_width > container_width && scroll_width - 10 > Math.abs(scroll_left) + container_width\n : !!scroll_left\n // Правый блюр\n show_right_blur.value = props.rtl\n ? Math.abs(scroll_left) > 1\n : scroll_width > container_width && scroll_width > Math.abs(scroll_left) + container_width\n } catch (e) {\n show_left_blur.value = false\n show_right_blur.value = false\n }\n }\n}\n\nconst createMutationObserver = () => {\n if (scrollContainer.value) {\n try {\n observer.value = new MutationObserver(handlerScroll)\n\n const config = {\n attributes: true,\n childList: true,\n subtree: true\n }\n observer.value.observe(scrollContainer.value, config)\n } catch (e) {\n console.error('Error when try to create observer in McWrapScroll')\n }\n } else console.error('Error when try to create observer in McWrapScroll')\n}\n\nconst onMouseDown = (e: MouseEvent) => {\n if (scrollContainer.value) {\n const dragOptions = drag_options\n dragOptions.start_client_pos = e.clientX\n dragOptions.mouse_is_down = true\n dragOptions.scroll_pos = scrollContainer.value.scrollLeft\n // // Удалить все выделения на странице, иначе скролл \"лагает\" если где то на странице есть выделение\n if (window.getSelection) {\n let sel = window.getSelection()\n sel?.removeAllRanges()\n }\n }\n}\n\nconst onMouseMove = (e: MouseEvent) => {\n if (scrollContainer.value) {\n const dragOptions = drag_options\n if (!dragOptions.mouse_is_down) return\n dragOptions.distance = e.clientX - dragOptions.start_client_pos\n if (Math.abs(dragOptions.distance) > 2 && !dragOptions.is_drag) {\n dragOptions.is_drag = true\n }\n if (dragOptions.is_drag) {\n scrollContainer.value.scrollTo({\n left: dragOptions.scroll_pos - dragOptions.distance * props.scrollSpeed\n })\n }\n // Math.abs(dragOptions.scroll_pos) && (dragOptions.scroll_pos = 0)\n }\n}\n\nconst onMouseUp = () => {\n drag_options.is_drag && (drag_options.is_drag = false)\n drag_options.mouse_is_down = false\n}\n</script>\n\n<template>\n <component :is=\"props.tagName\" :class=\"wrapperClasses\" class=\"mc-wrap-scroll__wrapper\">\n <div ref=\"scrollContainer\" :class=\"containerClasses\" :style=\"containerStyles\" @mousedown=\"onMouseDown\">\n <mc-grid-row\n v-bind=\"containerProps\"\n :style=\"{ 'pointer-events': drag_options.is_drag ? 'none' : 'auto' }\"\n class=\"mc-wrap-scroll__row\"\n >\n <slot />\n </mc-grid-row>\n </div>\n </component>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-families' as *;\n.mc-wrap-scroll {\n $block-name: &;\n $more-space-indent: $space-200;\n --mc-wrap-scroll-bottom: #{$space-zero};\n padding-bottom: var(--mc-wrap-scroll-bottom);\n margin-bottom: calc((var(--mc-wrap-scroll-bottom)) * -1);\n font-family: $font-family-main;\n &.mc-wrap-scroll--scrollable {\n overflow-x: auto;\n overflow-y: hidden;\n }\n &--more-space {\n padding: $more-space-indent;\n margin: -(#{$more-space-indent});\n }\n &.mc-wrap-scroll--no-scrollbar {\n @include hide-scrollbar();\n }\n &__wrapper {\n position: relative;\n overflow-x: hidden;\n @mixin blur-common-styles {\n @include pseudo();\n top: 0;\n bottom: 0;\n width: $space-500;\n z-index: 2;\n pointer-events: none;\n user-select: none;\n }\n @mixin right-blur {\n background: linear-gradient(to left, #{$color-bg-gray}, rgba($color-bg-gray, 0));\n }\n @mixin left-blur {\n background: linear-gradient(to right, #{$color-bg-gray}, rgba($color-bg-gray, 0));\n }\n &--more-space {\n padding: $more-space-indent;\n margin: -(#{$more-space-indent});\n &#{$block-name}__wrapper {\n &--left-blur {\n #{$block-name} {\n padding-inline-start: 0;\n margin-inline-start: 0;\n }\n &::before {\n top: $more-space-indent;\n bottom: $more-space-indent;\n inset-inline-start: $more-space-indent;\n @include left-blur;\n }\n }\n &--right-blur {\n #{$block-name} {\n padding-right: 0;\n margin-right: 0;\n }\n &::after {\n top: $more-space-indent;\n bottom: $more-space-indent;\n inset-inline-end: $more-space-indent;\n @include right-blur;\n }\n }\n }\n }\n &--left-blur {\n &::before {\n @include blur-common-styles;\n @include left-blur;\n inset-inline-start: 0;\n }\n }\n &--right-blur {\n &::after {\n @include blur-common-styles;\n @include right-blur;\n inset-inline-end: 0;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onMounted, onUpdated, type PropType, ref, watch, provide, nextTick } from 'vue'\nimport { Colors, type ColorTypes } from '@/types/styles/Colors'\nimport type { ColorsUnion } from '@/types/styles/Colors'\nimport { useRouter } from 'vue-router'\nimport McWrapScroll from '@/components/patterns/McWrapScroll/McWrapScroll.vue'\nimport type { ITab } from '@/types/ITabs'\nimport { type TabVariationUnion } from '@/types/ITabs'\nimport { TabVariations } from '@/enums/Tab'\nimport { McSvgIcon } from '@/components'\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n (e: 'tab-changed', value: { tab: ITab }): void\n (e: 'clicked', value: { tab: ITab }): void\n}>()\nconst router = useRouter()\nconst props = defineProps({\n modelValue: {\n type: String as PropType<string | null>,\n default: null\n },\n /**\n * Размеры табов:\n * `body, caption, overline`\n */\n tabVariation: {\n type: String as PropType<TabVariationUnion>,\n default: TabVariations.Captions\n },\n /**\n * Цвет текста табов\n */\n color: {\n type: String as () => ColorTypes,\n default: 'black'\n },\n /**\n * Цвет линии активного таба\n */\n accentColor: {\n type: String as () => ColorTypes,\n default: 'purple'\n },\n /**\n * Заглавные буквы\n * табов\n */\n uppercase: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Передаваемое состояние загрузки\n *\n * Нужно для метода switchingDisableTab\n * в случае, если состояние табов (active/disable)\n * задается динамически\n */\n loading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Закрепленные табы\n *\n * Добавляет верхнее расстояние\n * для табов для правильного отображения\n */\n sticky: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n\nconst tabs = ref<ITab[]>([])\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-tabs': true,\n [`mc-tabs--tab-variation-${props.tabVariation}`]: !!props.tabVariation,\n 'mc-tabs--uppercase': !!props.uppercase,\n 'mc-tabs--sticky': !!props.sticky\n }\n})\n\nconst styles = computed((): { [key: string]: ColorsUnion } => {\n return {\n '--mc-tabs-color': Colors[props.color],\n '--mc-tabs-accent-color': Colors[props.accentColor]\n }\n})\n\nconst computedValue = computed<{ get: () => string | null; set: (val: string) => void }>({\n // @ts-ignore\n get(): string | null {\n return props.modelValue\n },\n set(value: string): void {\n emit('update:modelValue', value)\n }\n})\nconst activeVisibleTabs = computed((): ITab[] => {\n return tabs.value.filter((tab) => tab.visible && !tab.isDisabled)\n})\n\nonMounted(() => {\n handleCheckInitTab()\n})\nonUpdated(() => {\n setTimeout(() => {\n watchDisableTab()\n }, 10)\n})\n\nconst updateTabsState = (payload: string): void => {\n tabs.value.forEach((tab: ITab) => {\n tab.isActive = tab.computedId === payload\n tab.isActive ? tab.showTab() : tab.hideTab()\n })\n}\n\nconst selfRegisterTabMethod = (payload: ITab): void => {\n tabs.value.push(payload)\n}\n\nconst handleCheckInitTab = (): void => {\n let [tab]: ITab[] = activeVisibleTabs.value\n const preselectedTab: ITab | undefined = tabs.value.find((tab: ITab) => tab.computedId === props.modelValue)\n if (preselectedTab && !preselectedTab.isDisabled) {\n tab = preselectedTab\n }\n if (!tab) return\n\n handleSelectTab(tab)\n}\n\nconst handleEmitChange = (tab: ITab): void => {\n emit('tab-changed', { tab } as { tab: ITab })\n}\n\nconst watchDisableTab = (): void => {\n if (props.loading) return\n const activeTab: ITab | undefined = tabs.value?.find((tab) => tab.isActive)\n if (!activeTab?.isDisabled) return\n const [tab]: ITab[] = activeVisibleTabs.value\n handleSelectTab(tab)\n}\n\nconst handleSelectTab = (tab: ITab, event?: Event): void | undefined => {\n event?.preventDefault()\n if (tab.isDisabled) return\n if (tab.onClick && typeof tab.onClick === 'function') return tab.onClick(tab)\n if (tab.href) {\n window.open(tab.href, '_blank')\n return\n }\n if (tab.to && router) {\n router.push(tab.to)\n return\n }\n handleEmitChange(tab)\n updateTabsState(tab.computedId)\n //@ts-ignore\n computedValue.value = tab.computedId\n}\n\nwatch(\n () => props.loading,\n (val, oldVal): void => {\n if (!val && oldVal)\n nextTick(() => {\n handleCheckInitTab()\n })\n }\n)\nprovide('selfRegisterTabMethod', selfRegisterTabMethod)\n</script>\n\n<template>\n <div :class=\"classes\" :style=\"styles\">\n <div class=\"tabs-component\">\n <mc-wrap-scroll tag-name=\"ul\" role=\"tablist\" scrollable class=\"tabs-component-tabs\">\n <li\n v-for=\"(tab, i) in tabs\"\n v-show=\"tab.isVisible\"\n :key=\"i\"\n :class=\"{ 'is-active': tab.isActive, 'is-disabled': tab.isDisabled }\"\n class=\"tabs-component-tab\"\n role=\"presentation\"\n >\n <a\n :aria-controls=\"tab.hash\"\n :aria-selected=\"tab.isActive\"\n :href=\"tab.href || tab.hash || 'javascript:void(0)'\"\n class=\"tabs-component-tab-a\"\n role=\"tab\"\n @click=\"(e) => handleSelectTab(tab, e)\"\n >\n <span class=\"tabs-component-tab__tab-name\">\n <mc-svg-icon v-if=\"tab.iconPrepend\" :name=\"tab.iconPrepend\" :color=\"tab.iconPrependColor\" />\n <span>{{ tab.header }}</span>\n <mc-svg-icon v-if=\"tab.iconAppend\" :name=\"tab.iconAppend\" :color=\"tab.iconAppendColor\" />\n </span>\n </a>\n </li>\n </mc-wrap-scroll>\n <div class=\"tabs-component-panels\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/z-indexes' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/spacings' as *;\n.mc-tabs {\n $block-name: &;\n\n --mc-tabs-color: #{$color-black};\n --mc-tabs-accent-color: #{$color-purple};\n\n @mixin border() {\n &::before {\n @include pseudo();\n @include position(absolute, auto 0 0 0);\n height: 1px;\n background-color: $color-hover-gray;\n }\n }\n\n &--tab-variation {\n &-body {\n .tabs-component-tab-a {\n font-size: $font-size-300;\n line-height: $line-height-250;\n }\n }\n &-caption {\n .tabs-component-tab-a {\n font-size: $font-size-200;\n line-height: $line-height-200;\n }\n }\n &-overline {\n .tabs-component-tab-a {\n font-size: $font-size-100;\n line-height: $line-height-150;\n font-weight: $font-weight-medium;\n }\n }\n }\n .tabs-component-tab-a {\n color: var(--mc-tabs-color);\n }\n\n .tabs-component-tab-a {\n &::after {\n background-color: var(--mc-tabs-accent-color);\n }\n &:hover {\n color: var(--mc-tabs-accent-color);\n }\n }\n .tabs-component-tab.is-active {\n .tabs-component-tab-a {\n color: var(--mc-tabs-accent-color);\n font-weight: $font-weight-semi-bold;\n }\n }\n\n &--uppercase {\n .tabs-component-tabs {\n text-transform: uppercase;\n }\n }\n\n &--sticky {\n overflow: scroll;\n\n .tabs-component-tabs {\n position: sticky !important;\n top: 0;\n z-index: $z-index-sticky;\n background-color: $color-white;\n }\n }\n\n .tabs-component-tabs {\n @include reset-text-indents();\n position: relative;\n padding-left: 0;\n margin-top: 0;\n list-style-type: none;\n height: $space-350;\n @include border();\n }\n\n .tabs-component-tab {\n position: relative;\n flex: 0 0 auto;\n &:first-child {\n .tabs-component-tab-a {\n margin-left: 0;\n }\n }\n &:last-child {\n .tabs-component-tab-a {\n margin-right: 0;\n }\n }\n\n &.is-active {\n .tabs-component-tab-a {\n &::after {\n left: 0;\n right: 0;\n opacity: 1;\n }\n }\n }\n &.is-disabled {\n .tabs-component-tab-a {\n cursor: not-allowed;\n color: $color-outline-gray;\n }\n }\n\n &__tab-name {\n display: flex;\n align-items: center;\n @include child-indent-right($space-50);\n &::after {\n display: block;\n content: attr(data-name);\n font-weight: $font-weight-semi-bold;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n }\n }\n &__icon {\n &-prepend {\n //color: var(--mc-tab-icon-prepend-color);\n }\n &-append {\n //color: var(--mc-tab-icon-append-color);\n }\n }\n }\n\n .tabs-component-tab-a {\n position: relative;\n display: inline-flex;\n font-family: $font-family-main;\n text-decoration: none;\n padding-bottom: $space-150;\n margin: 0 $space-150;\n cursor: pointer;\n\n @include child-indent-right($space-50);\n @include border();\n .las,\n .la {\n display: flex;\n align-items: center;\n }\n\n &::after {\n @include pseudo();\n @include position(null, null 50% 0 50%);\n opacity: 0;\n height: 2px;\n z-index: 1;\n transition:\n left 0.2s ease,\n right 0.2s ease,\n opacity 0.2s ease,\n color 0.2s ease;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { TransitionPresets, useTransition } from '@vueuse/core'\nimport { computed, type PropType, ref, watch } from 'vue'\nimport { McSvgIcon } from '@/components'\nimport type { IconsListUnion } from '@/types/styles/Icons'\nimport type { DrawerPositionsUnion } from '@/types/IDrawer'\nimport { DrawerPositions } from '@/enums/Drawer'\n\nconst emit = defineEmits<{\n (e: 'toggle', value: boolean): void\n (e: 'open'): void\n (e: 'close'): void\n (e: 'update:modelValue', value: boolean): void\n}>()\nconst props = defineProps({\n modelValue: {\n type: Boolean,\n default: false\n },\n duration: {\n type: Number as PropType<number>,\n default: 300\n },\n position: {\n type: String as () => DrawerPositionsUnion,\n default: DrawerPositions.Right\n },\n /**\n * Нужна ли кнопка\n * закрытия в шапке\n */\n closeVisible: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n showOverlay: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Тип иконки\n * закрытия в шапке\n */\n iconClose: {\n type: String as () => IconsListUnion,\n default: 'close'\n },\n width: {\n type: Number as PropType<number>,\n default: 300\n }\n})\n\nconst overlayStartAnimationPosition = ref<number>(0)\nconst overlayEndAnimationPosition = ref<number>(100)\nconst isRightDrawerPosition = computed((): boolean => {\n return props.position === DrawerPositions.Right\n})\nconst drawerStartAnimationPosition = computed((): number => {\n return isRightDrawerPosition.value ? 100 : -100\n})\nconst drawerStartStaticPosition = computed((): { [key: string]: number } => {\n return {\n [isRightDrawerPosition.value ? DrawerPositions.Right : DrawerPositions.Left]: 0\n }\n})\n\nconst overlayStateNumber = ref<number>(overlayStartAnimationPosition.value)\nconst drawerStateNumber = ref<number>(drawerStartAnimationPosition.value)\n\nconst drawerNumber = useTransition(drawerStateNumber, {\n duration: props.duration,\n transition: TransitionPresets.easeOutQuart\n})\n\nconst drawerOverlayNumber = useTransition(overlayStateNumber, {\n duration: props.duration,\n transition: TransitionPresets.easeOutQuart\n})\n\nconst overlayStyle = computed((): { [key: string]: number | string } => {\n return {\n visibility: drawerOverlayNumber.value ? 'visible' : 'hidden',\n zIndex: drawerOverlayNumber.value ? 1 : -1\n }\n})\n\nconst drawerStyle = computed((): { [key: string]: number | string } => {\n return {\n transform: `translateX(${drawerNumber.value}%)`,\n width: `${props.width}px`,\n [props.position]: 0,\n ...drawerStartStaticPosition.value\n }\n})\n\nconst overlayClasses = computed((): { [key: string]: boolean } => {\n return {\n 'mc-drawer__overlay': true,\n 'mc-drawer__overlay--hidden': !props.showOverlay\n }\n})\n\nconst openDrawer = () => {\n overlayStateNumber.value = overlayEndAnimationPosition.value\n drawerStateNumber.value = overlayStateNumber.value === 0 ? 100 : 0\n if (!props.modelValue) {\n emit('update:modelValue', true)\n emit('open')\n }\n}\nconst closeDrawer = () => {\n overlayStateNumber.value = overlayStartAnimationPosition.value\n drawerStateNumber.value = overlayStateNumber.value === 0 ? (isRightDrawerPosition.value ? 100 : -100) : 0\n if (props.modelValue) {\n emit('update:modelValue', false)\n emit('close')\n }\n}\n\nconst handleOverlayClick = () => {\n if (!props.showOverlay) return\n closeDrawer()\n}\n\nwatch(\n () => props.modelValue,\n (value) => {\n value ? openDrawer() : closeDrawer()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div class=\"mc-drawer__wrapper\" :style=\"overlayStyle\">\n <div :class=\"overlayClasses\" :style=\"overlayStyle\" @click.stop=\"handleOverlayClick\" />\n <div class=\"mc-drawer\" :style=\"drawerStyle\" @click.stop>\n <slot />\n <button v-if=\"closeVisible\" type=\"button\" class=\"mc-drawer__btn-close\" @click.prevent=\"closeDrawer\">\n <mc-svg-icon class=\"mc-drawer__icon-close\" :name=\"iconClose\" />\n <mc-svg-icon class=\"mc-drawer__icon-close--small\" :name=\"iconClose\" size=\"200\" />\n </button>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/tokens/box-shadows' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/media-queries' as *;\n@use '../../../assets/styles/mixins' as *;\n.mc-drawer {\n $block-name: &;\n position: absolute;\n top: 0;\n bottom: 0;\n background: white;\n height: 100%;\n box-shadow: $shadow-s;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n z-index: 2;\n &__overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.15);\n display: flex;\n justify-content: flex-start;\n &--hidden {\n background: transparent;\n }\n }\n &__wrapper {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n overflow: hidden;\n }\n &__btn-close {\n z-index: 1;\n padding: $space-100 !important;\n & {\n @include close-link();\n }\n & {\n @include position(absolute, $space-100 $space-100 null null);\n }\n & {\n @include reset-btn();\n }\n }\n &__icon-close {\n @include size($size-300);\n &--small {\n display: none;\n }\n }\n @media #{$media-query-m-down} {\n #{$block-name}__icon-close {\n display: none;\n &--small {\n display: block;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { TitleVariations } from '@/enums/Title'\nimport { Weights } from '@/enums/ui/Weights'\nimport { McTitle } from '@/components'\nimport type { PropType } from 'vue'\n\nconst props = defineProps({\n /**\n * Заголовок\n */\n title: {\n type: String as PropType<string>,\n default: ''\n },\n titleEllipsis: {\n type: Boolean as PropType<boolean>,\n default: false\n }\n})\n</script>\n\n<template>\n <div class=\"mc-drawer-content-template\">\n <div v-if=\"$slots.title || props.title\" class=\"mc-drawer-content-template__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"title\">\n <mc-title :variation=\"TitleVariations.Subtitle\" :ellipsis=\"props.titleEllipsis\" :weight=\"Weights.SemiBold\">\n {{ props.title }}\n </mc-title>\n </slot>\n </div>\n <div class=\"mc-drawer-content-template__body\">\n <div class=\"mc-drawer-content-template__tint\"></div>\n <div class=\"mc-drawer-content-template__body-inner\">\n <!-- @slot Слот контента -->\n <slot />\n </div>\n </div>\n <div v-if=\"$slots.footer\" class=\"mc-drawer-content-template__footer\">\n <!-- @slot Слот футера -->\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/sizes' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/font-families' as *;\n.mc-drawer-content-template {\n font-family: $font-family-main;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n &__header {\n padding: 18px $space-600 18px $space-200;\n border-bottom: 1px solid $color-hover-gray;\n }\n\n &__body {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n height: 100%;\n &-inner {\n max-height: 100%;\n height: 100%;\n overflow-y: auto;\n padding: $space-400 $space-200;\n box-sizing: border-box;\n }\n }\n &__footer {\n border-top: 1px solid $color-hover-gray;\n padding: $space-200 $space-200;\n }\n\n &__tint {\n @include position(absolute, 0 5px null 0);\n height: $size-400;\n background: linear-gradient(180deg, $color-white 0%, rgba(255, 255, 255, 0) 100%);\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McSvgIcon } from '@/components'\nimport { computed, nextTick, type PropType, reactive, ref, watch } from 'vue'\nimport { LineHeights, type LineHeightTypes, Sizes, type SizeTypes, Spaces, type SpaceTypes } from '@/types'\nimport { HorizontalAlignment } from '@/enums'\nimport { TransitionPresets, useTransition } from '@vueuse/core'\nimport { ModalVariation } from '@/enums/Modal'\n\nconst emit = defineEmits<{\n (e: 'before-open'): void\n (e: 'before-close'): void\n (e: 'opened'): void\n (e: 'closed'): void\n (e: 'back', value: Event): void\n (e: 'update:modelValue', value: boolean): void\n}>()\n\nconst props = defineProps({\n modelValue: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n name: {\n type: String as PropType<string>\n },\n /**\n * Максимальная ширина модального окна\n * */\n maxWidth: {\n type: Number as PropType<number>,\n default: 510\n },\n /**\n * Скорость анимации\n * */\n duration: {\n type: Number as PropType<number>,\n default: 200\n },\n /**\n * Показывать кнопку закрытия модали\n * */\n closeVisible: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n showOverlay: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Нужно ли закрывать попап\n * кликом вне окна\n */\n clickBackdropToClose: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Стрелка в хедере\n */\n arrowVisible: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Кастомное модальное окно\n */\n secondaryModal: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Должен ли контент внутри модалки скроллится с фиксированной шапкой и футером\n * Отключать, когда внутри есть селекты\n * */\n scrollableContent: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Показывать сепараторы у хедера и футера при скролле.\n */\n separators: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Выравнивание заголовка в шапке,\n * если centered добавляются отступы слева и справа, чтобы текст не наезжал на кнопки\n * centered || left || right\n * */\n headerAlign: {\n type: String as PropType<HorizontalAlignment>,\n default: 'center'\n },\n /**\n * Отступ от верхнего края модального окна до контента.\n * Для \"красивой\" обрезки картинки при скролле в ситуациях, когда нет хедера\n */\n topPadding: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Вариация модалки default || info\n * info модалки имеют меньшие размеры паддингов\n * */\n variation: {\n type: String as () => ModalVariation,\n default: 'default'\n }\n})\n\nconst modalTransitionState = ref<number>(0)\nconst modalTransition = useTransition(modalTransitionState, {\n duration: props.duration || 300,\n transition: TransitionPresets.easeOutQuart\n})\n\nconst mcModalBody = ref<HTMLElement | null>(null)\nconst modalInner = ref<HTMLElement | null>(null)\n\nconst data = reactive({\n scrolled_top: false,\n scrolled_bottom: false,\n resize_observer: {} as ResizeObserver,\n small_indents: false,\n can_shorten_modal: false,\n modal_params: {} as { [key: string]: string | number },\n indent: {\n regular: '400',\n small: '150'\n } as { [key: string]: SpaceTypes },\n footer: {\n button: {\n regular: '600',\n small: '500'\n } as { [key: string]: SizeTypes }\n },\n header: {\n title: {\n line_height: {\n regular: '300',\n small: '250'\n } as { [key: string]: LineHeightTypes }\n }\n }\n})\n\nconst classes = computed((): { [key: string]: boolean } => {\n return {\n 'mc-modal--arrow-visible': props.arrowVisible,\n 'mc-modal--scrolled-top': data.scrolled_top,\n 'mc-modal--scrolled-bottom': data.scrolled_bottom,\n 'mc-modal--scrollable': props.scrollableContent,\n 'mc-modal--top-padding': props.topPadding,\n 'mc-modal--small-indents': data.small_indents,\n [`mc-modal--variation-${props.variation}`]: !!props.variation,\n [`mc-modal--header-align-${props.headerAlign}`]: (props.closeVisible || props.arrowVisible) && !!props.headerAlign\n }\n})\n\nconst styles = computed((): { [key: string]: string | number } => {\n return {\n '--mc-modal-padding': Spaces[data.indent.regular],\n '--mc-modal-padding-small': Spaces[data.indent.small],\n '--mc-modal-header-line-height': LineHeights[data.header.title.line_height.regular],\n '--mc-modal-header-line-height-small': LineHeights[data.header.title.line_height.small],\n '--mc-modal-button-height': Sizes[data.footer.button.regular],\n '--mc-modal-button-height-small': Sizes[data.footer.button.small],\n '--mc-modal-max-width': `${props.maxWidth + 24}px`,\n '--mc-modal-state-number': modalTransition.value\n }\n})\n\n/**\n * Устанавливаем сепараторы, если есть скролл\n * @param {Boolean} scrolled - если метод вызван скроллом\n */\nconst calculateSeparators = (scrolled: boolean = true): void => {\n if (!scrolled) {\n data.scrolled_top = false\n data.scrolled_bottom = false\n data.small_indents = false\n }\n\n setTimeout(\n () => {\n if (mcModalBody.value) {\n const { scrollTop, scrollHeight, clientHeight } = mcModalBody.value\n // Сепаратор появится если высота скролла будет > 2px\n const offset = 2\n data.scrolled_top = scrollTop > offset\n data.small_indents = data.scrolled_top && data.can_shorten_modal\n data.scrolled_bottom = scrollTop + clientHeight < scrollHeight - offset\n }\n },\n scrolled ? 0 : 300\n )\n}\n\nconst handleBeforeClose = (): void => {\n /**\n * Событие перед закрытием\n * @property {Object}\n */\n emit('before-close')\n if (mcModalBody.value) {\n data.resize_observer && data.resize_observer.unobserve(mcModalBody.value)\n mcModalBody.value.removeEventListener('scroll', () => calculateSeparators())\n }\n}\n\nconst handleOpened = (): void => {\n if (props.separators) {\n getParams()\n if (mcModalBody.value) {\n mcModalBody.value.addEventListener('scroll', () => calculateSeparators(), {\n passive: true\n })\n data.resize_observer = new ResizeObserver(() => resizeHandler())\n data.resize_observer.observe(mcModalBody.value)\n }\n calculateSeparators()\n }\n\n /**\n * Событие после открытия\n * @property {Object}\n */\n emit('opened')\n}\n\nconst handleBack = (event: Event): void => {\n emit('back', event)\n}\n\nconst getParams = (): void => {\n try {\n if (modalInner.value) {\n Object.keys(styles.value).forEach((attr) => {\n //@ts-ignore\n const param = parseInt(getComputedStyle(modalInner.value)?.getPropertyValue(attr))\n param && (data.modal_params[attr] = param)\n })\n }\n } catch (e) {\n console.error(e)\n }\n}\n\nconst calculateIndents = (): void => {\n /* Если шапка уже маленькая, то отключаем при отключении сепаратора\n * Иначе смотрим, чтобы отступ был > чем убираемые отступы, т.к. нет смысла сжимать шапку, если <\n */\n const indentDifferences =\n (+data.modal_params?.['--mc-modal-padding'] - +data.modal_params?.['--mc-modal-padding-small']) * 3 +\n +data.modal_params?.['--mc-modal-padding-small']\n const lineHeightDifferences =\n +data.modal_params?.['--mc-modal-header-line-height'] - +data.modal_params?.['--mc-modal-header-line-height-small']\n const buttonDifferences =\n +data.modal_params?.['--mc-modal-button-height'] - +data.modal_params?.['--mc-modal-button-height-small']\n const sizeDifferences = indentDifferences + lineHeightDifferences + buttonDifferences\n if (!data.small_indents && mcModalBody.value) {\n data.can_shorten_modal = mcModalBody.value?.scrollHeight - mcModalBody.value?.clientHeight > sizeDifferences\n }\n}\n\nconst resizeHandler = (): void => {\n calculateIndents()\n calculateSeparators()\n}\n\nconst openModal = (): void => {\n modalTransitionState.value = 1\n emit('before-open')\n emit('update:modelValue', true)\n nextTick(() => handleOpened())\n}\nconst closeModal = (): void => {\n modalTransitionState.value = 0\n setTimeout(() => {\n handleBeforeClose()\n emit('update:modelValue', false)\n emit('closed')\n }, props.duration || 300)\n}\n\nconst handleOverlayClick = (): void => {\n if (!props.clickBackdropToClose) return\n closeModal()\n}\n\nwatch(\n () => props.modelValue,\n (value): void => {\n value ? openModal() : closeModal()\n },\n { immediate: true }\n)\n</script>\n\n<template>\n <div v-if=\"props.modelValue\" class=\"mc-modal__wrapper\">\n <div v-if=\"props.showOverlay\" class=\"mc-modal__overlay\" @click.stop=\"handleOverlayClick\" />\n <div class=\"mc-modal\" :class=\"classes\" :style=\"styles\">\n <div ref=\"modalInner\" class=\"mc-modal__inner\">\n <div v-if=\"$slots.title\" class=\"mc-modal__header\">\n <div class=\"mc-modal__title\">\n <!-- @slot Слот заголовка -->\n <slot name=\"title\" />\n </div>\n </div>\n <div ref=\"mcModalBody\" class=\"mc-modal__body\">\n <!-- @slot Слот контента -->\n <slot />\n </div>\n <!-- @slot Слот футера -->\n <div class=\"mc-modal__control\">\n <slot name=\"footer\" />\n <!-- Блок для телепорта в футер <Teleport to=\"#mcModalFooter\"> -->\n <div id=\"mcModalFooter\" />\n </div>\n </div>\n <button v-if=\"arrowVisible\" type=\"button\" class=\"mc-modal__btn-back\" @click.prevent=\"handleBack\">\n <mc-svg-icon name=\"arrow_leftward\" class=\"mc-modal__icon-back\" />\n </button>\n <button v-if=\"closeVisible\" type=\"button\" class=\"mc-modal__btn-close\" @click.prevent=\"closeModal\">\n <mc-svg-icon class=\"mc-modal__icon-close\" width=\"24\" height=\"24\" name=\"close\" />\n </button>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/z-indexes' as *;\n@use '../../../assets/tokens/durations' as *;\n@use '../../../assets/tokens/font-families' as *;\n@use '../../../assets/tokens/font-weights' as *;\n@use '../../../assets/tokens/font-sizes' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/sizes' as *;\n@use '../../../assets/tokens/line-heights' as *;\n@use '../../../assets/tokens/colors' as *;\n@use '../../../assets/tokens/media-queries' as *;\n@use '../../../assets/tokens/border-radius' as *;\n@use '../../../assets/tokens/box-shadows' as *;\n@use 'sass:color' as sasscolor;\n\n.mc-modal {\n $block-name: &;\n $border-color: #dee1e9;\n $box-shadow-color: #20008c28;\n $border-color: $color-hover-gray;\n --mc-modal-padding: #{$space-400};\n --mc-modal-padding-small: #{$space-150};\n --mc-modal-header-line-height: #{$line-height-300};\n --mc-modal-header-line-height-small: #{$line-height-250};\n --mc-modal-button-height: #{$size-600};\n --mc-modal-button-height-small: #{$size-500};\n --mc-modal-max-width: 510px;\n --mc-modal-state-number: 0;\n\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n opacity: var(--mc-modal-state-number);\n z-index: 2;\n\n @media #{$media-query-s} {\n --modal-scale: calc(var(--mc-modal-state-number) * 0.1 + 0.9);\n padding: 12px 0;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) scale(var(--modal-scale));\n height: auto;\n max-height: 80%;\n max-width: var(--mc-modal-max-width);\n }\n &__overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba($color-black, 0.5);\n display: flex;\n justify-content: flex-start;\n &--hidden {\n background: transparent;\n }\n }\n &__wrapper {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n overflow: hidden;\n }\n &__btn-close,\n &__btn-back {\n transition: $duration-s all;\n @include reset-btn();\n @include close-link();\n }\n &__btn-close {\n @include position(absolute, var(--mc-modal-padding) $space-200 null null);\n @media #{$media-query-s} {\n @include position(absolute, var(--mc-modal-padding) $space-600 null null);\n }\n }\n &__btn-back {\n @include position(absolute, var(--mc-modal-padding) null null $space-200);\n @media #{$media-query-s} {\n @include position(absolute, var(--mc-modal-padding) null null $space-600);\n }\n }\n &__icon-close {\n @include size($size-300);\n transition: color $duration-s;\n }\n &.overlay-fade-enter-active,\n &.overlay-fade-leave-active {\n .mc-modal__inner {\n transition: all $duration-s;\n transform: translate3d(0, 0, 0);\n }\n }\n &.overlay-fade-enter,\n &.overlay-fade-leave-active {\n .mc-modal__inner {\n transform: translate3d(0, -20px, 0);\n }\n }\n &.mc-modal--secondary {\n .mc-modal {\n &__inner {\n border-radius: $radius-400;\n box-shadow: 0 15px 30px $box-shadow-color;\n padding: $space-400;\n }\n &__btn-close,\n &__btn-back {\n top: 27px;\n }\n &__btn-close {\n inset-inline-end: $space-400;\n }\n &__btn-back {\n inset-inline-start: $space-400;\n }\n &__header {\n padding-bottom: 9px;\n border-bottom: 2px solid $border-color;\n margin-bottom: var(--mc-modal-padding);\n }\n &__control {\n display: flex;\n justify-content: space-between;\n align-items: center;\n .mc-button {\n border-radius: $radius-150;\n }\n }\n }\n }\n\n &__header {\n flex-shrink: 0;\n transition: $duration-s all;\n padding: var(--mc-modal-padding) $space-200 $space-350;\n border-color: $border-color;\n @media #{$media-query-s} {\n padding: $space-350;\n .mc-title {\n transition: $duration-s all;\n line-height: var(--mc-modal-header-line-height);\n }\n }\n &:has(#{$block-name}__title:empty) {\n display: none;\n & + #{$block-name}__body {\n padding-top: $space-400;\n }\n }\n }\n\n &__title {\n margin-top: 0;\n margin-bottom: 0;\n color: hsl(0, 0%, 13%);\n font-family: $font-family-main;\n }\n\n &__body {\n padding: $space-50 $space-200 $space-200;\n flex-grow: 1;\n min-height: 0;\n overflow-x: hidden;\n > *:only-child {\n min-height: 100%;\n }\n @media #{$media-query-s} {\n padding: $space-50 $space-400 $space-200;\n overflow: visible;\n }\n }\n &__inner {\n box-shadow: $shadow-s;\n background-color: $color-white;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100% !important;\n > *:first-child {\n padding-top: var(--mc-modal-padding);\n }\n > *:last-child {\n padding-bottom: var(--mc-modal-padding);\n }\n @media #{$media-query-s} {\n overflow: visible;\n /* прячет рандомный скроллбар при включении модалки */\n -ms-overflow-style: none;\n scrollbar-width: none;\n border-radius: $radius-100;\n margin: 0 $space-150;\n &::-webkit-scrollbar {\n display: none;\n }\n }\n }\n &--scrollable {\n overflow: hidden !important;\n #{$block-name} {\n &__body {\n overflow-y: auto;\n overflow-x: hidden;\n }\n &__inner {\n overflow-x: hidden;\n @media #{$media-query-s} {\n max-height: 80vh;\n }\n }\n }\n }\n &--header-align {\n &-center {\n #{$block-name} {\n &__header {\n padding-inline: $space-500;\n text-align: center;\n @media #{$media-query-s} {\n padding-inline: $space-700;\n }\n }\n }\n }\n &-left {\n #{$block-name} {\n &__header {\n padding-bottom: $space-150;\n }\n }\n }\n }\n &--small-indents {\n @media #{$media-query-s} {\n #{$block-name} {\n &__control {\n padding-block: var(--mc-modal-padding-small) !important;\n .mc-button {\n height: var(--mc-modal-button-height-small);\n }\n }\n &__header {\n padding-block: var(--mc-modal-padding-small) !important;\n .mc-title {\n font-weight: $font-weight-semi-bold;\n font-size: $font-size-300;\n line-height: var(--mc-modal-header-line-height-small);\n align-items: center;\n }\n }\n &__body {\n padding-bottom: $space-50;\n }\n &__btn {\n &-back,\n &-close {\n top: var(--mc-modal-padding-small) !important;\n }\n }\n }\n }\n }\n\n &--scrolled {\n $separator-border: 1px solid $border-color;\n &-top {\n #{$block-name} {\n &__header {\n border-bottom: $separator-border;\n }\n }\n }\n &-bottom {\n #{$block-name} {\n &__control:not(:empty) {\n border-top: $separator-border;\n }\n }\n }\n }\n &--top-padding {\n #{$block-name}__inner:before {\n content: '';\n height: $space-400;\n min-height: $space-400;\n }\n }\n &__control {\n flex-shrink: 0;\n display: flex;\n justify-content: center;\n padding: $space-200 $space-200 $space-400;\n transition: $duration-s all;\n @media #{$media-query-s} {\n padding: $space-200 $space-300 $space-400;\n }\n .mc-button {\n width: 100%;\n }\n @media #{$media-query-s} {\n .mc-button {\n min-width: 100px;\n height: var(--mc-modal-button-height);\n transition: $duration-s all;\n width: unset;\n }\n }\n &:empty {\n position: relative;\n padding: $space-350 0 0;\n }\n &:not(:empty) {\n border-color: $border-color;\n }\n }\n &:has(&__control:empty) {\n #{$block-name} {\n &__body {\n padding-bottom: $space-50;\n }\n }\n }\n &--variation {\n &-info {\n #{$block-name} {\n &__header {\n @media #{$media-query-s} {\n padding: $space-300 $space-300 $space-150;\n }\n }\n &__btn-close {\n @media #{$media-query-s} {\n top: $space-300;\n }\n }\n &__inner {\n & > *:first-child {\n @media #{$media-query-s} {\n padding-top: $space-300;\n }\n }\n & > *:last-child {\n @media #{$media-query-s} {\n padding-bottom: $space-300;\n }\n }\n }\n &__body {\n padding-bottom: $space-50;\n @media #{$media-query-s} {\n padding-inline: $space-300;\n }\n }\n &__control {\n padding-top: $space-250;\n @media #{$media-query-s} {\n padding-top: $space-150;\n }\n }\n }\n }\n }\n @at-root {\n html[dir='rtl'] {\n #{$block-name} {\n &__btn-back {\n transform: rotate(180deg);\n }\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, type PropType, reactive, ref, useSlots } from 'vue'\nimport { useHelper } from '@/composables'\nimport { ChipSize, Weights } from '@/enums'\nimport {\n type ITableColumn,\n type ITableColumnEnriched,\n type ITableData,\n type ITableSort,\n type ITableTotals,\n type ITablePlaceholders,\n type TableCardState,\n type ITableCardProps\n} from '@/types/ITable'\nimport { TABLE } from '@/consts/table'\nimport {\n McInfinityLoadingTrigger,\n McTitle,\n McChip,\n McTableSort,\n McTableSkeletonLoading,\n McNoData,\n McBottomLoader,\n McOverlay\n} from '@/components'\nimport { useThrottleFn } from '@vueuse/core'\nimport type { IconsListUnion } from '@/types'\nimport { default as noTableDataImg } from '@/assets/img/no_table_data.png'\n\nconst defaultPlaceholders = {\n no_data: 'No data',\n loading: 'Loading...',\n all_loaded: 'All loaded',\n total: 'Total'\n} as ITablePlaceholders\n\nconst emit = defineEmits<{\n (e: 'loading'): void\n (e: 'row-click', value: any): void\n (e: 'sort', value: ITableSort): void\n (e: 'table-card-opened', value: TableCardState): void\n}>()\n\n/**\n * Слоты\n *\n * #header-cell - Заголовок колонки, каждая колонка\n * #`{column.field}-header-right` - Справа от заголовка колонки, именной слот, работает по имени колонки, что бы добавлять в конкретную колонку\n * #`{column.field}-total` - Тотал колонки, именной слот, работает по имени колонки, что бы добавлять в конкретную колонку\n * #column.field - Тело ячейки таблицы. Если не использовать слот, просто будут выводиться данные по названию поля\n * #`{column.field}-right` - Справа от контента колонки, именной слот, работает по имени колонки, что бы добавлять в конкретную колонку\n * №footer-cell - тотал колонки (строка внизу таблицы), каждая колонка\n * */\n\nconst helper = useHelper()\nconst slots = useSlots()\nconst props = defineProps({\n columns: {\n type: Array as PropType<ITableColumn[]>,\n required: true,\n default: () => [] as ITableColumn[]\n },\n data: {\n type: Array as PropType<ITableData>,\n required: true,\n default: () => []\n },\n /**\n * Тоталы таблицы (отображаются в футере), обьект ключи которого = поле field из массива колонок\n * */\n totals: {\n type: Object as PropType<ITableTotals<ITableColumn>>,\n default: () => ({})\n },\n sort: {\n type: Object as PropType<ITableSort>,\n default: () => ({})\n },\n /**\n * Фиксировать ли первую колонку таблицы\n * */\n fixedFirstColumn: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n /**\n * Фиксировать ли последнюю колонку таблицы\n * */\n fixedLastColumn: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Есть ли у таблицы еще данные, если true, при полном пролистывании таблицы вниз, будет вызываться метод @loading\n * */\n hasLoadMore: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n height: {\n type: [Number, String] as PropType<number | 'auto'>,\n default: 'auto'\n },\n /**\n * Высота строки в шапке\n * */\n headerRowHeight: {\n type: Number as PropType<number>,\n default: TABLE.defaultHeaderHeight\n },\n /**\n * Высота строки в теле таблицы\n * */\n rowHeight: {\n type: Number as PropType<number>,\n default: TABLE.defaultRowHeight\n },\n /**\n * Высота строки в подвале (строка с тоталами)\n * */\n footerRowHeight: {\n type: Number as PropType<number>,\n default: TABLE.defaultFooterRowHeight\n },\n /**\n * Отрисовка всей таблицы и полоса загрузки в каждой ячейке (скелетная загрузка)\n */\n skeletonLoading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Лоадинг внизу таблицы\n * */\n bottomLoading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Оверлей с затемнение на всю таблицу\n * */\n loading: {\n type: Boolean as PropType<boolean>,\n default: false\n },\n /**\n * Переводы плейсхолеров и текстов\n */\n placeholders: {\n type: Object as PropType<Partial<ITablePlaceholders>>,\n default: () => ({})\n },\n noDataIcon: {\n type: String as () => IconsListUnion,\n default: null\n },\n noDataImg: {\n type: String as PropType<string>,\n default: noTableDataImg\n },\n /**\n * Любые данные что бы передать их в карточку из таблицы\n * */\n toTableCardProps: {\n type: Object as PropType<Record<any, any>>,\n default: () => ({})\n }\n})\n\nconst openCardState = ref<TableCardState>({ state: false })\n\nconst mcTable = ref<null | HTMLElement>(null)\n\nconst hasData = computed((): boolean => {\n return !helper.isEmpty(props.data)\n})\nconst hasTotals = computed((): boolean => {\n return !helper.isEmpty(props.totals)\n})\nconst hasFixedColumn = computed((): boolean => {\n return props.fixedFirstColumn || props.fixedLastColumn\n})\nconst placeholders = reactive<ITablePlaceholders>(helper.deepMerge(defaultPlaceholders, props.placeholders))\n\nconst shadows = reactive({\n firstColHasShadow: false,\n lastColHasShadow: false\n})\n\nconst computedColumns = computed((): ITableColumnEnriched[] => {\n const [first] = props.columns\n return (openCardState.value.state ? [first] : props.columns).map((column, index) => {\n const fixedFirst = props.fixedFirstColumn && index === 0\n const fixedLast = props.fixedLastColumn && index === props.columns.length - 1\n\n return {\n ...column,\n fixedFirst,\n fixedLast,\n style: {\n ...(column.width\n ? {\n '--mc-table-cell-width': `${column.width}px`,\n '--mc-table-cell-max-width': `${column.width}px`,\n '--mc-table-cell-min-width': `${column.width}px`\n }\n : {\n '--mc-table-cell-min-width': column.minWidth && `${column.minWidth}px`,\n '--mc-table-cell-width': '100%'\n })\n }\n }\n })\n})\n\nconst computedHeaderColumns = computed((): ITableColumnEnriched[] => {\n return computedColumns.value.map((column) => ({\n ...column,\n class: {\n 'mc-table__table_header-cell': true,\n 'mc-table__table_header-cell--fixed-first': column.fixedFirst,\n 'mc-table__table_header-cell--fixed-last': column.fixedLast,\n 'mc-table__table_header-cell--shadow-first': column.fixedFirst && shadows.firstColHasShadow,\n 'mc-table__table_header-cell--shadow-last': column.fixedLast && shadows.lastColHasShadow\n }\n }))\n})\n\nconst computedBodyColumns = computed((): ITableColumnEnriched[] => {\n return computedColumns.value.map((column) => ({\n ...column,\n class: {\n 'mc-table__table_body-cell': true,\n 'mc-table__table_body-cell--fixed-first': column.fixedFirst,\n 'mc-table__table_body-cell--fixed-last': column.fixedLast,\n 'mc-table__table_body-cell--shadow-first': column.fixedFirst && shadows.firstColHasShadow,\n 'mc-table__table_body-cell--shadow-last': column.fixedLast && shadows.lastColHasShadow\n }\n }))\n})\n\nconst computedFooterColumns = computed((): ITableColumnEnriched[] => {\n return computedColumns.value.map((column) => ({\n ...column,\n class: {\n 'mc-table__table_footer-cell': true,\n 'mc-table__table_footer-cell--fixed-first': column.fixedFirst,\n 'mc-table__table_footer-cell--fixed-last': column.fixedLast,\n 'mc-table__table_footer-cell--shadow-first': column.fixedFirst && shadows.firstColHasShadow,\n 'mc-table__table_footer-cell--shadow-last': column.fixedLast && shadows.lastColHasShadow\n }\n }))\n})\n\nconst containerStyle = computed((): { [key: string]: string } => {\n return {\n '--mc-table-height': typeof props.height === 'number' ? `${props.height}px` : props.height,\n '--mc-table-header-row-height': helper.isNumber(props.headerRowHeight) ? `${props.headerRowHeight}px` : '40px',\n '--mc-table-row-height': helper.isNumber(props.rowHeight) ? `${props.rowHeight}px` : '40px',\n '--mc-table-footer-row-height': helper.isNumber(props.footerRowHeight) ? `${props.footerRowHeight}px` : '40px'\n }\n})\n\nconst computedTableCardProps = computed((): ITableCardProps => {\n return {\n tableColumns: props.columns,\n tableData: props.data,\n tableTotals: props.totals,\n tableSort: props.sort,\n tableHeaderRowHeight: props.headerRowHeight,\n tableFooterRowHeight: props.footerRowHeight,\n tableFixedFirstColumn: props.fixedFirstColumn,\n tableCardProps: props.toTableCardProps\n }\n})\n\nonMounted((): void => {\n addListeners()\n})\nonBeforeUnmount((): void => {\n removeListeners()\n})\n\nconst onBodyScroll = useThrottleFn((): void => {\n if (mcTable.value) {\n const { scrollLeft, scrollWidth, clientWidth } = mcTable.value\n const firstColShadow = props.fixedFirstColumn && scrollLeft > 0\n const lastColShadow = props.fixedLastColumn && scrollLeft + clientWidth < scrollWidth\n\n if (shadows.firstColHasShadow !== firstColShadow) shadows.firstColHasShadow = firstColShadow\n if (shadows.lastColHasShadow !== lastColShadow) shadows.lastColHasShadow = lastColShadow\n }\n}, 10)\n\nconst addListeners = (): void => {\n if (hasFixedColumn.value && mcTable.value) {\n onBodyScroll()\n mcTable.value.addEventListener('scroll', onBodyScroll)\n }\n}\nconst removeListeners = (): void => {\n if (hasFixedColumn.value && mcTable.value) mcTable.value.removeEventListener('scroll', onBodyScroll)\n}\n\nconst handleRowClick = (row: any): void => {\n emit('row-click', row)\n}\n\nconst handleSetCardState = (payload: TableCardState) => {\n openCardState.value = payload\n emit('table-card-opened', payload)\n}\n</script>\n\n<template>\n <div class=\"mc-table__container\" :style=\"containerStyle\">\n <div ref=\"mcTable\" class=\"mc-table\">\n <div class=\"mc-table__table\">\n <!-- HEADER -->\n <div class=\"mc-table__table_header\">\n <div class=\"mc-table__table_header-row\">\n <div v-for=\"(column, cI) in computedHeaderColumns\" :key=\"cI\" :class=\"column.class\" :style=\"column.style\">\n <div class=\"mc-table__table_header-cell_content\">\n <div class=\"mc-table__table_header-cell_content-left\">\n <mc-table-sort\n v-if=\"column.sortable\"\n :column=\"column.field\"\n :sort=\"sort\"\n @change=\"(val) => emit('sort', val)\"\n />\n <!-- slot для колонки хедера -->\n <slot name=\"header-cell\" :column=\"column\" :cellIndex=\"cI\">\n <mc-title :text-align=\"column.align\" :weight=\"Weights.SemiBold\" pre-line\n >{{ column.header }}\n </mc-title>\n </slot>\n </div>\n <div class=\"mc-table__table_header-cell_content-right\">\n <!-- slot справа от хедера колонки -->\n <slot :name=\"`${column.field}-header-right`\" :column=\"column\" :cellIndex=\"cI\" />\n <!-- slot для тотала (выводится в chip) -->\n <slot :name=\"`${column.field}-total`\" :column=\"column\" :cellIndex=\"cI\">\n <mc-chip\n v-if=\"column.total\"\n :title=\"column.total\"\n variation=\"hover-gray\"\n text-color=\"gray\"\n :size=\"ChipSize.S\"\n />\n </slot>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY -->\n <div class=\"mc-table__table_body\">\n <!-- Отображение скелетной загрузки -->\n <mc-table-skeleton-loading v-if=\"props.skeletonLoading\" :columns=\"computedBodyColumns\" />\n <template v-if=\"hasData\">\n <div\n v-for=\"(row, rI) in data\"\n :key=\"rI\"\n class=\"mc-table__table_body-row\"\n :class=\"{ 'mc-table__table_body-row--active': String(openCardState.id) === String(row.id) }\"\n @click=\"() => handleRowClick(row)\"\n >\n <div v-for=\"(column, cI) in computedBodyColumns\" :key=\"cI\" :class=\"column.class\" :style=\"column.style\">\n <div class=\"mc-table__table_body-cell_content\">\n <div class=\"mc-table__table_body-cell_content-left\">\n <!-- slot для контента (по именем колонки) -->\n <slot\n :name=\"column.field\"\n :row=\"row\"\n :rowIndex=\"rI\"\n :column=\"column\"\n :cellIndex=\"cI\"\n :cellValue=\"row[column.field]\"\n >\n <mc-title :text-align=\"column.align\" ellipsis>{{ row[column.field] }}</mc-title>\n </slot>\n </div>\n <!-- slot срава от контента (по именем колонки + '-right') -->\n <div v-if=\"slots[`${column.field}-right`]\" class=\"mc-table__table_body-cell_content-right\">\n <slot :name=\"`${column.field}-right`\" />\n </div>\n </div>\n </div>\n </div>\n </template>\n <mc-infinity-loading-trigger :active=\"props.hasLoadMore\" @loading=\"emit('loading')\" />\n </div>\n\n <!-- FOOTER -->\n <div v-if=\"hasTotals\" class=\"mc-table__table_footer\">\n <div class=\"mc-table__table_footer-row\">\n <div v-for=\"(column, cI) in computedFooterColumns\" :key=\"cI\" :class=\"column.class\" :style=\"column.style\">\n <slot name=\"footer-cell\" :column=\"column\" :cellIndex=\"cI\" :cellValue=\"totals[column.field]\">\n <mc-title :text-align=\"column.align\" :weight=\"Weights.SemiBold\">\n {{ totals[column.field] }}\n </mc-title>\n </slot>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- slot для карточки, по дефолту будет вывлдить карточку из вложенного роута -->\n <slot v-bind=\"computedTableCardProps\" @setTableCardState=\"handleSetCardState\">\n <!-- место для рендера карточки, когда она находится по вложенному роуту -->\n <router-view v-bind=\"computedTableCardProps\" @setTableCardState=\"handleSetCardState\" />\n </slot>\n <mc-bottom-loader v-if=\"bottomLoading\" />\n <mc-overlay v-if=\"loading\" />\n <mc-no-data\n v-if=\"!hasData\"\n variation=\"small\"\n :title=\"placeholders.no_data\"\n :img=\"props.noDataImg\"\n :icon=\"props.noDataIcon\"\n />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/font-families' as *;\n@use '../../../../assets/tokens/font-weights' as *;\n@use '../../../../assets/tokens/font-sizes' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/sizes' as *;\n@use '../../../../assets/tokens/box-shadows' as *;\n@use '../../../../assets/tokens/z-indexes' as *;\n@use '../../../../assets/tokens/media-queries' as *;\n@mixin fixed-first {\n left: 0;\n z-index: $z-index-notification;\n border-right: var(--border-style);\n background-color: $color-white;\n}\n@mixin fixed-last {\n right: 0;\n z-index: $z-index-notification;\n background-color: $color-white;\n}\n@mixin fixed-classes {\n &--fixed-first {\n @include fixed-first;\n }\n &--fixed-last {\n @include fixed-last;\n }\n}\n@mixin shadow-classes {\n &--shadow-first {\n @include shadow-first;\n }\n &--shadow-last {\n @include shadow-last;\n }\n}\n@mixin shadow-first {\n border-right-color: $color-transparent;\n &::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n background: none;\n width: 1px;\n height: 100%;\n box-shadow: 5px 0 8px $color-black;\n pointer-events: none;\n }\n}\n@mixin shadow-last {\n border-left-color: $color-transparent;\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n background: none;\n width: 1px;\n height: 100%;\n box-shadow: -5px 0 8px $color-black;\n pointer-events: none;\n }\n}\n@mixin grow {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n}\n@mixin cell-alignment {\n display: flex;\n align-items: center;\n padding: 0 $space-200;\n}\n.mc-table {\n font-family: $font-family-main;\n overflow-y: auto;\n max-height: 100%;\n @include grow;\n * {\n box-sizing: border-box;\n }\n &__container {\n --border-style: 1px solid #{$color-hover-gray};\n --table-row-hover-background-color: #{$color-hover-gray};\n --mc-table-height: auto;\n --mc-table-cell-width: auto;\n --mc-table-cell-max-width: auto;\n --mc-table-cell-min-width: auto;\n --mc-table-row-height: 40px;\n --mc-table-footer-row-height: 40px;\n\n position: relative;\n overflow: hidden;\n font-size: $font-size-200;\n height: var(--mc-table-height);\n border: var(--border-style);\n @include grow;\n }\n &__table {\n @include grow;\n &_header {\n position: sticky;\n top: 0;\n z-index: $z-index-overlay;\n &-row {\n display: flex;\n flex-wrap: nowrap;\n height: var(--mc-table-header-row-height);\n }\n &-cell {\n position: sticky;\n text-align: left;\n top: 0;\n z-index: 10;\n width: var(--mc-table-cell-width);\n max-width: var(--mc-table-cell-max-width);\n min-width: var(--mc-table-cell-min-width);\n background-color: $color-white;\n border-bottom: var(--border-style);\n @include cell-alignment;\n @include fixed-classes;\n @include shadow-classes;\n &_content {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n &-left {\n display: flex;\n align-items: center;\n @include child-indent-right($space-50);\n }\n &-right {\n display: flex;\n align-items: center;\n @include child-indent-right($space-50);\n }\n }\n }\n }\n &_body {\n @include grow;\n $body: &;\n &-row {\n display: flex;\n flex-wrap: nowrap;\n height: var(--mc-table-row-height);\n cursor: pointer;\n &--active {\n #{$body}-cell {\n background-color: var(--table-row-hover-background-color);\n }\n }\n &:hover {\n #{$body}-cell {\n background-color: var(--table-row-hover-background-color);\n &_content-right {\n display: flex;\n }\n }\n }\n @media #{$media-mobile} {\n #{$body}-cell {\n &_content-right {\n display: flex;\n }\n }\n }\n }\n &-cell {\n position: sticky;\n z-index: 15;\n text-align: left;\n width: var(--mc-table-cell-width);\n max-width: var(--mc-table-cell-max-width);\n min-width: var(--mc-table-cell-min-width);\n @include cell-alignment;\n @include fixed-classes;\n @include shadow-classes;\n &_content {\n width: 100%;\n &-right {\n position: absolute;\n display: none;\n top: 0;\n right: 0;\n padding-right: $space-200;\n padding-left: $space-200;\n height: var(--mc-table-row-height);\n align-items: center;\n background: linear-gradient(90deg, rgba($color-hover-gray, 0.2) 0%, $color-hover-gray 60%);\n z-index: $z-index-notification;\n @include child-indent-right($space-50);\n }\n &-left {\n display: flex;\n align-items: center;\n @include child-indent-right($space-50);\n }\n }\n }\n }\n &_footer {\n position: sticky;\n bottom: 0;\n z-index: $z-index-notification;\n &-row {\n display: flex;\n flex-wrap: nowrap;\n height: var(--mc-table-footer-row-height);\n }\n &-cell {\n position: sticky;\n z-index: 15;\n text-align: left;\n width: var(--mc-table-cell-width);\n max-width: var(--mc-table-cell-max-width);\n min-width: var(--mc-table-cell-min-width);\n background-color: $color-white;\n border-top: var(--border-style);\n @include cell-alignment;\n @include fixed-classes;\n @include shadow-classes;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McButton, McSvgIcon } from '@/components'\nimport { ButtonSize } from '@/enums'\nimport type { PropType } from 'vue'\n\nconst props = defineProps({\n buttonBackText: {\n type: String as PropType<string>,\n default: 'Back'\n },\n backTo: {\n type: String as PropType<string>,\n default: null\n }\n})\n</script>\n\n<template>\n <section class=\"mc-table-card-header\">\n <div class=\"mc-table-card-header__left\">\n <!-- @slot Слот контента -->\n <slot>\n <mc-button :to=\"props.backTo\" exact variation=\"purple-link\" :size=\"ButtonSize.Xs\">\n <template #icon-prepend>\n <mc-svg-icon name=\"arrow_backward\" />\n </template>\n {{ props.buttonBackText }}\n </mc-button>\n </slot>\n </div>\n <div class=\"mc-table-card-header__right\">\n <!-- @slot right -->\n <slot name=\"right\" />\n </div>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../../assets/styles/mixins' as *;\n@use '../../../../../assets/tokens/colors' as *;\n@use '../../../../../assets/tokens/spacings' as *;\n.mc-table-card-header {\n $block-name: &;\n\n display: flex;\n flex-wrap: nowrap;\n background-color: $color-white;\n padding: 0;\n padding-inline: $space-150 $space-200;\n align-items: center;\n height: 100%;\n\n &__left,\n &__right {\n @include layout-flex-fix();\n display: flex;\n flex-wrap: nowrap;\n @include child-indent-right($space-200);\n\n &:empty {\n display: none;\n }\n }\n\n &__left {\n margin-inline-end: auto;\n }\n\n &__right {\n margin-inline-start: auto;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, type PropType, ref, useSlots, watch } from 'vue'\nimport {\n type ITableColumn,\n type ITableColumnWidth,\n type ITableData,\n type ITableSort,\n type ITableTotals,\n type TableCardState\n} from '@/types/ITable'\nimport { TABLE } from '@/consts/table'\nimport { useHelper } from '@/composables'\n\nconst slots = useSlots()\nconst emit = defineEmits<{\n (e: 'set-table-card-state', value: TableCardState): void\n (e: 'card-id-updated', value: TableCardState): void\n}>()\n\n/**\n * Если карточка исползуется как отдельная страница!\n * 1. Если карточка используется как рутовый узел страницы, то компонент McTableCard, автоматически получит все пропсы от таблицы\n * 2. Если карточка используется НЕ как рутовый узел, нужно принять в компоненте все пропсы как в карточке, и передать их в компонент McTableCard\n *\n * При использовании как описано в п1. Автоматически получит все пропсы от таблицы, так же будут доступны через slot-scope в дефолтном слоте.\n * */\nconst props = defineProps({\n /**\n * Обязательно что бы таблица правильно подсвечивала выбранную строку. Проверка будет по полю id\n * Если карточка используется как рутовый узел страницы, будет автоматически приходить router.params.id\n * */\n id: {\n type: [String, Number] as PropType<string | number>\n },\n tableColumns: {\n type: Array as PropType<ITableColumnWidth[]>,\n default: () => []\n },\n tableData: {\n type: Array as PropType<ITableData>,\n default: () => []\n },\n tableTotals: {\n type: Object as PropType<ITableTotals<ITableColumn>>,\n default: () => ({})\n },\n tableSort: {\n type: Object as PropType<ITableSort>,\n default: () => ({})\n },\n tableFixedFirstColumn: {\n type: Boolean as PropType<boolean>,\n default: true\n },\n tableHeaderRowHeight: {\n type: Number as PropType<number>,\n default: TABLE.defaultHeaderHeight\n },\n tableFooterRowHeight: {\n type: Number as PropType<number>,\n default: TABLE.defaultFooterRowHeight\n },\n tableCardProps: {\n type: Object as PropType<Record<any, any>>,\n default: () => ({})\n },\n footerBlur: {\n type: Boolean,\n default: false\n }\n})\n\nconst helper = useHelper()\n\nconst tableFirstColWidth = computed((): number => {\n const [first] = props.tableColumns\n return first?.width ? first.width : TABLE.defaultTableFirstColWidth\n})\n\nconst bodyEl = ref<HTMLElement | null>(null)\nconst body_scrolled_to_bottom = ref(true)\n\nconst computedFooterClasses = computed((): { [key: string]: boolean } => {\n return {\n 'mc-table-card__footer': !!slots.footer,\n 'mc-table-card__footer--with-blur': props.footerBlur && !body_scrolled_to_bottom.value\n }\n})\n\nconst cardStyle = computed((): { [key: string]: string } => {\n const borderCompensations = -1\n return {\n '--table-card-header-height': helper.isNumber(props.tableHeaderRowHeight)\n ? `${props.tableHeaderRowHeight + borderCompensations}px`\n : `${TABLE.defaultHeaderHeight}px`,\n '--table-card-footer-height': helper.isNumber(props.tableFooterRowHeight)\n ? `${props.tableFooterRowHeight + borderCompensations}px`\n : `${TABLE.defaultFooterRowHeight}px`,\n marginLeft: `${tableFirstColWidth.value}px`\n }\n})\n\nonMounted(() => {\n if (props.footerBlur) {\n initBlur()\n }\n handleEmitTableCardState({ state: true, id: props.id })\n})\n\nonBeforeUnmount(() => {\n bodyEl.value && bodyEl.value.removeEventListener('scroll', handlerScroll)\n handleEmitTableCardState({ state: false })\n})\n\nconst initBlur = () => {\n try {\n body_scrolled_to_bottom.value = false\n bodyEl.value && bodyEl.value.addEventListener('scroll', handlerScroll)\n } catch (e) {\n console.error(e)\n }\n}\n\nconst handlerScroll = () => {\n try {\n if (bodyEl.value) {\n const { offsetHeight, scrollTop, scrollHeight } = bodyEl.value\n body_scrolled_to_bottom.value = offsetHeight + scrollTop === scrollHeight\n }\n } catch (e) {\n body_scrolled_to_bottom.value = true\n console.error(e)\n }\n}\n\nconst handleEmitTableCardState = (payload: TableCardState) => {\n emit('set-table-card-state', payload)\n}\n\nwatch(\n () => props.footerBlur,\n (val) => {\n if (val) {\n initBlur()\n } else {\n bodyEl.value && bodyEl.value.removeEventListener('scroll', handlerScroll)\n }\n }\n)\nwatch(\n () => props.id,\n (id) => {\n const state: TableCardState = { state: true, id }\n handleEmitTableCardState(state)\n emit('card-id-updated', state)\n }\n)\n</script>\n\n<template>\n <div class=\"mc-table-card\" :style=\"cardStyle\">\n <div v-if=\"$slots.header\" class=\"mc-table-card__header\">\n <!-- @slot Слот заголовка -->\n <slot name=\"header\" />\n </div>\n <div ref=\"bodyEl\" class=\"mc-table-card__body\">\n <!-- @slot Слот контента -->\n <slot v-bind=\"props\" />\n </div>\n <div v-if=\"$slots.footer || footerBlur\" :class=\"computedFooterClasses\">\n <!-- @slot Слот футера -->\n <slot name=\"footer\" />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/sizes' as *;\n@use '../../../../assets/tokens/z-indexes' as *;\n.mc-table-card {\n $block-name: &;\n\n --table-card-header-height: #{$size-500};\n --table-card-footer-height: #{$size-500};\n @include position(absolute, 0);\n z-index: $z-index-overlay;\n background-color: $color-white;\n border-inline-start: 1px solid $color-hover-gray;\n display: flex;\n flex-direction: column;\n @include custom-scroll();\n\n &__header {\n height: var(--table-card-header-height);\n border-bottom: 1px solid $color-hover-gray;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n }\n\n &__body {\n position: relative;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow-y: auto;\n }\n\n &__footer {\n border-top: 1px solid $color-hover-gray;\n height: var(--table-card-footer-height);\n flex-shrink: 0;\n padding: 0 $space-200;\n display: flex;\n align-items: center;\n @include child-indent-right($space-150);\n &:empty {\n display: none;\n }\n &--with-blur {\n position: relative;\n &::after {\n @include pseudo;\n height: $space-900;\n background: linear-gradient(to top, $color-white, transparent);\n position: absolute;\n width: 100%;\n inset-inline-start: 0;\n bottom: 100%;\n pointer-events: none;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue'\nimport type { ITableColumnEnriched } from '@/types'\n\nconst props = defineProps({\n columns: {\n type: Array as PropType<ITableColumnEnriched[]>,\n required: true,\n default: () => [] as ITableColumnEnriched[]\n }\n})\n\nconst firstColsWidth = computed(() => {\n const [firstColumn] = props.columns\n return firstColumn.width\n})\n</script>\n\n<template>\n <section class=\"mc-table-skeleton-loading skeleton-load-wrapper\">\n <div\n v-for=\"(column, i) in props.columns\"\n :style=\"column.style\"\n class=\"mc-table-skeleton-loading__col\"\n :key=\"`skeleton-col__${i}`\"\n >\n <div v-for=\"(cell, cellI) in 36\" :key=\"`skeleton-cell-${cellI}`\" class=\"mc-table-skeleton-loading__cell\">\n <div v-if=\"!cellI\" class=\"mc-table-skeleton-loading__loader mc-table-skeleton-loading__loader--more-height\">\n <div class=\"mc-table-skeleton-loading__loader_line\"></div>\n </div>\n <div v-if=\"!i\" class=\"mc-table-skeleton-loading__loader\" :style=\"{ minWidth: `${firstColsWidth}px` }\">\n <div class=\"mc-table-skeleton-loading__loader_avatar\"></div>\n <div class=\"mc-table-skeleton-loading__loader_preview-content\">\n <div class=\"mc-table-skeleton-loading__loader_line\"></div>\n <div class=\"mc-table-skeleton-loading__loader_line\"></div>\n </div>\n </div>\n <div v-else class=\"mc-table-skeleton-loading__loader\">\n <div class=\"mc-table-skeleton-loading__loader_line\"></div>\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<style lang=\"scss\">\n@use '../../../../assets/styles/mixins' as *;\n@use '../../../../assets/tokens/z-indexes' as *;\n@use '../../../../assets/tokens/colors' as *;\n@use '../../../../assets/tokens/spacings' as *;\n@use '../../../../assets/tokens/sizes' as *;\n@mixin gradient() {\n background: $color-hover-gray;\n background-image: -webkit-gradient(\n linear,\n left center,\n right center,\n from($color-hover-gray),\n color-stop(0.2, rgba($color-white, 0.5)),\n color-stop(0.4, $color-hover-gray),\n to($color-hover-gray)\n );\n background-image: -webkit-linear-gradient(\n left,\n $color-hover-gray 0%,\n rgba($color-white, 0.5) 20%,\n $color-hover-gray 40%,\n $color-hover-gray 100%\n );\n background-repeat: no-repeat;\n background-size: 800px 100%;\n animation: placeHolderShimmer 1s linear infinite forwards;\n border-radius: 10px;\n > * {\n background: transparent;\n position: relative;\n margin: 0 auto;\n width: 100%;\n overflow: hidden;\n &:after {\n content: '';\n position: absolute;\n border: 500px solid $color-white;\n width: 100%;\n }\n }\n}\n\n.mc-table-skeleton-loading {\n display: flex;\n overflow: hidden;\n max-width: 100%;\n width: 100%;\n position: absolute;\n height: 100%;\n z-index: $z-index-overlay;\n background-color: $color-white;\n user-select: none;\n //margin-top: calc(var(--mc-table-header-row-height) * -1);\n &__col {\n width: var(--mc-table-cell-width);\n max-width: var(--mc-table-cell-max-width);\n min-width: var(--mc-table-cell-min-width);\n }\n &__cell {\n height: var(--mc-table-row-height);\n }\n &__loader {\n width: 100%;\n display: flex;\n align-items: center;\n height: $space-500;\n padding: $space-100 $space-200;\n &_avatar {\n display: block;\n float: left;\n position: relative;\n height: $size-300;\n width: $size-300;\n min-width: $size-300;\n margin-inline-end: $space-50;\n @include gradient();\n }\n &_preview-content {\n display: flex;\n flex-direction: column;\n width: 100%;\n @include child-indent-bottom($space-50);\n }\n &_line {\n display: block;\n position: relative;\n height: $size-100;\n width: 100%;\n @include gradient();\n }\n &--more-height {\n .line {\n height: $size-150;\n width: 75%;\n min-width: 150px;\n }\n }\n\n @keyframes placeHolderShimmer {\n 0% {\n background-position: -468px 0;\n }\n 100% {\n background-position: 468px 0;\n }\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McSvgIcon } from '@/components'\nimport { computed, type PropType } from 'vue'\nimport type { ITableSort, ITableSortState } from '@/types/ITable'\n\nconst emit = defineEmits<{\n (e: 'change', value: ITableSort): void\n}>()\n\nconst props = defineProps({\n sort: {\n type: Object as PropType<ITableSort>,\n default: () => ({})\n },\n column: {\n type: String as PropType<string>,\n default: null\n }\n})\n\nconst isActive = computed((): boolean => {\n return props.column === props.sort.sort_column\n})\n\nconst sortState = computed((): ITableSortState => {\n switch (true) {\n case props.sort.sort_direction === 'asc' && isActive.value:\n return {\n direction: 'asc',\n next_direction: 'desc',\n icon: 'arrow_downward'\n }\n case props.sort.sort_direction === 'desc' && isActive.value:\n return {\n direction: 'desc',\n next_direction: 'asc',\n icon: 'arrow_upward'\n }\n default:\n return {\n direction: null,\n next_direction: 'asc',\n icon: 'arrow_up_down'\n }\n }\n})\n\nconst handleSortChange = () => {\n emit('change', {\n sort_column: props.column,\n sort_direction: sortState.value.next_direction\n })\n}\n</script>\n\n<template>\n <div class=\"mc-table-sort\" @click=\"handleSortChange\">\n <mc-svg-icon size=\"200\" :name=\"sortState.icon\" :color=\"isActive ? 'black' : 'gray'\" />\n </div>\n</template>\n\n<style lang=\"scss\">\n.mc-table-sort {\n cursor: pointer;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { McAvatar, McButton, McSvgIcon, McSeparator, McDropdown } from '@/components'\nimport { type PropType, ref } from 'vue'\nimport { ButtonSize, DropdownPositions, HorizontalAlignment } from '@/enums'\nimport type { IconsListUnion } from '@/types'\n\nconst props = defineProps({\n /**\n * Данные пользователя\n *\n */\n user: {\n type: Object as PropType<Record<string, any>>,\n default: () => ({})\n },\n /**\n * Меню языков\n *\n */\n menuLangs: {\n type: Array,\n default: () => []\n },\n /**\n * Локализация или текст по умолчанию\n *\n */\n defaultLang: {\n type: String as PropType<string>,\n default: 'Выберите язык'\n },\n /**\n * Текущая локализация\n *\n */\n currentLang: {\n type: String as PropType<string>,\n default: null\n }\n})\n\nconst menuLangsDD = ref<HTMLElement | null>(null)\nconst localesDropdownOpen = ref(false)\nconst userDropdownOpen = ref(false)\n</script>\n\n<template>\n <div class=\"mc-top-bar\">\n <div class=\"mc-top-bar__inner\">\n <div v-if=\"$slots.left\" class=\"mc-top-bar__left\">\n <slot name=\"left\" />\n </div>\n <div class=\"mc-top-bar__right\">\n <slot name=\"right\" />\n <mc-dropdown\n v-if=\"menuLangs && menuLangs.length\"\n ref=\"menuLangsDD\"\n :items=\"menuLangs\"\n v-model=\"localesDropdownOpen\"\n list-min-width=\"auto\"\n class=\"mc-top-bar__menu-langs\"\n >\n <template #activator>\n <mc-button variation=\"black-link\" uppercase>\n {{ currentLang || defaultLang }}\n <template #icon-append>\n <mc-svg-icon class=\"rotate\" name=\"arrow_drop_down\" />\n </template>\n </mc-button>\n </template>\n <template #item=\"{ item }\">\n <mc-button\n :to=\"item.to || item.href\"\n :exact=\"item.exact\"\n variation=\"black-flat\"\n :text-align=\"HorizontalAlignment.Left\"\n full-width\n >\n <template #icon-prepend>\n <mc-svg-icon :name=\"`flag_${item.name.toLowerCase()}` as IconsListUnion\" />\n </template>\n {{ item.name }}\n </mc-button>\n </template>\n </mc-dropdown>\n <slot name=\"user\">\n <mc-dropdown v-if=\"props.user\" v-model=\"userDropdownOpen\" :position=\"DropdownPositions.Right\">\n <template #activator>\n <mc-button variation=\"white-flat\" :size=\"ButtonSize.MCompact\">\n <template #icon-prepend>\n <mc-avatar :src=\"props.user.avatar\" rounded size=\"400\" />\n </template>\n </mc-button>\n </template>\n <slot name=\"user-dropdown-panel\" />\n </mc-dropdown>\n </slot>\n </div>\n </div>\n <mc-separator color=\"hover-gray\" indent-top=\"100\" />\n <slot name=\"bottom\" />\n </div>\n</template>\n\n<style lang=\"scss\">\n@use '../../../assets/styles/mixins' as *;\n@use '../../../assets/tokens/spacings' as *;\n@use '../../../assets/tokens/colors' as *;\n.mc-top-bar {\n $block-name: &;\n\n width: 100%;\n\n &__inner {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: $space-100 $space-150 0 $space-150;\n @include child-indent-right($space-100);\n }\n\n &__left,\n &__right {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n @include child-indent-right($space-100);\n }\n\n &__right {\n min-width: 0;\n flex: 1 1 auto;\n justify-content: flex-end;\n }\n &__menu-langs {\n .mc-svg-icon {\n svg {\n rect {\n stroke: $color-hover-gray;\n }\n }\n }\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ref, onMounted, nextTick, watch, type PropType, computed } from 'vue'\n\ninterface VisibleItem {\n key: number\n data: any\n index: number\n top: number\n}\n\nconst props = defineProps({\n /**\n * Массив данных для рендеринга\n * */\n items: {\n type: Array as PropType<any[]>,\n default: () => [],\n required: true\n },\n /**\n * Высота контейнера скролла\n * */\n containerHeight: {\n type: Number as PropType<number>,\n required: true\n },\n /**\n * Высота 1 элемента списка\n * */\n itemHeight: {\n type: Number as PropType<number>,\n default: 20,\n required: true\n },\n /**\n * Буфер для подгрузки дополнительных элементов вне видимой области\n * */\n buffer: {\n type: Number as PropType<number>,\n default: 1\n }\n})\n\nconst containerRef = ref<HTMLDivElement | null>(null)\nconst scrollTop = ref<number>(0)\nconst visibleItems = ref<VisibleItem[]>([])\nconst totalHeight = ref<number>(0)\n\nconst styles = computed((): { [key: string]: string } => {\n return {\n height: `${props.containerHeight}px`,\n overflowY: 'auto',\n position: 'relative'\n }\n})\n\nonMounted((): void => {\n calculateTotalHeight()\n nextTick(calculateVisibleItems)\n})\n\nconst calculateTotalHeight = (): void => {\n totalHeight.value = props.items.length * props.itemHeight\n}\n\nconst calculateVisibleItems = (): void => {\n const containerHeight = containerRef.value?.clientHeight || 0\n const startIndex = Math.floor(scrollTop.value / props.itemHeight)\n const endIndex = Math.min(props.items.length - 1, Math.floor((scrollTop.value + containerHeight) / props.itemHeight))\n const buffer = props.buffer || 5\n\n const result: VisibleItem[] = []\n for (let i = Math.max(0, startIndex - buffer); i <= Math.min(endIndex + buffer, props.items.length - 1); i++) {\n result.push({\n key: i,\n data: props.items[i],\n index: i,\n top: i * props.itemHeight\n } as VisibleItem)\n }\n visibleItems.value = result\n}\n\nconst onScroll = (): void => {\n scrollTop.value = containerRef.value?.scrollTop || 0\n requestAnimationFrame(calculateVisibleItems)\n}\n\nwatch(\n () => props.items,\n (): void => {\n calculateTotalHeight()\n nextTick(calculateVisibleItems)\n }\n)\n</script>\n\n<template>\n <div class=\"mc-virtual-scroll\" ref=\"containerRef\" @scroll=\"onScroll\" :style=\"styles\">\n <div\n v-for=\"item in visibleItems\"\n :key=\"`mc-virtual-scroll__item-${item.key}`\"\n class=\"mc-virtual-scroll__item\"\n :style=\"{ top: `${item.top}px` }\"\n >\n <slot name=\"item\" :item=\"item.data\" :index=\"item.index\"></slot>\n </div>\n\n <!-- Пустое пространство для скролла -->\n <div :style=\"{ height: `${totalHeight}px` }\"></div>\n </div>\n</template>\n\n<style lang=\"scss\">\n.mc-virtual-scroll {\n position: relative;\n overflow-y: auto;\n &__item {\n position: absolute;\n transition: all 0.3s ease;\n width: 100%;\n }\n}\n</style>\n"],"names":["props","__props","style","ref","wrapperStyle","hasStatus","computed","classes","wrapperClasses","watch","Colors","AvatarSizes","Sizes","Radiuses","rootStyles","variation","texts","currentStyle","color","setProperty","property","value","newColor","containerStyle","closeDrawer","d","closeModal","tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","toValue","r","unref","isClient","toString","isObject","val","noop","createFilterWrapper","filter","wrapper","args","resolve","reject","bypassFilter","invoke","debounceFilter","ms","options","timer","maxTimer","lastRejector","_clearTimeout","timer2","duration","maxDuration","throttleFilter","lastExec","isLeading","lastValue","trailing","leading","rejectOnCancel","isRef","clear","_invoke","elapsed","pausableFilter","extendFilter","isActive","pause","resume","eventFilter","readonly","promiseTimeout","throwOnTimeout","reason","identity","arg","getLifeCycleTarget","target","getCurrentInstance","useDebounceFn","useThrottleFn","watchWithFilter","source","cb","watchOptions","watchPausable","toRefs","objectRef","toRefs$1","result","key","customRef","v","_a","copy","newObject","tryOnMounted","sync","onMounted","nextTick","defaultWindow","unrefElement","elRef","plain","useEventListener","events","listeners","cleanups","cleanup","register","el","event","listener","options2","stopWatch","optionsClone","stop","useMounted","isMounted","instance","isVue2","useSupported","callback","_global","globalKey","handlers","getHandlers","getSSRHandler","fallback","guessSerializerType","rawInit","StorageSerializers","customStorageEventName","useStorage","defaults","storage","flush","deep","listenToStorageChanges","writeDefaults","mergeDefaults","shallow","window","onError","e","initOnMounted","data","shallowRef","_a2","type","serializer","pauseWatch","resumeWatch","pausableWatch","write","update","updateFromCustomEvent","dispatchWriteEvent","oldValue","newValue","payload","serialized","read","rawValue","useDraggable","_b","pointerTypes","preventDefault","stopPropagation","exact","onMove","onEnd","onStart","initialValue","axis","draggingElement","containerElement","draggingHandle","buttons","position","pressedDelta","filterEvent","handleEvent","start","container","containerRect","targetRect","pos","move","x","y","end","config","useResizeObserver","observerOptions","observer","isSupported","targets","_targets","els","_el","useLocalStorage","useSessionStorage","useTextareaAutosize","textarea","input","styleProp","textareaScrollHeight","textareaOldWidth","triggerResize","height","_styleTarget","contentRect","_TransitionPresets","TransitionPresets","createEasingFunction","p0","p1","p2","p3","a","a1","a2","b","c","calcBezier","t","getSlope","getTforX","aGuessT","i","currentSlope","currentX","lerp","alpha","toVec","executeTransition","from","to","fromVal","toVal","v1","v2","startedAt","endAt","trans","ease","tick","now","arr","n","_a3","_b2","useTransition","currentId","sourceVal","outputRef","id","disabled","vTooltip","useTooltip","buttonTooltip","TooltipSizes","TooltipPositions","mcButton","emit","__emit","buttonVariation","ButtonModifiers","styles","hoverBrightness","textColor","FontWeights","tag","isVariationLink","tagBind","handleBlur","handleClick","chipOptions","variationProps","currentVariation","ChipModifiers","Et","jn","T","K","ye","Mn","za","Ha","Ua","Va","Wa","qe","ja","l","Na","G","fl","Ge","vl","nt","Mt","Tt","He","ml","je","Pe","ln","pl","ut","yl","Ka","Sn","$n","gl","Ie","o","hl","An","Ga","Ye","rn","on","Tn","bl","Gt","Yt","yt","kl","wl","Ea","Qa","$a","sa","Dl","Ke","sn","un","Ia","ra","al","Te","Ml","$l","Zn","gt","tl","yn","gn","Oe","Kt","Me","Ot","Be","_t","da","lt","Aa","ft","ht","Bt","Pn","pe","De","Rn","It","Cn","pn","Al","At","it","La","hn","On","pt","dt","xn","st","_n","jt","Sl","Tl","Bn","Rt","ta","Fa","Pl","Ta","Sa","dn","Pa","Rl","Yn","qa","In","Ht","Qt","Nn","J","Se","Ra","ne","aa","Ca","Oa","_e","bt","f","B","L","cn","Cl","Ol","_l","Bl","Yl","Il","Nl","El","Fl","Ll","zl","Hl","Ul","Ba","Vl","Wl","jl","Kl","Ce","oe","ee","U","Q","_","h","C","H","E","P","ae","Gl","Vt","at","M","u","le","X","nl","me","p","A","S","Y","q","de","ve","z","te","g","se","$","ge","I","D","V","s","Ql","kt","bn","kn","ca","rt","ql","Xl","Jl","Le","We","ua","ie","Ne","Ee","be","tt","Z","ct","Ue","Zl","xl","er","tr","qt","ma","Kn","xe","F","we","Wt","Re","na","la","fa","ar","Ut","nr","En","Xt","$e","ke","Gn","Ze","Nt","Ve","Xa","Ja","va","Fn","Ln","zn","wn","oa","ll","lr","Jt","rr","Pt","Je","Qe","or","sr","ur","ir","dr","cr","fr","vr","mr","R","O","W","Dn","rl","ue","w","N","ce","he","ia","pr","yr","gr","hr","Hn","Un","br","kr","wr","Dr","Mr","$r","Ar","Tr","Sr","Pr","Rr","Cr","Or","_r","Br","ol","sl","vn","Yr","k","m","j","re","Ae","xt","zt","Da","ea","Ma","$t","Wn","wt","Dt","Xe","et","fe","vt","ot","Ft","Lt","pa","Zt","ya","ga","ha","ba","ka","wa","Ir","Nr","Jr","Er","tn","nn","ul","il","an","Fr","Lr","zr","Hr","Ur","Vr","Wr","jr","Kr","Gr","mn","Zr","Ct","Qr","Qn","xa","mt","qr","Xr","dl","cl","xr","eo","ao","no","lo","Ya","ro","qn","Xn","oo","so","uo","Fe","Za","en","Jn","Vn","io","attrs","useAttrs","fieldErrors","useFieldErrors","pickDate","formats","reactive","DatepickerTypes","DatepickerFormatsVariations","DatepickerFormat","DayjsFormat","DatepickerOutputFormat","computedType","dateFormat","isTimePicker","isDateTimePicker","isWeekPicker","isMonthPicker","isYearPicker","pickerType","isAutoApply","isFooterVisible","weekNumbers","modelType","hoursOptions","minutesOptions","secondsOptions","init","localValue","getFormattedPickerDate","date","getFormattedOutputDate","handlePreselectToday","handlerPreselectRange","period","dayjs","today","preparedValue","pv","setLocale","locale","dayjsLocales","selectPeriod","handlePickDate","handleSubmit","localStorage","sessionStorage","draggable_el","debounce","method","uniqueId","isSessionStorageType","isLocalStorageType","initialPositions","local_x","local_y","handleSavePosition","slots","useSlots","rtl","Directions","isChecked","inputProps","activeIcon","iconColor","computedOptions","optionData","handleInput","tooltipFormatter","computedValue","sliderProps","handleDrag","isEmpty","opt","not","fun","params","includes","str","query","filterOptions","search","label","customLabel","option","stripGroups","flattenOptions","values","prev","curr","filterGroups","groupLabel","groups","group","groupOptions","flow","fns","multiselectMixin","normalizedSearch","element","selectedGroup","groupValues","optionsToAdd","shouldClose","index","spaceAbove","spaceBelow","pointerMixin","script","count","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","createTextVNode","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createBlock","$event","withKeys","withModifiers","renderSlot","createVNode","withDirectives","Fragment","renderList","toDisplayString","vShow","createCommentVNode","Transition","withCtx","searchValue","field_select_ref","field_select_wrapper_ref","local_options","isGroupedOptions","SelectGroupKeys","hasTitle","hasPrepend","isValueMustBeArray","afi","isEmptyOptionsList","computedTitle","darkColors","lightColors","placeHolderColor","borderColor","backgroundColor","labelColor","computedModelValue","item","co","first","emitOriginalInput","emitInput","actualizeSavedOptions","handleTag","handleSearchChange","handleOpen","handleClose","useIMask","_temp","onAccept","onComplete","defaultValue","defaultUnmaskedValue","defaultTypedValue","_props","mask","masked","unmasked","typed","$el","$lastAcceptedValue","$lastAcceptedUnmaskedValue","$lastAcceptedTypedValue","storeLastAcceptedValues","_onAccept","_onComplete","updateUnmaskedValue","updateMaskedValue","updateTypedValue","_initMask","IMask","_destroyMask","_mask$value","onUnmounted","$newEl","extractOptionsFromProps","exclude","prop","VALUE_PROPS","Component3","defineComponent","_ref","pvalue","toRef","pmodelValue","punmasked","ptyped","Component2","Vue2","createElement","maskOptions","_this$maskRef","_this$maskRef2","_this$maskRef3","component","isVue3","prependWidth","appendWidth","prettyType","isRtl","isTextarea","isTextareaAutosize","isDate","InputTypes","isMaskVisible","isPassword","isAmountFormat","hasCharCounter","isPasswordType","passwordIcon","charCounter","charCounterTitle","charCounterColor","dateMask","maskInputAttrs","inputAttrs","getAmountFormat","getPreparedInputValue","inputStyles","space","Spaces","bottomStyle","spaceBottomToken","calculatePadding","setDecimalsLimit","integerPart","decimalPart","removeLeadingZero","first_char","cursor_position","getCaretPos","prepared_value","formattedToNumber","num","int","float_value","without_spaces_value","formatted_value","space_length","setCaretPos","ctrl","formatted_number","has_fraction","fraction","formatted_values","calculateSlotPadding","name","tokenSpace","acc","iconSpace","handlerCopy","togglePasswordVisibility","_value","disabledColor","saturateValue","setObserver","onBeforeUnmount","clearAllListeners","entry","btnAttrs","btnListeners","titleExtraProps","TitleVariations","Weights","topClasses","percentClasses","lineClasses","helpTextStyles","lineStyles","percentValue","indents","weight","open","animation_in_progress","animation","animate","toggleOpenValue","contentHeight","children","visibleChildren","hiddenCount","resizeObserver","updateChildrenVisible","totalWidth","visibleItems","itemCount","tempContainer","vnode","itemNode","app","createApp","itemWidth","moreContentWidth","itemIndent","helper","useHelper","responsivePropsClasses","adaptivePropsParams","adaptivePropsSizes","size","sizeValue","LineHeights","contentStyle","tooltipProps","debounceFn","collapses","recalculateCollapses","collapse","handleTrigger","selfRegisterCollapseMethod","openIndex","provide","randomNumber","useRandomNumber","inject","accordionTriggerMethod","isCollapsed","animated","iCollapseParams","close","toggle","slideOpenStart","slideOpenEnd","slideCloseStart","slideCloseEnd","throttle","localList_position","local_position","dropdown_body","activator","is_open","route","useRoute","dropdownClasses","dropdownStyles","throttledCalculateDropdownPosition","handleClickOutside","closeDropdown","setOpenState","handleItemClick","calculateDropdownPosition","rect","space_below","space_left","dropdown_height","dropdown_width","auto_list_position","DropdownListPositions","auto_position","DropdownPositions","panelStyles","isOpen","currentValues","currentValuesName","temporaryFilter","temporaryFilterName","currentCondition","currentConditionName","selectedOptionFilter","activeTag","placeholders","defaultPlaceholders","isDisableConfirmButton","newPresetName","activePreset","temporaryActivePreset","filterLocalStorage","presets","filter_name","UseEncodeDecode","currentFilter","isCurrentComponentIsRelation","FilterTypes","isCurrentComponentIsDate","isCurrentComponentIsText","isCurrentComponentIsRange","fastFilters","selected","regularFilters","visibilityToggleVariation","hasButtonAdd","buttonCreateIsDisable","updatePresets","handlerSetFastFilter","relation","filterValue","handleConditionChange","handleStoreTag","valueName","editTag","addTag","editRelationValue","addSimpleValue","addRelationValue","tagRelationValue","FilterRelations","tagRelation","selectedRelation","category","categoryName","getCategoriesWithNewRelation","setFilterValues","relationKeys","valuesName","selectedCategory","selectedCategoryName","conditionValue","conditionName","valName","newVal","setEmptyCondition","_currentCondition","onTagsChange","setRelationsToArrayFormat","handleClearAllTags","obj","newObj","categoryKey","categoryVal","onTagClick","condition","handleConfirm","handlePresetMouseUp","preset","handleDeletePreset","filteredPresets","handleCreatePreset","currentPreset","getPresetButtonVariation","filter_value","mappedPresets","computedCategory","append","computedVariation","handleChipClick","simpleValues","relationValues","prettyActiveTag","fastFilterTags","simpleTags","tagsWithoutFast","tags","_key","getFormattedVal","title","relationRows","relationKey","relationVal","_relationKey","_relationVal","empties","_categoryKey","_categoryVal","hasButtonClear","splitTags","addInitTags","parentVal","parentKey","onTagClose","handleClear","getFormattedNum","checkTagIsActive","currentMore","currentLess","more","emitValue","less","hasValue","hasMore","hasLess","hasMin","hasMax","relations","relationType","ajaxOptions","loading","McFieldText","McFieldSelect","computedPlaceholder","isAjax","selectedOptionValue","addAjaxOption","setValue","changeRelationType","setAjaxOptions","currentValue","currentValueName","hasVal","text","provideData","list","colStyle","justify","align","is_hidden","pretty_compact","has_compact_class","window_width","sideBarClasses","currentThemeConfig","sideBarStyles","wrapperStyles","hiddenMode","width","absoluteMode","backdropClasses","sidebarThemeConfig","SidebarTheme","defaultThemes","resize","handleToggleSize","openSideBar","themeConfig","closeButtonProps","messageStyles","HorizontalAlignment","ButtonSize","preparedMainMenu","onBeforeMount","setMainMenu","newRoute","oldRoute","target_route","childRoute","mi","exact_route","route_menu_match_new_route","mim","getMenuItemHeadClasses","menuMainItem","active","dropIsOpen","computedMenuApps","selfRegisterTabToMcTabs","isVisible","computedId","hash","hasAppendCount","appendCountStyles","computedTabName","header","showTab","hideTab","drag_options","show_left_blur","show_right_blur","scrollContainer","containerProps","ColumnAlignment","containerClasses","containerStyles","onMouseMove","onMouseUp","handlerScroll","createMutationObserver","container_width","scroll_width","scroll_left","onMouseDown","dragOptions","router","useRouter","tabs","activeVisibleTabs","tab","handleCheckInitTab","onUpdated","watchDisableTab","updateTabsState","selfRegisterTabMethod","preselectedTab","handleSelectTab","handleEmitChange","oldVal","overlayStartAnimationPosition","overlayEndAnimationPosition","isRightDrawerPosition","DrawerPositions","drawerStartAnimationPosition","drawerStartStaticPosition","overlayStateNumber","drawerStateNumber","drawerNumber","drawerOverlayNumber","overlayStyle","drawerStyle","overlayClasses","openDrawer","modalTransitionState","modalTransition","mcModalBody","modalInner","calculateSeparators","scrolled","scrollTop","scrollHeight","clientHeight","offset","handleBeforeClose","handleOpened","getParams","resizeHandler","attr","param","calculateIndents","indentDifferences","lineHeightDifferences","buttonDifferences","sizeDifferences","openModal","openCardState","mcTable","hasData","hasTotals","hasFixedColumn","shadows","computedColumns","column","fixedFirst","fixedLast","computedHeaderColumns","computedBodyColumns","computedFooterColumns","computedTableCardProps","addListeners","removeListeners","onBodyScroll","scrollLeft","scrollWidth","clientWidth","firstColShadow","lastColShadow","handleSetCardState","tableFirstColWidth","TABLE","bodyEl","body_scrolled_to_bottom","computedFooterClasses","cardStyle","initBlur","handleEmitTableCardState","offsetHeight","state","firstColsWidth","firstColumn","sortState","menuLangsDD","localesDropdownOpen","userDropdownOpen","containerRef","totalHeight","calculateTotalHeight","calculateVisibleItems","containerHeight","startIndex","endIndex","buffer"],"mappings":"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","x_google_ignoreList":[5,6,9,15,17,19,20,21,22,23,24]}