{"version":3,"file":"js/chunk-vendors-edbe56a4.ae8bcf0c.js","mappings":"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","sources":["webpack://campus-addresses/../../../src/components/VAppBar/VAppBar.ts","webpack://campus-addresses/../../../src/components/VAppBar/VAppBarTitle.ts","webpack://campus-addresses/../../../src/components/VApp/VApp.ts","webpack://campus-addresses/../../../src/components/VProgressCircular/index.ts","webpack://campus-addresses/../../../src/components/VBtn/VBtn.ts","webpack://campus-addresses/../../../src/components/VBtn/index.ts","webpack://campus-addresses/../../../src/components/VFooter/VFooter.ts","webpack://campus-addresses/../../../src/components/VGrid/grid.ts","webpack://campus-addresses/../../../src/components/VGrid/VContainer.ts","webpack://campus-addresses/../../../src/components/VIcon/VIcon.ts","webpack://campus-addresses/../../../src/components/VIcon/index.ts","webpack://campus-addresses/../../../src/components/VResponsive/VResponsive.ts","webpack://campus-addresses/../../../src/components/VResponsive/index.ts","webpack://campus-addresses/../../../src/components/VImg/VImg.ts","webpack://campus-addresses/../../../src/components/VItemGroup/VItemGroup.ts","webpack://campus-addresses/../../../src/components/VList/VList.ts","webpack://campus-addresses/../../../src/components/VList/VListItem.ts","webpack://campus-addresses/../../../src/components/VMain/VMain.ts","webpack://campus-addresses/../../../src/components/VMenu/VMenu.ts","webpack://campus-addresses/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://campus-addresses/../../../src/components/VSheet/VSheet.ts","webpack://campus-addresses/../../../src/components/VSheet/index.ts","webpack://campus-addresses/../../../src/components/VTabs/VTab.ts","webpack://campus-addresses/../../../src/components/VSlideGroup/VSlideGroup.ts","webpack://campus-addresses/../../../src/components/VTabs/VTabsBar.ts","webpack://campus-addresses/../../../src/components/VWindow/VWindow.ts","webpack://campus-addresses/../../../src/components/VTabs/VTabsItems.ts","webpack://campus-addresses/../../../src/components/VTabs/VTabsSlider.ts","webpack://campus-addresses/../../../src/components/VTabs/VTabs.ts","webpack://campus-addresses/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://campus-addresses/../../../src/components/VToolbar/VToolbar.ts","webpack://campus-addresses/../../../src/components/transitions/createTransition.ts","webpack://campus-addresses/../../../src/components/transitions/expand-transition.ts","webpack://campus-addresses/../../../src/components/transitions/index.ts","webpack://campus-addresses/../../../src/directives/click-outside/index.ts","webpack://campus-addresses/../../../src/directives/intersect/index.ts","webpack://campus-addresses/../../../src/directives/resize/index.ts","webpack://campus-addresses/../../../src/directives/ripple/index.ts","webpack://campus-addresses/../../../src/directives/scroll/index.ts","webpack://campus-addresses/../../../src/directives/touch/index.ts","webpack://campus-addresses/../src/install.ts","webpack://campus-addresses/../src/framework.ts"],"sourcesContent":["// Styles\nimport './VAppBar.sass'\n\n// Extensions\nimport VToolbar from '../VToolbar/VToolbar'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Scrollable from '../../mixins/scrollable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VToolbar,\n Scrollable,\n SSRBootable,\n Toggleable,\n Applicationable('top', [\n 'clippedLeft',\n 'clippedRight',\n 'computedHeight',\n 'invertedScroll',\n 'isExtended',\n 'isProminent',\n 'value',\n ])\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-app-bar',\n\n directives: { Scroll },\n\n provide (): object {\n return { VAppBar: this }\n },\n\n props: {\n clippedLeft: Boolean,\n clippedRight: Boolean,\n collapseOnScroll: Boolean,\n elevateOnScroll: Boolean,\n fadeImgOnScroll: Boolean,\n hideOnScroll: Boolean,\n invertedScroll: Boolean,\n scrollOffScreen: Boolean,\n shrinkOnScroll: Boolean,\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n isActive: this.value,\n }\n },\n\n computed: {\n applicationProperty (): string {\n return !this.bottom ? 'top' : 'bottom'\n },\n canScroll (): boolean {\n return (\n Scrollable.options.computed.canScroll.call(this) &&\n (\n this.invertedScroll ||\n this.elevateOnScroll ||\n this.hideOnScroll ||\n this.collapseOnScroll ||\n this.isBooted ||\n // If falsy, user has provided an\n // explicit value which should\n // overwrite anything we do\n !this.value\n )\n )\n },\n classes (): object {\n return {\n ...VToolbar.options.computed.classes.call(this),\n 'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n 'v-app-bar': true,\n 'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n 'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n 'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n 'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n 'v-app-bar--hide-shadow': this.hideShadow,\n 'v-app-bar--is-scrolled': this.currentScroll > 0,\n 'v-app-bar--shrink-on-scroll': this.shrinkOnScroll,\n }\n },\n scrollRatio (): number {\n const threshold = this.computedScrollThreshold\n return Math.max((threshold - this.currentScroll) / threshold, 0)\n },\n computedContentHeight (): number {\n if (!this.shrinkOnScroll) return VToolbar.options.computed.computedContentHeight.call(this)\n\n const min = this.dense ? 48 : 56\n const max = this.computedOriginalHeight\n\n return min + (max - min) * this.scrollRatio\n },\n computedFontSize (): number | undefined {\n if (!this.isProminent) return undefined\n\n const min = 1.25\n const max = 1.5\n\n return min + (max - min) * this.scrollRatio\n },\n computedLeft (): number {\n if (!this.app || this.clippedLeft) return 0\n\n return this.$vuetify.application.left\n },\n computedMarginTop (): number {\n if (!this.app) return 0\n\n return this.$vuetify.application.bar\n },\n computedOpacity (): number | undefined {\n if (!this.fadeImgOnScroll) return undefined\n\n return this.scrollRatio\n },\n computedOriginalHeight (): number {\n let height = VToolbar.options.computed.computedContentHeight.call(this)\n if (this.isExtended) height += parseInt(this.extensionHeight)\n return height\n },\n computedRight (): number {\n if (!this.app || this.clippedRight) return 0\n\n return this.$vuetify.application.right\n },\n computedScrollThreshold (): number {\n if (this.scrollThreshold) return Number(this.scrollThreshold)\n\n return this.computedOriginalHeight - (this.dense ? 48 : 56)\n },\n computedTransform (): number {\n if (\n !this.canScroll ||\n (this.elevateOnScroll && this.currentScroll === 0 && this.isActive)\n ) return 0\n\n if (this.isActive) return 0\n\n const scrollOffScreen = this.scrollOffScreen\n ? this.computedHeight\n : this.computedContentHeight\n\n return this.bottom ? scrollOffScreen : -scrollOffScreen\n },\n hideShadow (): boolean {\n if (this.elevateOnScroll && this.isExtended) {\n return this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.elevateOnScroll) {\n return this.currentScroll === 0 ||\n this.computedTransform < 0\n }\n\n return (\n !this.isExtended ||\n this.scrollOffScreen\n ) && this.computedTransform !== 0\n },\n isCollapsed (): boolean {\n if (!this.collapseOnScroll) {\n return VToolbar.options.computed.isCollapsed.call(this)\n }\n\n return this.currentScroll > 0\n },\n isProminent (): boolean {\n return (\n VToolbar.options.computed.isProminent.call(this) ||\n this.shrinkOnScroll\n )\n },\n styles (): object {\n return {\n ...VToolbar.options.computed.styles.call(this),\n fontSize: convertToUnit(this.computedFontSize, 'rem'),\n marginTop: convertToUnit(this.computedMarginTop),\n transform: `translateY(${convertToUnit(this.computedTransform)})`,\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n }\n },\n },\n\n watch: {\n canScroll: 'onScroll',\n computedTransform () {\n // Normally we do not want the v-app-bar\n // to update the application top value\n // to avoid screen jump. However, in\n // this situation, we must so that\n // the clipped drawer can update\n // its top value when scrolled\n if (\n !this.canScroll ||\n (!this.clippedLeft && !this.clippedRight)\n ) return\n\n this.callUpdate()\n },\n invertedScroll (val: boolean) {\n this.isActive = !val || this.currentScroll !== 0\n },\n hideOnScroll (val: boolean) {\n this.isActive = !val || this.currentScroll < this.computedScrollThreshold\n },\n },\n\n created () {\n if (this.invertedScroll) this.isActive = false\n },\n\n methods: {\n genBackground () {\n const render = VToolbar.options.methods.genBackground.call(this)\n\n render.data = this._b(render.data || {}, render.tag!, {\n style: { opacity: this.computedOpacity },\n })\n\n return render\n },\n updateApplication (): number {\n return this.invertedScroll\n ? 0\n : this.computedHeight + this.computedTransform\n },\n thresholdMet () {\n if (this.invertedScroll) {\n this.isActive = this.currentScroll > this.computedScrollThreshold\n return\n }\n\n if (this.hideOnScroll) {\n this.isActive = this.isScrollingUp ||\n this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.currentThreshold < this.computedScrollThreshold) return\n\n this.savedScroll = this.currentScroll\n },\n },\n\n render (h): VNode {\n const render = VToolbar.options.render.call(this, h)\n\n render.data = render.data || {}\n\n if (this.canScroll) {\n render.data.directives = render.data.directives || []\n render.data.directives.push({\n arg: this.scrollTarget,\n name: 'scroll',\n value: this.onScroll,\n })\n }\n\n return render\n },\n})\n","// Mixins\nimport { inject } from '../../mixins/registrable'\n\n// Types\nimport { VNode } from 'vue'\nimport { ExtractVue } from '../../util/mixins'\nimport VAppBar from './VAppBar'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { easeInOutCubic } from '../../services/goto/easing-patterns'\n\nconst base = inject<'VAppBar', typeof VAppBar>('VAppBar', 'v-app-bar-title', 'v-app-bar')\n\ninterface options extends ExtractVue {\n $refs: {\n content: Element\n placeholder: Element\n }\n}\n\nexport default base.extend().extend({\n name: 'v-app-bar-title',\n\n data: () => ({\n contentWidth: 0,\n left: 0,\n width: 0,\n }),\n\n watch: {\n '$vuetify.breakpoint.width': 'updateDimensions',\n },\n\n computed: {\n styles (): object {\n if (!this.contentWidth) return {}\n\n const min = this.width\n const max = this.contentWidth\n const ratio = easeInOutCubic(Math.min(1, this.VAppBar.scrollRatio * 1.5))\n return {\n width: convertToUnit(min + (max - min) * ratio),\n visibility: this.VAppBar.scrollRatio ? 'visible' : 'hidden',\n }\n },\n },\n\n mounted () {\n this.updateDimensions()\n },\n\n methods: {\n updateDimensions (): void {\n const dimensions = this.$refs.placeholder.getBoundingClientRect()\n this.width = dimensions.width\n this.left = dimensions.left\n this.contentWidth = this.$refs.content.scrollWidth\n },\n },\n\n render (h): VNode {\n return h('div', {\n class: 'v-toolbar__title v-app-bar-title',\n }, [\n h('div', {\n class: 'v-app-bar-title__content',\n style: this.styles,\n ref: 'content',\n }, [this.$slots.default]),\n h('div', {\n class: 'v-app-bar-title__placeholder',\n style: {\n visibility: this.VAppBar.scrollRatio ? 'hidden' : 'visible',\n },\n ref: 'placeholder',\n }, [this.$slots.default]),\n ])\n },\n})\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://v2.vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VFooter.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types/vnode'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Applicationable('footer', [\n 'height',\n 'inset',\n ]),\n SSRBootable\n).extend({\n name: 'v-footer',\n\n props: {\n height: {\n default: 'auto',\n type: [Number, String],\n },\n inset: Boolean,\n padless: Boolean,\n tag: {\n type: String,\n default: 'footer',\n },\n },\n\n computed: {\n applicationProperty (): string {\n return this.inset ? 'insetFooter' : 'footer'\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-footer--absolute': this.absolute,\n 'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-footer--padless': this.padless,\n 'v-footer--inset': this.inset,\n }\n },\n computedBottom (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app\n ? this.$vuetify.application.bottom\n : 0\n },\n computedLeft (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.left\n : 0\n },\n computedRight (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.right\n : 0\n },\n isPositioned (): boolean {\n return Boolean(\n this.absolute ||\n this.fixed ||\n this.app\n )\n },\n styles (): object {\n const height = parseInt(this.height)\n\n return {\n ...VSheet.options.computed.styles.call(this),\n height: isNaN(height) ? height : convertToUnit(height),\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n bottom: convertToUnit(this.computedBottom),\n }\n },\n },\n\n methods: {\n updateApplication () {\n const height = parseInt(this.height)\n\n return isNaN(height)\n ? this.$el ? this.$el.clientHeight : 0\n : height\n },\n },\n\n render (h): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n class: this.classes,\n style: this.styles,\n })\n\n return h(this.tag, data, this.$slots.default)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\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'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\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\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\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 as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\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 isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n 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: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\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')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n if (!this.disabled) {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n }\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData, PropType } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\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 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 contentProps: {\n type: Object as PropType>,\n default: () => ({}),\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 as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\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 isContentActive (val) {\n this.hasJustFocused = val\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 const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\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()\n // Start the transition\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 calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\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\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\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.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\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 genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n ...this.contentProps,\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\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: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\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.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.disableKeys) return\n\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // 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 clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n tabValue: {\n required: false,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n if (this.tabValue != null) return this.tabValue\n\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: this.disabled ? -1 : 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'never',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // Always hide arrows\n case 'never': return false\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n obs.observe(this.$refs.content)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n } else {\n let itemsLength = 0\n this.$on('hook:beforeUpdate', () => {\n itemsLength = (this.$refs.content?.children || []).length\n })\n this.$on('hook:updated', () => {\n if (itemsLength === (this.$refs.content?.children || []).length) return\n this.setWidths()\n })\n }\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n }\n\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: Event) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirective extends VNodeDirective {\n value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n inserted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[vnode.context!._uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[vnode.context!._uid]\n },\n}\n\nexport default ClickOutside\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n // Don't allow the event to trigger ripples on any other elements\n e.rippleStop = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions, VNode } from 'vue'\n\ninterface ScrollVNodeDirective extends Omit {\n value: EventListener | {\n handler: EventListener\n options?: boolean | AddEventListenerOptions\n } | EventListenerObject & { options?: boolean | AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n const { self = false } = binding.modifiers || {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![vnode.context!._uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n if (!el._onScroll?.[vnode.context!._uid]) return\n\n const { handler, options, target = el } = el._onScroll[vnode.context!._uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[vnode.context!._uid]\n}\n\nexport const Scroll = {\n inserted,\n unbind,\n} as DirectiveOptions\n\nexport default Scroll\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = 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: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\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\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\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}\n\nexport default Touch\n","import OurVue, { VueConstructor } from 'vue'\nimport { VuetifyUseOptions } from 'vuetify/types'\nimport { consoleError } from './util/console'\n\nexport function install (Vue: VueConstructor, args: VuetifyUseOptions = {}) {\n if ((install as any).installed) return\n (install as any).installed = true\n\n if (OurVue !== Vue) {\n consoleError(`Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you're seeing \"$attrs is readonly\", it's caused by this`)\n }\n\n const components = args.components || {}\n const directives = args.directives || {}\n\n for (const name in directives) {\n const directive = directives[name]\n\n Vue.directive(name, directive)\n }\n\n (function registerComponents (components: any) {\n if (components) {\n for (const key in components) {\n const component = components[key]\n if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n Vue.component(key, component as typeof Vue)\n }\n }\n return true\n }\n return false\n })(components)\n\n // Used to avoid multiple mixins being setup\n // when in dev mode and hot module reload\n // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n if (Vue.$_vuetify_installed) return\n Vue.$_vuetify_installed = true\n\n Vue.mixin({\n beforeCreate () {\n const options = this.$options as any\n\n if (options.vuetify) {\n options.vuetify.init(this, this.$ssrContext)\n this.$vuetify = Vue.observable(options.vuetify.framework)\n } else {\n this.$vuetify = (options.parent && options.parent.$vuetify) || this\n }\n },\n beforeMount () {\n // @ts-ignore\n if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n // @ts-ignore\n this.$vuetify.isHydrating = true\n // @ts-ignore\n this.$vuetify.breakpoint.update(true)\n }\n },\n mounted () {\n // @ts-ignore\n if (this.$options.vuetify && this.$vuetify.isHydrating) {\n // @ts-ignore\n this.$vuetify.isHydrating = false\n // @ts-ignore\n this.$vuetify.breakpoint.update()\n }\n },\n })\n}\n","import { install } from './install'\n\n// Types\nimport Vue from 'vue'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\nimport {\n VuetifyService,\n VuetifyServiceContract,\n} from 'vuetify/types/services'\n\n// Services\nimport * as services from './services'\n\nexport default class Vuetify {\n static install = install\n\n static installed = false\n\n static version = __VUETIFY_VERSION__\n\n static config = {\n silent: false,\n }\n\n public framework: Dictionary = {\n isHydrating: false,\n } as any\n\n public installed: string[] = []\n\n public preset = {} as VuetifyPreset\n\n public userPreset: UserVuetifyPreset = {}\n\n constructor (userPreset: UserVuetifyPreset = {}) {\n this.userPreset = userPreset\n\n this.use(services.Presets)\n this.use(services.Application)\n this.use(services.Breakpoint)\n this.use(services.Goto)\n this.use(services.Icons)\n this.use(services.Lang)\n this.use(services.Theme)\n }\n\n // Called on the new vuetify instance\n // bootstrap in install beforeCreate\n // Exposes ssrContext if available\n init (root: Vue, ssrContext?: object) {\n this.installed.forEach(property => {\n const service = this.framework[property]\n\n service.framework = this.framework\n\n service.init(root, ssrContext)\n })\n\n // rtl is not installed and\n // will never be called by\n // the init process\n this.framework.rtl = Boolean(this.preset.rtl) as any\n }\n\n // Instantiate a VuetifyService\n use (Service: VuetifyService) {\n const property = Service.property\n\n if (this.installed.includes(property)) return\n\n // TODO maybe a specific type for arg 2?\n this.framework[property] = new Service(this.preset, this as any)\n this.installed.push(property)\n }\n}\n"],"names":["baseMixins","mixins","VToolbar","Scrollable","SSRBootable","Toggleable","Applicationable","extend","name","directives","Scroll","provide","VAppBar","this","props","clippedLeft","Boolean","clippedRight","collapseOnScroll","elevateOnScroll","fadeImgOnScroll","hideOnScroll","invertedScroll","scrollOffScreen","shrinkOnScroll","value","type","default","data","isActive","computed","applicationProperty","bottom","canScroll","options","call","isBooted","classes","collapse","absolute","app","fixed","hideShadow","currentScroll","scrollRatio","threshold","computedScrollThreshold","Math","max","computedContentHeight","min","dense","computedOriginalHeight","computedFontSize","isProminent","computedLeft","$vuetify","application","left","computedMarginTop","bar","computedOpacity","height","isExtended","parseInt","extensionHeight","computedRight","right","scrollThreshold","Number","computedTransform","computedHeight","isCollapsed","styles","fontSize","convertToUnit","marginTop","transform","watch","callUpdate","val","created","methods","genBackground","render","_b","tag","style","opacity","updateApplication","thresholdMet","isScrollingUp","currentThreshold","savedScroll","h","push","arg","scrollTarget","onScroll","base","inject","contentWidth","width","ratio","easeInOutCubic","visibility","mounted","updateDimensions","dimensions","$refs","placeholder","getBoundingClientRect","content","scrollWidth","class","ref","$slots","Themeable","dark","undefined","id","String","light","isDark","theme","beforeCreate","$root","Error","wrapper","staticClass","rtl","themeClasses","attrs","domProps","VProgressCircular","VSheet","Routable","Positionable","Sizeable","GroupableFactory","ToggleableFactory","activeClass","btnToggle","block","depressed","fab","icon","loading","outlined","plain","retainFocusOnClick","rounded","text","tile","proxyClass","disabled","isElevated","hasBg","isRound","to","top","groupClasses","elevationClasses","sizeableClasses","computedElevation","Elevatable","computedRipple","defaultRipple","circle","_a","ripple","elevation","measurableStyles","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","click","e","detail","$el","blur","$emit","toggle","genContent","$createElement","genLoader","loader","indeterminate","size","children","generateRouteLink","setColor","setBackgroundColor","setTextColor","includes","JSON","stringify","color","VBtn","inset","padless","computedBottom","isPositioned","isNaN","clientHeight","VGrid","Vue","functional","trim","Object","keys","filter","key","startsWith","length","join","Grid","fluid","mergeData","Array","concat","SIZE_MAP","isFontAwesome5","iconType","some","isSvgPath","test","VIcon","BindsAttrs","Colorable","required","medium","hasClickListener","listeners$","getIcon","iconName","remapInternalIcon","getSize","sizes","xSmall","small","large","xLarge","explicitSize","find","getDefaultData","attrs$","on","getSvgWrapperData","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","indexOf","isMaterialIcon","slice","renderSvgIcon","svgData","xmlns","viewBox","role","d","renderSvgIconComponent","component","nativeOn","$_wrapperFor","textContent","innerHTML","Measurable","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","getSlot","$listeners","hasIntersect","window","VResponsive","intersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","position","src","srcset","transition","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","mode","loadImage","init","entries","observer","isIntersecting","lazyImg","Image","pollForSize","onLoad","getSrc","endsWith","naturalHeight","onError","onload","decode","catch","err","consoleWarn","message","then","onerror","img","timeout","poll","complete","setTimeout","__genPlaceholder","slot","appear","node","modifiers","once","handler","BaseItemGroup","Comparable","Proxyable","mandatory","multiple","internalLazyValue","items","selectedIndex","selectedItem","selectedItems","item","index","toggleMethod","getValue","selectedValues","internalValue","isArray","v","valueComparator","intern","genData","i","onClick","updateInternalValue","register","$on","updateMandatory","updateItem","unregister","_isDestroyed","splice","valueIndex","updateItemsState","$nextTick","updateMultiple","updateSingle","last","reverse","defaultValue","findIndex","isSame","itemGroup","isInList","list","isInMenu","isInNav","expand","flat","nav","subheader","threeLine","twoLine","groups","g","_uid","listClick","uid","group","Ripple","isInGroup","inheritAttrs","listItemGroup","inactive","link","selectable","isClickable","removed","genAttrs","tabindex","inputValue","keydown","keyCode","keyCodes","enter","$scopedSlots","active","footer","insetFooter","paddingTop","paddingRight","paddingLeft","Dependent","Delayable","Returnable","Roundable","Menuable","ClickOutside","Resize","auto","closeOnClick","closeOnContentClick","disableKeys","maxHeight","offsetX","offsetY","openOnHover","origin","contentProps","calculatedTopAuto","defaultOffset","hasJustFocused","listIndex","resizeTimeout","tiles","activeTile","calculatedLeft","menuWidth","parseFloat","calculatedMinWidth","calcXOverflow","calcLeftAuto","calcLeft","calculatedMaxHeight","calculatedMaxWidth","maxWidth","minWidth","activator","nudgeWidth","pageWidth","calculatedTop","calcYOverflow","calcTop","hasClickableTiles","tabIndex","transformOrigin","zIndex","activeZIndex","isContentActive","next","prev","classList","add","scrollTop","contentHeight","offsetTop","goTo","appOffset","duration","container","remove","callActivate","activate","requestAnimationFrame","startTransition","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","scrollHeight","offsetHeight","computedTop","from","tileDistanceFromMenuTop","firstTileOffsetTop","changeListIndex","getTiles","tab","down","nextTile","up","prevTile","end","lastTile","home","firstTile","preventDefault","closeConditional","target","contains","genActivatorAttributes","attributes","Activatable","genActivatorListeners","listeners","onKeyDown","genTransition","genDirectives","include","getOpenDependentElements","getScopeIdAttrs","rootThemeClasses","roundedClasses","activatorFixed","menuable__content__active","getAttribute","scroll","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","getContentSlot","querySelectorAll","runDelay","relatedTarget","callDeactivate","esc","getActivator","focus","onResize","offsetWidth","clearTimeout","attach","genActivator","showLazyContent","VThemeProvider","button","rotate","radius","isVisible","calculatedSize","circumference","PI","normalizedValue","strokeDashArray","round","strokeDashOffset","strokeWidth","viewBoxSize","svgStyles","genCircle","offset","fill","cx","cy","r","genSvg","genInfo","onObserve","shaped","tabValue","href","$router","resolve","$route","append","replace","tabsBar","bias","c","x","abs","sign","calculateUpdatedOffset","selectedElement","widths","currentScrollOffset","clientWidth","offsetLeft","totalWidth","itemOffset","additionalOffset","calculateCenteredOffset","offsetCentered","BaseSlideGroup","Mobile","Touch","centerActive","nextIcon","prevIcon","showArrows","validator","isOverflowing","startX","isSwipingHorizontal","isSwiping","scrollOffset","canTouch","__cachedNext","__cachedPrev","hasAffixes","isMobile","hasNext","hasPrev","ResizeObserver","obs","observe","disconnect","itemsLength","setWidths","scrollLeft","onFocusin","el","composedPath","vm","genNext","onAffixClick","focusin","genIcon","location","upperLocation","toUpperCase","hasAffix","genPrev","VFadeTransition","genWrapper","start","overflowCheck","onTouchStart","move","onTouchMove","onTouchEnd","calculateNewOffset","direction","newAbosluteOffset","scrollTo","touchstartX","setProperty","diffX","touchmoveX","diffY","touchmoveY","touchstartY","document","documentElement","overflowY","maxScrollOffset","removeProperty","fn","stopPropagation","scrollIntoView","lastItemPosition","wrapperPosition","slideGroup","callSlider","onRouteChange","oldVal","newPath","path","oldPath","hasNew","hasOld","windowGroup","continuous","showArrowsOnHover","touch","touchless","vertical","changedByDelimiters","internalHeight","transitionHeight","transitionCount","isReverse","computedTransition","axis","internalReverse","hasActiveItems","internalIndex","updateReverse","genDefaultSlot","genContainer","genControlIcons","lang","t","_c","icons","getNextIndex","nextIndex","getPrevIndex","prevIndex","lastIndex","VWindow","rootIsDark","alignWithTitle","backgroundColor","centered","fixedTabs","grow","hideSlider","iconsAndText","mobileBreakpoint","optional","sliderColor","sliderSize","slider","transitionTime","isReversed","sliderStyles","computedColor","appIsDark","activeTab","genBar","change","VTabsBar","genSlider","genItems","VTabsItems","VTabsSlider","parseNodes","vnode","componentOptions","Ctor","quiet","isComment","extended","floating","prominent","short","breakpoint","smAndDown","VImg","genExtension","extension","unshift","mergeTransitions","dest","transitions","createSimpleTransition","hideOnLeave","leaveAbsolute","context","beforeEnter","webkitTransformOrigin","leave","_transitionInitialStyles","afterLeave","createJavascriptTransition","functions","expandedParentClass","sizeProperty","offsetProperty","upperFirst","_parent","parentNode","_initialStyle","overflow","initialStyle","afterEnter","resetStyles","enterCancelled","leaveCancelled","VFabTransition","VSlideXTransition","VExpandTransition","ExpandTransitionGenerator","VExpandXTransition","defaultConditional","checkEvent","binding","checkIsActive","attachedRoot","ShadowRoot","host","elements","directive","_clickOutside","lastMousedownWasOutside","handleShadow","callback","inserted","onMousedown","addEventListener","unbind","removeEventListener","IntersectionObserver","_observe","entry","unobserve","Intersect","passive","_onResize","DELAY_RIPPLE","webkitTransform","isTouchEvent","constructor","isKeyboardEvent","calculate","localX","localY","touches","clientX","clientY","scale","_ripple","center","sqrt","centerX","centerY","y","ripples","show","enabled","createElement","animation","appendChild","className","getComputedStyle","dataset","previousPosition","activated","performance","now","hide","getElementsByClassName","isHiding","diff","delay","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","rippleStop","isTouch","showTimerCommit","showTimer","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","space","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","removeListeners","update","oldValue","bind","self","_onScroll","handleGesture","touchendX","touchendY","dirRatio","minDistance","touchstart","event","changedTouches","assign","touchend","touchmove","createHandlers","parent","parentElement","handlers","_touchHandlers","eventName","install","args","installed","OurVue","consoleError","components","registerComponents","$_vuetify_subcomponents","$_vuetify_installed","mixin","$options","vuetify","$ssrContext","observable","framework","beforeMount","hasAttribute","isHydrating","Vuetify","userPreset","preset","use","services","ssrContext","property","service","Service","version","config","silent"],"sourceRoot":""}