{"version":3,"file":"js/chunk-vendors-caf483e5.f3d2e94e.js","mappings":"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","sources":["webpack://ida-jandaya/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://ida-jandaya/../../../src/components/VProgressCircular/index.ts","webpack://ida-jandaya/../../../src/components/VProgressLinear/VProgressLinear.ts","webpack://ida-jandaya/../../../src/components/VProgressLinear/index.ts","webpack://ida-jandaya/../../../src/components/VResponsive/VResponsive.ts","webpack://ida-jandaya/../../../src/components/VResponsive/index.ts","webpack://ida-jandaya/../../../src/components/VSubheader/index.ts","webpack://ida-jandaya/../../../src/components/VSelect/VSelectList.ts","webpack://ida-jandaya/../../../src/components/VSelect/VSelect.ts","webpack://ida-jandaya/../../../src/components/VSheet/VSheet.ts","webpack://ida-jandaya/../../../src/components/VSheet/index.ts","webpack://ida-jandaya/../../../src/components/VSlider/VSlider.ts","webpack://ida-jandaya/../../../src/components/VSnackbar/VSnackbar.ts","webpack://ida-jandaya/../../../src/components/VSubheader/VSubheader.ts","webpack://ida-jandaya/../../../src/components/VTabs/VTab.ts","webpack://ida-jandaya/../../../src/components/VWindow/VWindowItem.ts","webpack://ida-jandaya/../../../src/components/VTabs/VTabItem.ts","webpack://ida-jandaya/../../../src/components/VSlideGroup/VSlideGroup.ts","webpack://ida-jandaya/../../../src/components/VTabs/VTabsBar.ts","webpack://ida-jandaya/../../../src/components/VTabs/VTabs.ts","webpack://ida-jandaya/../../../src/components/VWindow/VWindow.ts","webpack://ida-jandaya/../../../src/components/VTabs/VTabsItems.ts","webpack://ida-jandaya/../../../src/components/VTabs/VTabsSlider.ts","webpack://ida-jandaya/../../../src/components/VTextField/VTextField.ts","webpack://ida-jandaya/../../../src/components/VTextField/index.ts","webpack://ida-jandaya/../../../src/components/VTextarea/VTextarea.ts","webpack://ida-jandaya/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://ida-jandaya/../../../src/components/VTimePicker/SelectingTimes.ts","webpack://ida-jandaya/../../../src/components/VTimePicker/VTimePickerTitle.ts","webpack://ida-jandaya/../../../src/components/VTimePicker/VTimePickerClock.ts","webpack://ida-jandaya/../../../src/components/VTimePicker/VTimePicker.ts","webpack://ida-jandaya/../../../src/components/VToolbar/VToolbar.ts","webpack://ida-jandaya/../../../src/components/VTooltip/VTooltip.ts","webpack://ida-jandaya/../../../src/components/transitions/createTransition.ts","webpack://ida-jandaya/../../../src/components/transitions/expand-transition.ts","webpack://ida-jandaya/../../../src/components/transitions/index.ts"],"sourcesContent":["// 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","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\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: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\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","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) ?? '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) ?? '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\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","import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n thumbPressed: false,\n mouseTimeout: -1,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n startOffset: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.thumbPressed\n ? this.showTicks || this.stepNumeric\n ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)'\n : 'none'\n : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n\n return isNaN(inputWidth) ? 0 : inputWidth\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n immediate: true,\n },\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n mousedown: this.onSliderMouseDown,\n touchstart: this.onSliderMouseDown,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: true,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.$attrs['aria-label'] || this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n window.clearTimeout(this.mouseTimeout)\n this.thumbPressed = false\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n this.internalValue = this.parseMouseMove(e)\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent | TouchEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect()\n const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { deprecate, removed } from '../../util/console'\n\n// Types\nimport { PropType, VNode } from 'vue'\n\nexport default mixins(\n VSheet,\n Colorable,\n Toggleable,\n PositionableFactory([\n 'absolute',\n 'bottom',\n 'left',\n 'right',\n 'top',\n ])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n\n props: {\n app: Boolean,\n centered: Boolean,\n contentClass: {\n type: String,\n default: '',\n },\n multiLine: Boolean,\n text: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n transition: {\n type: [Boolean, String] as PropType,\n default: 'v-snack-transition',\n validator: v => typeof v === 'string' || v === false,\n },\n vertical: Boolean,\n },\n\n data: () => ({\n activeTimeout: -1,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-snack--absolute': this.absolute,\n 'v-snack--active': this.isActive,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--centered': this.centered,\n 'v-snack--has-background': this.hasBackground,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--text': this.text,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical,\n }\n },\n // Text and outlined styles both\n // use transparent backgrounds\n hasBackground (): boolean {\n return (\n !this.text &&\n !this.outlined\n )\n },\n // Snackbar is dark by default\n // override themeable logic.\n isDark (): boolean {\n return this.hasBackground\n ? !this.light\n : Themeable.options.computed.isDark.call(this)\n },\n styles (): object {\n if (this.absolute || !this.app) return {}\n\n const {\n bar,\n bottom,\n footer,\n insetFooter,\n left,\n right,\n top,\n } = this.$vuetify.application\n\n return {\n paddingBottom: convertToUnit(bottom + footer + insetFooter),\n paddingLeft: convertToUnit(left),\n paddingRight: convertToUnit(right),\n paddingTop: convertToUnit(bar + top),\n }\n },\n },\n\n watch: {\n isActive: 'setTimeout',\n timeout: 'setTimeout',\n },\n\n mounted () {\n if (this.isActive) this.setTimeout()\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('auto-height')) {\n removed('auto-height', this)\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line eqeqeq\n if (this.timeout == 0) {\n deprecate('timeout=\"0\"', '-1', this)\n }\n },\n\n methods: {\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-snack__action ',\n }, [\n getSlot(this, 'action', {\n attrs: { class: 'v-snack__btn' },\n }),\n ])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-snack__content',\n class: {\n [this.contentClass]: true,\n },\n attrs: {\n role: 'status',\n 'aria-live': 'polite',\n },\n }, [getSlot(this)])\n },\n genWrapper () {\n const setColor = this.hasBackground\n ? this.setBackgroundColor\n : this.setTextColor\n\n const data = setColor(this.color, {\n staticClass: 'v-snack__wrapper',\n class: VSheet.options.computed.classes.call(this),\n style: VSheet.options.computed.styles.call(this),\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: {\n pointerenter: () => window.clearTimeout(this.activeTimeout),\n pointerleave: this.setTimeout,\n },\n })\n\n return this.$createElement('div', data, [\n this.genContent(),\n this.genActions(),\n ])\n },\n genTransition () {\n return this.$createElement('transition', {\n props: { name: this.transition },\n }, [this.genWrapper()])\n },\n setTimeout () {\n window.clearTimeout(this.activeTimeout)\n\n const timeout = Number(this.timeout)\n\n if (\n !this.isActive ||\n // TODO: remove 0 in v3\n [0, -1].includes(timeout)\n ) {\n return\n }\n\n this.activeTimeout = window.setTimeout(() => {\n this.isActive = false\n }, timeout)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n style: this.styles,\n }, [\n this.transition !== false\n ? this.genTransition()\n : this.genWrapper(),\n ])\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\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 },\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 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","// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n windowGroup: InstanceType\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-window-item',\n\n directives: {\n Touch,\n },\n\n props: {\n disabled: Boolean,\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n value: {\n required: false,\n },\n },\n\n data () {\n return {\n isActive: false,\n inTransition: false,\n }\n },\n\n computed: {\n classes (): object {\n return this.groupClasses\n },\n computedTransition (): string | boolean {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined'\n ? this.transition || ''\n : this.windowGroup.computedTransition\n }\n\n return typeof this.reverseTransition !== 'undefined'\n ? this.reverseTransition || ''\n : this.windowGroup.computedTransition\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genWindowItem () {\n return this.$createElement('div', {\n staticClass: 'v-window-item',\n class: this.classes,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: this.$listeners,\n }, this.genDefaultSlot())\n },\n onAfterTransition () {\n if (!this.inTransition) {\n return\n }\n\n // Finalize transition state.\n this.inTransition = false\n if (this.windowGroup.transitionCount > 0) {\n this.windowGroup.transitionCount--\n\n // Remove container height if we are out of transition.\n if (this.windowGroup.transitionCount === 0) {\n this.windowGroup.transitionHeight = undefined\n }\n }\n },\n onBeforeTransition () {\n if (this.inTransition) {\n return\n }\n\n // Initialize transition state here.\n this.inTransition = true\n if (this.windowGroup.transitionCount === 0) {\n // Set initial height for height transition.\n this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight)\n }\n this.windowGroup.transitionCount++\n },\n onTransitionCancelled () {\n this.onAfterTransition() // This should have the same path as normal transition end.\n },\n onEnter (el: HTMLElement) {\n if (!this.inTransition) {\n return\n }\n\n this.$nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!this.computedTransition || !this.inTransition) {\n return\n }\n\n // Set transition target height.\n this.windowGroup.transitionHeight = convertToUnit(el.clientHeight)\n })\n },\n },\n\n render (h): VNode {\n return h('transition', {\n props: {\n name: this.computedTransition,\n },\n on: {\n // Handlers for enter windows.\n beforeEnter: this.onBeforeTransition,\n afterEnter: this.onAfterTransition,\n enterCancelled: this.onTransitionCancelled,\n\n // Handlers for leave windows.\n beforeLeave: this.onBeforeTransition,\n afterLeave: this.onAfterTransition,\n leaveCancelled: this.onTransitionCancelled,\n\n // Enter handler for height transition.\n enter: this.onEnter,\n },\n }, this.showLazyContent(() => [this.genWindowItem()]))\n },\n})\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem'\n\n/* @vue/component */\nexport default VWindowItem.extend({\n name: 'v-tab-item',\n\n props: {\n id: String,\n },\n\n methods: {\n genWindowItem () {\n const item = VWindowItem.options.methods.genWindowItem.call(this)\n\n item.data!.domProps = item.data!.domProps || {}\n item.data!.domProps.id = this.id || this.value\n\n return item\n },\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 '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 // 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 './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","// 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 './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","import VTextField from './VTextField'\n\nexport { VTextField }\nexport default VTextField\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\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","enum SelectingTimes {\n Hour = 1,\n Minute = 2,\n Second = 3\n}\n\nexport { SelectingTimes }\n","import './VTimePickerTitle.sass'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport { pad } from '../VDatePicker/util'\nimport mixins from '../../util/mixins'\n\nimport { SelectingTimes } from './SelectingTimes'\nimport { VNode, PropType } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-time-picker-title',\n\n props: {\n ampm: Boolean,\n ampmReadonly: Boolean,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: {\n type: String as PropType<'am' | 'pm'>,\n validator: period => period === 'am' || period === 'pm',\n },\n readonly: Boolean,\n useSeconds: Boolean,\n selecting: Number,\n },\n\n methods: {\n genTime () {\n let hour = this.hour\n if (this.ampm) {\n hour = hour ? ((hour - 1) % 12 + 1) : 12\n }\n\n const displayedHour = this.hour == null ? '--' : this.ampm ? String(hour) : pad(hour)\n const displayedMinute = this.minute == null ? '--' : pad(this.minute)\n const titleContent = [\n this.genPickerButton('selecting', SelectingTimes.Hour, displayedHour, this.disabled),\n this.$createElement('span', ':'),\n this.genPickerButton('selecting', SelectingTimes.Minute, displayedMinute, this.disabled),\n ]\n\n if (this.useSeconds) {\n const displayedSecond = this.second == null ? '--' : pad(this.second)\n titleContent.push(this.$createElement('span', ':'))\n titleContent.push(this.genPickerButton('selecting', SelectingTimes.Second, displayedSecond, this.disabled))\n }\n return this.$createElement('div', {\n class: 'v-time-picker-title__time',\n }, titleContent)\n },\n genAmPm () {\n return this.$createElement('div', {\n staticClass: 'v-time-picker-title__ampm',\n class: {\n 'v-time-picker-title__ampm--readonly': this.ampmReadonly,\n },\n }, [\n (!this.ampmReadonly || this.period === 'am') ? this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly) : null,\n (!this.ampmReadonly || this.period === 'pm') ? this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly) : null,\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genTime()]\n\n this.ampm && children.push(this.genAmPm())\n\n return h('div', {\n staticClass: 'v-time-picker-title',\n }, children)\n },\n})\n","import './VTimePickerClock.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Vue, { VNode, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ninterface Point {\n x: number\n y: number\n}\n\ninterface options extends Vue {\n $refs: {\n clock: HTMLElement\n innerClock: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n Colorable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'v-time-picker-clock',\n\n props: {\n allowedValues: Function as PropType<(value: number) => boolean>,\n ampm: Boolean,\n disabled: Boolean,\n double: Boolean,\n format: {\n type: Function,\n default: (val: string | number) => val,\n } as PropValidator<(val: string | number) => string | number>,\n max: {\n type: Number,\n required: true,\n },\n min: {\n type: Number,\n required: true,\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0,\n },\n step: {\n type: Number,\n default: 1,\n },\n value: Number,\n },\n\n data () {\n return {\n inputValue: this.value,\n isDragging: false,\n valueOnMouseDown: null as number | null,\n valueOnMouseUp: null as number | null,\n }\n },\n\n computed: {\n count (): number {\n return this.max - this.min + 1\n },\n degreesPerUnit (): number {\n return 360 / this.roundCount\n },\n degrees (): number {\n return this.degreesPerUnit * Math.PI / 180\n },\n displayedValue (): number {\n return this.value == null ? this.min : this.value\n },\n innerRadiusScale (): number {\n return 0.62\n },\n roundCount (): number {\n return this.double ? (this.count / 2) : this.count\n },\n },\n\n watch: {\n value (value) {\n this.inputValue = value\n },\n },\n\n methods: {\n wheel (e: WheelEvent) {\n e.preventDefault()\n\n const delta = Math.sign(-e.deltaY || 1)\n let value = this.displayedValue\n do {\n value = value + delta\n value = (value - this.min + this.count) % this.count + this.min\n } while (!this.isAllowed(value) && value !== this.displayedValue)\n\n if (value !== this.displayedValue) {\n this.update(value)\n }\n },\n isInner (value: number) {\n return this.double && (value - this.min >= this.roundCount)\n },\n handScale (value: number) {\n return this.isInner(value) ? this.innerRadiusScale : 1\n },\n isAllowed (value: number) {\n return !this.allowedValues || this.allowedValues(value)\n },\n genValues () {\n const children: VNode[] = []\n\n for (let value = this.min; value <= this.max; value = value + this.step) {\n const color = value === this.value && (this.color || 'accent')\n children.push(this.$createElement('span', this.setBackgroundColor(color, {\n staticClass: 'v-time-picker-clock__item',\n class: {\n 'v-time-picker-clock__item--active': value === this.displayedValue,\n 'v-time-picker-clock__item--disabled': this.disabled || !this.isAllowed(value),\n },\n style: this.getTransform(value),\n domProps: { innerHTML: `${this.format(value)}` },\n })))\n }\n\n return children\n },\n genHand () {\n const scale = `scaleY(${this.handScale(this.displayedValue)})`\n const angle = this.rotate + this.degreesPerUnit * (this.displayedValue - this.min)\n const color = (this.value != null) && (this.color || 'accent')\n return this.$createElement('div', this.setBackgroundColor(color, {\n staticClass: 'v-time-picker-clock__hand',\n class: {\n 'v-time-picker-clock__hand--inner': this.isInner(this.value),\n },\n style: {\n transform: `rotate(${angle}deg) ${scale}`,\n },\n }))\n },\n getTransform (i: number) {\n const { x, y } = this.getPosition(i)\n return {\n left: `${50 + x * 50}%`,\n top: `${50 + y * 50}%`,\n }\n },\n getPosition (value: number) {\n const rotateRadians = this.rotate * Math.PI / 180\n return {\n x: Math.sin((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n y: -Math.cos((value - this.min) * this.degrees + rotateRadians) * this.handScale(value),\n }\n },\n onMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.valueOnMouseDown = null\n this.valueOnMouseUp = null\n this.isDragging = true\n this.onDragMove(e)\n },\n onMouseUp (e: MouseEvent | TouchEvent) {\n e.stopPropagation()\n\n this.isDragging = false\n if (this.valueOnMouseUp !== null && this.isAllowed(this.valueOnMouseUp)) {\n this.$emit('change', this.valueOnMouseUp)\n }\n },\n onDragMove (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n if ((!this.isDragging && e.type !== 'click') || !this.$refs.clock) return\n\n const { width, top, left } = this.$refs.clock.getBoundingClientRect()\n const { width: innerWidth } = this.$refs.innerClock.getBoundingClientRect()\n const { clientX, clientY } = 'touches' in e ? e.touches[0] : e\n const center = { x: width / 2, y: -width / 2 }\n const coords = { x: clientX - left, y: top - clientY }\n const handAngle = Math.round(this.angle(center, coords) - this.rotate + 360) % 360\n const insideClick = this.double && this.euclidean(center, coords) < (innerWidth + innerWidth * this.innerRadiusScale) / 4\n const checksCount = Math.ceil(15 / this.degreesPerUnit)\n let value\n\n for (let i = 0; i < checksCount; i++) {\n value = this.angleToValue(handAngle + i * this.degreesPerUnit, insideClick)\n if (this.isAllowed(value)) return this.setMouseDownValue(value)\n\n value = this.angleToValue(handAngle - i * this.degreesPerUnit, insideClick)\n if (this.isAllowed(value)) return this.setMouseDownValue(value)\n }\n },\n angleToValue (angle: number, insideClick: boolean): number {\n const value = (\n Math.round(angle / this.degreesPerUnit) +\n (insideClick ? this.roundCount : 0)\n ) % this.count + this.min\n\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n if (angle < (360 - this.degreesPerUnit / 2)) return value\n\n return insideClick ? this.max - this.roundCount + 1 : this.min\n },\n setMouseDownValue (value: number) {\n if (this.valueOnMouseDown === null) {\n this.valueOnMouseDown = value\n }\n\n this.valueOnMouseUp = value\n this.update(value)\n },\n update (value: number) {\n if (this.inputValue !== value) {\n this.inputValue = value\n this.$emit('input', value)\n }\n },\n euclidean (p0: Point, p1: Point) {\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n\n return Math.sqrt(dx * dx + dy * dy)\n },\n angle (center: Point, p1: Point) {\n const value = 2 * Math.atan2(p1.y - center.y - this.euclidean(center, p1), p1.x - center.x)\n return Math.abs(value * 180 / Math.PI)\n },\n },\n\n render (h): VNode {\n const data: VNodeData = {\n staticClass: 'v-time-picker-clock',\n class: {\n 'v-time-picker-clock--indeterminate': this.value == null,\n ...this.themeClasses,\n },\n on: (this.readonly || this.disabled) ? undefined : {\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n mouseleave: (e: MouseEvent) => (this.isDragging && this.onMouseUp(e)),\n touchstart: this.onMouseDown,\n touchend: this.onMouseUp,\n mousemove: this.onDragMove,\n touchmove: this.onDragMove,\n },\n ref: 'clock',\n }\n\n if (this.scrollable && data.on) {\n data.on.wheel = this.wheel\n }\n\n return h('div', data, [\n h('div', {\n staticClass: 'v-time-picker-clock__inner',\n ref: 'innerClock',\n }, [\n this.genHand(),\n this.genValues(),\n ]),\n ])\n },\n})\n","// Components\nimport VTimePickerTitle from './VTimePickerTitle'\nimport VTimePickerClock from './VTimePickerClock'\n\n// Mixins\nimport Picker from '../../mixins/picker'\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport { createRange } from '../../util/helpers'\nimport pad from '../VDatePicker/util/pad'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { SelectingTimes } from './SelectingTimes'\n\nconst rangeHours24 = createRange(24)\nconst rangeHours12am = createRange(12)\nconst rangeHours12pm = rangeHours12am.map(v => v + 12)\nconst range60 = createRange(60)\nconst selectingNames = { 1: 'hour', 2: 'minute', 3: 'second' }\nexport { SelectingTimes }\n\ntype Period = 'am' | 'pm'\ntype AllowFunction = (val: number) => boolean\n\nexport default mixins(\n Picker,\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-time-picker',\n\n props: {\n allowedHours: [Function, Array] as PropType,\n allowedMinutes: [Function, Array] as PropType,\n allowedSeconds: [Function, Array] as PropType,\n disabled: Boolean,\n format: {\n type: String as PropType<'ampm' | '24hr'>,\n default: 'ampm',\n validator (val: any) {\n return ['ampm', '24hr'].includes(val)\n },\n },\n min: String,\n max: String,\n readonly: Boolean,\n scrollable: Boolean,\n useSeconds: Boolean,\n value: null as any as PropType,\n ampmInTitle: Boolean,\n },\n\n data () {\n return {\n inputHour: null as number | null,\n inputMinute: null as number | null,\n inputSecond: null as number | null,\n lazyInputHour: null as number | null,\n lazyInputMinute: null as number | null,\n lazyInputSecond: null as number | null,\n period: 'am' as Period,\n selecting: SelectingTimes.Hour,\n }\n },\n\n computed: {\n selectingHour: {\n get (): boolean {\n return this.selecting === SelectingTimes.Hour\n },\n set (v: boolean) {\n this.selecting = SelectingTimes.Hour\n },\n },\n selectingMinute: {\n get (): boolean {\n return this.selecting === SelectingTimes.Minute\n },\n set (v: boolean) {\n this.selecting = SelectingTimes.Minute\n },\n },\n selectingSecond: {\n get (): boolean {\n return this.selecting === SelectingTimes.Second\n },\n set (v: boolean) {\n this.selecting = SelectingTimes.Second\n },\n },\n isAllowedHourCb (): AllowFunction {\n let cb: AllowFunction\n\n if (this.allowedHours instanceof Array) {\n cb = (val: number) => (this.allowedHours as number[]).includes(val)\n } else {\n cb = this.allowedHours\n }\n\n if (!this.min && !this.max) return cb\n\n const minHour = this.min ? Number(this.min.split(':')[0]) : 0\n const maxHour = this.max ? Number(this.max.split(':')[0]) : 23\n\n return (val: number) => {\n return val >= minHour * 1 &&\n val <= maxHour * 1 &&\n (!cb || cb(val))\n }\n },\n isAllowedMinuteCb (): AllowFunction {\n let cb: AllowFunction\n\n const isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour)\n if (this.allowedMinutes instanceof Array) {\n cb = (val: number) => (this.allowedMinutes as number[]).includes(val)\n } else {\n cb = this.allowedMinutes\n }\n\n if (!this.min && !this.max) {\n return isHourAllowed ? cb : () => false\n }\n\n const [minHour, minMinute] = this.min ? this.min.split(':').map(Number) : [0, 0]\n const [maxHour, maxMinute] = this.max ? this.max.split(':').map(Number) : [23, 59]\n const minTime = minHour * 60 + minMinute * 1\n const maxTime = maxHour * 60 + maxMinute * 1\n\n return (val: number) => {\n const time = 60 * this.inputHour! + val\n return time >= minTime &&\n time <= maxTime &&\n isHourAllowed &&\n (!cb || cb(val))\n }\n },\n isAllowedSecondCb (): AllowFunction {\n let cb: AllowFunction\n\n const isHourAllowed = !this.isAllowedHourCb || this.inputHour === null || this.isAllowedHourCb(this.inputHour)\n const isMinuteAllowed = isHourAllowed &&\n (!this.isAllowedMinuteCb ||\n this.inputMinute === null ||\n this.isAllowedMinuteCb(this.inputMinute)\n )\n\n if (this.allowedSeconds instanceof Array) {\n cb = (val: number) => (this.allowedSeconds as number[]).includes(val)\n } else {\n cb = this.allowedSeconds\n }\n\n if (!this.min && !this.max) {\n return isMinuteAllowed ? cb : () => false\n }\n\n const [minHour, minMinute, minSecond] = this.min ? this.min.split(':').map(Number) : [0, 0, 0]\n const [maxHour, maxMinute, maxSecond] = this.max ? this.max.split(':').map(Number) : [23, 59, 59]\n const minTime = minHour * 3600 + minMinute * 60 + (minSecond || 0) * 1\n const maxTime = maxHour * 3600 + maxMinute * 60 + (maxSecond || 0) * 1\n\n return (val: number) => {\n const time = 3600 * this.inputHour! + 60 * this.inputMinute! + val\n return time >= minTime &&\n time <= maxTime &&\n isMinuteAllowed &&\n (!cb || cb(val))\n }\n },\n isAmPm (): boolean {\n return this.format === 'ampm'\n },\n },\n\n watch: {\n value: 'setInputData',\n },\n\n mounted () {\n this.setInputData(this.value)\n this.$on('update:period', this.setPeriod)\n },\n\n methods: {\n genValue () {\n if (this.inputHour != null && this.inputMinute != null && (!this.useSeconds || this.inputSecond != null)) {\n return `${pad(this.inputHour)}:${pad(this.inputMinute)}` + (this.useSeconds ? `:${pad(this.inputSecond!)}` : '')\n }\n\n return null\n },\n emitValue () {\n const value = this.genValue()\n if (value !== null) this.$emit('input', value)\n },\n setPeriod (period: Period) {\n this.period = period\n if (this.inputHour != null) {\n const newHour = this.inputHour! + (period === 'am' ? -12 : 12)\n this.inputHour = this.firstAllowed('hour', newHour)\n this.emitValue()\n }\n },\n setInputData (value: string | null | Date) {\n if (value == null || value === '') {\n this.inputHour = null\n this.inputMinute = null\n this.inputSecond = null\n } else if (value instanceof Date) {\n this.inputHour = value.getHours()\n this.inputMinute = value.getMinutes()\n this.inputSecond = value.getSeconds()\n } else {\n const [, hour, minute, , second, period] = value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6)\n\n this.inputHour = period ? this.convert12to24(parseInt(hour, 10), period as Period) : parseInt(hour, 10)\n this.inputMinute = parseInt(minute, 10)\n this.inputSecond = parseInt(second || 0, 10)\n }\n\n this.period = (this.inputHour == null || this.inputHour < 12) ? 'am' : 'pm'\n },\n convert24to12 (hour: number) {\n return hour ? ((hour - 1) % 12 + 1) : 12\n },\n convert12to24 (hour: number, period: Period) {\n return hour % 12 + (period === 'pm' ? 12 : 0)\n },\n onInput (value: number) {\n if (this.selecting === SelectingTimes.Hour) {\n this.inputHour = this.isAmPm ? this.convert12to24(value, this.period) : value\n } else if (this.selecting === SelectingTimes.Minute) {\n this.inputMinute = value\n } else {\n this.inputSecond = value\n }\n this.emitValue()\n },\n onChange (value: number) {\n this.$emit(`click:${selectingNames[this.selecting]}`, value)\n\n const emitChange = this.selecting === (this.useSeconds ? SelectingTimes.Second : SelectingTimes.Minute)\n\n if (this.selecting === SelectingTimes.Hour) {\n this.selecting = SelectingTimes.Minute\n } else if (this.useSeconds && this.selecting === SelectingTimes.Minute) {\n this.selecting = SelectingTimes.Second\n }\n\n if (this.inputHour === this.lazyInputHour &&\n this.inputMinute === this.lazyInputMinute &&\n (!this.useSeconds || this.inputSecond === this.lazyInputSecond)\n ) return\n\n const time = this.genValue()\n if (time === null) return\n\n this.lazyInputHour = this.inputHour\n this.lazyInputMinute = this.inputMinute\n this.useSeconds && (this.lazyInputSecond = this.inputSecond)\n\n emitChange && this.$emit('change', time)\n },\n firstAllowed (type: 'hour' | 'minute' | 'second', value: number) {\n const allowedFn = type === 'hour' ? this.isAllowedHourCb : (type === 'minute' ? this.isAllowedMinuteCb : this.isAllowedSecondCb)\n if (!allowedFn) return value\n\n // TODO: clean up\n const range = type === 'minute'\n ? range60\n : (type === 'second'\n ? range60\n : (this.isAmPm\n ? (value < 12\n ? rangeHours12am\n : rangeHours12pm)\n : rangeHours24))\n const first = range.find(v => allowedFn((v + value) % range.length + range[0]))\n return ((first || 0) + value) % range.length + range[0]\n },\n genClock () {\n return this.$createElement(VTimePickerClock, {\n props: {\n allowedValues:\n this.selecting === SelectingTimes.Hour\n ? this.isAllowedHourCb\n : (this.selecting === SelectingTimes.Minute\n ? this.isAllowedMinuteCb\n : this.isAllowedSecondCb),\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n double: this.selecting === SelectingTimes.Hour && !this.isAmPm,\n format: this.selecting === SelectingTimes.Hour\n ? (this.isAmPm ? this.convert24to12 : (val: number) => val)\n : (val: number) => pad(val, 2),\n light: this.light,\n max: this.selecting === SelectingTimes.Hour ? (this.isAmPm && this.period === 'am' ? 11 : 23) : 59,\n min: this.selecting === SelectingTimes.Hour && this.isAmPm && this.period === 'pm' ? 12 : 0,\n readonly: this.readonly,\n scrollable: this.scrollable,\n size: Number(this.width) - ((!this.fullWidth && this.landscape) ? 80 : 20),\n step: this.selecting === SelectingTimes.Hour ? 1 : 5,\n value: this.selecting === SelectingTimes.Hour\n ? this.inputHour\n : (this.selecting === SelectingTimes.Minute\n ? this.inputMinute\n : this.inputSecond),\n },\n on: {\n input: this.onInput,\n change: this.onChange,\n },\n ref: 'clock',\n })\n },\n genClockAmPm () {\n return this.$createElement('div', this.setTextColor(this.color || 'primary', {\n staticClass: 'v-time-picker-clock__ampm',\n }), [\n this.genPickerButton('period', 'am', this.$vuetify.lang.t('$vuetify.timePicker.am'), this.disabled || this.readonly),\n this.genPickerButton('period', 'pm', this.$vuetify.lang.t('$vuetify.timePicker.pm'), this.disabled || this.readonly),\n ])\n },\n genPickerBody () {\n return this.$createElement('div', {\n staticClass: 'v-time-picker-clock__container',\n key: this.selecting,\n }, [\n !this.ampmInTitle && this.isAmPm && this.genClockAmPm(),\n this.genClock(),\n ])\n },\n genPickerTitle () {\n return this.$createElement(VTimePickerTitle, {\n props: {\n ampm: this.isAmPm,\n ampmReadonly: this.isAmPm && !this.ampmInTitle,\n disabled: this.disabled,\n hour: this.inputHour,\n minute: this.inputMinute,\n second: this.inputSecond,\n period: this.period,\n readonly: this.readonly,\n useSeconds: this.useSeconds,\n selecting: this.selecting,\n },\n on: {\n 'update:selecting': (value: 1 | 2 | 3) => (this.selecting = value),\n 'update:period': (period: string) => this.$emit('update:period', period),\n },\n ref: 'title',\n slot: 'title',\n })\n },\n },\n\n render (): VNode {\n return this.genPicker('v-picker--time')\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 './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try '