{"version":3,"sources":["webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/components/VGrid/VFlex.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/components/VThemeProvider/VThemeProvider.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/directives/click-outside/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/components/VGrid/VLayout.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/directives/resize/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/mixins/returnable/index.ts","webpack:///../../../src/mixins/overlayable/index.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/mixins/filterable/index.ts"],"names":["mergeTransitions","dest","transitions","Array","concat","createSimpleTransition","name","origin","mode","functional","props","group","type","Boolean","default","hideOnLeave","leaveAbsolute","String","render","h","context","tag","data","on","beforeEnter","el","style","transformOrigin","webkitTransformOrigin","leave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","afterLeave","setProperty","mergeData","children","createJavascriptTransition","functions","expandedParentClass","x","sizeProperty","offsetProperty","upperFirst","_parent","parentNode","_initialStyle","transition","overflow","enter","initialStyle","offset","classList","add","requestAnimationFrame","afterEnter","resetStyles","enterCancelled","leaveCancelled","remove","size","VFadeTransition","VSlideXTransition","VExpandTransition","ExpandTransitionGenerator","VExpandXTransition","Grid","breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","val","alignValidator","str","includes","alignProps","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","extend","dense","noGutters","cacheKey","get","forEach","value","push","set","staticClass","class","VSheet","SIZE_MAP","isFontAwesome5","iconType","some","isSvgPath","icon","test","length","VIcon","mixins","BindsAttrs","Colorable","Sizeable","Themeable","disabled","right","Number","required","computed","medium","hasClickListener","this","listeners$","click","methods","getIcon","iconName","$slots","text","trim","remapInternalIcon","getSize","sizes","xSmall","small","large","xLarge","explicitSize","find","key","convertToUnit","getDefaultData","attrs","undefined","attrs$","getSvgWrapperData","fontSize","wrapperData","applyColors","themeClasses","setTextColor","color","renderFontIcon","newChildren","delimiterIndex","indexOf","isMaterialIcon","slice","renderSvgIcon","svgData","xmlns","viewBox","role","d","renderSvgIconComponent","component","nativeOn","$_wrapperFor","domProps","textContent","innerHTML","baseMixins","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","directives","ClickOutside","dark","fullscreen","light","maxWidth","noClickAnimation","persistent","retainFocus","scrollable","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","classes","contentClass","isActive","contentClasses","hasActivator","activator","$scopedSlots","watch","show","hideScroll","removeOverlay","unbind","_a","focus","showScroll","genOverlay","created","$attrs","hasOwnProperty","removed","beforeMount","$nextTick","isBooted","beforeDestroy","window","animateClick","clearTimeout","setTimeout","closeConditional","e","target","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","getMaxZIndex","document","documentElement","options","call","hideOverlay","dialog","activeElement","_b","bind","addEventListener","onFocusin","removeEventListener","onClickOutside","$emit","onKeydown","keyCode","keyCodes","esc","getOpenDependents","getActivator","getOpenDependentElements","focusable","querySelectorAll","hasAttribute","matches","genContent","showLazyContent","$createElement","VThemeProvider","root","getScopeIdAttrs","keydown","zIndex","ref","genTransition","genInnerContent","appear","tabindex","handler","include","getContentSlot","attach","genActivator","Toggleable","absolute","opacity","__scrim","setBackgroundColor","computedOpacity","styles","$listeners","VOverlay","Ripple","activeClass","append","exact","exactPath","exactActiveClass","link","href","to","nuxt","ripple","proxyClass","computedRipple","isClickable","isLink","$route","mounted","onRouteChange","generateRouteLink","path","assign","getObjectValueByPath","toggle","VProgressCircular","maxHeight","minHeight","minWidth","measurableStyles","loading","loaderHeight","genProgress","progress","VProgressLinear","indeterminate","createSimpleFunctional","generateWarning","child","parent","consoleWarn","inject","namespace","defaultImpl","register","unregister","provide","self","VMenu","VChip","isDark","rootIsDark","node","isComment","intersect","button","rotate","radius","isVisible","calculatedSize","circumference","Math","PI","normalizedValue","parseFloat","strokeDashArray","round","strokeDashOffset","strokeWidth","viewBoxSize","svgStyles","transform","genCircle","fill","cx","cy","r","genSvg","genInfo","onObserve","entries","observer","isIntersecting","factory","RegistrableInject","groupClasses","DELAY_RIPPLE","webkitTransform","isTouchEvent","constructor","isKeyboardEvent","calculate","localX","localY","getBoundingClientRect","touches","clientX","clientY","scale","_ripple","circle","clientWidth","center","sqrt","clientHeight","centerX","centerY","y","ripples","enabled","container","createElement","animation","appendChild","getComputedStyle","dataset","previousPosition","activated","performance","now","hide","getElementsByClassName","isHiding","diff","delay","max","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","rippleStop","isTouch","centered","showTimerCommit","showTimer","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","passive","removeListeners","directive","update","oldValue","BaseItemGroup","Comparable","Proxyable","mandatory","multiple","internalLazyValue","items","selectedIndex","selectedItem","selectedItems","filter","item","index","toggleMethod","getValue","selectedValues","internalValue","isArray","v","valueComparator","intern","genData","i","onClick","updateInternalValue","$on","updateMandatory","updateItem","splice","valueIndex","updateItemsState","updateMultiple","updateSingle","last","reverse","defaultValue","findIndex","isSame","itemGroup","Measurable","aspectRatio","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","getSlot","VResponsive","rebuildFunctionalSlots","slots","slot","makeWatcher","property","oldVal","attr","prototype","$delete","$data","$set","$watch","immediate","Roundable","roundedClasses","Routable","Positionable","GroupableFactory","ToggleableFactory","btnToggle","block","depressed","fab","outlined","plain","retainFocusOnClick","rounded","tile","bottom","isElevated","fixed","hasBg","isRound","elevationClasses","sizeableClasses","computedElevation","Elevatable","defaultRipple","elevation","breakingProps","original","replacement","breaking","detail","blur","genLoader","loader","setColor","JSON","stringify","Function","deepEqual","shaped","PositionableFactory","active","backgroundColor","backgroundOpacity","bufferValue","query","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","computedTransition","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","__cachedBuffer","genProgressBar","__cachedStream","normalizedBuffer","isReversed","reactive","$vuetify","rtl","normalize","change","genListeners","listeners","offsetX","inheritAttrs","sortBy","sortDesc","customSort","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","min","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","updateOptions","originalItemsLength","computedOptions","old","deep","oldBy","oldDesc","by","desc","byIndex","k","map","s","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","lang","t","genItemsPerPageSelect","computedIPPO","ippo","VSelect","hideDetails","auto","input","genPaginationInfo","genIcon","label","VBtn","genIcons","before","after","unshift","toString","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","isSelectable","values","removedProps","onKeyDown","onKeyUp","shift","toggleSelectAll","select","emit","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","isMobile","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","genItems","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","VSimpleCheckbox","genSortIcon","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","stopPropagation","genSortSelect","menuProps","closeOnContentClick","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","scope","divider","groupable","mobile","dedupeModelListeners","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","summaryClass","fixedHeader","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","matchesColumnFilters","defaultFilter","matchesSearchTerm","VDataIterator","Loadable","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","acc","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","_c","calcWidths","from","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genHeaders","VDataTableHeader","genGroupedRows","genRows","genDefaultGroupedRow","isOpen","toggleFn","removeFn","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","getPropertyFromItem","contextmenu","event","dblclick","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","inserted","vnode","modifiers","IntersectionObserver","_observe","_uid","entry","quiet","init","once","observe","unobserve","Intersect","VCardActions","VCardSubtitle","VCardText","VCardTitle","VCard","indeterminateIcon","onIcon","offIcon","f","composite","split","defaultConditional","checkEvent","checkIsActive","attachedRoot","ShadowRoot","host","elements","_clickOutside","lastMousedownWasOutside","handleShadow","callback","onMousedown","app","model","consoleError","isCssColor","colorName","colorModifier","hasIntersect","alt","contain","eager","gradient","lazySrc","rootMargin","threshold","src","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","loadImage","lazyImg","Image","pollForSize","onLoad","getSrc","endsWith","startsWith","naturalHeight","onError","onload","decode","catch","err","message","then","onerror","img","timeout","poll","complete","__genPlaceholder","placeholder","flat","hover","raised","background","VDivider","inset","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","parsedItems","tileActiveClass","staticNoDataTile","mousedown","preventDefault","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","middle","getMaskedCharacters","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","id","needsTile","VListItemContent","VListItemTitle","getText","componentOptions","Ctor","VList","defaultMenuProps","closeOnClick","disableKeys","openOnClick","VTextField","Filterable","appendIcon","cacheItems","chips","clearable","deletableChips","disableLookup","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","lazyValue","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","hasChips","computedOwns","computedCounterValue","counterValue","isFocused","dynamicHeight","hasSlot","isDirty","listData","scopeId","$vnode","$options","_scopeId","virtualizedItems","selectItem","staticList","VSelectList","$_menuProps","menuCanShow","normalisedProps","p","nudgeBottom","offsetY","initialValue","setSelectedItems","menu","updateDimensions","onMenuActiveChange","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","getContent","arr","uniqueValues","has","findExistingIndex","genChipSelection","isDisabled","close","onChipInput","genCommaSelection","computedColor","genDefaultSlot","selections","genSelections","genInput","genFieldset","genLabel","genAffix","suffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","cb","extraData","VInput","readonly","isReadonly","autocomplete","persistentPlaceholder","hasLabel","keypress","onKeyPress","genInputSlot","genList","genListWithSlot","scroll","onScroll","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","onBlur","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","getTiles","tab","up","down","home","changeListIndex","onUpDown","onTabDown","onSpaceDown","tiles","getAttribute","onMouseUp","hasMouseDown","which","showMoreItems","scrollHeight","scrollTop","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","appendInner","isNaN","parseInt","chipGroup","closeIcon","closeLabel","draggable","filterIcon","pill","textColor","hasClose","genFilter","genClose","vertical","orientation","pattern","styleList","styleProp","parseStyle","styleMap","camelize","mergeTarget","arguments","mergeStyles","mergeListeners","source","args","arg","_onResize","Resize","Delayable","Menuable","isInMenu","theme","openOnHover","calculatedTopAuto","defaultOffset","hasJustFocused","resizeTimeout","calculatedLeft","menuWidth","dimensions","calculatedMinWidth","calcXOverflow","calcLeftAuto","calcLeft","calculatedMaxHeight","calculatedMaxWidth","nudgeWidth","pageWidth","calculatedTop","calcYOverflow","calcTop","tabIndex","isContentActive","next","prev","contentHeight","goTo","appOffset","duration","callActivate","activate","startTransition","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","computedTop","tileDistanceFromMenuTop","firstTileOffsetTop","genActivatorAttributes","attributes","genActivatorListeners","genDirectives","rootThemeClasses","activatorFixed","menuable__content__active","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","runDelay","relatedTarget","callDeactivate","onResize","mobileWidth","isNumber","deprecate","returnValue","originalValue","save","overlayColor","overlayOpacity","animationFrame","createOverlay","propsData","$mount","insertBefore","firstChild","getZIndex","addOnceEventListener","$destroy","cancelAnimationFrame","scrollListener","tagName","isContentEditable","pageup","pagedown","deltaY","checkPath","hasScrollbar","nodeType","Node","ELEMENT_NODE","overflowY","overflowX","scrollWidth","shouldScroll","dir","shiftKey","deltaX","delta","alreadyAtStart","alreadyAtEnd","scrollLeft","scrollingUp","scrollingDown","isInside","composedPath","getSelection","anchorNode","smAndDown","addPassiveEventListener","VGrid","availableProps","filterObjectOnKeys"],"mappings":"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","file":"js/chunk-a721e8ee.7c42d3b5.js","sourcesContent":["import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('flex')\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)\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()\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","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\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'\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 Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\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 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.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.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 this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.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.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) 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 '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 attrs: {\n tabindex: this.isActive ? 0 : undefined,\n },\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 './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n ...('click' in this ? { click: (this as any).click } : undefined), // #14447\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n // Don't allow the event to trigger ripples on any other elements\n e.rippleStop = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","import Vue from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & ((val: any, oldVal: any) => void) {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\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","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\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 mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","import 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 def: Ripple,\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","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: Event) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirective extends VNodeDirective {\n value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n inserted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[vnode.context!._uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[vnode.context!._uid]\n },\n}\n\nexport default ClickOutside\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('layout')\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\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'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\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 = {\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 './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) ?? '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) ?? '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\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,\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,\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","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'returnable',\n\n props: {\n returnValue: null as any,\n },\n\n data: () => ({\n isActive: false,\n originalValue: null as any,\n }),\n\n watch: {\n isActive (val) {\n if (val) {\n this.originalValue = this.returnValue\n } else {\n this.$emit('update:return-value', this.originalValue)\n }\n },\n },\n\n methods: {\n save (value: any) {\n this.originalValue = value\n setTimeout(() => {\n this.isActive = false\n })\n },\n },\n})\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\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 Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n"],"sourceRoot":""}