\r\n \r\n \r\n Автопроверенные возвраты\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n Ошибка с EImzo\r\n \r\n Закрыть\r\n \r\n \r\n\r\n \r\n \r\n Документ успешно подписан\r\n \r\n Закрыть\r\n \r\n \r\n \r\n Ошибка при подписании документа\r\n \r\n Закрыть\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoamingOutgoMatchBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoamingOutgoMatchBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoamingOutgoMatchBox.vue?vue&type=template&id=748f873b&scoped=true&\"\nimport script from \"./RoamingOutgoMatchBox.vue?vue&type=script&lang=js&\"\nexport * from \"./RoamingOutgoMatchBox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"748f873b\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VOverlay,VProgressCircular,VSnackbar,VSpacer,VToolbar,VToolbarTitle})\n","import Themeable from '../mixins/themeable';\nimport mixins from './mixins';\n/* @vue/component */\n\nexport default mixins(Themeable).extend({\n name: 'theme-provider',\n props: {\n root: Boolean\n },\n computed: {\n isDark() {\n return this.root ? this.rootIsDark : Themeable.options.computed.isDark.call(this);\n }\n\n },\n\n render() {\n return this.$slots.default && this.$slots.default.find(node => !node.isComment && node.text !== ' ');\n }\n\n});\n//# sourceMappingURL=ThemeProvider.js.map","import { keys } from '../../util/helpers';\n\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\n\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start && wrapper.start(Object.assign(event, wrapper));\n}\n\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end && wrapper.end(Object.assign(event, wrapper));\n handleGesture(wrapper);\n}\n\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move && wrapper.move(Object.assign(event, wrapper));\n}\n\nfunction createHandlers(value) {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\n\nfunction inserted(el, binding, vnode) {\n const value = binding.value;\n const target = value.parent ? el.parentElement : el;\n const options = value.options || {\n passive: true\n }; // Needed to pass unit tests\n\n if (!target) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = Object(target._touchHandlers);\n target._touchHandlers[vnode.context._uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\n\nfunction unbind(el, binding, vnode) {\n const target = binding.value.parent ? el.parentElement : el;\n if (!target || !target._touchHandlers) return;\n const handlers = target._touchHandlers[vnode.context._uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[vnode.context._uid];\n}\n\nexport const Touch = {\n inserted,\n unbind\n};\nexport default Touch;\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VAutocomplete/VAutocomplete.sass\"; // Extensions\n\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect';\nimport VTextField from '../VTextField/VTextField'; // Utilities\n\nimport { keyCodes } from '../../util/helpers';\nconst defaultMenuProps = { ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false\n};\n/* @vue/component */\n\nexport default VSelect.extend({\n name: 'v-autocomplete',\n props: {\n allowOverflow: {\n type: Boolean,\n default: true\n },\n autoSelectFirst: {\n type: Boolean,\n default: false\n },\n filter: {\n type: Function,\n default: (item, queryText, itemText) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1;\n }\n },\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps\n },\n noFilter: Boolean,\n searchInput: {\n type: String,\n default: undefined\n }\n },\n\n data() {\n return {\n lazySearch: this.searchInput\n };\n },\n\n computed: {\n classes() {\n return { ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1\n };\n },\n\n computedItems() {\n return this.filteredItems;\n },\n\n selectedValues() {\n return this.selectedItems.map(item => this.getValue(item));\n },\n\n hasDisplayedItems() {\n return this.hideSelected ? this.filteredItems.some(item => !this.hasItem(item)) : this.filteredItems.length > 0;\n },\n\n currentRange() {\n if (this.selectedItem == null) return 0;\n return String(this.getText(this.selectedItem)).length;\n },\n\n filteredItems() {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems;\n return this.allItems.filter(item => this.filter(item, String(this.internalSearch), String(this.getText(item))));\n },\n\n internalSearch: {\n get() {\n return this.lazySearch;\n },\n\n set(val) {\n this.lazySearch = val;\n this.$emit('update:search-input', val);\n }\n\n },\n\n isAnyValueAllowed() {\n return false;\n },\n\n isDirty() {\n return this.searchIsDirty || this.selectedItems.length > 0;\n },\n\n isSearching() {\n return this.multiple && this.searchIsDirty || this.searchIsDirty && this.internalSearch !== this.getText(this.selectedItem);\n },\n\n menuCanShow() {\n if (!this.isFocused) return false;\n return this.hasDisplayedItems || !this.hideNoData;\n },\n\n $_menuProps() {\n const props = VSelect.options.computed.$_menuProps.call(this);\n props.contentClass = `v-autocomplete__content ${props.contentClass || ''}`.trim();\n return { ...defaultMenuProps,\n ...props\n };\n },\n\n searchIsDirty() {\n return this.internalSearch != null && this.internalSearch !== '';\n },\n\n selectedItem() {\n if (this.multiple) return null;\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue));\n });\n },\n\n listData() {\n const data = VSelect.options.computed.listData.call(this);\n data.props = { ...data.props,\n items: this.virtualizedItems,\n noFilter: this.noFilter || !this.isSearching || !this.filteredItems.length,\n searchInput: this.internalSearch\n };\n return data;\n }\n\n },\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n\n isFocused(val) {\n if (val) {\n document.addEventListener('copy', this.onCopy);\n this.$refs.input && this.$refs.input.select();\n } else {\n document.removeEventListener('copy', this.onCopy);\n this.updateSelf();\n }\n },\n\n isMenuActive(val) {\n if (val || !this.hasSlot) return;\n this.lazySearch = undefined;\n },\n\n items(val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (!(oldVal && oldVal.length) && this.hideNoData && this.isFocused && !this.isMenuActive && val.length) this.activateMenu();\n },\n\n searchInput(val) {\n this.lazySearch = val;\n },\n\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf'\n },\n\n created() {\n this.setSearch();\n },\n\n methods: {\n onFilteredItemsChanged(val, oldVal) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return;\n this.setMenuIndex(-1);\n this.$nextTick(() => {\n if (!this.internalSearch || val.length !== 1 && !this.autoSelectFirst) return;\n this.$refs.menu.getTiles();\n this.setMenuIndex(0);\n });\n },\n\n onInternalSearchChanged() {\n this.updateMenuDimensions();\n },\n\n updateMenuDimensions() {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions();\n },\n\n changeSelectedIndex(keyCode) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return;\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1;\n } else {\n this.selectedIndex--;\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1;\n } else {\n this.selectedIndex++;\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem();\n }\n },\n\n deleteCurrentItem() {\n if (this.readonly) return;\n const index = this.selectedItems.length - 1;\n\n if (this.selectedIndex === -1) {\n this.selectedIndex = index;\n return;\n }\n\n const currentItem = this.selectedItems[this.selectedIndex];\n if (this.getDisabled(currentItem)) return;\n const newIndex = this.selectedIndex === index ? this.selectedIndex - 1 : this.selectedItems[this.selectedIndex + 1] ? this.selectedIndex : -1;\n\n if (newIndex === -1) {\n this.setValue(this.multiple ? [] : undefined);\n } else {\n this.selectItem(currentItem);\n }\n\n this.selectedIndex = newIndex;\n },\n\n clearableCallback() {\n this.internalSearch = undefined;\n VSelect.options.methods.clearableCallback.call(this);\n },\n\n genInput() {\n const input = VTextField.options.methods.genInput.call(this);\n input.data = input.data || {};\n input.data.attrs = input.data.attrs || {};\n input.data.attrs.autocomplete = input.data.attrs.autocomplete || 'off';\n input.data.domProps = input.data.domProps || {};\n input.data.domProps.value = this.internalSearch;\n return input;\n },\n\n genInputSlot() {\n const slot = VSelect.options.methods.genInputSlot.call(this);\n slot.data.attrs.role = 'combobox';\n return slot;\n },\n\n genSelections() {\n return this.hasSlot || this.multiple ? VSelect.options.methods.genSelections.call(this) : [];\n },\n\n onClick() {\n if (this.isDisabled) return;\n this.selectedIndex > -1 ? this.selectedIndex = -1 : this.onFocus();\n this.activateMenu();\n },\n\n onInput(e) {\n if (this.selectedIndex > -1 || !e.target) return;\n const target = e.target;\n const value = target.value; // If typing and menu is not currently active\n\n if (target.value) this.activateMenu();\n this.internalSearch = value;\n this.badInput = target.validity && target.validity.badInput;\n },\n\n onKeyDown(e) {\n const keyCode = e.keyCode;\n VSelect.options.methods.onKeyDown.call(this, e); // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n\n this.changeSelectedIndex(keyCode);\n },\n\n onSpaceDown(e) {},\n\n onTabDown(e) {\n VSelect.options.methods.onTabDown.call(this, e);\n this.updateSelf();\n },\n\n onUpDown() {\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu();\n },\n\n selectItem(item) {\n VSelect.options.methods.selectItem.call(this, item);\n this.setSearch();\n },\n\n setSelectedItems() {\n VSelect.options.methods.setSelectedItems.call(this); // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n\n if (!this.isFocused) this.setSearch();\n },\n\n setSearch() {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (!this.multiple || !this.internalSearch || !this.isMenuActive) {\n this.internalSearch = !this.selectedItems.length || this.multiple || this.hasSlot ? null : this.getText(this.selectedItem);\n }\n });\n },\n\n updateSelf() {\n if (!this.searchIsDirty && !this.internalValue) return;\n\n if (!this.valueComparator(this.internalSearch, this.getValue(this.internalValue))) {\n this.setSearch();\n }\n },\n\n hasItem(item) {\n return this.selectedValues.indexOf(this.getValue(item)) > -1;\n },\n\n onCopy(event) {\n if (this.selectedIndex === -1) return;\n const currentItem = this.selectedItems[this.selectedIndex];\n const currentItemText = this.getText(currentItem);\n event.clipboardData.setData('text/plain', currentItemText);\n event.clipboardData.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText);\n event.preventDefault();\n }\n\n }\n});\n//# sourceMappingURL=VAutocomplete.js.map","// Styles\nimport \"../../../src/components/VChip/VChip.sass\";\nimport mixins from '../../util/mixins'; // Components\n\nimport { VExpandXTransition } from '../transitions';\nimport VIcon from '../VIcon'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Themeable from '../../mixins/themeable';\nimport { factory as ToggleableFactory } from '../../mixins/toggleable';\nimport Routable from '../../mixins/routable';\nimport Sizeable from '../../mixins/sizeable'; // Utilities\n\nimport { breaking } from '../../util/console';\n/* @vue/component */\n\nexport default mixins(Colorable, Sizeable, Routable, Themeable, GroupableFactory('chipGroup'), ToggleableFactory('inputValue')).extend({\n name: 'v-chip',\n props: {\n active: {\n type: Boolean,\n default: true\n },\n activeClass: {\n type: String,\n\n default() {\n if (!this.chipGroup) return '';\n return this.chipGroup.activeClass;\n }\n\n },\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete'\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete'\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span'\n },\n textColor: String,\n value: null\n },\n data: () => ({\n proxyClass: 'v-chip--active'\n }),\n computed: {\n classes() {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses\n };\n },\n\n hasClose() {\n return Boolean(this.close);\n },\n\n isClickable() {\n return Boolean(Routable.options.computed.isClickable.call(this) || this.chipGroup);\n }\n\n },\n\n created() {\n const breakingProps = [['outline', 'outlined'], ['selected', 'input-value'], ['value', 'active'], ['@input', '@active.sync']];\n /* istanbul ignore next */\n\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);\n });\n },\n\n methods: {\n click(e) {\n this.$emit('click', e);\n this.chipGroup && this.toggle();\n },\n\n genFilter() {\n const children = [];\n\n if (this.isActive) {\n children.push(this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: {\n left: true\n }\n }, this.filterIcon));\n }\n\n return this.$createElement(VExpandXTransition, children);\n },\n\n genClose() {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true\n },\n on: {\n click: e => {\n e.stopPropagation();\n this.$emit('click:close');\n this.$emit('update:active', false);\n }\n }\n }, this.closeIcon);\n },\n\n genContent() {\n return this.$createElement('span', {\n staticClass: 'v-chip__content'\n }, [this.filter && this.genFilter(), this.$slots.default, this.hasClose && this.genClose()]);\n }\n\n },\n\n render(h) {\n const children = [this.genContent()];\n let {\n tag,\n data\n } = this.generateRouteLink();\n data.attrs = { ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs.tabindex\n };\n data.directives.push({\n name: 'show',\n value: this.active\n });\n data = this.setBackgroundColor(this.color, data);\n const color = this.textColor || this.outlined && this.color;\n return h(tag, this.setTextColor(color, data), children);\n }\n\n});\n//# sourceMappingURL=VChip.js.map","// Styles\nimport \"../../../src/components/VDivider/VDivider.sass\"; // Mixins\n\nimport Themeable from '../../mixins/themeable';\nexport default Themeable.extend({\n name: 'v-divider',\n props: {\n inset: Boolean,\n vertical: Boolean\n },\n\n render(h) {\n // WAI-ARIA attributes\n let orientation;\n\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal';\n }\n\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs\n },\n on: this.$listeners\n });\n }\n\n});\n//# sourceMappingURL=VDivider.js.map","// Styles\nimport \"../../../src/components/VList/VListItem.sass\"; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport Routable from '../../mixins/routable';\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport Themeable from '../../mixins/themeable';\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'; // Directives\n\nimport Ripple from '../../directives/ripple'; // Utilities\n\nimport { keyCodes } from './../../util/helpers';\nimport { removed } from '../../util/console'; // Types\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(Colorable, Routable, Themeable, GroupableFactory('listItemGroup'), ToggleableFactory('inputValue'));\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n directives: {\n Ripple\n },\n inheritAttrs: false,\n inject: {\n isInGroup: {\n default: false\n },\n isInList: {\n default: false\n },\n isInMenu: {\n default: false\n },\n isInNav: {\n default: false\n }\n },\n props: {\n activeClass: {\n type: String,\n\n default() {\n if (!this.listItemGroup) return '';\n return this.listItemGroup.activeClass;\n }\n\n },\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean\n },\n tag: {\n type: String,\n default: 'div'\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null\n },\n data: () => ({\n proxyClass: 'v-list-item--active'\n }),\n computed: {\n classes() {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses\n };\n },\n\n isClickable() {\n return Boolean(Routable.options.computed.isClickable.call(this) || this.listItemGroup);\n }\n\n },\n\n created() {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this);\n }\n },\n\n methods: {\n click(e) {\n if (e.detail) this.$el.blur();\n this.$emit('click', e);\n this.to || this.toggle();\n },\n\n genAttrs() {\n const attrs = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs\n };\n\n if (this.$attrs.hasOwnProperty('role')) {// do nothing, role already provided\n } else if (this.isInNav) {// do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'listitem';\n attrs['aria-selected'] = String(this.isActive);\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined;\n } else if (this.isInList) {\n attrs.role = 'listitem';\n }\n\n return attrs;\n }\n\n },\n\n render(h) {\n let {\n tag,\n data\n } = this.generateRouteLink();\n data.attrs = { ...data.attrs,\n ...this.genAttrs()\n };\n data.on = { ...data.on,\n click: this.click,\n keydown: e => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e);\n this.$emit('keydown', e);\n }\n };\n const children = this.$scopedSlots.default ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle\n }) : this.$slots.default;\n tag = this.inactive ? 'div' : tag;\n return h(tag, this.setTextColor(this.color, data), children);\n }\n\n});\n//# sourceMappingURL=VListItem.js.map","// Styles\nimport \"../../../src/components/VMenu/VMenu.sass\"; // Mixins\n\nimport Delayable from '../../mixins/delayable';\nimport Dependent from '../../mixins/dependent';\nimport Detachable from '../../mixins/detachable';\nimport Menuable from '../../mixins/menuable';\nimport Returnable from '../../mixins/returnable';\nimport Toggleable from '../../mixins/toggleable';\nimport Themeable from '../../mixins/themeable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside';\nimport Resize from '../../directives/resize'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { convertToUnit, keyCodes } from '../../util/helpers';\nimport ThemeProvider from '../../util/ThemeProvider';\nimport { removed } from '../../util/console';\nconst baseMixins = mixins(Dependent, Delayable, Detachable, Menuable, Returnable, Toggleable, Themeable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n name: 'v-menu',\n\n provide() {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme\n };\n },\n\n directives: {\n ClickOutside,\n Resize\n },\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true\n },\n closeOnContentClick: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto'\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnClick: {\n type: Boolean,\n default: true\n },\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left'\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition'\n }\n },\n\n data() {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null,\n tiles: []\n };\n },\n\n computed: {\n activeTile() {\n return this.tiles[this.listIndex];\n },\n\n calculatedLeft() {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth));\n if (!this.auto) return this.calcLeft(menuWidth) || '0';\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0';\n },\n\n calculatedMaxHeight() {\n const height = this.auto ? '200px' : convertToUnit(this.maxHeight);\n return height || '0';\n },\n\n calculatedMaxWidth() {\n return convertToUnit(this.maxWidth) || '0';\n },\n\n calculatedMinWidth() {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0';\n }\n\n const minWidth = Math.min(this.dimensions.activator.width + Number(this.nudgeWidth) + (this.auto ? 16 : 0), Math.max(this.pageWidth - 24, 0));\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth)) ? minWidth : parseInt(this.calculatedMaxWidth);\n return convertToUnit(Math.min(calculatedMaxWidth, minWidth)) || '0';\n },\n\n calculatedTop() {\n const top = !this.auto ? this.calcTop() : convertToUnit(this.calcYOverflow(this.calculatedTopAuto));\n return top || '0';\n },\n\n hasClickableTiles() {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1));\n },\n\n styles() {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex\n };\n }\n\n },\n watch: {\n isActive(val) {\n if (!val) this.listIndex = -1;\n },\n\n isContentActive(val) {\n this.hasJustFocused = val;\n },\n\n listIndex(next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next];\n tile.classList.add('v-list-item--highlighted');\n this.$refs.content.scrollTop = tile.offsetTop - tile.clientHeight;\n }\n\n prev in this.tiles && this.tiles[prev].classList.remove('v-list-item--highlighted');\n }\n\n },\n\n created() {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this);\n }\n },\n\n mounted() {\n this.isActive && this.callActivate();\n },\n\n methods: {\n activate() {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions(); // Start the transition\n\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto();\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition());\n }\n });\n });\n },\n\n calcScrollPosition() {\n const $el = this.$refs.content;\n const activeTile = $el.querySelector('.v-list-item--active');\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight;\n return activeTile ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2)) : $el.scrollTop;\n },\n\n calcLeftAuto() {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2);\n },\n\n calcTopAuto() {\n const $el = this.$refs.content;\n const activeTile = $el.querySelector('.v-list-item--active');\n\n if (!activeTile) {\n this.selectedIndex = null;\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop;\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile);\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition();\n const firstTileOffsetTop = $el.querySelector('.v-list-item').offsetTop;\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1;\n },\n\n changeListIndex(e) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles();\n\n if (!this.isActive || !this.hasClickableTiles) {\n return;\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false;\n return;\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile();\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile();\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click();\n } else {\n return;\n } // One of the conditions was met, prevent default action (#2988)\n\n\n e.preventDefault();\n },\n\n closeConditional(e) {\n const target = e.target;\n return this.isActive && !this._isDestroyed && this.closeOnClick && !this.$refs.content.contains(target);\n },\n\n genActivatorListeners() {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this);\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown;\n }\n\n return listeners;\n },\n\n genTransition() {\n if (!this.transition) return this.genContent();\n return this.$createElement('transition', {\n props: {\n name: this.transition\n }\n }, [this.genContent()]);\n },\n\n genDirectives() {\n const directives = [{\n name: 'show',\n value: this.isContentActive\n }]; // Do not add click outside for hover menu\n\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: () => {\n this.isActive = false;\n },\n args: {\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()]\n }\n });\n }\n\n return directives;\n },\n\n genContent() {\n const options = {\n attrs: { ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu'\n },\n staticClass: 'v-menu__content',\n class: { ...this.rootThemeClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: e => {\n e.stopPropagation();\n const target = e.target;\n if (target.getAttribute('disabled')) return;\n if (this.closeOnContentClick) this.isActive = false;\n },\n keydown: this.onKeyDown\n }\n };\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {};\n options.on.mouseenter = this.mouseEnterHandler;\n }\n\n if (this.openOnHover) {\n options.on = options.on || {};\n options.on.mouseleave = this.mouseLeaveHandler;\n }\n\n return this.$createElement('div', options, this.showLazyContent(this.getContentSlot()));\n },\n\n getTiles() {\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item'));\n },\n\n mouseEnterHandler() {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return;\n this.hasJustFocused = true;\n this.isActive = true;\n });\n },\n\n mouseLeaveHandler(e) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content.contains(e.relatedTarget)) return;\n requestAnimationFrame(() => {\n this.isActive = false;\n this.callDeactivate();\n });\n });\n },\n\n nextTile() {\n const tile = this.tiles[this.listIndex + 1];\n\n if (!tile) {\n if (!this.tiles.length) return;\n this.listIndex = -1;\n this.nextTile();\n return;\n }\n\n this.listIndex++;\n if (tile.tabIndex === -1) this.nextTile();\n },\n\n prevTile() {\n const tile = this.tiles[this.listIndex - 1];\n\n if (!tile) {\n if (!this.tiles.length) return;\n this.listIndex = this.tiles.length;\n this.prevTile();\n return;\n }\n\n this.listIndex--;\n if (tile.tabIndex === -1) this.prevTile();\n },\n\n onKeyDown(e) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => {\n this.isActive = false;\n });\n const activator = this.getActivator();\n this.$nextTick(() => activator && activator.focus());\n } else if (!this.isActive && [keyCodes.up, keyCodes.down].includes(e.keyCode)) {\n this.isActive = true;\n } // Allow for isActive watcher to generate tile list\n\n\n this.$nextTick(() => this.changeListIndex(e));\n },\n\n onResize() {\n if (!this.isActive) return; // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n\n this.$refs.content.offsetWidth;\n this.updateDimensions(); // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100);\n }\n\n },\n\n render(h) {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize\n }]\n };\n return h('div', data, [!this.activator && this.genActivator(), this.$createElement(ThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark\n }\n }, [this.genTransition()])]);\n }\n\n});\n//# sourceMappingURL=VMenu.js.map","import Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend({\n name: 'returnable',\n props: {\n returnValue: null\n },\n data: () => ({\n isActive: false,\n originalValue: null\n }),\n watch: {\n isActive(val) {\n if (val) {\n this.originalValue = this.returnValue;\n } else {\n this.$emit('update:return-value', this.originalValue);\n }\n }\n\n },\n methods: {\n save(value) {\n this.originalValue = value;\n setTimeout(() => {\n this.isActive = false;\n });\n }\n\n }\n});\n//# sourceMappingURL=index.js.map","import \"../../../src/components/VDataIterator/VDataFooter.sass\"; // Components\n\nimport VSelect from '../VSelect/VSelect';\nimport VIcon from '../VIcon';\nimport VBtn from '../VBtn'; // Types\n\nimport Vue from 'vue';\nexport default Vue.extend({\n name: 'v-data-footer',\n props: {\n options: {\n type: Object,\n required: true\n },\n pagination: {\n type: Object,\n required: true\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => [5, 10, 15, -1]\n },\n prevIcon: {\n type: String,\n default: '$prev'\n },\n nextIcon: {\n type: String,\n default: '$next'\n },\n firstIcon: {\n type: String,\n default: '$first'\n },\n lastIcon: {\n type: String,\n default: '$last'\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText'\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll'\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText'\n }\n },\n computed: {\n disableNextPageIcon() {\n return this.options.itemsPerPage < 0 || this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength || this.pagination.pageStop < 0;\n },\n\n computedItemsPerPageOptions() {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option;else return this.genItemsPerPageOption(option);\n });\n }\n\n },\n methods: {\n updateOptions(obj) {\n this.$emit('update:options', Object.assign({}, this.options, obj));\n },\n\n onFirstPage() {\n this.updateOptions({\n page: 1\n });\n },\n\n onPreviousPage() {\n this.updateOptions({\n page: this.options.page - 1\n });\n },\n\n onNextPage() {\n this.updateOptions({\n page: this.options.page + 1\n });\n },\n\n onLastPage() {\n this.updateOptions({\n page: this.pagination.pageCount\n });\n },\n\n onChangeItemsPerPage(itemsPerPage) {\n this.updateOptions({\n itemsPerPage,\n page: 1\n });\n },\n\n genItemsPerPageOption(option) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option\n };\n },\n\n genItemsPerPageSelect() {\n let value = this.options.itemsPerPage;\n const computedIPPO = this.computedItemsPerPageOptions;\n if (computedIPPO.length <= 1) return null;\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0];\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select'\n }, [this.$vuetify.lang.t(this.itemsPerPageText), this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.itemsPerPageText\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px'\n },\n on: {\n input: this.onChangeItemsPerPage\n }\n })]);\n },\n\n genPaginationInfo() {\n let children = ['–'];\n\n if (this.pagination.itemsLength) {\n const itemsLength = this.pagination.itemsLength;\n const pageStart = this.pagination.pageStart + 1;\n const pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0 ? itemsLength : this.pagination.pageStop;\n children = this.$scopedSlots['page-text'] ? [this.$scopedSlots['page-text']({\n pageStart,\n pageStop,\n itemsLength\n })] : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)];\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination'\n }, children);\n },\n\n genIcon(click, disabled, label, icon) {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true\n },\n on: {\n click\n },\n attrs: {\n 'aria-label': label\n }\n }, [this.$createElement(VIcon, icon)]);\n },\n\n genIcons() {\n const before = [];\n const after = [];\n before.push(this.genIcon(this.onPreviousPage, this.options.page === 1, this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'), this.$vuetify.rtl ? this.nextIcon : this.prevIcon));\n after.push(this.genIcon(this.onNextPage, this.disableNextPageIcon, this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'), this.$vuetify.rtl ? this.prevIcon : this.nextIcon));\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(this.onFirstPage, this.options.page === 1, this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'), this.$vuetify.rtl ? this.lastIcon : this.firstIcon));\n after.push(this.genIcon(this.onLastPage, this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1, this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'), this.$vuetify.rtl ? this.firstIcon : this.lastIcon));\n }\n\n return [this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before'\n }, before), this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]), this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after'\n }, after)];\n }\n\n },\n\n render() {\n return this.$createElement('div', {\n staticClass: 'v-data-footer'\n }, [this.genItemsPerPageSelect(), this.genPaginationInfo(), this.genIcons()]);\n }\n\n});\n//# sourceMappingURL=VDataFooter.js.map","// Mixins\nimport Positionable from '../positionable';\nimport Stackable from '../stackable';\nimport Activatable from '../activatable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { convertToUnit } from '../../util/helpers'; // Types\n\nconst baseMixins = mixins(Stackable, Positionable, Activatable);\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n name: 'menuable',\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto'\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0\n },\n nudgeRight: {\n type: [Number, String],\n default: 0\n },\n nudgeTop: {\n type: [Number, String],\n default: 0\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0\n },\n offsetOverflow: Boolean,\n openOnClick: Boolean,\n positionX: {\n type: Number,\n default: null\n },\n positionY: {\n type: Number,\n default: null\n },\n zIndex: {\n type: [Number, String],\n default: null\n }\n },\n data: () => ({\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0\n }\n },\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6\n }),\n computed: {\n computedLeft() {\n const a = this.dimensions.activator;\n const c = this.dimensions.content;\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0;\n const minWidth = Math.max(a.width, c.width);\n let left = 0;\n left += this.left ? activatorLeft - (minWidth - a.width) : activatorLeft;\n\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth)) ? a.width : Math.min(a.width, Number(this.maxWidth));\n left += this.left ? -maxWidth : a.width;\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n if (this.nudgeRight) left += parseInt(this.nudgeRight);\n return left;\n },\n\n computedTop() {\n const a = this.dimensions.activator;\n const c = this.dimensions.content;\n let top = 0;\n if (this.top) top += a.height - c.height;\n if (this.attach !== false) top += a.offsetTop;else top += a.top + this.pageYOffset;\n if (this.offsetY) top += this.top ? -a.height : a.height;\n if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n return top;\n },\n\n hasActivator() {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator;\n }\n\n },\n watch: {\n disabled(val) {\n val && this.callDeactivate();\n },\n\n isActive(val) {\n if (this.disabled) return;\n val ? this.callActivate() : this.callDeactivate();\n },\n\n positionX: 'updateDimensions',\n positionY: 'updateDimensions'\n },\n\n beforeMount() {\n this.hasWindow = typeof window !== 'undefined';\n },\n\n methods: {\n absolutePosition() {\n return {\n offsetTop: 0,\n offsetLeft: 0,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0\n };\n },\n\n activate() {},\n\n calcLeft(menuWidth) {\n return convertToUnit(this.attach !== false ? this.computedLeft : this.calcXOverflow(this.computedLeft, menuWidth));\n },\n\n calcTop() {\n return convertToUnit(this.attach !== false ? this.computedTop : this.calcYOverflow(this.computedTop));\n },\n\n calcXOverflow(left, menuWidth) {\n const xOverflow = left + menuWidth - this.pageWidth + 12;\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0);\n } else {\n left = Math.max(left, 12);\n }\n\n return left + this.getOffsetLeft();\n },\n\n calcYOverflow(top) {\n const documentHeight = this.getInnerHeight();\n const toTop = this.pageYOffset + documentHeight;\n const activator = this.dimensions.activator;\n const contentHeight = this.dimensions.content.height;\n const totalHeight = top + contentHeight;\n const isOverflowing = toTop < totalHeight; // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n\n if (isOverflowing && this.offsetOverflow && // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight) {\n top = this.pageYOffset + (activator.top - contentHeight); // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12; // If overflowing top\n } else if (top < this.pageYOffset && !this.allowOverflow) {\n top = this.pageYOffset + 12;\n }\n\n return top < 12 ? 12 : top;\n },\n\n callActivate() {\n if (!this.hasWindow) return;\n this.activate();\n },\n\n callDeactivate() {\n this.isContentActive = false;\n this.deactivate();\n },\n\n checkForPageYOffset() {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop();\n }\n },\n\n checkActivatorFixed() {\n if (this.attach !== false) return;\n let el = this.getActivator();\n\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true;\n return;\n }\n\n el = el.offsetParent;\n }\n\n this.activatorFixed = false;\n },\n\n deactivate() {},\n\n genActivatorListeners() {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this);\n const onClick = listeners.click;\n\n listeners.click = e => {\n if (this.openOnClick) {\n onClick && onClick(e);\n }\n\n this.absoluteX = e.clientX;\n this.absoluteY = e.clientY;\n };\n\n return listeners;\n },\n\n getInnerHeight() {\n if (!this.hasWindow) return 0;\n return window.innerHeight || document.documentElement.clientHeight;\n },\n\n getOffsetLeft() {\n if (!this.hasWindow) return 0;\n return window.pageXOffset || document.documentElement.scrollLeft;\n },\n\n getOffsetTop() {\n if (!this.hasWindow) return 0;\n return window.pageYOffset || document.documentElement.scrollTop;\n },\n\n getRoundedBoundedClientRect(el) {\n const rect = el.getBoundingClientRect();\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n };\n },\n\n measure(el) {\n if (!el || !this.hasWindow) return null;\n const rect = this.getRoundedBoundedClientRect(el); // Account for activator margin\n\n if (this.attach !== false) {\n const style = window.getComputedStyle(el);\n rect.left = parseInt(style.marginLeft);\n rect.top = parseInt(style.marginTop);\n }\n\n return rect;\n },\n\n sneakPeek(cb) {\n requestAnimationFrame(() => {\n const el = this.$refs.content;\n\n if (!el || el.style.display !== 'none') {\n cb();\n return;\n }\n\n el.style.display = 'inline-block';\n cb();\n el.style.display = 'none';\n });\n },\n\n startTransition() {\n return new Promise(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive;\n resolve();\n }));\n },\n\n updateDimensions() {\n this.hasWindow = typeof window !== 'undefined';\n this.checkActivatorFixed();\n this.checkForPageYOffset();\n this.pageWidth = document.documentElement.clientWidth;\n const dimensions = {}; // Activator should already be shown\n\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition();\n } else {\n const activator = this.getActivator();\n if (!activator) return;\n dimensions.activator = this.measure(activator);\n dimensions.activator.offsetLeft = activator.offsetLeft;\n\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop;\n } else {\n dimensions.activator.offsetTop = 0;\n }\n } // Display and hide to get dimensions\n\n\n this.sneakPeek(() => {\n dimensions.content = this.measure(this.$refs.content);\n this.dimensions = dimensions;\n });\n }\n\n }\n});\n//# sourceMappingURL=index.js.map","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n"],"sourceRoot":""}