{"version":3,"sources":["webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///../../../src/components/VToolbar/index.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./src/components/Admin/utils.js","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../src/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:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///./node_modules/date-fns/esm/constants/index.js","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/mixins/menuable/index.ts","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js"],"names":["startOfUTCWeekYear","dirtyDate","options","_ref","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","requiredArgs","arguments","defaultOptions","firstWeekContainsDate","toInteger","locale","year","getUTCWeekYear","firstWeek","Date","setUTCFullYear","setUTCHours","date","startOfUTCWeek","MILLISECONDS_IN_WEEK","getUTCWeek","toDate","diff","getTime","Math","round","dateLongFormatter","pattern","formatLong","width","timeLongFormatter","time","dateTimeLongFormatter","dateTimeFormat","matchResult","match","datePattern","timePattern","dateTime","replace","longFormatters","p","P","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","VToolbarTitle","createSimpleFunctional","VToolbarItems","VToolbar","mixins","Colorable","Sizeable","Routable","Themeable","GroupableFactory","ToggleableFactory","extend","name","props","active","type","Boolean","default","activeClass","String","this","chipGroup","close","closeIcon","closeLabel","disabled","draggable","filter","filterIcon","label","link","outlined","pill","tag","textColor","value","data","proxyClass","computed","classes","call","isClickable","isLink","color","hasClose","themeClasses","sizeableClasses","groupClasses","created","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","methods","click","e","$emit","toggle","genFilter","children","isActive","push","$createElement","VIcon","staticClass","left","VExpandXTransition","genClose","right","size","attrs","$vuetify","lang","t","on","stopPropagation","preventDefault","genContent","$slots","render","h","generateRouteLink","undefined","tabindex","directives","setBackgroundColor","setTextColor","VChip","isDate","Object","prototype","toString","isValid","isNaN","Number","getUTCFullYear","RangeError","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","_typeof","o","Symbol","iterator","constructor","getYear","startOfDay","setHours","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","isSameYear","dateLeft","dateRight","formatISO","format","prettyT24","dt","convertDT","console","log","prettyT","prettyDT","today","now","days","prettyDay","parseISO","financialIB","i","fin","financialI","length","dec","slice","whole","strToInt","str","result","join","getHourColor","hour","approved","error","warn","getHoursBlank","hours","isBlank","item","clockin","clockout","isZeroDate","isDiffDay","t1","t2","VSheet","absolute","bottom","collapse","dense","extended","extensionHeight","flat","floating","prominent","short","src","isExtended","computedHeight","height","computedContentHeight","parseInt","isCollapsed","isProminent","breakpoint","smAndDown","styles","measurableStyles","convertToUnit","genBackground","image","$scopedSlots","img","VImg","style","getSlot","genExtension","extension","class","$listeners","unshift","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","addMilliseconds","dirtyAmount","timestamp","amount","subMilliseconds","required","args","TypeError","Vue","inheritAttrs","items","Array","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","min","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","watch","handler","old","deepEqual","deep","immediate","isArray","key","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","map","s","max","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","genItemsPerPageSelect","computedIPPO","find","ippo","VSelect","hideDetails","auto","minWidth","input","genPaginationInfo","genIcon","icon","VBtn","genIcons","before","after","rtl","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","some","sanitizedFooterProps","camelizeObjectKeys","isSelectable","reduce","getObjectValueByPath","keys","values","includes","removedProps","prop","removed","mounted","window","addEventListener","onKeyDown","onKeyUp","beforeDestroy","removeEventListener","keyCode","keyCodes","shift","toggleSelectAll","select","emit","index","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","content","genEmpty","filteredItemsLength","noData","noResults","genItems","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","update:options","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","_a","VSimpleCheckbox","genSortIcon","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","genSortSelect","multiple","menuProps","closeOnContentClick","change","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","genHeader","role","scope","align","divider","groupable","dedupeModelListeners","model","indexOf","callback","rebuildFunctionalSlots","slots","slot","functional","mobile","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","fixedHeader","top","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","trim","matchesColumnFilters","defaultFilter","matchesSearchTerm","VDataIterator","Loadable","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","acc","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","_c","_b","calcWidths","from","$el","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genProgress","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","val","MobileRow","Row","mergeClasses","getPropertyFromItem","contextmenu","event","dblclick","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","startOfUTCISOWeekYear","fourthOfJanuary","startOfUTCISOWeek","getUTCISOWeek","Ripple","indeterminateIcon","onIcon","offIcon","listeners","dark","light","def","center","f","Measurable","aspectRatio","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","VResponsive","hasIntersect","intersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","position","sizes","srcset","transition","currentSrc","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","backgroundPosition","mode","loadImage","init","entries","observer","isIntersecting","lazyImg","Image","pollForSize","onLoad","getSrc","endsWith","startsWith","naturalHeight","onError","onload","decode","catch","err","consoleWarn","message","then","onerror","timeout","poll","complete","setTimeout","__genPlaceholder","placeholder","appear","node","modifiers","once","getUTCDayOfYear","setUTCMonth","startOfYearTimestamp","difference","floor","addLeadingZeros","number","targetLength","sign","output","abs","formatters","y","token","signedYear","M","month","getUTCMonth","d","getUTCDate","a","dayPeriodEnumValue","getUTCHours","toUpperCase","H","m","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","pow","dayPeriodEnum","am","pm","midnight","noon","morning","afternoon","evening","night","G","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","u","Q","quarter","context","q","L","w","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","getUTCDay","day","localDayOfWeek","weekStartsOn","c","isoDayOfWeek","dayPeriod","toLowerCase","b","B","K","X","_localize","originalDate","_originalDate","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$weekStartsOn","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","matched","setUTCDate","VDivider","baseMixins","Dependent","Delayable","Returnable","Roundable","Menuable","ClickOutside","Resize","provide","isInMenu","theme","closeOnClick","disableKeys","maxHeight","offsetX","offsetY","openOnHover","origin","calculatedTopAuto","defaultOffset","hasJustFocused","listIndex","resizeTimeout","selectedIndex","tiles","activeTile","calculatedLeft","menuWidth","dimensions","parseFloat","calculatedMinWidth","calcXOverflow","calcLeftAuto","calcLeft","calculatedMaxHeight","calculatedMaxWidth","maxWidth","activator","nudgeWidth","pageWidth","calculatedTop","calcYOverflow","calcTop","hasClickableTiles","tile","tabIndex","transformOrigin","zIndex","activeZIndex","isContentActive","next","prev","classList","add","scrollTop","$refs","contentHeight","clientHeight","offsetTop","goTo","appOffset","duration","container","callActivate","activate","updateDimensions","requestAnimationFrame","startTransition","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","scrollHeight","offsetHeight","computedTop","tileDistanceFromMenuTop","firstTileOffsetTop","changeListIndex","getTiles","tab","down","nextTile","up","prevTile","lastTile","home","firstTile","enter","closeConditional","target","_isDestroyed","contains","genActivatorAttributes","attributes","Activatable","id","genActivatorListeners","keydown","genTransition","genDirectives","include","getOpenDependentElements","getScopeIdAttrs","rootThemeClasses","roundedClasses","activatorFixed","menuable__content__active","ref","getAttribute","scroll","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","getContentSlot","runDelay","relatedTarget","callDeactivate","esc","getActivator","$nextTick","focus","onResize","offsetWidth","clearTimeout","attach","arg","genActivator","showLazyContent","VThemeProvider","VMenu","inset","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","selectedItems","parsedItems","getValue","tileActiveClass","staticNoDataTile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","middle","getMaskedCharacters","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","_uid","parent","needsTile","VListItemContent","VListItemTitle","getText","componentOptions","Ctor","VList","defaultMenuProps","openOnClick","VTextField","Comparable","Filterable","appendIcon","cacheItems","chips","clearable","deletableChips","disableLookup","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","lazyValue","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedOwns","computedCounterValue","counterValue","isFocused","blur","dynamicHeight","hasSlot","isDirty","listData","scopeId","$vnode","$options","_scopeId","virtualizedItems","selectItem","staticList","consoleError","VSelectList","$_menuProps","menuCanShow","normalisedProps","split","nudgeBottom","internalValue","initialValue","setSelectedItems","menu","onMenuActiveChange","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","getContent","arr","uniqueValues","Map","set","has","findExistingIndex","valueComparator","genChipSelection","isDisabled","click:close","onChipInput","JSON","stringify","genCommaSelection","last","computedColor","genDefaultSlot","selections","genSelections","genInput","genFieldset","genLabel","prefix","genAffix","suffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","cb","extraData","VInput","domProps","readonly","isReadonly","autocomplete","persistentPlaceholder","hasLabel","keypress","onKeyPress","attrs$","genInputSlot","genList","genListWithSlot","onScroll","genSelection","genSlotSelection","selected","getMenuIndex","onBlur","onClick","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","performance","space","onUpDown","onTabDown","onSpaceDown","onMouseUp","hasMouseDown","which","showMoreItems","isBooted","appendInner","getDefaultOptions","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","vertical","orientation","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","count","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formats","dateFormats","full","long","medium","timeFormats","dateTimeFormats","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","dirtyNumber","rem100","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","test","findKey","valueCallback","rest","object","predicate","array","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","code","argument","_options$additionalDi","additionalDigits","NaN","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","timezone","setFullYear","parseTimezone","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","dateString","timeString","substr","exec","regex","RegExp","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","seconds","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","isLeapYearIndex","_year","_hours","validator","mobileWidth","isNumber","deprecate","Stackable","positionableFactory","Detachable","allowOverflow","nudgeLeft","nudgeRight","nudgeTop","offsetOverflow","positionX","positionY","activatorNode","absoluteX","absoluteY","activatedBy","offsetLeft","relativeYOffset","hasWindow","inputActivator","pageYOffset","stackClass","stackMinZIndex","computedLeft","activatorLeft","hasActivator","absoluteYOffset","beforeMount","absolutePosition","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","totalHeight","isOverflowing","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","el","getComputedStyle","offsetParent","clientX","clientY","innerHeight","document","documentElement","pageXOffset","scrollLeft","getRoundedBoundedClientRect","rect","getBoundingClientRect","measure","marginLeft","marginTop","sneakPeek","display","Promise","resolve","offsetRect","argStr","Error","stack"],"mappings":"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","file":"js/chunk-7315484c.35b1d7ad.js","sourcesContent":["import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import { format, parseISO, differenceInCalendarDays, isSameYear, getYear, isValid } from 'date-fns'\n\n// some helper functions\n\n// --------------------------------------------------------------------------\nexport function formatISO (date) {\n return format(date, \"yyyy-MM-dd'T'HH:mm:ssXX\"\n )\n}\n\n// --------------------------------------------------------------------------\nexport function prettyT24 (dt) {\n dt = convertDT(dt)\n if (dt == \"\") return\n try {\n if (getYear(dt) == 0) {\n // year 0001, comes out as zero (the \"empty\" date for most uses)\n return \"\"\n }\n return format(dt, \"HH:mm\")\n } catch (e) {\n console.log(\"Bad datetime:\", dt, e)\n return \"\"\n }\n}\n\nexport function prettyT (dt) {\n dt = convertDT(dt)\n if (dt == \"\") return\n try {\n if (getYear(dt) == 0) {\n // year 0001, comes out as zero (the \"empty\" date for most uses)\n return \"\"\n }\n return format(dt, \"h:mmaa\")\n } catch (e) {\n console.log(\"Bad datetime:\", dt, e)\n return \"\"\n }\n}\n\nexport function prettyDT (dt) {\n dt = convertDT(dt)\n if (dt == \"\") return\n try {\n if (getYear(dt) <= 1900) {\n // year 0001, comes t stout as zero (the \"empty\" date for most uses)\n // the difference call below returns weird stuff for this date,\n // so this test comes before it\n return \"\"\n }\n let today = Date.now()\n let days = differenceInCalendarDays(today, dt)\n if (days == 0) {\n // same day\n return format(dt, \"h:mm aa\")\n }\n if (days < 0) {\n // future date\n if (isSameYear(dt, today)) {\n // same year\n return format(dt, \"MMM-d h:mmaa EEE\")\n }\n // default, full format\n return format(dt, \"yyyy-MM-dd h:mmaa EEE\")\n }\n if (days <= 6) {\n // within the last week\n return format(dt, \"h:mmaa EEE\")\n }\n if (isSameYear(dt, today)) {\n // same year\n return format(dt, \"MMM-d h:mmaa EEE\")\n }\n // default, full format\n return format(dt, \"yyyy-MM-dd h:mmaa EEE\")\n } catch (e) {\n console.log(\"Bad datetime:\", dt, e)\n return \"\"\n }\n}\n\nexport function prettyDay (dt) {\n dt = convertDT(dt)\n if (dt == \"\") return\n try {\n if (getYear(dt) == 0) {\n // year 0001, comes out as zero (the \"empty\" date for most uses)\n // the difference call below returns weird stuff for this date,\n // so this test comes before it\n return \"\"\n }\n return format(dt, \"EEE MM/dd\")\n } catch (e) {\n console.log(\"Bad datetime:\", dt, e)\n return \"\"\n }\n}\n\nexport function convertDT (dt) {\n if (typeof dt === \"undefined\" || dt == null) {\n return \"\"\n }\n if (typeof dt === \"string\") {\n try {\n dt = parseISO(dt)\n } catch (e) {\n console.log(\"Bad datetime:\", dt, e)\n return \"\"\n }\n }\n return dt\n}\n\n// --------------------------------------------------------------------------\n/*\nexport function financial (x) {\n return Number.parseFloat(x).toFixed(2)\n}\n\nexport function financialB (x) {\n var fin = Number.parseFloat(x).toFixed(2)\n if (fin == '0.00') {\n return ''\n }\n return fin\n}\n*/\n\nexport function financialIB (i) {\n var fin = financialI(i)\n if (fin == '0.00') {\n return ''\n }\n return fin\n}\n\nexport function financialI (i) {\n i = i + \"\" // to string\n if (i.length < 3) {\n i = \"0\" + i\n }\n if (i.length < 3) {\n i = \"0\" + i\n }\n var dec = i.slice(-2)\n var whole = i.slice(0, -2)\n i = whole + '.' + dec\n return i\n}\n\n// --------------------------------------------------------------------------\nexport function strToInt (str) {\n var result = str.match(/\\d/igm) // array of digit chars\n if (result == null) {\n return 0 // default result on any unacceptable input\n }\n result = result.join(\"\") // array to string\n result = Number(result) // string to num\n return result\n}\n\n// --------------------------------------------------------------------------\nexport function getHourColor (hour, approved) {\n if (approved) {\n return ''\n }\n if (hour.error) {\n return 'red--text font-weight-bold'\n }\n if (hour.warn) {\n return 'orange--text font-weight-bold'\n }\n return ''\n}\n\nexport function getHoursBlank (hour) {\n if (hour.hours == 0 && !hour.error && !hour.warn) {\n return financialIB(hour.hours)\n }\n return financialI(hour.hours)\n}\n\nexport function isBlank (item) {\n if (item.clockin == '' && item.clockout == '') {\n return true\n }\n return false\n}\n\n// --------------------------------------------------------------------------\n// A simple test for empty datetime (i.e. year 0000 or 0001)\nexport function isZeroDate (dt) {\n if (!isValid(dt)) return true\n // year 0001, comes out as zero (the \"empty\" date for most uses)\n return getYear(dt) === 0\n}\n\n// Returns true if two datetimes are on different calendar days\nexport function isDiffDay (t1, t2) {\n t1 = convertDT(t1)\n t2 = convertDT(t2)\n if (isZeroDate(t1) || isZeroDate(t2)) return false\n return differenceInCalendarDays(t1, t2) !== 0\n}\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","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 groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import './VSimpleCheckbox.sass'\n\nimport Ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n Ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n def: Ripple,\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\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","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","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","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","// 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 toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\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","// 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) {\n this.activatorFixed = false\n return\n }\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 _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}"],"sourceRoot":""}