mediacube-ui-v2 0.0.19 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +18786 -962
- package/dist/index.js.map +1 -1
- package/package.json +2 -12
- package/dist/vue-C68lofEO.cjs +0 -2
- package/dist/vue-C68lofEO.cjs.map +0 -1
- package/dist/vue-LDLBiXPq.js +0 -17903
- package/dist/vue-LDLBiXPq.js.map +0 -1
package/dist/vue-LDLBiXPq.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vue-LDLBiXPq.js","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 > \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","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","St","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","ze","_e","bt","f","B","L","cn","Cl","Ol","_l","Bl","Yl","Il","Nl","El","Fl","Ll","zl","Hl","Ul","Ba","Vl","Wl","jl","Kl","l","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","Fe","xt","zt","Da","Dt","ea","Ma","$t","Wn","wt","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","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","x2","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","provide","openIndex","randomNumber","useRandomNumber","selfRegisterCollapseMethod","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]}
|