{"version":3,"sources":["webpack:///../../../src/components/VAlert/VAlert.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VCounter/VCounter.ts","webpack:///../../../src/components/VCounter/index.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VFileInput/VFileInput.ts","webpack:///../../../src/components/VCombobox/VCombobox.ts","webpack:///../../../src/components/VBreadcrumbs/VBreadcrumbsItem.ts","webpack:///../../../src/components/VBreadcrumbs/VBreadcrumbsDivider.ts","webpack:///../../../src/components/VBreadcrumbs/VBreadcrumbs.ts","webpack:///../../../src/components/VDatePicker/VDatePickerTitle.ts","webpack:///../../../../src/components/VDatePicker/util/pad.ts","webpack:///../../../../src/components/VDatePicker/util/createNativeLocaleFormatter.ts","webpack:///../../../../src/components/VDatePicker/util/monthChange.ts","webpack:///../../../src/components/VDatePicker/VDatePickerHeader.ts","webpack:///../../../../src/components/VDatePicker/util/eventHelpers.ts","webpack:///../../../../src/components/VDatePicker/util/sanitizeDateString.ts","webpack:///../../../../src/components/VDatePicker/util/isDateAllowed.ts","webpack:///../../../../src/components/VDatePicker/mixins/date-picker-table.ts","webpack:///../../../src/components/VDatePicker/VDatePickerDateTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerMonthTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerYears.ts","webpack:///../../../../src/components/VCalendar/util/timestamp.ts","webpack:///../../../src/components/VDatePicker/VDatePicker.ts","webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VAppBar/VAppBar.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/components/VAvatar/index.ts","webpack:///../../../src/components/VApp/VApp.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VCheckbox/VCheckbox.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VInput/VInput.ts","webpack:///../../../src/components/VInput/index.ts","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VDivider/VDivider.ts"],"names":["name","props","border","type","validator","closeLabel","default","coloredBorder","dense","dismissible","closeIcon","icon","Boolean","val","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","$createElement","__cachedDismissible","color","small","attrs","$vuetify","lang","t","on","click","__cachedIcon","iconColor","classes","computedColor","computedIcon","includes","hasColoredIcon","hasText","isDark","created","$attrs","hasOwnProperty","methods","genWrapper","children","$slots","prepend","$scopedSlots","close","toggle","genContent","genAlert","role","style","directives","isActive","setColor","render","h","origin","mode","breakpoints","ALIGNMENT","makeProps","prefix","def","alignValidator","str","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","justify","alignContent","classMap","breakpointClass","className","breakpoint","prop","cache","functional","tag","noGutters","cacheKey","String","classList","mixins","Number","max","parseInt","content","isGreater","ctx","isFontAwesome5","some","iconType","isSvgPath","test","SIZE_MAP","VIcon","disabled","left","right","size","required","medium","hasClickListener","listeners$","getIcon","iconName","getSize","sizes","xSmall","large","xLarge","explicitSize","key","getDefaultData","attrs$","getSvgWrapperData","fontSize","wrapperData","height","width","undefined","applyColors","themeClasses","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","xmlns","viewBox","d","renderSvgIconComponent","component","$_wrapperFor","baseMixins","ClickOutside","dark","fullscreen","light","maxWidth","noClickAnimation","persistent","retainFocus","scrollable","transition","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClasses","hasActivator","watch","beforeMount","beforeDestroy","window","unbind","animateClick","closeConditional","target","e","_isDestroyed","$refs","contains","overlay","$el","activeZIndex","hideScroll","document","show","bind","onClickOutside","onKeydown","getOpenDependents","activator","onFocusin","getOpenDependentElements","el","focusable","querySelectorAll","showLazyContent","root","tabindex","keydown","zIndex","ref","genTransition","appear","genInnerContent","handler","include","transformOrigin","attach","model","event","chips","clearable","counterSizeString","counterString","hideInput","multiple","placeholder","prependIcon","readonly","showSize","v","smallChips","truncateLength","computedCounterValue","fileCount","lazyValue","bytes","internalArrayValue","reduce","base","internalValue","get","set","isDirty","length","isLabelActive","persistentPlaceholder","map","file","truncatedText","hasChips","immediate","input","clearableCallback","genChips","genControl","display","genInput","genPrependSlot","genIcon","genSlot","genSelectionText","genSelections","index","selection","genTextFieldSlot","node","onInput","files","onKeyDown","truncateText","charsKeepOneSide","Math","delimiters","returnObject","editingIndex","selectedItems","internalSearch","hasSlot","isAnyValueAllowed","menuCanShow","hasDisplayedItems","searchIsDirty","onInternalSearchChanged","delimiter","find","genChipSelection","chip","dblclick","onChipInput","onEnterDown","getMenuIndex","keyCode","selectionStart","onTabDown","selectItem","getText","item","toLocaleLowerCase","setSelectedItems","setValue","updateEditing","findIndex","updateCombobox","isUsingSlot","updateSelf","updateTags","menuIndex","itemToSelect","onPaste","pastedItemText","findExistingIndex","activeClass","ripple","divider","items","genDivider","VBreadcrumbsDivider","genItems","keys","i","VBreadcrumbsItem","date","selectingYear","year","yearIcon","isReversing","computedTransition","genYearIcon","getYearBtn","genPickerButton","genTitleText","domProps","innerHTML","genTitleDate","padStart","string","targetLength","padString","n","createNativeLocaleFormatter","substrOptions","start","makeIsoString","dateString","pad","month","intlFormatter","Intl","locale","Date","format","min","nextAriaLabel","nextIcon","prevAriaLabel","prevIcon","formatter","timeZone","newVal","genBtn","ariaLabelId","change","ariaLabel","calculateChange","VBtn","monthChange","genHeader","header","setTextColor","instance","eventName","itemTypeSuffix","allowedFn","Touch","allowedDates","current","events","Array","Function","eventColor","range","tableDate","wheelThrottle","displayedMonth","split","displayedYear","mounted","genButtonClasses","isAllowed","isSelected","isCurrent","genButtonEvents","createItemTypeNativeListeners","genButton","isOtherMonth","isFirst","isLast","mouseEventType","genEvents","getEventColors","arrayize","eventColors","eventData","isValidScroll","calculateTableDate","sanitizeType","sanitizeDateString","wheel","touch","genTable","touchDirective","from","indexOf","firstDayOfWeek","localeFirstDayOfYear","showAdjacentMonths","showWeek","weekdayFormat","day","weekdayFormatter","weekday","weekDays","first","delta","genTHead","days","genTR","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","weekDay","getWeekNumber","genWeekNumber","genTBody","daysInMonth","rows","prevMonthYear","prevMonth","firstDayFromPreviousMonth","cellsInRow","nextMonthYear","nextMonth","nextMonthDay","cols","row","tds","defaultColor","setTimeout","activeItem","genYearItem","formatted","active","genYearItems","selectedYear","maxYear","minYear","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP","activePicker","dayFormat","headerDateFormat","monthFormat","nextMonthAriaLabel","nextYearAriaLabel","pickerDate","prevMonthAriaLabel","prevYearAriaLabel","reactive","showCurrent","selectedItemsText","titleDateFormat","yearFormat","now","internalActivePicker","inputDay","inputMonth","inputYear","multipleValue","isMultiple","lastValue","selectedMonths","getFullYear","getMonth","inputDate","tableMonth","tableYear","minMonth","maxMonth","formatters","titleDate","defaultTitleMultipleDateFormatter","dates","defaultTitleDateFormatter","titleFormats","titleDateFormatter","landscapeFormatter","nonDigit","landscape","prev","oldValue","output","emitInput","newInput","concat","filter","x","$emit","checkMultipleProp","valueType","constructor","expected","console","isDateAllowed","yearClick","monthClick","dateClick","genPickerTitle","slot","genTableHeader","genDateTable","VDatePickerDateTable","createItemTypeListeners","genMonthTable","VDatePickerMonthTable","genYears","genPickerBody","setInputDate","array","genPicker","Scroll","provide","VAppBar","clippedLeft","clippedRight","collapseOnScroll","elevateOnScroll","fadeImgOnScroll","hideOnScroll","invertedScroll","scrollOffScreen","shrinkOnScroll","applicationProperty","canScroll","collapse","app","currentScroll","scrollRatio","threshold","computedContentHeight","computedFontSize","computedLeft","application","computedMarginTop","computedOpacity","computedOriginalHeight","computedRight","computedScrollThreshold","computedTransform","bottom","hideShadow","isCollapsed","isProminent","styles","marginTop","transform","genBackground","_b","opacity","updateApplication","computedHeight","thresholdMet","isScrollingUp","currentThreshold","arg","onScroll","breakpointProps","offsetProps","orderProps","col","offset","order","alignSelf","parent","hasColClasses","module","exports","components","options","extendOptions","roundedClasses","minWidth","measurableStyles","$listeners","id","theme","beforeCreate","Error","wrapper","btnToggle","block","depressed","fab","loading","plain","retainFocusOnClick","rounded","tile","proxyClass","sizeableClasses","computedElevation","computedRipple","defaultRipple","circle","hasBg","isElevated","elevation","isRound","breakingProps","original","replacement","genLoader","loader","indeterminate","JSON","VCardActions","VCardSubtitle","VCardText","VCardTitle","indeterminateIcon","onIcon","offIcon","listeners","center","f","fluid","mergeData","inputIndeterminate","validationState","isDisabled","hasError","hasColor","genCheckbox","checkboxAttrs","toString","genRipple","genDefaultSlot","hasIntersect","intersect","alt","contain","eager","gradient","lazySrc","rootMargin","position","src","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","computedAspectRatio","normalisedSrc","aspect","aspectRatio","__cachedImage","backgroundImage","backgroundPosition","loadImage","init","lazyImg","onLoad","endsWith","startsWith","naturalHeight","onError","getSrc","err","pollForSize","timeout","poll","img","__genPlaceholder","modifiers","once","flat","hover","link","loaderHeight","raised","genProgress","inheritAttrs","appendIcon","backgroundColor","hideDetails","hideSpinButtons","hint","label","persistentHint","hasMouseDown","computedId","hasDetails","messagesToDisplay","hasHint","hasLabel","validations","validation","validationResult","message","showDetails","$options","title","extraData","hasListener","cb","mouseup","genInputSlot","mousedown","onMouseUp","genLabel","VLabel","focused","for","genMessages","VMessages","hasMessages","scopedSlots","genAppendSlot","onClick","onMouseDown","defaultMenuProps","offsetY","offsetOverflow","allowOverflow","autoSelectFirst","itemText","queryText","hideNoData","menuProps","noFilter","searchInput","lazySearch","selectedIndex","computedItems","selectedValues","hideSelected","filteredItems","currentRange","selectedItem","allItems","isSearching","$_menuProps","listData","isFocused","isMenuActive","oldVal","activateMenu","destroyed","onFilteredItemsChanged","preSelectedItem","menu","updateMenuDimensions","changeSelectedIndex","deleteCurrentItem","curIndex","curItem","getDisabled","lastIndex","nextIndex","nextItem","autocomplete","isAppendInner","onSpaceDown","onUpDown","setSearch","valueComparator","getValue","hasItem","onCopy","currentItem","currentItemText","chipGroup","draggable","filterIcon","pill","textColor","groupClasses","hasClose","isClickable","genFilter","genClose","inset","vertical","orientation"],"mappings":"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","file":"js/chunk-vendors~4a7e9e0b.23f1b9ce.js","sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record<string, boolean> = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary<PropOptions>)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map<string, any[]>()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Activatable,\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n isActive: !!this.value,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator<boolean | 1000 | 1024>,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator<File | File[]>,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.multiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n text (): string[] {\n if (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on <v-file-input>', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.multiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.multiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data!.attrs!.multiple = this.multiple\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.multiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","// Styles\nimport '../VAutocomplete/VAutocomplete.sass'\n\n// Extensions\nimport VSelect from '../VSelect/VSelect'\nimport VAutocomplete from '../VAutocomplete/VAutocomplete'\n\n// Utils\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VAutocomplete.extend({\n name: 'v-combobox',\n\n props: {\n delimiters: {\n type: Array,\n default: () => ([]),\n } as PropValidator<string[]>,\n returnObject: {\n type: Boolean,\n default: true,\n },\n },\n\n data: () => ({\n editingIndex: -1,\n }),\n\n computed: {\n computedCounterValue (): number {\n return this.multiple\n ? this.selectedItems.length\n : (this.internalSearch || '').toString().length\n },\n hasSlot (): boolean {\n return VSelect.options.computed.hasSlot.call(this) || this.multiple\n },\n isAnyValueAllowed (): boolean {\n return true\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems ||\n (!!this.$slots['no-data'] && !this.hideNoData)\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null\n },\n },\n\n methods: {\n onInternalSearchChanged (val: any) {\n if (\n val &&\n this.multiple &&\n this.delimiters.length\n ) {\n const delimiter = this.delimiters.find(d => val.endsWith(d))\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length)\n this.updateTags()\n }\n }\n\n this.updateMenuDimensions()\n },\n genInput () {\n const input = VAutocomplete.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n input.data!.on!.paste = this.onPaste\n\n return input\n },\n genChipSelection (item: object, index: number) {\n const chip = VSelect.options.methods.genChipSelection.call(this, item, index)\n\n // Allow user to update an existing value\n if (this.multiple) {\n chip.componentOptions!.listeners! = {\n ...chip.componentOptions!.listeners!,\n dblclick: () => {\n this.editingIndex = index\n this.internalSearch = this.getText(item)\n this.selectedIndex = -1\n },\n }\n }\n\n return chip\n },\n onChipInput (item: object) {\n VSelect.options.methods.onChipInput.call(this, item)\n\n this.editingIndex = -1\n },\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown (e: Event) {\n e.preventDefault()\n // If has menu index, let v-select-list handle\n if (this.getMenuIndex() > -1) return\n\n this.$nextTick(this.updateSelf)\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // If user is at selection index of 0\n // create a new tag\n if (this.multiple &&\n keyCode === keyCodes.left &&\n this.$refs.input.selectionStart === 0\n ) {\n this.updateSelf()\n } else if (keyCode === keyCodes.enter) {\n this.onEnterDown(e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onTabDown (e: KeyboardEvent) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple &&\n this.internalSearch &&\n this.getMenuIndex() === -1\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n return this.updateTags()\n }\n\n VAutocomplete.options.methods.onTabDown.call(this, e)\n },\n selectItem (item: object) {\n // Currently only supports items:<string[]>\n if (this.editingIndex > -1) {\n this.updateEditing()\n } else {\n VAutocomplete.options.methods.selectItem.call(this, item)\n\n // if selected item contains search value,\n // remove the search string\n if (\n this.internalSearch &&\n this.multiple &&\n this.getText(item).toLocaleLowerCase().includes(this.internalSearch.toLocaleLowerCase())\n ) {\n this.internalSearch = null\n }\n }\n },\n setSelectedItems () {\n if (this.internalValue == null ||\n this.internalValue === ''\n ) {\n this.selectedItems = []\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue]\n }\n },\n setValue (value?: any) {\n VSelect.options.methods.setValue.call(this, value === undefined ? this.internalSearch : value)\n },\n updateEditing () {\n const value = this.internalValue.slice()\n const index = this.selectedItems.findIndex(item =>\n this.getText(item) === this.internalSearch)\n\n // If user enters a duplicate text on chip edit,\n // don't add it, move it to the end of the list\n if (index > -1) {\n const item = typeof value[index] === 'object'\n ? Object.assign({}, value[index])\n : value[index]\n\n value.splice(index, 1)\n value.push(item)\n } else {\n value[this.editingIndex] = this.internalSearch\n }\n\n this.setValue(value)\n this.editingIndex = -1\n this.internalSearch = null\n },\n updateCombobox () {\n // If search is not dirty, do nothing\n if (!this.searchIsDirty) return\n\n // The internal search is not matching\n // the internal value, update the input\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue()\n\n // Reset search if using slot to avoid a double input\n const isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips\n if (isUsingSlot) this.internalSearch = null\n },\n updateSelf () {\n this.multiple ? this.updateTags() : this.updateCombobox()\n },\n updateTags () {\n const menuIndex = this.getMenuIndex()\n\n // If the user is not searching\n // and no menu item is selected\n // or if the search is empty\n // do nothing\n if ((menuIndex < 0 && !this.searchIsDirty) ||\n !this.internalSearch) return\n\n if (this.editingIndex > -1) {\n return this.updateEditing()\n }\n\n const index = this.selectedItems.findIndex(item =>\n this.internalSearch === this.getText(item))\n\n // If the duplicate item is an object,\n // copy it, so that it can be added again later\n const itemToSelect = index > -1 && typeof this.selectedItems[index] === 'object'\n ? Object.assign({}, this.selectedItems[index])\n : this.internalSearch\n\n // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n if (index > -1) {\n const internalValue = this.internalValue.slice()\n internalValue.splice(index, 1)\n\n this.setValue(internalValue)\n }\n\n // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n if (menuIndex > -1) return (this.internalSearch = null)\n\n this.selectItem(itemToSelect)\n\n this.internalSearch = null\n },\n onPaste (event: ClipboardEvent) {\n if (!this.multiple || this.searchIsDirty) return\n\n const pastedItemText = event.clipboardData?.getData('text/vnd.vuetify.autocomplete.item+plain')\n if (pastedItemText && this.findExistingIndex(pastedItemText as any) === -1) {\n event.preventDefault()\n VSelect.options.methods.selectItem.call(this, pastedItemText as any)\n }\n },\n clearableCallback () {\n this.editingIndex = -1\n\n VAutocomplete.options.methods.clearableCallback.call(this)\n },\n },\n})\n","import Routable from '../../mixins/routable'\n\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(Routable).extend({\n name: 'v-breadcrumbs-item',\n\n props: {\n // In a breadcrumb, the currently\n // active item should be dimmed\n activeClass: {\n type: String,\n default: 'v-breadcrumbs__item--disabled',\n },\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-breadcrumbs__item': true,\n [this.activeClass]: this.disabled,\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n return h('li', [\n h(tag, {\n ...data,\n attrs: {\n ...data.attrs,\n 'aria-current': this.isActive && this.isLink ? 'page' : undefined,\n },\n }, this.$slots.default),\n ])\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('v-breadcrumbs__divider', 'li')\n","// Styles\nimport './VBreadcrumbs.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VBreadcrumbsItem from './VBreadcrumbsItem'\nimport VBreadcrumbsDivider from './VBreadcrumbsDivider'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-breadcrumbs',\n\n props: {\n divider: {\n type: String,\n default: '/',\n },\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator<any[]>,\n large: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-breadcrumbs--large': this.large,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genDivider () {\n return this.$createElement(VBreadcrumbsDivider, this.$slots.divider ? this.$slots.divider : this.divider)\n },\n genItems () {\n const items = []\n const hasSlot = !!this.$scopedSlots.item\n const keys = []\n\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i]\n\n keys.push(item.text)\n\n if (hasSlot) items.push(this.$scopedSlots.item!({ item }))\n else items.push(this.$createElement(VBreadcrumbsItem, { key: keys.join('.'), props: item }, [item.text]))\n\n if (i < this.items.length - 1) items.push(this.genDivider())\n }\n\n return items\n },\n },\n\n render (h): VNode {\n const children = this.$slots.default || this.genItems()\n\n return h('ul', {\n staticClass: 'v-breadcrumbs',\n class: this.classes,\n }, children)\n },\n})\n","import './VDatePickerTitle.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-date-picker-title',\n\n props: {\n date: {\n type: String,\n default: '',\n },\n disabled: Boolean,\n readonly: Boolean,\n selectingYear: Boolean,\n value: {\n type: String,\n },\n year: {\n type: [Number, String],\n default: '',\n },\n yearIcon: {\n type: String,\n },\n },\n\n data: () => ({\n isReversing: false,\n }),\n\n computed: {\n computedTransition (): string {\n return this.isReversing ? 'picker-reverse-transition' : 'picker-transition'\n },\n },\n\n watch: {\n value (val: string, prev: string) {\n this.isReversing = val < prev\n },\n },\n\n methods: {\n genYearIcon (): VNode {\n return this.$createElement(VIcon, {\n props: {\n dark: true,\n },\n }, this.yearIcon)\n },\n getYearBtn (): VNode {\n return this.genPickerButton('selectingYear', true, [\n String(this.year),\n this.yearIcon ? this.genYearIcon() : null,\n ], false, 'v-date-picker-title__year')\n },\n genTitleText (): VNode {\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [\n this.$createElement('div', {\n domProps: { innerHTML: this.date || ' ' },\n key: this.value,\n }),\n ])\n },\n genTitleDate (): VNode {\n return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date')\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-date-picker-title',\n class: {\n 'v-date-picker-title--disabled': this.disabled,\n },\n }, [\n this.getYearBtn(),\n this.genTitleDate(),\n ])\n },\n})\n","const padStart = (string: number | string, targetLength: number, padString: string) => {\n targetLength = targetLength >> 0\n string = String(string)\n padString = String(padString)\n if (string.length > targetLength) {\n return String(string)\n }\n\n targetLength = targetLength - string.length\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length)\n }\n return padString.slice(0, targetLength) + String(string)\n}\n\nexport default (n: string | number, length = 2) => padStart(n, length, '0')\n","import pad from './pad'\nimport { DatePickerFormatter } from 'vuetify/types'\n\ninterface SubstrOptions {\n start?: number\n length: number\n}\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions\n): DatePickerFormatter | undefined\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions\n): DatePickerFormatter\n\nfunction createNativeLocaleFormatter (\n locale: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions = { start: 0, length: 0 }\n): DatePickerFormatter | undefined {\n const makeIsoString = (dateString: string) => {\n const [year, month, date] = dateString.trim().split(' ')[0].split('-')\n return [pad(year, 4), pad(month || 1), pad(date || 1)].join('-')\n }\n\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, options)\n return (dateString: string) => intlFormatter.format(new Date(`${makeIsoString(dateString)}T00:00:00+00:00`))\n } catch (e) {\n return (substrOptions.start || substrOptions.length)\n ? (dateString: string) => makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length)\n : undefined\n }\n}\n\nexport default createNativeLocaleFormatter\n","import pad from './pad'\n\n/**\n * @param {String} value YYYY-MM format\n * @param {Number} sign -1 or +1\n */\nexport default (value: string, sign: number) => {\n const [year, month] = value.split('-').map(Number)\n\n if (month + sign === 0) {\n return `${year - 1}-12`\n } else if (month + sign === 13) {\n return `${year + 1}-01`\n } else {\n return `${year}-${pad(month + sign)}`\n }\n}\n","import './VDatePickerHeader.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport { createNativeLocaleFormatter, monthChange } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-header',\n\n props: {\n disabled: Boolean,\n format: Function as PropType<DatePickerFormatter | undefined>,\n min: String,\n max: String,\n nextAriaLabel: String,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevAriaLabel: String,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n readonly: Boolean,\n value: {\n type: [Number, String],\n required: true,\n },\n },\n\n data () {\n return {\n isReversing: false,\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n if (this.format) {\n return this.format\n } else if (String(this.value).split('-')[1]) {\n return createNativeLocaleFormatter(this.currentLocale, { month: 'long', year: 'numeric', timeZone: 'UTC' }, { length: 7 })\n } else {\n return createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n }\n },\n },\n\n watch: {\n value (newVal, oldVal) {\n this.isReversing = newVal < oldVal\n },\n },\n\n methods: {\n genBtn (change: number) {\n const ariaLabelId = change > 0 ? this.nextAriaLabel : this.prevAriaLabel\n const ariaLabel = ariaLabelId ? this.$vuetify.lang.t(ariaLabelId) : undefined\n const disabled = this.disabled ||\n (change < 0 && this.min && this.calculateChange(change) < this.min) ||\n (change > 0 && this.max && this.calculateChange(change) > this.max)\n\n return this.$createElement(VBtn, {\n attrs: { 'aria-label': ariaLabel },\n props: {\n dark: this.dark,\n disabled,\n icon: true,\n light: this.light,\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n this.$emit('input', this.calculateChange(change))\n },\n },\n }, [\n this.$createElement(VIcon, ((change < 0) === !this.$vuetify.rtl) ? this.prevIcon : this.nextIcon),\n ])\n },\n calculateChange (sign: number) {\n const [year, month] = String(this.value).split('-').map(Number)\n\n if (month == null) {\n return `${year + sign}`\n } else {\n return monthChange(String(this.value), sign)\n }\n },\n genHeader () {\n const color = !this.disabled && (this.color || 'accent')\n const header = this.$createElement('div', this.setTextColor(color, {\n key: String(this.value),\n }), [this.$createElement('button', {\n attrs: {\n type: 'button',\n },\n on: {\n click: () => this.$emit('toggle'),\n },\n }, [this.$slots.default || this.formatter(String(this.value))])])\n\n const transition = this.$createElement('transition', {\n props: {\n name: (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition',\n },\n }, [header])\n\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header__value',\n class: {\n 'v-date-picker-header__value--disabled': this.disabled,\n },\n }, [transition])\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header',\n class: {\n 'v-date-picker-header--disabled': this.disabled,\n ...this.themeClasses,\n },\n }, [\n this.genBtn(-1),\n this.genHeader(),\n this.genBtn(+1),\n ])\n },\n})\n","import Vue from 'vue'\n\nexport function createItemTypeNativeListeners (instance: Vue, itemTypeSuffix: string, value: any) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName.slice(0, -itemTypeSuffix.length)] = (event: Event) => instance.$emit(eventName, value, event)\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n\nexport function createItemTypeListeners (instance: Vue, itemTypeSuffix: string) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName] = instance.$listeners[eventName]\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n","// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\nimport pad from './pad'\n\nexport default (dateString: string, type: 'date' | 'month' | 'year'): string => {\n const [year, month = 1, date = 1] = dateString.split('-')\n return `${year}-${pad(month)}-${pad(date)}`.substr(0, { date: 10, month: 7, year: 4 }[type])\n}\n","import { DatePickerAllowedDatesFunction } from 'vuetify/types'\n\nexport default function isDateAllowed (date: string, min: string, max: string, allowedFn: DatePickerAllowedDatesFunction | undefined) {\n return (!allowedFn || allowedFn(date)) &&\n (!min || date >= min.substr(0, 10)) &&\n (!max || date <= max)\n}\n","import '../VDatePickerTable.sass'\n\n// Directives\nimport Touch from '../../../directives/touch'\n\n// Mixins\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Themeable from '../../../mixins/themeable'\n\n// Utils\nimport { createItemTypeNativeListeners, sanitizeDateString } from '../util'\nimport isDateAllowed from '../util/isDateAllowed'\nimport { mergeListeners } from '../../../util/mergeData'\nimport mixins from '../../../util/mixins'\nimport { throttle } from '../../../util/helpers'\n\n// Types\nimport {\n PropType,\n VNodeChildren,\n} from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEventColorValue,\n DatePickerEvents,\n DatePickerFormatter,\n TouchWrapper,\n} from 'vuetify/types'\n\ntype CalculateTableDateFunction = (v: number) => string\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n directives: { Touch },\n\n props: {\n allowedDates: Function as PropType<DatePickerAllowedDatesFunction | undefined>,\n current: String,\n disabled: Boolean,\n format: Function as PropType<DatePickerFormatter | undefined>,\n events: {\n type: [Array, Function, Object],\n default: () => null,\n } as PropValidator<DatePickerEvents | null>,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator<DatePickerEventColors>,\n min: String,\n max: String,\n range: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n tableDate: {\n type: String,\n required: true,\n },\n value: [String, Array] as PropType<string | string[]>,\n },\n\n data: () => ({\n isReversing: false,\n wheelThrottle: null as any,\n }),\n\n computed: {\n computedTransition (): string {\n return (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition'\n },\n displayedMonth (): number {\n return Number(this.tableDate.split('-')[1]) - 1\n },\n displayedYear (): number {\n return Number(this.tableDate.split('-')[0])\n },\n },\n\n watch: {\n tableDate (newVal: string, oldVal: string) {\n this.isReversing = newVal < oldVal\n },\n },\n\n mounted () {\n this.wheelThrottle = throttle(this.wheel, 250)\n },\n\n methods: {\n genButtonClasses (\n isAllowed: boolean,\n isFloating: boolean,\n isSelected: boolean,\n isCurrent: boolean,\n isFirst: boolean,\n isLast: boolean,\n ) {\n return {\n 'v-size--default': !isFloating,\n 'v-date-picker-table__current': isCurrent,\n 'v-btn--active': isSelected,\n 'v-btn--flat': !isAllowed || this.disabled,\n 'v-btn--text': isSelected === isCurrent,\n 'v-btn--rounded': isFloating,\n 'v-btn--disabled': !isAllowed || this.disabled,\n 'v-btn--outlined': isCurrent && !isSelected,\n 'v-date-picker--first-in-range': isFirst,\n 'v-date-picker--last-in-range': isLast,\n ...this.themeClasses,\n }\n },\n genButtonEvents (value: string, isAllowed: boolean, mouseEventType: string) {\n if (this.disabled) return undefined\n\n return mergeListeners({\n click: () => {\n if (isAllowed && !this.readonly) this.$emit('input', value)\n },\n }, createItemTypeNativeListeners(this, `:${mouseEventType}`, value))\n },\n genButton (value: string, isFloating: boolean, mouseEventType: string, formatter: DatePickerFormatter, isOtherMonth = false) {\n const isAllowed = isDateAllowed(value, this.min, this.max, this.allowedDates)\n const isSelected = this.isSelected(value) && isAllowed\n const isCurrent = value === this.current\n const setColor = isSelected ? this.setBackgroundColor : this.setTextColor\n const color = (isSelected || isCurrent) && (this.color || 'accent')\n let isFirst = false\n let isLast = false\n if (this.range && !!this.value && Array.isArray(this.value)) {\n isFirst = value === this.value[0]\n isLast = value === this.value[this.value.length - 1]\n }\n\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n class: this.genButtonClasses(\n isAllowed && !isOtherMonth,\n isFloating,\n isSelected,\n isCurrent,\n isFirst,\n isLast,\n ),\n attrs: {\n type: 'button',\n },\n domProps: {\n disabled: this.disabled || !isAllowed || isOtherMonth,\n },\n on: this.genButtonEvents(value, isAllowed, mouseEventType),\n }), [\n this.$createElement('div', {\n staticClass: 'v-btn__content',\n }, [formatter(value)]),\n this.genEvents(value),\n ])\n },\n getEventColors (date: string) {\n const arrayize = (v: string | string[]) => Array.isArray(v) ? v : [v]\n let eventData: boolean | DatePickerEventColorValue\n let eventColors: string[] = []\n\n if (Array.isArray(this.events)) {\n eventData = this.events.includes(date)\n } else if (this.events instanceof Function) {\n eventData = this.events(date) || false\n } else if (this.events) {\n eventData = this.events[date] || false\n } else {\n eventData = false\n }\n\n if (!eventData) {\n return []\n } else if (eventData !== true) {\n eventColors = arrayize(eventData)\n } else if (typeof this.eventColor === 'string') {\n eventColors = [this.eventColor]\n } else if (typeof this.eventColor === 'function') {\n eventColors = arrayize(this.eventColor(date))\n } else if (Array.isArray(this.eventColor)) {\n eventColors = this.eventColor\n } else {\n eventColors = arrayize(this.eventColor[date])\n }\n\n return eventColors.filter(v => v)\n },\n genEvents (date: string) {\n const eventColors = this.getEventColors(date)\n\n return eventColors.length ? this.$createElement('div', {\n staticClass: 'v-date-picker-table__events',\n }, eventColors.map(color => this.$createElement('div', this.setBackgroundColor(color)))) : null\n },\n isValidScroll (value: number, calculateTableDate: CalculateTableDateFunction) {\n const tableDate = calculateTableDate(value)\n // tableDate is 'YYYY-MM' for DateTable and 'YYYY' for MonthTable\n const sanitizeType = tableDate.split('-').length === 1 ? 'year' : 'month'\n return (value < 0 && (this.min ? tableDate >= sanitizeDateString(this.min, sanitizeType) : true)) ||\n (value > 0 && (this.max ? tableDate <= sanitizeDateString(this.max, sanitizeType) : true))\n },\n wheel (e: WheelEvent, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(e.deltaY))\n },\n touch (value: number, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(value))\n },\n genTable (staticClass: string, children: VNodeChildren, calculateTableDate: CalculateTableDateFunction) {\n const transition = this.$createElement('transition', {\n props: { name: this.computedTransition },\n }, [this.$createElement('table', { key: this.tableDate }, children)])\n\n const touchDirective = {\n name: 'touch',\n value: {\n left: (e: TouchWrapper) => (e.offsetX < -15) &&\n (this.isValidScroll(1, calculateTableDate) && this.touch(1, calculateTableDate)),\n right: (e: TouchWrapper) => (e.offsetX > 15) &&\n (this.isValidScroll(-1, calculateTableDate) && this.touch(-1, calculateTableDate)),\n },\n }\n\n return this.$createElement('div', {\n staticClass,\n class: {\n 'v-date-picker-table--disabled': this.disabled,\n ...this.themeClasses,\n },\n on: (!this.disabled && this.scrollable) ? {\n wheel: (e: WheelEvent) => {\n e.preventDefault()\n if (this.isValidScroll(e.deltaY, calculateTableDate)) { this.wheelThrottle(e, calculateTableDate) }\n },\n } : undefined,\n directives: [touchDirective],\n }, [transition])\n },\n isSelected (value: string): boolean {\n if (Array.isArray(this.value)) {\n if (this.range && this.value.length === 2) {\n const [from, to] = [...this.value].sort()\n return from <= value && value <= to\n } else {\n return this.value.indexOf(value) !== -1\n }\n }\n\n return value === this.value\n },\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport { pad, createNativeLocaleFormatter, monthChange } from './util'\nimport { createRange } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-date-table',\n\n props: {\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n weekdayFormat: Function as PropType<DatePickerFormatter | undefined>,\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { day: 'numeric', timeZone: 'UTC' }, { start: 8, length: 2 })\n },\n weekdayFormatter (): DatePickerFormatter | undefined {\n return this.weekdayFormat || createNativeLocaleFormatter(this.currentLocale, { weekday: 'narrow', timeZone: 'UTC' })\n },\n weekDays (): string[] {\n const first = parseInt(this.firstDayOfWeek, 10)\n\n return this.weekdayFormatter\n ? createRange(7).map(i => this.weekdayFormatter!(`2017-01-${first + i + 15}`)) // 2017-01-15 is Sunday\n : createRange(7).map(i => ['S', 'M', 'T', 'W', 'T', 'F', 'S'][(i + first) % 7])\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return monthChange(this.tableDate, Math.sign(delta || 1))\n },\n genTHead () {\n const days = this.weekDays.map(day => this.$createElement('th', day))\n if (this.showWeek) {\n days.unshift(this.$createElement('th'))\n }\n\n return this.$createElement('thead', this.genTR(days))\n },\n // Returns number of the days from the firstDayOfWeek to the first day of the current month\n weekDaysBeforeFirstDayOfTheMonth () {\n const firstDayOfTheMonth = new Date(`${this.displayedYear}-${pad(this.displayedMonth + 1)}-01T00:00:00+00:00`)\n const weekDay = firstDayOfTheMonth.getUTCDay()\n\n return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7\n },\n getWeekNumber (dayInMonth: number) {\n return weekNumber(\n this.displayedYear,\n this.displayedMonth,\n dayInMonth,\n parseInt(this.firstDayOfWeek),\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('td', [\n this.$createElement('small', {\n staticClass: 'v-date-picker-table--date__week',\n }, String(weekNumber).padStart(2, '0')),\n ])\n },\n // eslint-disable-next-line max-statements\n genTBody () {\n const children = []\n const daysInMonth = new Date(this.displayedYear, this.displayedMonth + 1, 0).getDate()\n let rows = []\n let day = this.weekDaysBeforeFirstDayOfTheMonth()\n\n if (this.showWeek) {\n rows.push(this.genWeekNumber(this.getWeekNumber(1)))\n }\n\n const prevMonthYear = this.displayedMonth ? this.displayedYear : this.displayedYear - 1\n const prevMonth = (this.displayedMonth + 11) % 12\n const firstDayFromPreviousMonth = new Date(this.displayedYear, this.displayedMonth, 0).getDate()\n const cellsInRow = this.showWeek ? 8 : 7\n\n while (day--) {\n const date = `${prevMonthYear}-${pad(prevMonth + 1)}-${pad(firstDayFromPreviousMonth - day)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\n for (day = 1; day <= daysInMonth; day++) {\n const date = `${this.displayedYear}-${pad(this.displayedMonth + 1)}-${pad(day)}`\n\n rows.push(this.$createElement('td', [\n this.genButton(date, true, 'date', this.formatter),\n ]))\n\n if (rows.length % cellsInRow === 0) {\n children.push(this.genTR(rows))\n rows = []\n if (this.showWeek && (day < daysInMonth || this.showAdjacentMonths)) {\n rows.push(this.genWeekNumber(this.getWeekNumber(day + 7)))\n }\n }\n }\n\n const nextMonthYear = this.displayedMonth === 11 ? this.displayedYear + 1 : this.displayedYear\n const nextMonth = (this.displayedMonth + 1) % 12\n let nextMonthDay = 1\n\n while (rows.length < cellsInRow) {\n const date = `${nextMonthYear}-${pad(nextMonth + 1)}-${pad(nextMonthDay++)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\n if (rows.length) {\n children.push(this.genTR(rows))\n }\n\n return this.$createElement('tbody', children)\n },\n genTR (children: VNodeChildren) {\n return [this.$createElement('tr', children)]\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--date', [\n this.genTHead(),\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { pad, createNativeLocaleFormatter } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-month-table',\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { month: 'short', timeZone: 'UTC' }, { start: 5, length: 2 })\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return `${parseInt(this.tableDate, 10) + Math.sign(delta || 1)}`\n },\n genTBody () {\n const children = []\n const cols = Array(3).fill(null)\n const rows = 12 / cols.length\n\n for (let row = 0; row < rows; row++) {\n const tds = cols.map((_, col) => {\n const month = row * cols.length + col\n const date = `${this.displayedYear}-${pad(month + 1)}`\n return this.$createElement('td', {\n key: month,\n }, [\n this.genButton(date, false, 'month', this.formatter),\n ])\n })\n\n children.push(this.$createElement('tr', {\n key: row,\n }, tds))\n }\n\n return this.$createElement('tbody', children)\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--month', [\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","import './VDatePickerYears.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\n\n// Utils\nimport {\n createItemTypeNativeListeners,\n createNativeLocaleFormatter,\n} from './util'\nimport { mergeListeners } from '../../util/mergeData'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n}\n\nexport default mixins<options &\n/* eslint-disable indent */\n ExtractVue<[\n typeof Colorable,\n typeof Localable\n ]>\n/* eslint-enable indent */\n>(\n Colorable,\n Localable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-years',\n\n props: {\n format: Function as PropType<DatePickerFormatter | undefined>,\n min: [Number, String],\n max: [Number, String],\n readonly: Boolean,\n value: [Number, String],\n },\n\n data () {\n return {\n defaultColor: 'primary',\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n },\n },\n\n mounted () {\n setTimeout(() => {\n const activeItem = this.$el.getElementsByClassName('active')[0]\n if (activeItem) {\n this.$el.scrollTop = activeItem.offsetTop - this.$el.offsetHeight / 2 + activeItem.offsetHeight / 2\n } else if (this.min && !this.max) {\n this.$el.scrollTop = this.$el.scrollHeight\n } else if (!this.min && this.max) {\n this.$el.scrollTop = 0\n } else {\n this.$el.scrollTop = this.$el.scrollHeight / 2 - this.$el.offsetHeight / 2\n }\n })\n },\n\n methods: {\n genYearItem (year: number): VNode {\n const formatted = this.formatter(`${year}`)\n const active = parseInt(this.value, 10) === year\n const color = active && (this.color || 'primary')\n\n return this.$createElement('li', this.setTextColor(color, {\n key: year,\n class: { active },\n on: mergeListeners({\n click: () => this.$emit('input', year),\n }, createItemTypeNativeListeners(this, ':year', year)),\n }), formatted)\n },\n\n genYearItems (): VNode[] {\n const children = []\n const selectedYear = this.value ? parseInt(this.value, 10) : new Date().getFullYear()\n const maxYear = this.max ? parseInt(this.max, 10) : (selectedYear + 100)\n const minYear = Math.min(maxYear, this.min ? parseInt(this.min, 10) : (selectedYear - 100))\n\n for (let year = maxYear; year >= minYear; year--) {\n children.push(this.genYearItem(year))\n }\n\n return children\n },\n },\n\n render (): VNode {\n return this.$createElement('ul', {\n staticClass: 'v-date-picker-years',\n ref: 'years',\n }, this.genYearItems())\n },\n})\n","import { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\nimport { isLeapYear } from '../../../util/dateTimeUtils'\n\nexport const PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/\nexport const PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/\n\nexport const DAYS_IN_MONTH: number[] = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_LEAP: number[] = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_MIN = 28\nexport const DAYS_IN_MONTH_MAX = 31\nexport const MONTH_MAX = 12\nexport const MONTH_MIN = 1\nexport const DAY_MIN = 1\nexport const DAYS_IN_WEEK = 7\nexport const MINUTES_IN_HOUR = 60\nexport const MINUTE_MAX = 59\nexport const MINUTES_IN_DAY = 24 * 60\nexport const HOURS_IN_DAY = 24\nexport const HOUR_MAX = 23\nexport const FIRST_HOUR = 0\nexport const OFFSET_YEAR = 10000\nexport const OFFSET_MONTH = 100\nexport const OFFSET_HOUR = 100\nexport const OFFSET_TIME = 10000\n\ntype CalendarTimestampFormatOptions = (timestamp: CalendarTimestamp, short: boolean) => object\ntype CalendarTimestampOperation = (timestamp: CalendarTimestamp) => CalendarTimestamp\nexport type VTime = number | string | {\n hour: number\n minute: number\n}\n\nexport type VTimestampInput = number | string | Date;\n\nexport function getStartOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n findWeekday(start, weekdays[0], prevDay)\n updateFormatted(start)\n if (today) {\n updateRelative(start, today, start.hasTime)\n }\n\n return start\n}\n\nexport function getEndOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n findWeekday(end, weekdays[weekdays.length - 1])\n updateFormatted(end)\n if (today) {\n updateRelative(end, today, end.hasTime)\n }\n\n return end\n}\n\nexport function getStartOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n start.day = DAY_MIN\n updateWeekday(start)\n updateFormatted(start)\n\n return start\n}\n\nexport function getEndOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n end.day = daysInMonth(end.year, end.month)\n updateWeekday(end)\n updateFormatted(end)\n\n return end\n}\n\nexport function validateTime (input: any): input is VTime {\n return (typeof input === 'number' && isFinite(input)) ||\n (!!PARSE_TIME.exec(input)) ||\n (typeof input === 'object' && isFinite(input.hour) && isFinite(input.minute))\n}\n\nexport function parseTime (input: any): number | false {\n if (typeof input === 'number') {\n // when a number is given, it's minutes since 12:00am\n return input\n } else if (typeof input === 'string') {\n // when a string is given, it's a hh:mm:ss format where seconds are optional\n const parts = PARSE_TIME.exec(input)\n if (!parts) {\n return false\n }\n\n return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0)\n } else if (typeof input === 'object') {\n // when an object is given, it must have hour and minute\n if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n return false\n }\n\n return input.hour * 60 + input.minute\n } else {\n // unsupported type\n return false\n }\n}\n\nexport function validateTimestamp (input: any): input is VTimestampInput {\n return (typeof input === 'number' && isFinite(input)) ||\n (typeof input === 'string' && !!PARSE_REGEX.exec(input)) ||\n (input instanceof Date)\n}\n\nexport function parseTimestamp (input: VTimestampInput, required?: false, now?: CalendarTimestamp): CalendarTimestamp | null\nexport function parseTimestamp (input: VTimestampInput, required: true, now?: CalendarTimestamp): CalendarTimestamp\nexport function parseTimestamp (input: VTimestampInput, required = false, now?: CalendarTimestamp): CalendarTimestamp | null {\n if (typeof input === 'number' && isFinite(input)) {\n input = new Date(input)\n }\n\n if (input instanceof Date) {\n const date: CalendarTimestamp = parseDate(input)\n\n if (now) {\n updateRelative(date, now, date.hasTime)\n }\n\n return date\n }\n\n if (typeof input !== 'string') {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n return null\n }\n\n // YYYY-MM-DD hh:mm:ss\n const parts = PARSE_REGEX.exec(input)\n\n if (!parts) {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n\n return null\n }\n\n const timestamp: CalendarTimestamp = {\n date: input,\n time: '',\n year: parseInt(parts[1]),\n month: parseInt(parts[2]),\n day: parseInt(parts[4]) || 1,\n hour: parseInt(parts[6]) || 0,\n minute: parseInt(parts[8]) || 0,\n weekday: 0,\n hasDay: !!parts[4],\n hasTime: !!(parts[6] && parts[8]),\n past: false,\n present: false,\n future: false,\n }\n\n updateWeekday(timestamp)\n updateFormatted(timestamp)\n\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n\n return timestamp\n}\n\nexport function parseDate (date: Date): CalendarTimestamp {\n return updateFormatted({\n date: '',\n time: '',\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n weekday: date.getDay(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n hasDay: true,\n hasTime: true,\n past: false,\n present: true,\n future: false,\n })\n}\n\nexport function getDayIdentifier (timestamp: { year: number, month: number, day: number }): number {\n return timestamp.year * OFFSET_YEAR + timestamp.month * OFFSET_MONTH + timestamp.day\n}\n\nexport function getTimeIdentifier (timestamp: { hour: number, minute: number }): number {\n return timestamp.hour * OFFSET_HOUR + timestamp.minute\n}\n\nexport function getTimestampIdentifier (timestamp: CalendarTimestamp): number {\n return getDayIdentifier(timestamp) * OFFSET_TIME + getTimeIdentifier(timestamp)\n}\n\nexport function updateRelative (timestamp: CalendarTimestamp, now: CalendarTimestamp, time = false): CalendarTimestamp {\n let a = getDayIdentifier(now)\n let b = getDayIdentifier(timestamp)\n let present = a === b\n\n if (timestamp.hasTime && time && present) {\n a = getTimeIdentifier(now)\n b = getTimeIdentifier(timestamp)\n present = a === b\n }\n\n timestamp.past = b < a\n timestamp.present = present\n timestamp.future = b > a\n\n return timestamp\n}\n\nexport function isTimedless (input: VTimestampInput): input is (Date | number) {\n return (input instanceof Date) || (typeof input === 'number' && isFinite(input))\n}\n\nexport function updateHasTime (timestamp: CalendarTimestamp, hasTime: boolean, now?: CalendarTimestamp): CalendarTimestamp {\n if (timestamp.hasTime !== hasTime) {\n timestamp.hasTime = hasTime\n if (!hasTime) {\n timestamp.hour = HOUR_MAX\n timestamp.minute = MINUTE_MAX\n timestamp.time = getTime(timestamp)\n }\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n }\n\n return timestamp\n}\n\nexport function updateMinutes (timestamp: CalendarTimestamp, minutes: number, now?: CalendarTimestamp): CalendarTimestamp {\n timestamp.hasTime = true\n timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR)\n timestamp.minute = minutes % MINUTES_IN_HOUR\n timestamp.time = getTime(timestamp)\n if (now) {\n updateRelative(timestamp, now, true)\n }\n\n return timestamp\n}\n\nexport function updateWeekday (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.weekday = getWeekday(timestamp)\n\n return timestamp\n}\n\nexport function updateFormatted (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.time = getTime(timestamp)\n timestamp.date = getDate(timestamp)\n\n return timestamp\n}\n\nexport function getWeekday (timestamp: CalendarTimestamp): number {\n if (timestamp.hasDay) {\n const _ = Math.floor\n const k = timestamp.day\n const m = ((timestamp.month + 9) % MONTH_MAX) + 1\n const C = _(timestamp.year / 100)\n const Y = (timestamp.year % 100) - (timestamp.month <= 2 ? 1 : 0)\n\n return (((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7) + 7) % 7\n }\n\n return timestamp.weekday\n}\n\nexport function daysInMonth (year: number, month: number) {\n return isLeapYear(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month]\n}\n\nexport function copyTimestamp (timestamp: CalendarTimestamp): CalendarTimestamp {\n const { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future } = timestamp\n\n return { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future }\n}\n\nexport function padNumber (x: number, length: number): string {\n let padded = String(x)\n while (padded.length < length) {\n padded = '0' + padded\n }\n\n return padded\n}\n\nexport function getDate (timestamp: CalendarTimestamp): string {\n let str = `${padNumber(timestamp.year, 4)}-${padNumber(timestamp.month, 2)}`\n\n if (timestamp.hasDay) str += `-${padNumber(timestamp.day, 2)}`\n\n return str\n}\n\nexport function getTime (timestamp: CalendarTimestamp): string {\n if (!timestamp.hasTime) {\n return ''\n }\n\n return `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n}\n\nexport function nextMinutes (timestamp: CalendarTimestamp, minutes: number): CalendarTimestamp {\n timestamp.minute += minutes\n while (timestamp.minute > MINUTES_IN_HOUR) {\n timestamp.minute -= MINUTES_IN_HOUR\n timestamp.hour++\n if (timestamp.hour >= HOURS_IN_DAY) {\n nextDay(timestamp)\n timestamp.hour = FIRST_HOUR\n }\n }\n\n return timestamp\n}\n\nexport function nextDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day++\n timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK\n if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n timestamp.day = DAY_MIN\n timestamp.month++\n if (timestamp.month > MONTH_MAX) {\n timestamp.month = MONTH_MIN\n timestamp.year++\n }\n }\n\n return timestamp\n}\n\nexport function prevDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day--\n timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK\n if (timestamp.day < DAY_MIN) {\n timestamp.month--\n if (timestamp.month < MONTH_MIN) {\n timestamp.year--\n timestamp.month = MONTH_MAX\n }\n timestamp.day = daysInMonth(timestamp.year, timestamp.month)\n }\n\n return timestamp\n}\n\nexport function relativeDays (\n timestamp: CalendarTimestamp,\n mover: CalendarTimestampOperation = nextDay,\n days = 1\n): CalendarTimestamp {\n while (--days >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function diffMinutes (min: CalendarTimestamp, max: CalendarTimestamp) {\n const Y = (max.year - min.year) * 525600\n const M = (max.month - min.month) * 43800\n const D = (max.day - min.day) * 1440\n const h = (max.hour - min.hour) * 60\n const m = (max.minute - min.minute)\n\n return Y + M + D + h + m\n}\n\nexport function findWeekday (timestamp: CalendarTimestamp, weekday: number,\n mover: CalendarTimestampOperation = nextDay, maxDays = 6): CalendarTimestamp {\n while (timestamp.weekday !== weekday && --maxDays >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function getWeekdaySkips (weekdays: number[]): number[] {\n const skips: number[] = [1, 1, 1, 1, 1, 1, 1]\n const filled: number[] = [0, 0, 0, 0, 0, 0, 0]\n for (let i = 0; i < weekdays.length; i++) {\n filled[weekdays[i]] = 1\n }\n for (let k = 0; k < DAYS_IN_WEEK; k++) {\n let skip = 1\n for (let j = 1; j < DAYS_IN_WEEK; j++) {\n const next = (k + j) % DAYS_IN_WEEK\n if (filled[next]) {\n break\n }\n skip++\n }\n skips[k] = filled[k] * skip\n }\n\n return skips\n}\n\nexport function timestampToDate (timestamp: CalendarTimestamp): Date {\n const time = `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n const date = timestamp.date\n\n return new Date(`${date}T${time}:00+00:00`)\n}\n\nexport function createDayList (\n start: CalendarTimestamp,\n end: CalendarTimestamp,\n now: CalendarTimestamp,\n weekdaySkips: number[],\n max = 42,\n min = 0\n): CalendarTimestamp[] {\n const stop = getDayIdentifier(end)\n const days: CalendarTimestamp[] = []\n let current = copyTimestamp(start)\n let currentIdentifier = 0\n let stopped = currentIdentifier === stop\n\n if (stop < getDayIdentifier(start)) {\n throw new Error('End date is earlier than start date.')\n }\n\n while ((!stopped || days.length < min) && days.length < max) {\n currentIdentifier = getDayIdentifier(current)\n stopped = stopped || currentIdentifier === stop\n if (weekdaySkips[current.weekday] === 0) {\n current = nextDay(current)\n continue\n }\n const day = copyTimestamp(current)\n updateFormatted(day)\n updateRelative(day, now)\n days.push(day)\n current = relativeDays(current, nextDay, weekdaySkips[current.weekday])\n }\n\n if (!days.length) throw new Error('No dates found using specified start date, end date, and weekdays.')\n\n return days\n}\n\nexport function createIntervalList (timestamp: CalendarTimestamp, first: number,\n minutes: number, count: number, now?: CalendarTimestamp): CalendarTimestamp[] {\n const intervals: CalendarTimestamp[] = []\n\n for (let i = 0; i < count; i++) {\n const mins = first + (i * minutes)\n const int = copyTimestamp(timestamp)\n intervals.push(updateMinutes(int, mins, now))\n }\n\n return intervals\n}\n\nexport function createNativeLocaleFormatter (locale: string, getOptions: CalendarTimestampFormatOptions): CalendarFormatter {\n const emptyFormatter: CalendarFormatter = (_t, _s) => ''\n\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return emptyFormatter\n }\n\n return (timestamp, short) => {\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short))\n\n return intlFormatter.format(timestampToDate(timestamp))\n } catch (e) {\n return ''\n }\n }\n}\n","// Components\nimport VDatePickerTitle from './VDatePickerTitle'\nimport VDatePickerHeader from './VDatePickerHeader'\nimport VDatePickerDateTable from './VDatePickerDateTable'\nimport VDatePickerMonthTable from './VDatePickerMonthTable'\nimport VDatePickerYears from './VDatePickerYears'\n\n// Mixins\nimport Localable from '../../mixins/localable'\nimport Picker from '../../mixins/picker'\n\n// Utils\nimport isDateAllowed from './util/isDateAllowed'\nimport mixins from '../../util/mixins'\nimport { wrapInArray } from '../../util/helpers'\nimport { daysInMonth } from '../VCalendar/util/timestamp'\nimport { consoleWarn } from '../../util/console'\nimport {\n createItemTypeListeners,\n createNativeLocaleFormatter,\n pad,\n sanitizeDateString,\n} from './util'\n\n// Types\nimport {\n PropType,\n PropValidator,\n} from 'vue/types/options'\nimport { VNode } from 'vue'\nimport {\n DatePickerFormatter,\n DatePickerMultipleFormatter,\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEvents,\n DatePickerType,\n} from 'vuetify/types'\n\ntype DatePickerValue = string | string[] | undefined\ninterface Formatters {\n year: DatePickerFormatter\n titleDate: DatePickerFormatter | DatePickerMultipleFormatter\n}\n\ntype ActivePicker = 'DATE' | 'MONTH' | 'YEAR';\n\nexport default mixins(\n Localable,\n Picker,\n/* @vue/component */\n).extend({\n name: 'v-date-picker',\n\n props: {\n activePicker: String as PropType<ActivePicker>,\n allowedDates: Function as PropType<DatePickerAllowedDatesFunction | undefined>,\n // Function formatting the day in date picker table\n dayFormat: Function as PropType<DatePickerAllowedDatesFunction | undefined>,\n disabled: Boolean,\n events: {\n type: [Array, Function, Object],\n default: () => null,\n } as PropValidator<DatePickerEvents | null>,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator<DatePickerEventColors>,\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n // Function formatting the tableDate in the day/month table header\n headerDateFormat: Function as PropType<DatePickerFormatter | undefined>,\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n max: String,\n min: String,\n // Function formatting month in the months table\n monthFormat: Function as PropType<DatePickerFormatter | undefined>,\n multiple: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n nextMonthAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.nextMonthAriaLabel',\n },\n nextYearAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.nextYearAriaLabel',\n },\n pickerDate: String,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n prevMonthAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.prevMonthAriaLabel',\n },\n prevYearAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.prevYearAriaLabel',\n },\n range: Boolean,\n reactive: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n showCurrent: {\n type: [Boolean, String],\n default: true,\n },\n selectedItemsText: {\n type: String,\n default: '$vuetify.datePicker.itemsSelected',\n },\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n // Function formatting currently selected date in the picker title\n titleDateFormat: Function as PropType<DatePickerFormatter | DatePickerMultipleFormatter | undefined>,\n type: {\n type: String,\n default: 'date',\n validator: (type: any) => ['date', 'month'].includes(type), // TODO: year\n } as PropValidator<DatePickerType>,\n value: [Array, String] as PropType<DatePickerValue>,\n weekdayFormat: Function as PropType<DatePickerFormatter | undefined>,\n // Function formatting the year in table header and pickup title\n yearFormat: Function as PropType<DatePickerFormatter | undefined>,\n yearIcon: String,\n },\n\n data () {\n const now = new Date()\n return {\n internalActivePicker: this.type.toUpperCase(),\n inputDay: null as number | null,\n inputMonth: null as number | null,\n inputYear: null as number | null,\n isReversing: false,\n now,\n // tableDate is a string in 'YYYY' / 'YYYY-M' format (leading zero for month is not required)\n tableDate: (() => {\n if (this.pickerDate) {\n return this.pickerDate\n }\n\n const multipleValue = wrapInArray(this.value)\n const date = multipleValue[multipleValue.length - 1] ||\n (typeof this.showCurrent === 'string' ? this.showCurrent : `${now.getFullYear()}-${now.getMonth() + 1}`)\n return sanitizeDateString(date as string, this.type === 'date' ? 'month' : 'year')\n })(),\n }\n },\n\n computed: {\n multipleValue (): string[] {\n return wrapInArray(this.value)\n },\n isMultiple (): boolean {\n return this.multiple || this.range\n },\n lastValue (): string | null {\n return this.isMultiple ? this.multipleValue[this.multipleValue.length - 1] : (this.value as string | null)\n },\n selectedMonths (): string | string[] | undefined {\n if (!this.value || this.type === 'month') {\n return this.value\n } else if (this.isMultiple) {\n return this.multipleValue.map(val => val.substr(0, 7))\n } else {\n return (this.value as string).substr(0, 7)\n }\n },\n current (): string | null {\n if (this.showCurrent === true) {\n return sanitizeDateString(`${this.now.getFullYear()}-${this.now.getMonth() + 1}-${this.now.getDate()}`, this.type)\n }\n\n return this.showCurrent || null\n },\n inputDate (): string {\n return this.type === 'date'\n ? `${this.inputYear}-${pad(this.inputMonth! + 1)}-${pad(this.inputDay!)}`\n : `${this.inputYear}-${pad(this.inputMonth! + 1)}`\n },\n tableMonth (): number {\n return Number((this.pickerDate || this.tableDate).split('-')[1]) - 1\n },\n tableYear (): number {\n return Number((this.pickerDate || this.tableDate).split('-')[0])\n },\n minMonth (): string | null {\n return this.min ? sanitizeDateString(this.min, 'month') : null\n },\n maxMonth (): string | null {\n return this.max ? sanitizeDateString(this.max, 'month') : null\n },\n minYear (): string | null {\n return this.min ? sanitizeDateString(this.min, 'year') : null\n },\n maxYear (): string | null {\n return this.max ? sanitizeDateString(this.max, 'year') : null\n },\n formatters (): Formatters {\n return {\n year: this.yearFormat || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 }),\n titleDate: this.titleDateFormat ||\n (this.isMultiple ? this.defaultTitleMultipleDateFormatter : this.defaultTitleDateFormatter),\n }\n },\n defaultTitleMultipleDateFormatter (): DatePickerMultipleFormatter {\n return dates => {\n if (!dates.length) {\n return '-'\n }\n\n if (dates.length === 1) {\n return this.defaultTitleDateFormatter(dates[0])\n }\n\n return this.$vuetify.lang.t(this.selectedItemsText, dates.length)\n }\n },\n defaultTitleDateFormatter (): DatePickerFormatter {\n const titleFormats = {\n year: { year: 'numeric', timeZone: 'UTC' },\n month: { month: 'long', timeZone: 'UTC' },\n date: { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' },\n }\n\n const titleDateFormatter = createNativeLocaleFormatter(this.currentLocale, titleFormats[this.type], {\n start: 0,\n length: { date: 10, month: 7, year: 4 }[this.type],\n })\n\n const landscapeFormatter = (date: string) => titleDateFormatter(date)\n .replace(/([^\\d\\s])([\\d])/g, (match, nonDigit, digit) => `${nonDigit} ${digit}`)\n .replace(', ', ',<br>')\n\n return this.landscape ? landscapeFormatter : titleDateFormatter\n },\n },\n\n watch: {\n internalActivePicker: {\n immediate: true,\n handler (val: ActivePicker) {\n this.$emit('update:active-picker', val)\n },\n },\n activePicker (val: ActivePicker) {\n this.internalActivePicker = val\n },\n tableDate (val: string, prev: string) {\n // Make a ISO 8601 strings from val and prev for comparision, otherwise it will incorrectly\n // compare for example '2000-9' and '2000-10'\n const sanitizeType = this.type === 'month' ? 'year' : 'month'\n this.isReversing = sanitizeDateString(val, sanitizeType) < sanitizeDateString(prev, sanitizeType)\n this.$emit('update:picker-date', val)\n },\n pickerDate (val: string | null) {\n if (val) {\n this.tableDate = val\n } else if (this.lastValue && this.type === 'date') {\n this.tableDate = sanitizeDateString(this.lastValue, 'month')\n } else if (this.lastValue && this.type === 'month') {\n this.tableDate = sanitizeDateString(this.lastValue, 'year')\n }\n },\n value (newValue: DatePickerValue, oldValue: DatePickerValue) {\n this.checkMultipleProp()\n this.setInputDate()\n\n if (\n (!this.isMultiple && this.value && !this.pickerDate) ||\n (this.isMultiple && this.multipleValue.length && (!oldValue || !oldValue.length) && !this.pickerDate)\n ) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month')\n }\n },\n type (type: DatePickerType) {\n this.internalActivePicker = type.toUpperCase()\n\n if (this.value && this.value.length) {\n const output = this.multipleValue\n .map((val: string) => sanitizeDateString(val, type))\n .filter(this.isDateAllowed)\n this.$emit('input', this.isMultiple ? output : output[0])\n }\n },\n },\n\n created () {\n this.checkMultipleProp()\n\n if (this.pickerDate !== this.tableDate) {\n this.$emit('update:picker-date', this.tableDate)\n }\n this.setInputDate()\n },\n\n methods: {\n emitInput (newInput: string) {\n if (this.range) {\n if (this.multipleValue.length !== 1) {\n this.$emit('input', [newInput])\n } else {\n const output = [this.multipleValue[0], newInput]\n this.$emit('input', output)\n this.$emit('change', output)\n }\n return\n }\n\n const output = this.multiple\n ? (\n this.multipleValue.indexOf(newInput) === -1\n ? this.multipleValue.concat([newInput])\n : this.multipleValue.filter(x => x !== newInput)\n )\n : newInput\n\n this.$emit('input', output)\n this.multiple || this.$emit('change', newInput)\n },\n checkMultipleProp () {\n if (this.value == null) return\n const valueType = this.value.constructor.name\n const expected = this.isMultiple ? 'Array' : 'String'\n if (valueType !== expected) {\n consoleWarn(`Value must be ${this.isMultiple ? 'an' : 'a'} ${expected}, got ${valueType}`, this)\n }\n },\n isDateAllowed (value: string): boolean {\n return isDateAllowed(value, this.min, this.max, this.allowedDates)\n },\n yearClick (value: number) {\n this.inputYear = value\n if (this.type === 'month') {\n this.tableDate = `${value}`\n } else {\n this.tableDate = `${value}-${pad((this.tableMonth || 0) + 1)}`\n }\n this.internalActivePicker = 'MONTH'\n if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate)\n }\n },\n monthClick (value: string) {\n this.inputYear = parseInt(value.split('-')[0], 10)\n this.inputMonth = parseInt(value.split('-')[1], 10) - 1\n if (this.type === 'date') {\n if (this.inputDay) {\n this.inputDay = Math.min(this.inputDay, daysInMonth(this.inputYear, this.inputMonth + 1))\n }\n\n this.tableDate = value\n this.internalActivePicker = 'DATE'\n if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate)\n }\n } else {\n this.emitInput(this.inputDate)\n }\n },\n dateClick (value: string) {\n this.inputYear = parseInt(value.split('-')[0], 10)\n this.inputMonth = parseInt(value.split('-')[1], 10) - 1\n this.inputDay = parseInt(value.split('-')[2], 10)\n this.emitInput(this.inputDate)\n },\n genPickerTitle (): VNode {\n return this.$createElement(VDatePickerTitle, {\n props: {\n date: this.value ? (this.formatters.titleDate as (value: any) => string)(this.isMultiple ? this.multipleValue : this.value) : '',\n disabled: this.disabled,\n readonly: this.readonly,\n selectingYear: this.internalActivePicker === 'YEAR',\n year: this.formatters.year(this.multipleValue.length ? `${this.inputYear}` : this.tableDate),\n yearIcon: this.yearIcon,\n value: this.multipleValue[0],\n },\n slot: 'title',\n on: {\n 'update:selecting-year': (value: boolean) => this.internalActivePicker = value ? 'YEAR' : this.type.toUpperCase(),\n },\n })\n },\n genTableHeader (): VNode {\n return this.$createElement(VDatePickerHeader, {\n props: {\n nextIcon: this.nextIcon,\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n format: this.headerDateFormat,\n light: this.light,\n locale: this.locale,\n min: this.internalActivePicker === 'DATE' ? this.minMonth : this.minYear,\n max: this.internalActivePicker === 'DATE' ? this.maxMonth : this.maxYear,\n nextAriaLabel: this.internalActivePicker === 'DATE' ? this.nextMonthAriaLabel : this.nextYearAriaLabel,\n prevAriaLabel: this.internalActivePicker === 'DATE' ? this.prevMonthAriaLabel : this.prevYearAriaLabel,\n prevIcon: this.prevIcon,\n readonly: this.readonly,\n value: this.internalActivePicker === 'DATE' ? `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}` : `${pad(this.tableYear, 4)}`,\n },\n on: {\n toggle: () => this.internalActivePicker = (this.internalActivePicker === 'DATE' ? 'MONTH' : 'YEAR'),\n input: (value: string) => this.tableDate = value,\n },\n })\n },\n genDateTable (): VNode {\n return this.$createElement(VDatePickerDateTable, {\n props: {\n allowedDates: this.allowedDates,\n color: this.color,\n current: this.current,\n dark: this.dark,\n disabled: this.disabled,\n events: this.events,\n eventColor: this.eventColor,\n firstDayOfWeek: this.firstDayOfWeek,\n format: this.dayFormat,\n light: this.light,\n locale: this.locale,\n localeFirstDayOfYear: this.localeFirstDayOfYear,\n min: this.min,\n max: this.max,\n range: this.range,\n readonly: this.readonly,\n scrollable: this.scrollable,\n showAdjacentMonths: this.showAdjacentMonths,\n showWeek: this.showWeek,\n tableDate: `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}`,\n value: this.value,\n weekdayFormat: this.weekdayFormat,\n },\n ref: 'table',\n on: {\n input: this.dateClick,\n 'update:table-date': (value: string) => this.tableDate = value,\n ...createItemTypeListeners(this, ':date'),\n },\n })\n },\n genMonthTable (): VNode {\n return this.$createElement(VDatePickerMonthTable, {\n props: {\n allowedDates: this.type === 'month' ? this.allowedDates : null,\n color: this.color,\n current: this.current ? sanitizeDateString(this.current, 'month') : null,\n dark: this.dark,\n disabled: this.disabled,\n events: this.type === 'month' ? this.events : null,\n eventColor: this.type === 'month' ? this.eventColor : null,\n format: this.monthFormat,\n light: this.light,\n locale: this.locale,\n min: this.minMonth,\n max: this.maxMonth,\n range: this.range,\n readonly: this.readonly && this.type === 'month',\n scrollable: this.scrollable,\n value: this.selectedMonths,\n tableDate: `${pad(this.tableYear, 4)}`,\n },\n ref: 'table',\n on: {\n input: this.monthClick,\n 'update:table-date': (value: string) => this.tableDate = value,\n ...createItemTypeListeners(this, ':month'),\n },\n })\n },\n genYears (): VNode {\n return this.$createElement(VDatePickerYears, {\n props: {\n color: this.color,\n format: this.yearFormat,\n locale: this.locale,\n min: this.minYear,\n max: this.maxYear,\n value: this.tableYear,\n },\n on: {\n input: this.yearClick,\n ...createItemTypeListeners(this, ':year'),\n },\n })\n },\n genPickerBody (): VNode {\n const children = this.internalActivePicker === 'YEAR' ? [\n this.genYears(),\n ] : [\n this.genTableHeader(),\n this.internalActivePicker === 'DATE' ? this.genDateTable() : this.genMonthTable(),\n ]\n\n return this.$createElement('div', {\n key: this.internalActivePicker,\n }, children)\n },\n setInputDate () {\n if (this.lastValue) {\n const array = this.lastValue.split('-')\n this.inputYear = parseInt(array[0], 10)\n this.inputMonth = parseInt(array[1], 10) - 1\n if (this.type === 'date') {\n this.inputDay = parseInt(array[2], 10)\n }\n } else {\n this.inputYear = this.inputYear || this.now.getFullYear()\n this.inputMonth = this.inputMonth == null ? this.inputMonth : this.now.getMonth()\n this.inputDay = this.inputDay || this.now.getDate()\n }\n },\n },\n\n render (): VNode {\n return this.genPicker('v-picker--date')\n },\n})\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport './VAppBar.sass'\n\n// Extensions\nimport VToolbar from '../VToolbar/VToolbar'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Scrollable from '../../mixins/scrollable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VToolbar,\n Scrollable,\n SSRBootable,\n Toggleable,\n Applicationable('top', [\n 'clippedLeft',\n 'clippedRight',\n 'computedHeight',\n 'invertedScroll',\n 'isExtended',\n 'isProminent',\n 'value',\n ])\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-app-bar',\n\n directives: { Scroll },\n\n provide (): object {\n return { VAppBar: this }\n },\n\n props: {\n clippedLeft: Boolean,\n clippedRight: Boolean,\n collapseOnScroll: Boolean,\n elevateOnScroll: Boolean,\n fadeImgOnScroll: Boolean,\n hideOnScroll: Boolean,\n invertedScroll: Boolean,\n scrollOffScreen: Boolean,\n shrinkOnScroll: Boolean,\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n isActive: this.value,\n }\n },\n\n computed: {\n applicationProperty (): string {\n return !this.bottom ? 'top' : 'bottom'\n },\n canScroll (): boolean {\n return (\n Scrollable.options.computed.canScroll.call(this) &&\n (\n this.invertedScroll ||\n this.elevateOnScroll ||\n this.hideOnScroll ||\n this.collapseOnScroll ||\n this.isBooted ||\n // If falsy, user has provided an\n // explicit value which should\n // overwrite anything we do\n !this.value\n )\n )\n },\n classes (): object {\n return {\n ...VToolbar.options.computed.classes.call(this),\n 'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n 'v-app-bar': true,\n 'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n 'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n 'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n 'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n 'v-app-bar--hide-shadow': this.hideShadow,\n 'v-app-bar--is-scrolled': this.currentScroll > 0,\n 'v-app-bar--shrink-on-scroll': this.shrinkOnScroll,\n }\n },\n scrollRatio (): number {\n const threshold = this.computedScrollThreshold\n return Math.max((threshold - this.currentScroll) / threshold, 0)\n },\n computedContentHeight (): number {\n if (!this.shrinkOnScroll) return VToolbar.options.computed.computedContentHeight.call(this)\n\n const min = this.dense ? 48 : 56\n const max = this.computedOriginalHeight\n\n return min + (max - min) * this.scrollRatio\n },\n computedFontSize (): number | undefined {\n if (!this.isProminent) return undefined\n\n const min = 1.25\n const max = 1.5\n\n return min + (max - min) * this.scrollRatio\n },\n computedLeft (): number {\n if (!this.app || this.clippedLeft) return 0\n\n return this.$vuetify.application.left\n },\n computedMarginTop (): number {\n if (!this.app) return 0\n\n return this.$vuetify.application.bar\n },\n computedOpacity (): number | undefined {\n if (!this.fadeImgOnScroll) return undefined\n\n return this.scrollRatio\n },\n computedOriginalHeight (): number {\n let height = VToolbar.options.computed.computedContentHeight.call(this)\n if (this.isExtended) height += parseInt(this.extensionHeight)\n return height\n },\n computedRight (): number {\n if (!this.app || this.clippedRight) return 0\n\n return this.$vuetify.application.right\n },\n computedScrollThreshold (): number {\n if (this.scrollThreshold) return Number(this.scrollThreshold)\n\n return this.computedOriginalHeight - (this.dense ? 48 : 56)\n },\n computedTransform (): number {\n if (\n !this.canScroll ||\n (this.elevateOnScroll && this.currentScroll === 0 && this.isActive)\n ) return 0\n\n if (this.isActive) return 0\n\n const scrollOffScreen = this.scrollOffScreen\n ? this.computedHeight\n : this.computedContentHeight\n\n return this.bottom ? scrollOffScreen : -scrollOffScreen\n },\n hideShadow (): boolean {\n if (this.elevateOnScroll && this.isExtended) {\n return this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.elevateOnScroll) {\n return this.currentScroll === 0 ||\n this.computedTransform < 0\n }\n\n return (\n !this.isExtended ||\n this.scrollOffScreen\n ) && this.computedTransform !== 0\n },\n isCollapsed (): boolean {\n if (!this.collapseOnScroll) {\n return VToolbar.options.computed.isCollapsed.call(this)\n }\n\n return this.currentScroll > 0\n },\n isProminent (): boolean {\n return (\n VToolbar.options.computed.isProminent.call(this) ||\n this.shrinkOnScroll\n )\n },\n styles (): object {\n return {\n ...VToolbar.options.computed.styles.call(this),\n fontSize: convertToUnit(this.computedFontSize, 'rem'),\n marginTop: convertToUnit(this.computedMarginTop),\n transform: `translateY(${convertToUnit(this.computedTransform)})`,\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n }\n },\n },\n\n watch: {\n canScroll: 'onScroll',\n computedTransform () {\n // Normally we do not want the v-app-bar\n // to update the application top value\n // to avoid screen jump. However, in\n // this situation, we must so that\n // the clipped drawer can update\n // its top value when scrolled\n if (\n !this.canScroll ||\n (!this.clippedLeft && !this.clippedRight)\n ) return\n\n this.callUpdate()\n },\n invertedScroll (val: boolean) {\n this.isActive = !val || this.currentScroll !== 0\n },\n hideOnScroll (val: boolean) {\n this.isActive = !val || this.currentScroll < this.computedScrollThreshold\n },\n },\n\n created () {\n if (this.invertedScroll) this.isActive = false\n },\n\n methods: {\n genBackground () {\n const render = VToolbar.options.methods.genBackground.call(this)\n\n render.data = this._b(render.data || {}, render.tag!, {\n style: { opacity: this.computedOpacity },\n })\n\n return render\n },\n updateApplication (): number {\n return this.invertedScroll\n ? 0\n : this.computedHeight + this.computedTransform\n },\n thresholdMet () {\n if (this.invertedScroll) {\n this.isActive = this.currentScroll > this.computedScrollThreshold\n return\n }\n\n if (this.hideOnScroll) {\n this.isActive = this.isScrollingUp ||\n this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.currentThreshold < this.computedScrollThreshold) return\n\n this.savedScroll = this.currentScroll\n },\n },\n\n render (h): VNode {\n const render = VToolbar.options.render.call(this, h)\n\n render.data = render.data || {}\n\n if (this.canScroll) {\n render.data.directives = render.data.directives || []\n render.data.directives.push({\n arg: this.scrollTarget,\n name: 'scroll',\n value: this.onScroll,\n })\n }\n\n return render\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary<PropOptions>)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary<PropOptions>)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary<PropOptions>)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert <v-col sm></v-col> to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map<string, any[]>()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installComponents (component, components) {\n var options = typeof component.exports === 'function'\n ? component.exports.extendOptions\n : component.options\n\n if (typeof component.exports === 'function') {\n options.components = component.exports.options.components\n }\n\n options.components = options.components || {}\n\n for (var i in components) {\n options.components[i] = options.components[i] || components[i]\n }\n}\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend<options>().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator<string>,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array<any>({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator<IntersectionObserverInit>,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator<string | srcObject>,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary<string> = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType<typeof baseMixins> {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType<any>,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // <v-switch loading>.loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType<string | null>,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator<string>,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n"],"sourceRoot":""}