{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.array.flat.js","webpack:///./node_modules/core-js/internals/string-pad.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/modules/es.object.is.js","webpack:///./node_modules/core-js/modules/es.regexp.sticky.js","webpack:///./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es.string.pad-start.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/define-built-ins.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/modules/es.map.constructor.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./node_modules/core-js/modules/es.string.link.js","webpack:///./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///./node_modules/core-js/internals/flatten-into-array.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.regexp.dot-all.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.string.fixed.js","webpack:///./node_modules/core-js/modules/es.string.small.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./src/components/HelloWorld.vue?25ea","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?c3c6","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/mixins/themeable/index.ts","webpack:///../../src/util/mixins.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VThemeProvider/VThemeProvider.ts","webpack:///../../../src/mixins/delayable/index.ts","webpack:///../../../src/mixins/activatable/index.ts","webpack:///../../../src/mixins/dependent/index.ts","webpack:///../../../src/mixins/stackable/index.ts","webpack:///../../../src/mixins/bootable/index.ts","webpack:///../../../src/mixins/detachable/index.ts","webpack:///../../../src/mixins/menuable/index.ts","webpack:///../../../src/mixins/returnable/index.ts","webpack:///../../src/util/dom.ts","webpack:///../../../src/directives/click-outside/index.ts","webpack:///../../../src/directives/resize/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VList/VListItem.ts","webpack:///../../../src/components/VList/VListItemAction.ts","webpack:///../../../src/components/VList/VList.ts","webpack:///../../../src/components/VList/VListItemIcon.ts","webpack:///../../../src/components/VList/VListGroup.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/components/VList/VListItemGroup.ts","webpack:///../../../src/components/VAvatar/index.ts","webpack:///../../../src/components/VList/index.ts","webpack:///../../../src/components/VList/VListItemAvatar.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/components/VLabel/VLabel.ts","webpack:///../../../src/components/VLabel/index.ts","webpack:///../../../src/components/VMessages/VMessages.ts","webpack:///../../../src/components/VMessages/index.ts","webpack:///../../../src/mixins/validatable/index.ts","webpack:///../../../src/components/VInput/VInput.ts","webpack:///../../../src/components/VInput/index.ts","webpack:///../../../src/components/VCounter/VCounter.ts","webpack:///../../../src/components/VCounter/index.ts","webpack:///../../../src/mixins/intersectable/index.ts","webpack:///../../../src/components/VTextField/VTextField.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/mixins/mobile/index.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/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.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/mixins/picker-button/index.ts","webpack:///../../../src/components/VDatePicker/VDatePickerTitle.ts","webpack:///../../../src/mixins/localable/index.ts","webpack:///../../../../src/components/VDatePicker/util/pad.ts","webpack:///../../../../src/components/VDatePicker/util/createNativeLocaleFormatter.ts","webpack:///../../../../src/components/VDatePicker/util/monthChange.ts","webpack:///../../../src/components/VDatePicker/VDatePickerHeader.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../../src/components/VDatePicker/util/eventHelpers.ts","webpack:///../../../../src/components/VDatePicker/util/sanitizeDateString.ts","webpack:///../../../../src/components/VDatePicker/util/isDateAllowed.ts","webpack:///../../../../src/components/VDatePicker/mixins/date-picker-table.ts","webpack:///../../src/util/dateTimeUtils.ts","webpack:///../../../src/components/VDatePicker/VDatePickerDateTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerMonthTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerYears.ts","webpack:///../../../src/components/VPicker/VPicker.ts","webpack:///../../../src/components/VPicker/index.ts","webpack:///../../../src/mixins/picker/index.ts","webpack:///../../../../src/components/VCalendar/util/timestamp.ts","webpack:///../../../src/components/VDatePicker/VDatePicker.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///./src/components/HelloWorld.vue"],"names":["$","flattenIntoArray","toObject","lengthOfArrayLike","toIntegerOrInfinity","arraySpeciesCreate","target","proto","flat","depthArg","arguments","length","undefined","O","this","sourceLen","A","uncurryThis","toLength","toString","$repeat","requireObjectCoercible","repeat","stringSlice","slice","ceil","Math","createMethod","IS_END","$this","maxLength","fillString","fillLen","stringFiller","S","intMaxLength","stringLength","fillStr","module","exports","start","end","Object","is","x","y","sign","stat","global","DESCRIPTORS","MISSED_STICKY","classof","defineBuiltInAccessor","getInternalState","get","RegExpPrototype","RegExp","prototype","TypeError","configurable","sticky","addToUnscopables","isForced","inheritIfRequired","createNonEnumerableProperty","getOwnPropertyNames","f","isPrototypeOf","isRegExp","getRegExpFlags","stickyHelpers","proxyAccessor","defineBuiltIn","fails","hasOwn","enforceInternalState","enforce","setSpecies","wellKnownSymbol","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","MATCH","NativeRegExp","SyntaxError","exec","charAt","replace","stringIndexOf","indexOf","IS_NCG","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","BASE_FORCED","handleDotAll","string","chr","index","result","brackets","handleNCG","named","names","ncg","groupid","groupname","RegExpWrapper","pattern","flags","rawFlags","dotAll","handled","state","thisIsRegExp","patternIsRegExp","flagsAreUndefined","groups","rawPattern","constructor","source","raw","error","keys","$padStart","WEBKIT_BUG","forced","padStart","component","components","options","extendOptions","i","defineProperty","create","defineBuiltIns","bind","anInstance","iterate","defineIterator","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","IS_MAP","ADDER","Constructor","that","iterable","Prototype","type","first","last","size","AS_ENTRIES","define","key","value","previous","entry","getEntry","next","removed","clear","data","prev","forEach","callbackfn","boundFunction","has","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","done","src","InternalMetadataModule","isCallable","isObject","checkCorrectnessOfIteration","setToStringTag","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","KEY","uncurriedNativeMethod","REPLACE","entries","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","collection","collectionStrong","init","call","fixRegExpWellKnownSymbolLogic","anObject","sameValue","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","searcher","rx","res","previousLastIndex","lastIndex","getOwnPropertyDescriptor","notARegExp","correctIsRegExpLogic","IS_PURE","un$EndsWith","endsWith","min","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","String","writable","searchString","endPosition","len","search","createHTML","forcedStringHTMLMethod","link","url","userAgent","test","isArray","original","depth","mapper","thisArg","element","elementLen","targetIndex","sourceIndex","mapFn","toAbsoluteIndex","createProperty","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","max","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","splice","deleteCount","insertCount","actualDeleteCount","k","from","to","actualStart","argumentsLength","$findIndex","findIndex","FIND_INDEX","SKIPS_HOLES","Array","fixed","small","makeBuiltIn","name","getter","setter","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","model","callback","$$v","rut","expression","granjas","granja","scopedSlots","_u","fn","ref","on","_g","_b","date","menu","$event","verUser","headers","datos","staticRenderFns","text","align","sortable","methods","console","newval","then","catch","verData","checkval","alert","el","va","makeWatcher","property","val","oldVal","attr","hasOwnProperty","$delete","$data","$set","Vue","extend","attrs$","listeners$","created","$watch","immediate","props","color","setBackgroundColor","style","consoleError","class","isCssColor","setTextColor","trim","split","colorName","colorModifier","elevation","Number","computed","computedElevation","elevationClasses","isNaN","parseInt","height","maxHeight","maxWidth","minHeight","minWidth","width","measurableStyles","styles","convertToUnit","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","unsupportedIterableToArray","F","s","n","e","_e","err","normalCompletion","didErr","step","_e2","rounded","Boolean","tile","roundedClasses","composite","push","values","join","Themeable","provide","theme","themeableProvide","inject","default","isDark","dark","light","appIsDark","$vuetify","themeClasses","rootIsDark","rootThemeClasses","watch","handler","newVal","functionalThemeClasses","context","vm","injections","mixins","args","BindsAttrs","Colorable","Elevatable","Measurable","Roundable","outlined","shaped","tag","classes","render","h","$slots","VSheet","inserted","binding","vnode","window","modifiers","observer","IntersectionObserver","_observe","_el$_observe","_uid","isIntersecting","some","quiet","once","unbind","observe","_el$_observe2","unobserve","Intersect","directives","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","PI","normalizedValue","parseFloat","strokeDashArray","round","strokeDashOffset","strokeWidth","viewBoxSize","svgStyles","transform","genCircle","offset","fill","cx","cy","r","genSvg","children","xmlns","viewBox","genInfo","onObserve","role","$listeners","VProgressCircular","generateWarning","child","parent","consoleWarn","namespace","defaultImpl","register","unregister","factory","RegistrableInject","activeClass","disabled","isActive","groupClasses","beforeDestroy","toggle","$emit","prop","event","required","Toggleable","availableProps","absolute","bottom","left","right","top","selected","filterObjectOnKeys","DELAY_RIPPLE","webkitTransform","isTouchEvent","isKeyboardEvent","calculate","localX","localY","getBoundingClientRect","touches","clientX","clientY","scale","_ripple","circle","clientWidth","center","sqrt","clientHeight","centerX","centerY","ripples","show","enabled","container","document","createElement","animation","appendChild","className","getComputedStyle","position","dataset","previousPosition","classList","activated","performance","now","setTimeout","remove","hide","getElementsByClassName","isHiding","diff","delay","parentNode","removeChild","isRippleEnabled","rippleShow","currentTarget","touched","rippleStop","isTouch","centered","showTimerCommit","showTimer","rippleHide","clearTimeout","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","keyCodes","enter","space","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","addEventListener","passive","removeListeners","removeEventListener","directive","node","update","oldValue","Ripple","append","exact","exactPath","exactActiveClass","href","nuxt","ripple","proxyClass","computedRipple","isClickable","isLink","click","$attrs","tabindex","$route","mounted","onRouteChange","generateRouteLink","path","assign","$refs","$nextTick","getObjectValueByPath","large","xLarge","xSmall","medium","sizeableClasses","baseMixins","Routable","Positionable","Sizeable","GroupableFactory","ToggleableFactory","btnToggle","block","depressed","fab","icon","loading","plain","retainFocusOnClick","isElevated","hasBg","isRound","defaultRipple","breakingProps","replacement","breaking","detail","$el","blur","genContent","genLoader","loader","setColor","includes","JSON","stringify","styleList","styleProp","parseStyle","styleMap","camelize","mergeData","mergeTarget","mergeClasses","mergeStyles","mergeListeners","wrapInArray","concat","dest","arg","mergeTransitions","transitions","createSimpleTransition","origin","mode","functional","group","hideOnLeave","leaveAbsolute","beforeEnter","transformOrigin","webkitTransformOrigin","leave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","afterLeave","setProperty","createJavascriptTransition","functions","expandedParentClass","sizeProperty","offsetProperty","upperFirst","_parent","_initialStyle","transition","overflow","initialStyle","requestAnimationFrame","afterEnter","resetStyles","enterCancelled","leaveCancelled","VFadeTransition","VSlideXTransition","VExpandTransition","ExpandTransitionGenerator","VExpandXTransition","internalLazyValue","internalValue","Proxyable","PositionableFactory","active","backgroundColor","backgroundOpacity","bufferValue","query","reverse","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","computedTransition","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","__cachedBuffer","genProgressBar","__cachedStream","normalizedBuffer","opacity","isReversed","reactive","rtl","normalize","change","slot","getSlot","genListeners","listeners","onClick","offsetX","VProgressLinear","loaderHeight","genProgress","progress","Loadable","hover","img","raised","background","VCardActions","createSimpleFunctional","VCardText","VCardTitle","breakpoints","breakpointProps","reduce","offsetProps","orderProps","propMap","col","order","breakpointClass","breakpoint","toLowerCase","cache","Map","cols","alignSelf","validator","str","cacheKey","hasColClasses","startsWith","VGrid","id","filter","domProps","Grid","fluid","_arrayWithoutHoles","arr","arrayLikeToArray","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","SIZE_MAP","inheritAttrs","items","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","customFilter","searchItems","serverItemsLength","internalOptions","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","pageStart","pageStop","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","updateOptions","originalItemsLength","computedOptions","old","deepEqual","deep","oldBy","oldDesc","by","desc","byIndex","map","$scopedSlots","isFontAwesome5","iconType","isSvgPath","VIcon","dense","hasClickListener","getIcon","iconName","remapInternalIcon","getSize","sizes","explicitSize","find","getDefaultData","getSvgWrapperData","fontSize","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","d","renderSvgIconComponent","nativeOn","$_wrapperFor","textContent","innerHTML","chipGroup","close","closeIcon","closeLabel","draggable","filterIcon","label","pill","textColor","hasClose","genFilter","genClose","lang","t","stopPropagation","preventDefault","VChip","root","isComment","openDelay","closeDelay","openTimeout","closeTimeout","clearDelay","runDelay","cb","open","Delayable","activator","internalActivator","openOnClick","openOnHover","openOnFocus","activatorElement","activatorNode","events","slotType","getSlotType","addActivatorEvents","removeActivatorEvents","getActivator","genActivatorListeners","genActivator","getValueProxy","genActivatorAttributes","mouseenter","mouseleave","focus","querySelector","componentInstance","$options","m","elm","nodeType","Node","ELEMENT_NODE","getContentSlot","self","resetActivator","searchChildren","results","isDependent","$children","closeDependents","openDependents","getOpenDependents","getOpenDependentElements","getClickableDependentElements","content","overlay","stackElement","stackExclude","stackMinZIndex","activeZIndex","getMaxZIndex","getZIndex","exclude","base","zis","activeElements","eager","isBooted","hasContent","showLazyContent","validateAttachTarget","removeActivator","Bootable","attach","contentClass","hasDetached","initDetach","beforeMount","firstChild","nextSibling","insertBefore","deactivated","destroyed","isConnected","MutationObserver","list","record","removedNodes","disconnect","subtree","childList","getScopeIdAttrs","scopeId","$vnode","_isDestroyed","Stackable","positionableFactory","Activatable","Detachable","allowOverflow","nudgeBottom","nudgeLeft","nudgeRight","nudgeTop","nudgeWidth","offsetOverflow","positionX","positionY","zIndex","absoluteX","absoluteY","activatedBy","activatorFixed","dimensions","scrollHeight","relativeYOffset","hasJustFocused","hasWindow","inputActivator","isContentActive","pageWidth","pageYOffset","stackClass","computedLeft","a","c","activatorLeft","computedTop","offsetY","hasActivator","absoluteYOffset","callDeactivate","callActivate","updateDimensions","absolutePosition","activate","calcLeft","menuWidth","calcXOverflow","calcTop","calcYOverflow","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","contentHeight","totalHeight","isOverflowing","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","offsetParent","innerHeight","documentElement","pageXOffset","scrollLeft","scrollTop","getRoundedBoundedClientRect","rect","measure","marginLeft","marginTop","sneakPeek","display","startTransition","Promise","resolve","offsetRect","returnValue","originalValue","save","attachedRoot","getRootNode","composed","defaultConditional","checkEvent","checkIsActive","ShadowRoot","host","elements","include","contains","closeConditional","_clickOutside","lastMousedownWasOutside","handleShadow","ClickOutside","onMousedown","app","_el$_clickOutside","_onResize","_el$_onResize","Resize","Dependent","Returnable","Menuable","isInMenu","auto","closeOnClick","closeOnContentClick","disableKeys","calculatedTopAuto","defaultOffset","listIndex","resizeTimeout","selectedIndex","tiles","activeTile","calculatedLeft","calculatedMinWidth","calcLeftAuto","calculatedMaxHeight","calculatedMaxWidth","calculatedTop","hasClickableTiles","tabIndex","goTo","appOffset","duration","calcTopAuto","calcScrollPosition","maxScrollTop","tileDistanceFromMenuTop","firstTileOffsetTop","changeListIndex","getTiles","tab","down","nextTile","up","prevTile","lastTile","home","firstTile","attributes","keydown","onKeyDown","genTransition","genDirectives","menuable__content__active","getAttribute","scroll","mouseEnterHandler","mouseLeaveHandler","querySelectorAll","_this$$refs$content","relatedTarget","esc","onResize","VThemeProvider","VMenu","indeterminateIcon","onIcon","offIcon","input","inset","vertical","orientation","VDivider","VSubheader","isInGroup","isInList","isInNav","listItemGroup","inactive","selectable","threeLine","twoLine","genAttrs","inputValue","filteredChild","VNode","expand","nav","subheader","g","listClick","uid","appendIcon","noAction","prependIcon","subGroup","matchRoute","genIcon","genAppendIcon","VListItemIcon","genHeader","VListItem","genPrependIcon","genItems","match","valueComparator","BaseItemGroup","Comparable","mandatory","multiple","selectedItem","selectedItems","item","toggleMethod","getValue","selectedValues","v","intern","genData","updateInternalValue","$on","updateMandatory","updateItem","valueIndex","updateItemsState","updateMultiple","updateSingle","defaultValue","isSame","itemGroup","VAvatar","VListItemContent","horizontal","VListItemTitle","action","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","tileActiveClass","staticNoDataTile","mousedown","genTileContent","genAction","VListItemAction","VSimpleCheckbox","genDivider","genFilteredText","escapeHTML","getMaskedCharacters","middle","genHighlight","header","toLocaleLowerCase","genTile","hasItem","getDisabled","scopedSlot","needsTile","getText","componentOptions","Ctor","getPropertyFromItem","divider","unshift","VList","focused","for","ctx","VLabel","genChildren","genMessage","message","VMessages","errorCount","errorMessages","messages","readonly","rules","success","successMessages","validateOnBlur","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","valid","computedColor","isDisabled","hasError","internalErrorMessages","hasSuccess","internalSuccessMessages","externalError","hasMessages","validationTarget","hasState","shouldValidate","genInternalMessages","internalMessages","form","isInteractive","isReadonly","validations","validationState","validate","reset","resetValidation","force","rule","Validatable","hideDetails","hideSpinButtons","hint","persistentHint","hasMouseDown","showDetails","isLabelActive","isDirty","computedId","hasDetails","messagesToDisplay","hasHint","hasLabel","$_modelEvent","validation","validationResult","beforeCreate","genPrependSlot","genControl","genAppendSlot","title","genInputSlot","genMessages","genDefaultSlot","genLabel","extraData","eventName","kebabCase","hasListener","mouseup","onMouseDown","onMouseUp","genSlot","location","prepend","VInput","isGreater","VCounter","intersectable","onVisible","Intersectable","dirtyTypes","resize","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","filled","fullWidth","placeholder","prefix","prependInnerIcon","persistentPlaceholder","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isClearing","isSingle","isSolo","isEnclosed","computedCounterValue","hasCounter","labelPosition","labelValue","showLabel","setLabelWidth","setPrefixWidth","tryAutofocus","onFocus","clearableCallback","genPrependInnerSlot","genIconSlot","genClearIcon","genCounter","maxlength","_this$$scopedSlots$co2","genFieldset","genTextFieldSlot","genLegend","span","genInput","inputAttrs","onBlur","onInput","messagesNode","counterNode","genAffix","activeElement","validity","scrollWidth","setPrependWidth","updateValue","defaultMenuProps","VTextField","Filterable","cacheItems","chips","deletableChips","disableLookup","itemColor","menuProps","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","hasChips","computedOwns","dynamicHeight","hasSlot","selection","listData","_scopeId","virtualizedItems","select","selectItem","staticList","VSelectList","$_menuProps","menuCanShow","normalisedProps","acc","p","setSelectedItems","onMenuActiveChange","setMenuIndex","activateMenu","setValue","getContent","uniqueValues","findExistingIndex","genChipSelection","onChipInput","genCommaSelection","selections","genSelections","genHiddenInput","genMenu","autocomplete","keypress","onKeyPress","genList","genListWithSlot","slots","slotName","onScroll","genSelection","genSlotSelection","getMenuIndex","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","onUpDown","onTabDown","onSpaceDown","which","showMoreItems","appendInner","VBtn","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genItemsPerPageSelect","computedIPPO","ippo","VSelect","genPaginationInfo","genIcons","before","after","mobileBreakpoint","isMobile","mobile","mobileWidth","isNumber","deprecate","Mobile","VData","itemKey","singleSelect","expanded","singleExpand","noResultsText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","isSelectable","removedProps","onKeyUp","shift","toggleSelectAll","emit","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","isExpanded","createItemProps","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","checkboxColor","sortIcon","showGroupBy","genSelectAll","genSortIcon","sortByText","genSortChip","sortIndex","beingSorted","isDesc","asc","genSortSelect","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","scope","groupable","dedupeModelListeners","rebuildFunctionalSlots","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","_slot$","computedSlots","columns","regularSlot","textAlign","cellClass","headerClass","summaryClass","fixedHeader","genWrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","matchesColumnFilters","defaultFilter","matchesSearchTerm","VDataIterator","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","calcWidths","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genHeaders","VDataTableHeader","genGroupedRows","genRows","genDefaultGroupedRow","isOpen","toggleFn","removeFn","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","contextmenu","dblclick","genBody","body","genFoot","foot","_this$$scopedSlots$fo","genFooters","simpleProps","VSimpleTable","proxySlot","genPickerButton","PickerButton","selectingYear","year","yearIcon","isReversing","genYearIcon","getYearBtn","genTitleText","genTitleDate","currentLocale","current","targetLength","padString","createNativeLocaleFormatter","substrOptions","makeIsoString","dateString","month","pad","intlFormatter","Intl","DateTimeFormat","format","Date","substr","Localable","nextAriaLabel","prevAriaLabel","formatter","timeZone","genBtn","ariaLabelId","calculateChange","monthChange","handleGesture","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","abs","touchstart","touch","changedTouches","touchend","touchmove","touchmoveX","touchmoveY","move","createHandlers","parentElement","handlers","_touchHandlers","Touch","createItemTypeNativeListeners","itemTypeSuffix","createItemTypeListeners","isDateAllowed","allowedFn","allowedDates","eventColor","range","scrollable","tableDate","wheelThrottle","displayedMonth","displayedYear","throttle","wheel","genButtonClasses","isAllowed","isFloating","isCurrent","isFirst","isLast","genButtonEvents","mouseEventType","genButton","isOtherMonth","genEvents","getEventColors","eventData","arrayize","eventColors","isValidScroll","calculateTableDate","sanitizeType","sanitizeDateString","deltaY","genTable","touchDirective","createUTCDate","day","UTC","isFinite","getUTCFullYear","setUTCFullYear","firstWeekOffset","firstDayOfWeek","firstDayOfYear","firstWeekDayInFirstWeek","firstWeekDayOfYear","getUTCDay","dayOfYear","isLeapYear","weeksInYear","weekOffset","weekOffsetNext","daysInYear","weekNumber","localeFirstDayOfYear","week","DatePickerTable","showAdjacentMonths","showWeek","weekdayFormat","weekdayFormatter","weekday","weekDays","createRange","delta","genTHead","days","genTR","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","weekDay","getWeekNumber","dayInMonth","genWeekNumber","genTBody","daysInMonth","getDate","prevMonthYear","prevMonth","firstDayFromPreviousMonth","cellsInRow","nextMonthYear","nextMonth","nextMonthDay","row","tds","_","defaultColor","activeItem","genYearItem","formatted","genYearItems","selectedYear","getFullYear","maxYear","minYear","landscape","noTitle","computedTitleColor","defaultTitleColor","genTitle","genBodyTransition","genActions","actions","VPicker","headerColor","genPickerTitle","genPickerBody","genPickerActionsSlot","cancel","genPicker","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP","Picker","activePicker","dayFormat","headerDateFormat","monthFormat","nextMonthAriaLabel","nextYearAriaLabel","pickerDate","prevMonthAriaLabel","prevYearAriaLabel","showCurrent","selectedItemsText","titleDateFormat","yearFormat","internalActivePicker","toUpperCase","inputDay","inputMonth","inputYear","multipleValue","getMonth","isMultiple","lastValue","selectedMonths","inputDate","tableMonth","tableYear","minMonth","maxMonth","formatters","titleDate","defaultTitleMultipleDateFormatter","defaultTitleDateFormatter","dates","titleFormats","titleDateFormatter","landscapeFormatter","nonDigit","digit","newValue","checkMultipleProp","setInputDate","output","emitInput","newInput","valueType","expected","yearClick","monthClick","dateClick","VDatePickerTitle","genTableHeader","VDatePickerHeader","genDateTable","VDatePickerDateTable","genMonthTable","VDatePickerMonthTable","genYears","VDatePickerYears","array","ALIGNMENT","makeProps","def","alignValidator","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","justify","alignContent","classMap","noGutters","VCard","VCol","VContainer","VDataTable","VDatePicker","VRow"],"mappings":"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","file":"js/chunk-9cf0056a.e7a85e08.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var intMaxLength = toLength(maxLength);\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar TypeError = global.TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n configurable: true,\n get: function sticky() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).sticky;\n }\n throw TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installComponents (component, components) {\n var options = typeof component.exports === 'function'\n ? component.exports.extendOptions\n : component.options\n\n if (typeof component.exports === 'function') {\n options.components = component.exports.options.components\n }\n\n options.components = options.components || {}\n\n for (var i in components) {\n options.components[i] = options.components[i] || components[i]\n }\n}\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return un$EndsWith\n ? un$EndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","'use strict';\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\n\nvar TypeError = global.TypeError;\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar TypeError = global.TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function dotAll() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',[_c('v-card',{staticClass:\"pa-6\",attrs:{\"max-width\":\"80%\"}},[_c('v-card-title',[_vm._v(\" Control de accesos a Granjas\")]),_c('v-card-text',[_c('v-col',[_c('v-row',{staticClass:\"list\"},[_c('v-text-field',{attrs:{\"placeholder\":\"ingrese rut\",\"label\":\"Rut\"},model:{value:(_vm.rut),callback:function ($$v) {_vm.rut=$$v},expression:\"rut\"}}),_c('v-select',{attrs:{\"items\":_vm.granjas,\"label\":\"sel granja\",\"centered\":\"\"},model:{value:(_vm.granja),callback:function ($$v) {_vm.granja=$$v},expression:\"granja\"}}),_c('v-menu',{attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-text-field',_vm._g(_vm._b({attrs:{\"label\":\"Fecha ingreso\",\"prepend-icon\":\"mdi-calendar\",\"readonly\":\"\"},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}},'v-text-field',attrs,false),on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-date-picker',{attrs:{\"locale\":\"es-CL\",\"first-day-of-week\":\"1\"},on:{\"input\":function($event){_vm.menu = false}},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}})],1)],1)],1)],1),_c('v-card-actions',[_c('v-btn',{attrs:{\"block\":\"\"},on:{\"click\":function($event){return _vm.verUser()}}},[_vm._v(\"verificar acceso\")])],1)],1),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.datos}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n Control de accesos a Granjas\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n verificar acceso\n \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"","import Vue, { WatchHandler } 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 & WatchHandler {\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 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 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","// 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 unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\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 Vue from 'vue'\nimport { PropType, RenderContext } from 'vue/types/options'\n\ninterface options extends Vue {\n theme: {\n isDark: boolean\n }\n}\n\n/* @vue/component */\nconst Themeable = Vue.extend().extend({\n name: 'themeable',\n\n provide (): object {\n return {\n theme: this.themeableProvide,\n }\n },\n\n inject: {\n theme: {\n default: {\n isDark: false,\n },\n },\n },\n\n props: {\n dark: {\n type: Boolean as PropType,\n default: null,\n },\n light: {\n type: Boolean as PropType,\n default: null,\n },\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false,\n },\n }\n },\n\n computed: {\n appIsDark (): boolean {\n return this.$vuetify.theme.dark || false\n },\n isDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark\n }\n },\n themeClasses (): object {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark,\n }\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from v-app\n return this.appIsDark\n }\n },\n rootThemeClasses (): Dictionary {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark,\n }\n },\n },\n\n watch: {\n isDark: {\n handler (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark\n }\n },\n immediate: true,\n },\n },\n})\n\nexport default Themeable\n\nexport function functionalThemeClasses (context: RenderContext): object {\n const vm = {\n ...context.props,\n ...context.injections,\n }\n const isDark = Themeable.options.computed.isDark.call(vm)\n return Themeable.options.computed.themeClasses.call({ isDark })\n}\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue, { VueConstructor } from 'vue'\n\nexport default function mixins (...args: T): ExtractVue extends infer V ? V extends Vue ? VueConstructor : never : never\nexport default function mixins (...args: VueConstructor[]): VueConstructor\nexport default function mixins (...args: VueConstructor[]): VueConstructor {\n return Vue.extend({ mixins: args })\n}\n\n/**\n * Returns the instance type from a VueConstructor\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue = T extends (infer U)[]\n ? UnionToIntersection<\n U extends VueConstructor ? V : never\n >\n : T extends VueConstructor ? V : never\n\ntype UnionToIntersection =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import { 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","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import 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","// 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","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","// 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","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 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","// 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","/**\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 { 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 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 './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import 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","// 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 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 './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\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","// 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 VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\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","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\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","import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined,\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n },\n },\n})\n","// Mixins\nimport Delayable from '../delayable'\nimport Toggleable from '../toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { getSlot, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\ntype Listeners = Dictionary<(e: MouseEvent & KeyboardEvent & FocusEvent) => void>\n\nconst baseMixins = mixins(\n Delayable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'activatable',\n\n props: {\n activator: {\n default: null as unknown as PropType,\n validator: (val: string | object) => {\n return ['string', 'object'].includes(typeof val)\n },\n },\n disabled: Boolean,\n internalActivator: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n openOnFocus: Boolean,\n },\n\n data: () => ({\n // Do not use this directly, call getActivator() instead\n activatorElement: null as HTMLElement | null,\n activatorNode: [] as VNode[],\n events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n listeners: {} as Listeners,\n }),\n\n watch: {\n activator: 'resetActivator',\n openOnFocus: 'resetActivator',\n openOnHover: 'resetActivator',\n },\n\n mounted () {\n const slotType = getSlotType(this, 'activator', true)\n\n if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n consoleError(`The activator slot must be bound, try ''`, this)\n }\n\n this.addActivatorEvents()\n },\n\n beforeDestroy () {\n this.removeActivatorEvents()\n },\n\n methods: {\n addActivatorEvents () {\n if (\n !this.activator ||\n this.disabled ||\n !this.getActivator()\n ) return\n\n this.listeners = this.genActivatorListeners()\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n this.getActivator()!.addEventListener(key, this.listeners[key] as any)\n }\n },\n genActivator () {\n const node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {\n on: this.genActivatorListeners(),\n attrs: this.genActivatorAttributes(),\n })) || []\n\n this.activatorNode = node\n\n return node\n },\n genActivatorAttributes () {\n return {\n role: (this.openOnClick && !this.openOnHover) ? 'button' : undefined,\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genActivatorListeners () {\n if (this.disabled) return {}\n\n const listeners: Listeners = {}\n\n if (this.openOnHover) {\n listeners.mouseenter = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.mouseleave = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n } else if (this.openOnClick) {\n listeners.click = (e: MouseEvent) => {\n const activator = this.getActivator(e)\n if (activator) activator.focus()\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n if (this.openOnFocus) {\n listeners.focus = (e: FocusEvent) => {\n this.getActivator(e)\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n return listeners\n },\n getActivator (e?: Event): HTMLElement | null {\n // If we've already fetched the activator, re-use\n if (this.activatorElement) return this.activatorElement\n\n let activator = null\n\n if (this.activator) {\n const target = this.internalActivator ? this.$el : document\n\n if (typeof this.activator === 'string') {\n // Selector\n activator = target.querySelector(this.activator)\n } else if ((this.activator as any).$el) {\n // Component (ref)\n activator = (this.activator as any).$el\n } else {\n // HTMLElement | Element\n activator = this.activator\n }\n } else if (this.activatorNode.length === 1 || (this.activatorNode.length && !e)) {\n // Use the contents of the activator slot\n // There's either only one element in it or we\n // don't have a click event to use as a last resort\n const vm = this.activatorNode[0].componentInstance\n if (\n vm &&\n vm.$options.mixins && // Activatable is indirectly used via Menuable\n vm.$options.mixins.some((m: any) => m.options && ['activatable', 'menuable'].includes(m.options.name))\n ) {\n // Activator is actually another activatible component, use its activator (#8846)\n activator = (vm as any).getActivator()\n } else {\n activator = this.activatorNode[0].elm as HTMLElement\n }\n } else if (e) {\n // Activated by a click or focus event\n activator = (e.currentTarget || e.target) as HTMLElement\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n this.activatorElement = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return this.activatorElement\n },\n getContentSlot () {\n return getSlot(this, 'default', this.getValueProxy(), true)\n },\n getValueProxy (): object {\n const self = this\n return {\n get value () {\n return self.isActive\n },\n set value (isActive: boolean) {\n self.isActive = isActive\n },\n }\n },\n removeActivatorEvents () {\n if (\n !this.activator ||\n !this.activatorElement\n ) return\n\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n (this.activatorElement as any).removeEventListener(key, this.listeners[key])\n }\n\n this.listeners = {}\n },\n resetActivator () {\n this.removeActivatorEvents()\n this.activatorElement = null\n this.getActivator()\n this.addActivatorEvents()\n },\n },\n})\n","import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: InstanceType\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n },\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n","import Vue from 'vue'\n\nimport { getZIndex } from '../../util/helpers'\n\ninterface options extends Vue {\n $refs: {\n content: Element\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'stackable',\n\n data () {\n return {\n stackElement: null as Element | null,\n stackExclude: null as Element[] | null,\n stackMinZIndex: 0,\n isActive: false,\n }\n },\n computed: {\n activeZIndex (): number {\n if (typeof window === 'undefined') return 0\n\n const content = this.stackElement || this.$refs.content\n // Return current zindex if not active\n\n const index = !this.isActive\n ? getZIndex(content)\n : this.getMaxZIndex(this.stackExclude || [content]) + 2\n\n if (index == null) return index\n\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index)\n },\n },\n methods: {\n getMaxZIndex (exclude: Element[] = []) {\n const base = this.$el\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n const zis = [this.stackMinZIndex, getZIndex(base)]\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n const activeElements = [\n ...document.getElementsByClassName('v-menu__content--active'),\n ...document.getElementsByClassName('v-dialog__content--active'),\n ]\n\n // Get z-index for all active dialogs\n for (let index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(getZIndex(activeElements[index]))\n }\n }\n\n return Math.max(...zis)\n },\n },\n})\n","// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'bootable',\n\n props: {\n eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n","// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\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 ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n","// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\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","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\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, vnode: VNode) {\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, vnode)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[vnode.context!._uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[vnode.context!._uid]\n },\n}\n\nexport default ClickOutside\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\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","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// 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","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","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType\n\ninterface options extends ExtractVue {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: [String, RegExp],\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\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 './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 => 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 = value === this.internalValue\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 './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 './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\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 {\n escapeHTML,\n getPropertyFromItem,\n} 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 escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(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 const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\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 './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","import 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","// 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 VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\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","// 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","// 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","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","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","// 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 },\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, `${props.options.groupBy[0]}: ${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","// Mixins\nimport Colorable from '../colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { kebabCase } from '../../util/helpers'\n\n// Types\nimport { VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable\n).extend({\n methods: {\n genPickerButton (\n prop: string,\n value: any,\n content: VNodeChildren,\n readonly = false,\n staticClass = ''\n ) {\n const active = (this as any)[prop] === value\n const click = (event: Event) => {\n event.stopPropagation()\n this.$emit(`update:${kebabCase(prop)}`, value)\n }\n\n return this.$createElement('div', {\n staticClass: `v-picker__title__btn ${staticClass}`.trim(),\n class: {\n 'v-picker__title__btn--active': active,\n 'v-picker__title__btn--readonly': readonly,\n },\n on: (active || readonly) ? undefined : { click },\n }, Array.isArray(content) ? content : [content])\n },\n },\n})\n","import './VDatePickerTitle.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-date-picker-title',\n\n props: {\n date: {\n type: String,\n default: '',\n },\n disabled: Boolean,\n readonly: Boolean,\n selectingYear: Boolean,\n value: {\n type: String,\n },\n year: {\n type: [Number, String],\n default: '',\n },\n yearIcon: {\n type: String,\n },\n },\n\n data: () => ({\n isReversing: false,\n }),\n\n computed: {\n computedTransition (): string {\n return this.isReversing ? 'picker-reverse-transition' : 'picker-transition'\n },\n },\n\n watch: {\n value (val: string, prev: string) {\n this.isReversing = val < prev\n },\n },\n\n methods: {\n genYearIcon (): VNode {\n return this.$createElement(VIcon, {\n props: {\n dark: true,\n },\n }, this.yearIcon)\n },\n getYearBtn (): VNode {\n return this.genPickerButton('selectingYear', true, [\n String(this.year),\n this.yearIcon ? this.genYearIcon() : null,\n ], false, 'v-date-picker-title__year')\n },\n genTitleText (): VNode {\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [\n this.$createElement('div', {\n domProps: { innerHTML: this.date || ' ' },\n key: this.value,\n }),\n ])\n },\n genTitleDate (): VNode {\n return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date')\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-date-picker-title',\n class: {\n 'v-date-picker-title--disabled': this.disabled,\n },\n }, [\n this.getYearBtn(),\n this.genTitleDate(),\n ])\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'localable',\n\n props: {\n locale: String,\n },\n\n computed: {\n currentLocale (): string {\n return this.locale || this.$vuetify.lang.current\n },\n },\n})\n","const padStart = (string: number | string, targetLength: number, padString: string) => {\n targetLength = targetLength >> 0\n string = String(string)\n padString = String(padString)\n if (string.length > targetLength) {\n return String(string)\n }\n\n targetLength = targetLength - string.length\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length)\n }\n return padString.slice(0, targetLength) + String(string)\n}\n\nexport default (n: string | number, length = 2) => padStart(n, length, '0')\n","import pad from './pad'\nimport { DatePickerFormatter } from 'vuetify/types'\n\ninterface SubstrOptions {\n start?: number\n length: number\n}\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions\n): DatePickerFormatter | undefined\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions\n): DatePickerFormatter\n\nfunction createNativeLocaleFormatter (\n locale: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions = { start: 0, length: 0 }\n): DatePickerFormatter | undefined {\n const makeIsoString = (dateString: string) => {\n const [year, month, date] = dateString.trim().split(' ')[0].split('-')\n return [pad(year, 4), pad(month || 1), pad(date || 1)].join('-')\n }\n\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, options)\n return (dateString: string) => intlFormatter.format(new Date(`${makeIsoString(dateString)}T00:00:00+00:00`))\n } catch (e) {\n return (substrOptions.start || substrOptions.length)\n ? (dateString: string) => makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length)\n : undefined\n }\n}\n\nexport default createNativeLocaleFormatter\n","import pad from './pad'\n\n/**\n * @param {String} value YYYY-MM format\n * @param {Number} sign -1 or +1\n */\nexport default (value: string, sign: number) => {\n const [year, month] = value.split('-').map(Number)\n\n if (month + sign === 0) {\n return `${year - 1}-12`\n } else if (month + sign === 13) {\n return `${year + 1}-01`\n } else {\n return `${year}-${pad(month + sign)}`\n }\n}\n","import './VDatePickerHeader.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport { createNativeLocaleFormatter, monthChange } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-header',\n\n props: {\n disabled: Boolean,\n format: Function as PropType,\n min: String,\n max: String,\n nextAriaLabel: String,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevAriaLabel: String,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n readonly: Boolean,\n value: {\n type: [Number, String],\n required: true,\n },\n },\n\n data () {\n return {\n isReversing: false,\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n if (this.format) {\n return this.format\n } else if (String(this.value).split('-')[1]) {\n return createNativeLocaleFormatter(this.currentLocale, { month: 'long', year: 'numeric', timeZone: 'UTC' }, { length: 7 })\n } else {\n return createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n }\n },\n },\n\n watch: {\n value (newVal, oldVal) {\n this.isReversing = newVal < oldVal\n },\n },\n\n methods: {\n genBtn (change: number) {\n const ariaLabelId = change > 0 ? this.nextAriaLabel : this.prevAriaLabel\n const ariaLabel = ariaLabelId ? this.$vuetify.lang.t(ariaLabelId) : undefined\n const disabled = this.disabled ||\n (change < 0 && this.min && this.calculateChange(change) < this.min) ||\n (change > 0 && this.max && this.calculateChange(change) > this.max)\n\n return this.$createElement(VBtn, {\n attrs: { 'aria-label': ariaLabel },\n props: {\n dark: this.dark,\n disabled,\n icon: true,\n light: this.light,\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n this.$emit('input', this.calculateChange(change))\n },\n },\n }, [\n this.$createElement(VIcon, ((change < 0) === !this.$vuetify.rtl) ? this.prevIcon : this.nextIcon),\n ])\n },\n calculateChange (sign: number) {\n const [year, month] = String(this.value).split('-').map(Number)\n\n if (month == null) {\n return `${year + sign}`\n } else {\n return monthChange(String(this.value), sign)\n }\n },\n genHeader () {\n const color = !this.disabled && (this.color || 'accent')\n const header = this.$createElement('div', this.setTextColor(color, {\n key: String(this.value),\n }), [this.$createElement('button', {\n attrs: {\n type: 'button',\n },\n on: {\n click: () => this.$emit('toggle'),\n },\n }, [this.$slots.default || this.formatter(String(this.value))])])\n\n const transition = this.$createElement('transition', {\n props: {\n name: (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition',\n },\n }, [header])\n\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header__value',\n class: {\n 'v-date-picker-header__value--disabled': this.disabled,\n },\n }, [transition])\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header',\n class: {\n 'v-date-picker-header--disabled': this.disabled,\n ...this.themeClasses,\n },\n }, [\n this.genBtn(-1),\n this.genHeader(),\n this.genBtn(+1),\n ])\n },\n})\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","import Vue from 'vue'\n\nexport function createItemTypeNativeListeners (instance: Vue, itemTypeSuffix: string, value: any) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName.slice(0, -itemTypeSuffix.length)] = (event: Event) => instance.$emit(eventName, value, event)\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n\nexport function createItemTypeListeners (instance: Vue, itemTypeSuffix: string) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName] = instance.$listeners[eventName]\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n","// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\nimport pad from './pad'\n\nexport default (dateString: string, type: 'date' | 'month' | 'year'): string => {\n const [year, month = 1, date = 1] = dateString.split('-')\n return `${year}-${pad(month)}-${pad(date)}`.substr(0, { date: 10, month: 7, year: 4 }[type])\n}\n","import { DatePickerAllowedDatesFunction } from 'vuetify/types'\n\nexport default function isDateAllowed (date: string, min: string, max: string, allowedFn: DatePickerAllowedDatesFunction | undefined) {\n return (!allowedFn || allowedFn(date)) &&\n (!min || date >= min.substr(0, 10)) &&\n (!max || date <= max)\n}\n","import '../VDatePickerTable.sass'\n\n// Directives\nimport Touch from '../../../directives/touch'\n\n// Mixins\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Themeable from '../../../mixins/themeable'\n\n// Utils\nimport { createItemTypeNativeListeners, sanitizeDateString } from '../util'\nimport isDateAllowed from '../util/isDateAllowed'\nimport { mergeListeners } from '../../../util/mergeData'\nimport mixins from '../../../util/mixins'\nimport { throttle } from '../../../util/helpers'\n\n// Types\nimport {\n PropType,\n VNodeChildren,\n} from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEventColorValue,\n DatePickerEvents,\n DatePickerFormatter,\n TouchWrapper,\n} from 'vuetify/types'\n\ntype CalculateTableDateFunction = (v: number) => string\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n directives: { Touch },\n\n props: {\n allowedDates: Function as PropType,\n current: String,\n disabled: Boolean,\n format: Function as PropType,\n events: {\n type: [Array, Function, Object],\n default: () => null,\n } as PropValidator,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator,\n min: String,\n max: String,\n range: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n tableDate: {\n type: String,\n required: true,\n },\n value: [String, Array] as PropType,\n },\n\n data: () => ({\n isReversing: false,\n wheelThrottle: null as any,\n }),\n\n computed: {\n computedTransition (): string {\n return (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition'\n },\n displayedMonth (): number {\n return Number(this.tableDate.split('-')[1]) - 1\n },\n displayedYear (): number {\n return Number(this.tableDate.split('-')[0])\n },\n },\n\n watch: {\n tableDate (newVal: string, oldVal: string) {\n this.isReversing = newVal < oldVal\n },\n },\n\n mounted () {\n this.wheelThrottle = throttle(this.wheel, 250)\n },\n\n methods: {\n genButtonClasses (\n isAllowed: boolean,\n isFloating: boolean,\n isSelected: boolean,\n isCurrent: boolean,\n isFirst: boolean,\n isLast: boolean,\n ) {\n return {\n 'v-size--default': !isFloating,\n 'v-date-picker-table__current': isCurrent,\n 'v-btn--active': isSelected,\n 'v-btn--flat': !isAllowed || this.disabled,\n 'v-btn--text': isSelected === isCurrent,\n 'v-btn--rounded': isFloating,\n 'v-btn--disabled': !isAllowed || this.disabled,\n 'v-btn--outlined': isCurrent && !isSelected,\n 'v-date-picker--first-in-range': isFirst,\n 'v-date-picker--last-in-range': isLast,\n ...this.themeClasses,\n }\n },\n genButtonEvents (value: string, isAllowed: boolean, mouseEventType: string) {\n if (this.disabled) return undefined\n\n return mergeListeners({\n click: () => {\n if (isAllowed && !this.readonly) this.$emit('input', value)\n },\n }, createItemTypeNativeListeners(this, `:${mouseEventType}`, value))\n },\n genButton (value: string, isFloating: boolean, mouseEventType: string, formatter: DatePickerFormatter, isOtherMonth = false) {\n const isAllowed = isDateAllowed(value, this.min, this.max, this.allowedDates)\n const isSelected = this.isSelected(value) && isAllowed\n const isCurrent = value === this.current\n const setColor = isSelected ? this.setBackgroundColor : this.setTextColor\n const color = (isSelected || isCurrent) && (this.color || 'accent')\n let isFirst = false\n let isLast = false\n if (this.range && !!this.value && Array.isArray(this.value)) {\n isFirst = value === this.value[0]\n isLast = value === this.value[this.value.length - 1]\n }\n\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n class: this.genButtonClasses(\n isAllowed && !isOtherMonth,\n isFloating,\n isSelected,\n isCurrent,\n isFirst,\n isLast,\n ),\n attrs: {\n type: 'button',\n },\n domProps: {\n disabled: this.disabled || !isAllowed || isOtherMonth,\n },\n on: this.genButtonEvents(value, isAllowed, mouseEventType),\n }), [\n this.$createElement('div', {\n staticClass: 'v-btn__content',\n }, [formatter(value)]),\n this.genEvents(value),\n ])\n },\n getEventColors (date: string) {\n const arrayize = (v: string | string[]) => Array.isArray(v) ? v : [v]\n let eventData: boolean | DatePickerEventColorValue\n let eventColors: string[] = []\n\n if (Array.isArray(this.events)) {\n eventData = this.events.includes(date)\n } else if (this.events instanceof Function) {\n eventData = this.events(date) || false\n } else if (this.events) {\n eventData = this.events[date] || false\n } else {\n eventData = false\n }\n\n if (!eventData) {\n return []\n } else if (eventData !== true) {\n eventColors = arrayize(eventData)\n } else if (typeof this.eventColor === 'string') {\n eventColors = [this.eventColor]\n } else if (typeof this.eventColor === 'function') {\n eventColors = arrayize(this.eventColor(date))\n } else if (Array.isArray(this.eventColor)) {\n eventColors = this.eventColor\n } else {\n eventColors = arrayize(this.eventColor[date])\n }\n\n return eventColors.filter(v => v)\n },\n genEvents (date: string) {\n const eventColors = this.getEventColors(date)\n\n return eventColors.length ? this.$createElement('div', {\n staticClass: 'v-date-picker-table__events',\n }, eventColors.map(color => this.$createElement('div', this.setBackgroundColor(color)))) : null\n },\n isValidScroll (value: number, calculateTableDate: CalculateTableDateFunction) {\n const tableDate = calculateTableDate(value)\n // tableDate is 'YYYY-MM' for DateTable and 'YYYY' for MonthTable\n const sanitizeType = tableDate.split('-').length === 1 ? 'year' : 'month'\n return (value < 0 && (this.min ? tableDate >= sanitizeDateString(this.min, sanitizeType) : true)) ||\n (value > 0 && (this.max ? tableDate <= sanitizeDateString(this.max, sanitizeType) : true))\n },\n wheel (e: WheelEvent, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(e.deltaY))\n },\n touch (value: number, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(value))\n },\n genTable (staticClass: string, children: VNodeChildren, calculateTableDate: CalculateTableDateFunction) {\n const transition = this.$createElement('transition', {\n props: { name: this.computedTransition },\n }, [this.$createElement('table', { key: this.tableDate }, children)])\n\n const touchDirective = {\n name: 'touch',\n value: {\n left: (e: TouchWrapper) => (e.offsetX < -15) &&\n (this.isValidScroll(1, calculateTableDate) && this.touch(1, calculateTableDate)),\n right: (e: TouchWrapper) => (e.offsetX > 15) &&\n (this.isValidScroll(-1, calculateTableDate) && this.touch(-1, calculateTableDate)),\n },\n }\n\n return this.$createElement('div', {\n staticClass,\n class: {\n 'v-date-picker-table--disabled': this.disabled,\n ...this.themeClasses,\n },\n on: (!this.disabled && this.scrollable) ? {\n wheel: (e: WheelEvent) => {\n e.preventDefault()\n if (this.isValidScroll(e.deltaY, calculateTableDate)) { this.wheelThrottle(e, calculateTableDate) }\n },\n } : undefined,\n directives: [touchDirective],\n }, [transition])\n },\n isSelected (value: string): boolean {\n if (Array.isArray(this.value)) {\n if (this.range && this.value.length === 2) {\n const [from, to] = [...this.value].sort()\n return from <= value && value <= to\n } else {\n return this.value.indexOf(value) !== -1\n }\n }\n\n return value === this.value\n },\n },\n})\n","function createUTCDate (year: number, month = 0, day = 1) {\n let date\n if (year < 100 && year >= 0) {\n date = new Date(Date.UTC(year, month, day))\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(year)\n }\n } else {\n date = new Date(Date.UTC(year, month, day))\n }\n\n return date\n}\n\nfunction firstWeekOffset (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const firstWeekDayInFirstWeek = 7 + firstDayOfWeek - firstDayOfYear\n const firstWeekDayOfYear = (7 + createUTCDate(year, 0, firstWeekDayInFirstWeek).getUTCDay() - firstDayOfWeek) % 7\n\n return -firstWeekDayOfYear + firstWeekDayInFirstWeek - 1\n}\n\nfunction dayOfYear (year: number, month: number, day: number, firstDayOfWeek: number) {\n let dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][month]\n if (month > 1 && isLeapYear(year)) {\n dayOfYear++\n }\n\n return dayOfYear + day\n}\n\nfunction weeksInYear (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, firstDayOfYear)\n const weekOffsetNext = firstWeekOffset(year + 1, firstDayOfWeek, firstDayOfYear)\n const daysInYear = isLeapYear(year) ? 366 : 365\n\n return (daysInYear - weekOffset + weekOffsetNext) / 7\n}\n\nexport function weekNumber (year: number, month: number, day: number, firstDayOfWeek: number, localeFirstDayOfYear: number): number {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, localeFirstDayOfYear)\n const week = Math.ceil((dayOfYear(year, month, day, firstDayOfWeek) - weekOffset) / 7)\n\n if (week < 1) {\n return week + weeksInYear(year - 1, firstDayOfWeek, localeFirstDayOfYear)\n } else if (week > weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)) {\n return week - weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)\n } else {\n return week\n }\n}\n\nexport function isLeapYear (year: number): boolean {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\n}\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport { pad, createNativeLocaleFormatter, monthChange } from './util'\nimport { createRange } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-date-table',\n\n props: {\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n weekdayFormat: Function as PropType,\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { day: 'numeric', timeZone: 'UTC' }, { start: 8, length: 2 })\n },\n weekdayFormatter (): DatePickerFormatter | undefined {\n return this.weekdayFormat || createNativeLocaleFormatter(this.currentLocale, { weekday: 'narrow', timeZone: 'UTC' })\n },\n weekDays (): string[] {\n const first = parseInt(this.firstDayOfWeek, 10)\n\n return this.weekdayFormatter\n ? createRange(7).map(i => this.weekdayFormatter!(`2017-01-${first + i + 15}`)) // 2017-01-15 is Sunday\n : createRange(7).map(i => ['S', 'M', 'T', 'W', 'T', 'F', 'S'][(i + first) % 7])\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return monthChange(this.tableDate, Math.sign(delta || 1))\n },\n genTHead () {\n const days = this.weekDays.map(day => this.$createElement('th', day))\n if (this.showWeek) {\n days.unshift(this.$createElement('th'))\n }\n\n return this.$createElement('thead', this.genTR(days))\n },\n // Returns number of the days from the firstDayOfWeek to the first day of the current month\n weekDaysBeforeFirstDayOfTheMonth () {\n const firstDayOfTheMonth = new Date(`${this.displayedYear}-${pad(this.displayedMonth + 1)}-01T00:00:00+00:00`)\n const weekDay = firstDayOfTheMonth.getUTCDay()\n\n return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7\n },\n getWeekNumber (dayInMonth: number) {\n return weekNumber(\n this.displayedYear,\n this.displayedMonth,\n dayInMonth,\n parseInt(this.firstDayOfWeek),\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('td', [\n this.$createElement('small', {\n staticClass: 'v-date-picker-table--date__week',\n }, String(weekNumber).padStart(2, '0')),\n ])\n },\n // eslint-disable-next-line max-statements\n genTBody () {\n const children = []\n const daysInMonth = new Date(this.displayedYear, this.displayedMonth + 1, 0).getDate()\n let rows = []\n let day = this.weekDaysBeforeFirstDayOfTheMonth()\n\n if (this.showWeek) {\n rows.push(this.genWeekNumber(this.getWeekNumber(1)))\n }\n\n const prevMonthYear = this.displayedMonth ? this.displayedYear : this.displayedYear - 1\n const prevMonth = (this.displayedMonth + 11) % 12\n const firstDayFromPreviousMonth = new Date(this.displayedYear, this.displayedMonth, 0).getDate()\n const cellsInRow = this.showWeek ? 8 : 7\n\n while (day--) {\n const date = `${prevMonthYear}-${pad(prevMonth + 1)}-${pad(firstDayFromPreviousMonth - day)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\n for (day = 1; day <= daysInMonth; day++) {\n const date = `${this.displayedYear}-${pad(this.displayedMonth + 1)}-${pad(day)}`\n\n rows.push(this.$createElement('td', [\n this.genButton(date, true, 'date', this.formatter),\n ]))\n\n if (rows.length % cellsInRow === 0) {\n children.push(this.genTR(rows))\n rows = []\n if (this.showWeek && (day < daysInMonth || this.showAdjacentMonths)) {\n rows.push(this.genWeekNumber(this.getWeekNumber(day + 7)))\n }\n }\n }\n\n const nextMonthYear = this.displayedMonth === 11 ? this.displayedYear + 1 : this.displayedYear\n const nextMonth = (this.displayedMonth + 1) % 12\n let nextMonthDay = 1\n\n while (rows.length < cellsInRow) {\n const date = `${nextMonthYear}-${pad(nextMonth + 1)}-${pad(nextMonthDay++)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\n if (rows.length) {\n children.push(this.genTR(rows))\n }\n\n return this.$createElement('tbody', children)\n },\n genTR (children: VNodeChildren) {\n return [this.$createElement('tr', children)]\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--date', [\n this.genTHead(),\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { pad, createNativeLocaleFormatter } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-month-table',\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { month: 'short', timeZone: 'UTC' }, { start: 5, length: 2 })\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return `${parseInt(this.tableDate, 10) + Math.sign(delta || 1)}`\n },\n genTBody () {\n const children = []\n const cols = Array(3).fill(null)\n const rows = 12 / cols.length\n\n for (let row = 0; row < rows; row++) {\n const tds = cols.map((_, col) => {\n const month = row * cols.length + col\n const date = `${this.displayedYear}-${pad(month + 1)}`\n return this.$createElement('td', {\n key: month,\n }, [\n this.genButton(date, false, 'month', this.formatter),\n ])\n })\n\n children.push(this.$createElement('tr', {\n key: row,\n }, tds))\n }\n\n return this.$createElement('tbody', children)\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--month', [\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","import './VDatePickerYears.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\n\n// Utils\nimport {\n createItemTypeNativeListeners,\n createNativeLocaleFormatter,\n} from './util'\nimport { mergeListeners } from '../../util/mergeData'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n Colorable,\n Localable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-years',\n\n props: {\n format: Function as PropType,\n min: [Number, String],\n max: [Number, String],\n readonly: Boolean,\n value: [Number, String],\n },\n\n data () {\n return {\n defaultColor: 'primary',\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n },\n },\n\n mounted () {\n setTimeout(() => {\n const activeItem = this.$el.getElementsByClassName('active')[0]\n if (activeItem) {\n this.$el.scrollTop = activeItem.offsetTop - this.$el.offsetHeight / 2 + activeItem.offsetHeight / 2\n } else if (this.min && !this.max) {\n this.$el.scrollTop = this.$el.scrollHeight\n } else if (!this.min && this.max) {\n this.$el.scrollTop = 0\n } else {\n this.$el.scrollTop = this.$el.scrollHeight / 2 - this.$el.offsetHeight / 2\n }\n })\n },\n\n methods: {\n genYearItem (year: number): VNode {\n const formatted = this.formatter(`${year}`)\n const active = parseInt(this.value, 10) === year\n const color = active && (this.color || 'primary')\n\n return this.$createElement('li', this.setTextColor(color, {\n key: year,\n class: { active },\n on: mergeListeners({\n click: () => this.$emit('input', year),\n }, createItemTypeNativeListeners(this, ':year', year)),\n }), formatted)\n },\n\n genYearItems (): VNode[] {\n const children = []\n const selectedYear = this.value ? parseInt(this.value, 10) : new Date().getFullYear()\n const maxYear = this.max ? parseInt(this.max, 10) : (selectedYear + 100)\n const minYear = Math.min(maxYear, this.min ? parseInt(this.min, 10) : (selectedYear - 100))\n\n for (let year = maxYear; year >= minYear; year--) {\n children.push(this.genYearItem(year))\n }\n\n return children\n },\n },\n\n render (): VNode {\n return this.$createElement('ul', {\n staticClass: 'v-date-picker-years',\n ref: 'years',\n }, this.genYearItems())\n },\n})\n","import './VPicker.sass'\nimport '../VCard/VCard.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Elevatable,\n Themeable\n).extend({\n name: 'v-picker',\n\n props: {\n flat: Boolean,\n fullWidth: Boolean,\n landscape: Boolean,\n noTitle: Boolean,\n transition: {\n type: String,\n default: 'fade-transition',\n },\n width: {\n type: [Number, String],\n default: 290,\n },\n },\n\n computed: {\n computedTitleColor (): string | false {\n const defaultTitleColor = this.isDark ? false : (this.color || 'primary')\n return this.color || defaultTitleColor\n },\n },\n\n methods: {\n genTitle () {\n return this.$createElement('div', this.setBackgroundColor(this.computedTitleColor, {\n staticClass: 'v-picker__title',\n class: {\n 'v-picker__title--landscape': this.landscape,\n },\n }), this.$slots.title)\n },\n genBodyTransition () {\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, this.$slots.default)\n },\n genBody () {\n return this.$createElement('div', {\n staticClass: 'v-picker__body',\n class: {\n 'v-picker__body--no-title': this.noTitle,\n ...this.themeClasses,\n },\n style: this.fullWidth ? undefined : {\n width: convertToUnit(this.width),\n },\n }, [\n this.genBodyTransition(),\n ])\n },\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-picker__actions v-card__actions',\n class: {\n 'v-picker__actions--no-title': this.noTitle,\n },\n }, this.$slots.actions)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-picker v-card',\n class: {\n 'v-picker--flat': this.flat,\n 'v-picker--landscape': this.landscape,\n 'v-picker--full-width': this.fullWidth,\n ...this.themeClasses,\n ...this.elevationClasses,\n },\n }, [\n this.$slots.title ? this.genTitle() : null,\n this.genBody(),\n this.$slots.actions ? this.genActions() : null,\n ])\n },\n})\n","import VPicker from './VPicker'\n\nexport { VPicker }\nexport default VPicker\n","// Components\nimport VPicker from '../../components/VPicker'\n\n// Mixins\nimport Colorable from '../colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Colorable,\n Elevatable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'picker',\n\n props: {\n flat: Boolean,\n fullWidth: Boolean,\n headerColor: String,\n landscape: Boolean,\n noTitle: Boolean,\n width: {\n type: [Number, String],\n default: 290,\n },\n },\n\n methods: {\n genPickerTitle (): VNode | null {\n return null\n },\n genPickerBody (): VNode | null {\n return null\n },\n genPickerActionsSlot () {\n return this.$scopedSlots.default ? this.$scopedSlots.default({\n save: (this as any).save,\n cancel: (this as any).cancel,\n }) : this.$slots.default\n },\n genPicker (staticClass: string) {\n const children: VNode[] = []\n\n if (!this.noTitle) {\n const title = this.genPickerTitle()\n title && children.push(title)\n }\n\n const body = this.genPickerBody()\n body && children.push(body)\n\n children.push(this.$createElement('template', { slot: 'actions' }, [this.genPickerActionsSlot()]))\n\n return this.$createElement(VPicker, {\n staticClass,\n props: {\n color: this.headerColor || this.color,\n dark: this.dark,\n elevation: this.elevation,\n flat: this.flat,\n fullWidth: this.fullWidth,\n landscape: this.landscape,\n light: this.light,\n width: this.width,\n noTitle: this.noTitle,\n },\n }, children)\n },\n },\n})\n","import { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\nimport { isLeapYear } from '../../../util/dateTimeUtils'\n\nexport const PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/\nexport const PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/\n\nexport const DAYS_IN_MONTH: number[] = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_LEAP: number[] = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_MIN = 28\nexport const DAYS_IN_MONTH_MAX = 31\nexport const MONTH_MAX = 12\nexport const MONTH_MIN = 1\nexport const DAY_MIN = 1\nexport const DAYS_IN_WEEK = 7\nexport const MINUTES_IN_HOUR = 60\nexport const MINUTE_MAX = 59\nexport const MINUTES_IN_DAY = 24 * 60\nexport const HOURS_IN_DAY = 24\nexport const HOUR_MAX = 23\nexport const FIRST_HOUR = 0\nexport const OFFSET_YEAR = 10000\nexport const OFFSET_MONTH = 100\nexport const OFFSET_HOUR = 100\nexport const OFFSET_TIME = 10000\n\ntype CalendarTimestampFormatOptions = (timestamp: CalendarTimestamp, short: boolean) => object\ntype CalendarTimestampOperation = (timestamp: CalendarTimestamp) => CalendarTimestamp\nexport type VTime = number | string | {\n hour: number\n minute: number\n}\n\nexport type VTimestampInput = number | string | Date;\n\nexport function getStartOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n findWeekday(start, weekdays[0], prevDay)\n updateFormatted(start)\n if (today) {\n updateRelative(start, today, start.hasTime)\n }\n\n return start\n}\n\nexport function getEndOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n findWeekday(end, weekdays[weekdays.length - 1])\n updateFormatted(end)\n if (today) {\n updateRelative(end, today, end.hasTime)\n }\n\n return end\n}\n\nexport function getStartOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n start.day = DAY_MIN\n updateWeekday(start)\n updateFormatted(start)\n\n return start\n}\n\nexport function getEndOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n end.day = daysInMonth(end.year, end.month)\n updateWeekday(end)\n updateFormatted(end)\n\n return end\n}\n\nexport function validateTime (input: any): input is VTime {\n return (typeof input === 'number' && isFinite(input)) ||\n (!!PARSE_TIME.exec(input)) ||\n (typeof input === 'object' && isFinite(input.hour) && isFinite(input.minute))\n}\n\nexport function parseTime (input: any): number | false {\n if (typeof input === 'number') {\n // when a number is given, it's minutes since 12:00am\n return input\n } else if (typeof input === 'string') {\n // when a string is given, it's a hh:mm:ss format where seconds are optional\n const parts = PARSE_TIME.exec(input)\n if (!parts) {\n return false\n }\n\n return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0)\n } else if (typeof input === 'object') {\n // when an object is given, it must have hour and minute\n if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n return false\n }\n\n return input.hour * 60 + input.minute\n } else {\n // unsupported type\n return false\n }\n}\n\nexport function validateTimestamp (input: any): input is VTimestampInput {\n return (typeof input === 'number' && isFinite(input)) ||\n (typeof input === 'string' && !!PARSE_REGEX.exec(input)) ||\n (input instanceof Date)\n}\n\nexport function parseTimestamp (input: VTimestampInput, required?: false, now?: CalendarTimestamp): CalendarTimestamp | null\nexport function parseTimestamp (input: VTimestampInput, required: true, now?: CalendarTimestamp): CalendarTimestamp\nexport function parseTimestamp (input: VTimestampInput, required = false, now?: CalendarTimestamp): CalendarTimestamp | null {\n if (typeof input === 'number' && isFinite(input)) {\n input = new Date(input)\n }\n\n if (input instanceof Date) {\n const date: CalendarTimestamp = parseDate(input)\n\n if (now) {\n updateRelative(date, now, date.hasTime)\n }\n\n return date\n }\n\n if (typeof input !== 'string') {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n return null\n }\n\n // YYYY-MM-DD hh:mm:ss\n const parts = PARSE_REGEX.exec(input)\n\n if (!parts) {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n\n return null\n }\n\n const timestamp: CalendarTimestamp = {\n date: input,\n time: '',\n year: parseInt(parts[1]),\n month: parseInt(parts[2]),\n day: parseInt(parts[4]) || 1,\n hour: parseInt(parts[6]) || 0,\n minute: parseInt(parts[8]) || 0,\n weekday: 0,\n hasDay: !!parts[4],\n hasTime: !!(parts[6] && parts[8]),\n past: false,\n present: false,\n future: false,\n }\n\n updateWeekday(timestamp)\n updateFormatted(timestamp)\n\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n\n return timestamp\n}\n\nexport function parseDate (date: Date): CalendarTimestamp {\n return updateFormatted({\n date: '',\n time: '',\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n weekday: date.getDay(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n hasDay: true,\n hasTime: true,\n past: false,\n present: true,\n future: false,\n })\n}\n\nexport function getDayIdentifier (timestamp: { year: number, month: number, day: number }): number {\n return timestamp.year * OFFSET_YEAR + timestamp.month * OFFSET_MONTH + timestamp.day\n}\n\nexport function getTimeIdentifier (timestamp: { hour: number, minute: number }): number {\n return timestamp.hour * OFFSET_HOUR + timestamp.minute\n}\n\nexport function getTimestampIdentifier (timestamp: CalendarTimestamp): number {\n return getDayIdentifier(timestamp) * OFFSET_TIME + getTimeIdentifier(timestamp)\n}\n\nexport function updateRelative (timestamp: CalendarTimestamp, now: CalendarTimestamp, time = false): CalendarTimestamp {\n let a = getDayIdentifier(now)\n let b = getDayIdentifier(timestamp)\n let present = a === b\n\n if (timestamp.hasTime && time && present) {\n a = getTimeIdentifier(now)\n b = getTimeIdentifier(timestamp)\n present = a === b\n }\n\n timestamp.past = b < a\n timestamp.present = present\n timestamp.future = b > a\n\n return timestamp\n}\n\nexport function isTimedless (input: VTimestampInput): input is (Date | number) {\n return (input instanceof Date) || (typeof input === 'number' && isFinite(input))\n}\n\nexport function updateHasTime (timestamp: CalendarTimestamp, hasTime: boolean, now?: CalendarTimestamp): CalendarTimestamp {\n if (timestamp.hasTime !== hasTime) {\n timestamp.hasTime = hasTime\n if (!hasTime) {\n timestamp.hour = HOUR_MAX\n timestamp.minute = MINUTE_MAX\n timestamp.time = getTime(timestamp)\n }\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n }\n\n return timestamp\n}\n\nexport function updateMinutes (timestamp: CalendarTimestamp, minutes: number, now?: CalendarTimestamp): CalendarTimestamp {\n timestamp.hasTime = true\n timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR)\n timestamp.minute = minutes % MINUTES_IN_HOUR\n timestamp.time = getTime(timestamp)\n if (now) {\n updateRelative(timestamp, now, true)\n }\n\n return timestamp\n}\n\nexport function updateWeekday (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.weekday = getWeekday(timestamp)\n\n return timestamp\n}\n\nexport function updateFormatted (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.time = getTime(timestamp)\n timestamp.date = getDate(timestamp)\n\n return timestamp\n}\n\nexport function getWeekday (timestamp: CalendarTimestamp): number {\n if (timestamp.hasDay) {\n const _ = Math.floor\n const k = timestamp.day\n const m = ((timestamp.month + 9) % MONTH_MAX) + 1\n const C = _(timestamp.year / 100)\n const Y = (timestamp.year % 100) - (timestamp.month <= 2 ? 1 : 0)\n\n return (((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7) + 7) % 7\n }\n\n return timestamp.weekday\n}\n\nexport function daysInMonth (year: number, month: number) {\n return isLeapYear(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month]\n}\n\nexport function copyTimestamp (timestamp: CalendarTimestamp): CalendarTimestamp {\n const { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future } = timestamp\n\n return { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future }\n}\n\nexport function padNumber (x: number, length: number): string {\n let padded = String(x)\n while (padded.length < length) {\n padded = '0' + padded\n }\n\n return padded\n}\n\nexport function getDate (timestamp: CalendarTimestamp): string {\n let str = `${padNumber(timestamp.year, 4)}-${padNumber(timestamp.month, 2)}`\n\n if (timestamp.hasDay) str += `-${padNumber(timestamp.day, 2)}`\n\n return str\n}\n\nexport function getTime (timestamp: CalendarTimestamp): string {\n if (!timestamp.hasTime) {\n return ''\n }\n\n return `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n}\n\nexport function nextMinutes (timestamp: CalendarTimestamp, minutes: number): CalendarTimestamp {\n timestamp.minute += minutes\n while (timestamp.minute > MINUTES_IN_HOUR) {\n timestamp.minute -= MINUTES_IN_HOUR\n timestamp.hour++\n if (timestamp.hour >= HOURS_IN_DAY) {\n nextDay(timestamp)\n timestamp.hour = FIRST_HOUR\n }\n }\n\n return timestamp\n}\n\nexport function nextDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day++\n timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK\n if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n timestamp.day = DAY_MIN\n timestamp.month++\n if (timestamp.month > MONTH_MAX) {\n timestamp.month = MONTH_MIN\n timestamp.year++\n }\n }\n\n return timestamp\n}\n\nexport function prevDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day--\n timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK\n if (timestamp.day < DAY_MIN) {\n timestamp.month--\n if (timestamp.month < MONTH_MIN) {\n timestamp.year--\n timestamp.month = MONTH_MAX\n }\n timestamp.day = daysInMonth(timestamp.year, timestamp.month)\n }\n\n return timestamp\n}\n\nexport function relativeDays (\n timestamp: CalendarTimestamp,\n mover: CalendarTimestampOperation = nextDay,\n days = 1\n): CalendarTimestamp {\n while (--days >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function diffMinutes (min: CalendarTimestamp, max: CalendarTimestamp) {\n const Y = (max.year - min.year) * 525600\n const M = (max.month - min.month) * 43800\n const D = (max.day - min.day) * 1440\n const h = (max.hour - min.hour) * 60\n const m = (max.minute - min.minute)\n\n return Y + M + D + h + m\n}\n\nexport function findWeekday (timestamp: CalendarTimestamp, weekday: number,\n mover: CalendarTimestampOperation = nextDay, maxDays = 6): CalendarTimestamp {\n while (timestamp.weekday !== weekday && --maxDays >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function getWeekdaySkips (weekdays: number[]): number[] {\n const skips: number[] = [1, 1, 1, 1, 1, 1, 1]\n const filled: number[] = [0, 0, 0, 0, 0, 0, 0]\n for (let i = 0; i < weekdays.length; i++) {\n filled[weekdays[i]] = 1\n }\n for (let k = 0; k < DAYS_IN_WEEK; k++) {\n let skip = 1\n for (let j = 1; j < DAYS_IN_WEEK; j++) {\n const next = (k + j) % DAYS_IN_WEEK\n if (filled[next]) {\n break\n }\n skip++\n }\n skips[k] = filled[k] * skip\n }\n\n return skips\n}\n\nexport function timestampToDate (timestamp: CalendarTimestamp): Date {\n const time = `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n const date = timestamp.date\n\n return new Date(`${date}T${time}:00+00:00`)\n}\n\nexport function createDayList (\n start: CalendarTimestamp,\n end: CalendarTimestamp,\n now: CalendarTimestamp,\n weekdaySkips: number[],\n max = 42,\n min = 0\n): CalendarTimestamp[] {\n const stop = getDayIdentifier(end)\n const days: CalendarTimestamp[] = []\n let current = copyTimestamp(start)\n let currentIdentifier = 0\n let stopped = currentIdentifier === stop\n\n if (stop < getDayIdentifier(start)) {\n throw new Error('End date is earlier than start date.')\n }\n\n while ((!stopped || days.length < min) && days.length < max) {\n currentIdentifier = getDayIdentifier(current)\n stopped = stopped || currentIdentifier === stop\n if (weekdaySkips[current.weekday] === 0) {\n current = nextDay(current)\n continue\n }\n const day = copyTimestamp(current)\n updateFormatted(day)\n updateRelative(day, now)\n days.push(day)\n current = relativeDays(current, nextDay, weekdaySkips[current.weekday])\n }\n\n if (!days.length) throw new Error('No dates found using specified start date, end date, and weekdays.')\n\n return days\n}\n\nexport function createIntervalList (timestamp: CalendarTimestamp, first: number,\n minutes: number, count: number, now?: CalendarTimestamp): CalendarTimestamp[] {\n const intervals: CalendarTimestamp[] = []\n\n for (let i = 0; i < count; i++) {\n const mins = first + (i * minutes)\n const int = copyTimestamp(timestamp)\n intervals.push(updateMinutes(int, mins, now))\n }\n\n return intervals\n}\n\nexport function createNativeLocaleFormatter (locale: string, getOptions: CalendarTimestampFormatOptions): CalendarFormatter {\n const emptyFormatter: CalendarFormatter = (_t, _s) => ''\n\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return emptyFormatter\n }\n\n return (timestamp, short) => {\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short))\n\n return intlFormatter.format(timestampToDate(timestamp))\n } catch (e) {\n return ''\n }\n }\n}\n","// Components\nimport VDatePickerTitle from './VDatePickerTitle'\nimport VDatePickerHeader from './VDatePickerHeader'\nimport VDatePickerDateTable from './VDatePickerDateTable'\nimport VDatePickerMonthTable from './VDatePickerMonthTable'\nimport VDatePickerYears from './VDatePickerYears'\n\n// Mixins\nimport Localable from '../../mixins/localable'\nimport Picker from '../../mixins/picker'\n\n// Utils\nimport isDateAllowed from './util/isDateAllowed'\nimport mixins from '../../util/mixins'\nimport { wrapInArray } from '../../util/helpers'\nimport { daysInMonth } from '../VCalendar/util/timestamp'\nimport { consoleWarn } from '../../util/console'\nimport {\n createItemTypeListeners,\n createNativeLocaleFormatter,\n pad,\n sanitizeDateString,\n} from './util'\n\n// Types\nimport {\n PropType,\n PropValidator,\n} from 'vue/types/options'\nimport { VNode } from 'vue'\nimport {\n DatePickerFormatter,\n DatePickerMultipleFormatter,\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEvents,\n DatePickerType,\n} from 'vuetify/types'\n\ntype DatePickerValue = string | string[] | undefined\ninterface Formatters {\n year: DatePickerFormatter\n titleDate: DatePickerFormatter | DatePickerMultipleFormatter\n}\n\ntype ActivePicker = 'DATE' | 'MONTH' | 'YEAR';\n\nexport default mixins(\n Localable,\n Picker,\n/* @vue/component */\n).extend({\n name: 'v-date-picker',\n\n props: {\n activePicker: String as PropType,\n allowedDates: Function as PropType,\n // Function formatting the day in date picker table\n dayFormat: Function as PropType,\n disabled: Boolean,\n events: {\n type: [Array, Function, Object],\n default: () => null,\n } as PropValidator,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator,\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n // Function formatting the tableDate in the day/month table header\n headerDateFormat: Function as PropType,\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n max: String,\n min: String,\n // Function formatting month in the months table\n monthFormat: Function as PropType,\n multiple: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n nextMonthAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.nextMonthAriaLabel',\n },\n nextYearAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.nextYearAriaLabel',\n },\n pickerDate: String,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n prevMonthAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.prevMonthAriaLabel',\n },\n prevYearAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.prevYearAriaLabel',\n },\n range: Boolean,\n reactive: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n showCurrent: {\n type: [Boolean, String],\n default: true,\n },\n selectedItemsText: {\n type: String,\n default: '$vuetify.datePicker.itemsSelected',\n },\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n // Function formatting currently selected date in the picker title\n titleDateFormat: Function as PropType,\n type: {\n type: String,\n default: 'date',\n validator: (type: any) => ['date', 'month'].includes(type), // TODO: year\n } as PropValidator,\n value: [Array, String] as PropType,\n weekdayFormat: Function as PropType,\n // Function formatting the year in table header and pickup title\n yearFormat: Function as PropType,\n yearIcon: String,\n },\n\n data () {\n const now = new Date()\n return {\n internalActivePicker: this.type.toUpperCase(),\n inputDay: null as number | null,\n inputMonth: null as number | null,\n inputYear: null as number | null,\n isReversing: false,\n now,\n // tableDate is a string in 'YYYY' / 'YYYY-M' format (leading zero for month is not required)\n tableDate: (() => {\n if (this.pickerDate) {\n return this.pickerDate\n }\n\n const multipleValue = wrapInArray(this.value)\n const date = multipleValue[multipleValue.length - 1] ||\n (typeof this.showCurrent === 'string' ? this.showCurrent : `${now.getFullYear()}-${now.getMonth() + 1}`)\n return sanitizeDateString(date as string, this.type === 'date' ? 'month' : 'year')\n })(),\n }\n },\n\n computed: {\n multipleValue (): string[] {\n return wrapInArray(this.value)\n },\n isMultiple (): boolean {\n return this.multiple || this.range\n },\n lastValue (): string | null {\n return this.isMultiple ? this.multipleValue[this.multipleValue.length - 1] : (this.value as string | null)\n },\n selectedMonths (): string | string[] | undefined {\n if (!this.value || this.type === 'month') {\n return this.value\n } else if (this.isMultiple) {\n return this.multipleValue.map(val => val.substr(0, 7))\n } else {\n return (this.value as string).substr(0, 7)\n }\n },\n current (): string | null {\n if (this.showCurrent === true) {\n return sanitizeDateString(`${this.now.getFullYear()}-${this.now.getMonth() + 1}-${this.now.getDate()}`, this.type)\n }\n\n return this.showCurrent || null\n },\n inputDate (): string {\n return this.type === 'date'\n ? `${this.inputYear}-${pad(this.inputMonth! + 1)}-${pad(this.inputDay!)}`\n : `${this.inputYear}-${pad(this.inputMonth! + 1)}`\n },\n tableMonth (): number {\n return Number((this.pickerDate || this.tableDate).split('-')[1]) - 1\n },\n tableYear (): number {\n return Number((this.pickerDate || this.tableDate).split('-')[0])\n },\n minMonth (): string | null {\n return this.min ? sanitizeDateString(this.min, 'month') : null\n },\n maxMonth (): string | null {\n return this.max ? sanitizeDateString(this.max, 'month') : null\n },\n minYear (): string | null {\n return this.min ? sanitizeDateString(this.min, 'year') : null\n },\n maxYear (): string | null {\n return this.max ? sanitizeDateString(this.max, 'year') : null\n },\n formatters (): Formatters {\n return {\n year: this.yearFormat || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 }),\n titleDate: this.titleDateFormat ||\n (this.isMultiple ? this.defaultTitleMultipleDateFormatter : this.defaultTitleDateFormatter),\n }\n },\n defaultTitleMultipleDateFormatter (): DatePickerMultipleFormatter {\n return dates => {\n if (!dates.length) {\n return '-'\n }\n\n if (dates.length === 1) {\n return this.defaultTitleDateFormatter(dates[0])\n }\n\n return this.$vuetify.lang.t(this.selectedItemsText, dates.length)\n }\n },\n defaultTitleDateFormatter (): DatePickerFormatter {\n const titleFormats = {\n year: { year: 'numeric', timeZone: 'UTC' },\n month: { month: 'long', timeZone: 'UTC' },\n date: { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' },\n }\n\n const titleDateFormatter = createNativeLocaleFormatter(this.currentLocale, titleFormats[this.type], {\n start: 0,\n length: { date: 10, month: 7, year: 4 }[this.type],\n })\n\n const landscapeFormatter = (date: string) => titleDateFormatter(date)\n .replace(/([^\\d\\s])([\\d])/g, (match, nonDigit, digit) => `${nonDigit} ${digit}`)\n .replace(', ', ',
')\n\n return this.landscape ? landscapeFormatter : titleDateFormatter\n },\n },\n\n watch: {\n internalActivePicker: {\n immediate: true,\n handler (val: ActivePicker) {\n this.$emit('update:active-picker', val)\n },\n },\n activePicker (val: ActivePicker) {\n this.internalActivePicker = val\n },\n tableDate (val: string, prev: string) {\n // Make a ISO 8601 strings from val and prev for comparision, otherwise it will incorrectly\n // compare for example '2000-9' and '2000-10'\n const sanitizeType = this.type === 'month' ? 'year' : 'month'\n this.isReversing = sanitizeDateString(val, sanitizeType) < sanitizeDateString(prev, sanitizeType)\n this.$emit('update:picker-date', val)\n },\n pickerDate (val: string | null) {\n if (val) {\n this.tableDate = val\n } else if (this.lastValue && this.type === 'date') {\n this.tableDate = sanitizeDateString(this.lastValue, 'month')\n } else if (this.lastValue && this.type === 'month') {\n this.tableDate = sanitizeDateString(this.lastValue, 'year')\n }\n },\n value (newValue: DatePickerValue, oldValue: DatePickerValue) {\n this.checkMultipleProp()\n this.setInputDate()\n\n if (\n (!this.isMultiple && this.value && !this.pickerDate) ||\n (this.isMultiple && this.multipleValue.length && (!oldValue || !oldValue.length) && !this.pickerDate)\n ) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month')\n }\n },\n type (type: DatePickerType) {\n this.internalActivePicker = type.toUpperCase()\n\n if (this.value && this.value.length) {\n const output = this.multipleValue\n .map((val: string) => sanitizeDateString(val, type))\n .filter(this.isDateAllowed)\n this.$emit('input', this.isMultiple ? output : output[0])\n }\n },\n },\n\n created () {\n this.checkMultipleProp()\n\n if (this.pickerDate !== this.tableDate) {\n this.$emit('update:picker-date', this.tableDate)\n }\n this.setInputDate()\n },\n\n methods: {\n emitInput (newInput: string) {\n if (this.range) {\n if (this.multipleValue.length !== 1) {\n this.$emit('input', [newInput])\n } else {\n const output = [this.multipleValue[0], newInput]\n this.$emit('input', output)\n this.$emit('change', output)\n }\n return\n }\n\n const output = this.multiple\n ? (\n this.multipleValue.indexOf(newInput) === -1\n ? this.multipleValue.concat([newInput])\n : this.multipleValue.filter(x => x !== newInput)\n )\n : newInput\n\n this.$emit('input', output)\n this.multiple || this.$emit('change', newInput)\n },\n checkMultipleProp () {\n if (this.value == null) return\n const valueType = this.value.constructor.name\n const expected = this.isMultiple ? 'Array' : 'String'\n if (valueType !== expected) {\n consoleWarn(`Value must be ${this.isMultiple ? 'an' : 'a'} ${expected}, got ${valueType}`, this)\n }\n },\n isDateAllowed (value: string): boolean {\n return isDateAllowed(value, this.min, this.max, this.allowedDates)\n },\n yearClick (value: number) {\n this.inputYear = value\n if (this.type === 'month') {\n this.tableDate = `${value}`\n } else {\n this.tableDate = `${value}-${pad((this.tableMonth || 0) + 1)}`\n }\n this.internalActivePicker = 'MONTH'\n if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate)\n }\n },\n monthClick (value: string) {\n const [year, month] = value.split('-')\n\n this.inputYear = parseInt(year, 10)\n this.inputMonth = parseInt(month, 10) - 1\n\n if (this.type === 'date') {\n if (this.inputDay) {\n this.inputDay = Math.min(this.inputDay, daysInMonth(this.inputYear, this.inputMonth + 1))\n }\n\n this.tableDate = value\n this.internalActivePicker = 'DATE'\n if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate)\n }\n } else {\n this.emitInput(this.inputDate)\n }\n },\n dateClick (value: string) {\n const [year, month, day] = value.split('-')\n\n this.inputYear = parseInt(year, 10)\n this.inputMonth = parseInt(month, 10) - 1\n this.inputDay = parseInt(day, 10)\n\n this.emitInput(this.inputDate)\n },\n genPickerTitle (): VNode {\n return this.$createElement(VDatePickerTitle, {\n props: {\n date: this.value ? (this.formatters.titleDate as (value: any) => string)(this.isMultiple ? this.multipleValue : this.value) : '',\n disabled: this.disabled,\n readonly: this.readonly,\n selectingYear: this.internalActivePicker === 'YEAR',\n year: this.formatters.year(this.multipleValue.length ? `${this.inputYear}` : this.tableDate),\n yearIcon: this.yearIcon,\n value: this.multipleValue[0],\n },\n slot: 'title',\n on: {\n 'update:selecting-year': (value: boolean) => this.internalActivePicker = value ? 'YEAR' : this.type.toUpperCase(),\n },\n })\n },\n genTableHeader (): VNode {\n return this.$createElement(VDatePickerHeader, {\n props: {\n nextIcon: this.nextIcon,\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n format: this.headerDateFormat,\n light: this.light,\n locale: this.locale,\n min: this.internalActivePicker === 'DATE' ? this.minMonth : this.minYear,\n max: this.internalActivePicker === 'DATE' ? this.maxMonth : this.maxYear,\n nextAriaLabel: this.internalActivePicker === 'DATE' ? this.nextMonthAriaLabel : this.nextYearAriaLabel,\n prevAriaLabel: this.internalActivePicker === 'DATE' ? this.prevMonthAriaLabel : this.prevYearAriaLabel,\n prevIcon: this.prevIcon,\n readonly: this.readonly,\n value: this.internalActivePicker === 'DATE' ? `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}` : `${pad(this.tableYear, 4)}`,\n },\n on: {\n toggle: () => this.internalActivePicker = (this.internalActivePicker === 'DATE' ? 'MONTH' : 'YEAR'),\n input: (value: string) => this.tableDate = value,\n },\n })\n },\n genDateTable (): VNode {\n return this.$createElement(VDatePickerDateTable, {\n props: {\n allowedDates: this.allowedDates,\n color: this.color,\n current: this.current,\n dark: this.dark,\n disabled: this.disabled,\n events: this.events,\n eventColor: this.eventColor,\n firstDayOfWeek: this.firstDayOfWeek,\n format: this.dayFormat,\n light: this.light,\n locale: this.locale,\n localeFirstDayOfYear: this.localeFirstDayOfYear,\n min: this.min,\n max: this.max,\n range: this.range,\n readonly: this.readonly,\n scrollable: this.scrollable,\n showAdjacentMonths: this.showAdjacentMonths,\n showWeek: this.showWeek,\n tableDate: `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}`,\n value: this.value,\n weekdayFormat: this.weekdayFormat,\n },\n ref: 'table',\n on: {\n input: this.dateClick,\n 'update:table-date': (value: string) => this.tableDate = value,\n ...createItemTypeListeners(this, ':date'),\n },\n })\n },\n genMonthTable (): VNode {\n return this.$createElement(VDatePickerMonthTable, {\n props: {\n allowedDates: this.type === 'month' ? this.allowedDates : null,\n color: this.color,\n current: this.current ? sanitizeDateString(this.current, 'month') : null,\n dark: this.dark,\n disabled: this.disabled,\n events: this.type === 'month' ? this.events : null,\n eventColor: this.type === 'month' ? this.eventColor : null,\n format: this.monthFormat,\n light: this.light,\n locale: this.locale,\n min: this.minMonth,\n max: this.maxMonth,\n range: this.range,\n readonly: this.readonly && this.type === 'month',\n scrollable: this.scrollable,\n value: this.selectedMonths,\n tableDate: `${pad(this.tableYear, 4)}`,\n },\n ref: 'table',\n on: {\n input: this.monthClick,\n 'update:table-date': (value: string) => this.tableDate = value,\n ...createItemTypeListeners(this, ':month'),\n },\n })\n },\n genYears (): VNode {\n return this.$createElement(VDatePickerYears, {\n props: {\n color: this.color,\n format: this.yearFormat,\n locale: this.locale,\n min: this.minYear,\n max: this.maxYear,\n value: this.tableYear,\n },\n on: {\n input: this.yearClick,\n ...createItemTypeListeners(this, ':year'),\n },\n })\n },\n genPickerBody (): VNode {\n const children = this.internalActivePicker === 'YEAR' ? [\n this.genYears(),\n ] : [\n this.genTableHeader(),\n this.internalActivePicker === 'DATE' ? this.genDateTable() : this.genMonthTable(),\n ]\n\n return this.$createElement('div', {\n key: this.internalActivePicker,\n }, children)\n },\n setInputDate () {\n if (this.lastValue) {\n const array = this.lastValue.split('-')\n this.inputYear = parseInt(array[0], 10)\n this.inputMonth = parseInt(array[1], 10) - 1\n if (this.type === 'date') {\n this.inputDay = parseInt(array[2], 10)\n }\n } else {\n this.inputYear = this.inputYear || this.now.getFullYear()\n this.inputMonth = this.inputMonth == null ? this.inputMonth : this.now.getMonth()\n this.inputDay = this.inputDay || this.now.getDate()\n }\n },\n },\n\n render (): VNode {\n return this.genPicker('v-picker--date')\n },\n})\n","import './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 { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=4c1f61ef&\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VContainer,VDataTable,VDatePicker,VMenu,VRow,VSelect,VTextField})\n"],"sourceRoot":""}