{"version":3,"sources":["webpack:///../../../src/mixins/delayable/index.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///../../../src/mixins/stackable/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/mixins/scrollable/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../../src/services/icons/presets/mdi-svg.ts","webpack:///../../../../src/services/icons/presets/md.ts","webpack:///../../../../src/services/icons/presets/mdi.ts","webpack:///../../../../src/services/icons/presets/fa.ts","webpack:///../../../../src/services/icons/presets/fa4.ts","webpack:///../../../../src/services/icons/presets/fa-svg.ts","webpack:///../../../../src/services/icons/presets/index.ts","webpack:///../../../src/services/icons/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///../../../src/services/breakpoint/index.ts","webpack:///../../../src/mixins/validatable/index.ts","webpack:///../../../src/mixins/applicationable/index.ts","webpack:///../../../src/mixins/picker/index.ts","webpack:///../../../src/mixins/activatable/index.ts","webpack:///../../src/util/dateTimeUtils.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../src/util/mixins.ts","webpack:///../../../src/mixins/themeable/index.ts","webpack:///../../../src/mixins/detachable/index.ts","webpack:///../../src/util/colorUtils.ts","webpack:///../../../src/util/color/transformCIELAB.ts","webpack:///../../../src/services/theme/utils.ts","webpack:///../../../src/services/theme/index.ts","webpack:///../../../src/services/goto/easing-patterns.ts","webpack:///../../../src/services/goto/util.ts","webpack:///../../../src/services/goto/index.ts","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../src/util/helpers.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/util/color/transformSRGB.ts","webpack:///../../../src/services/application/index.ts","webpack:///../../../src/mixins/bootable/index.ts","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/mixins/dependent/index.ts","webpack:///../../src/locale/en.ts","webpack:///../../../src/presets/default/index.ts","webpack:///../../../src/services/presets/index.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/mixins/ssr-bootable/index.ts","webpack:///../../src/util/console.ts","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/mixins/picker-button/index.ts","webpack:///../../src/util/dom.ts","webpack:///../../../src/mixins/intersectable/index.ts","webpack:///../../../src/mixins/localable/index.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/mixins/returnable/index.ts","webpack:///../../../src/mixins/overlayable/index.ts","webpack:///../../../src/services/lang/index.ts","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/mixins/transitionable/index.ts","webpack:///../../../src/mixins/menuable/index.ts","webpack:///../../../src/mixins/selectable/index.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/services/service/index.ts"],"names":["name","props","openDelay","type","Number","default","closeDelay","data","openTimeout","closeTimeout","undefined","methods","clearDelay","clearTimeout","this","runDelay","delay","parseInt","setTimeout","cb","open","close","directives","Ripple","activeClass","append","disabled","exact","exactPath","exactActiveClass","link","href","String","to","nuxt","replace","ripple","Boolean","tag","target","isActive","proxyClass","computed","classes","computedRipple","isClickable","isLink","$listeners","$attrs","styles","watch","$route","mounted","generateRouteLink","attrs","tabindex","class","style","value","click","Object","path","onRouteChange","$refs","toggle","stackElement","stackExclude","stackMinZIndex","activeZIndex","window","content","index","getMaxZIndex","exclude","base","zis","activeElements","document","Math","height","maxHeight","maxWidth","minHeight","minWidth","width","measurableStyles","Scroll","scrollTarget","scrollThreshold","currentScroll","currentThreshold","isScrollingUp","previousScroll","savedScroll","canScroll","computedScrollThreshold","onScroll","thresholdMet","loading","loaderHeight","genProgress","$slots","progress","$createElement","absolute","color","indeterminate","icons","complete","cancel","delete","clear","success","info","warning","error","prev","next","checkboxOn","checkboxOff","checkboxIndeterminate","delimiter","sort","expand","menu","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","first","last","unfold","file","plus","minus","result","component","icon","iconSet","convertToComponentDeclarations","mdiSvg","md","mdi","fa","fa4","faSvg","preset","Icons","presets","property","generateWarning","child","defaultImpl","register","unregister","parent","inject","self","provide","xs","sm","lg","xl","xsOnly","smOnly","smAndDown","smAndUp","mdOnly","mdAndDown","mdAndUp","lgOnly","lgAndDown","lgAndUp","xlOnly","mobile","resizeTimeout","Breakpoint","thresholds","onResize","bind","passive","ssr","breakpoints","current","max","update","baseMixins","errorCount","errorMessages","messages","readonly","rules","successMessages","validateOnBlur","required","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","valid","computedColor","isDark","hasError","internalErrorMessages","length","hasSuccess","internalSuccessMessages","externalError","hasMessages","validationTarget","hasState","shouldValidate","genInternalMessages","internalMessages","internalValue","get","set","isDisabled","form","isInteractive","isReadonly","validations","slice","validationState","handler","newVal","deep","$nextTick","val","beforeMount","created","beforeDestroy","Array","reset","resetValidation","validate","force","rule","events","app","applicationProperty","removeApplication","activated","i","deactivated","destroyed","callUpdate","updateApplication","flat","fullWidth","headerColor","landscape","noTitle","genPickerTitle","genPickerBody","genPickerActionsSlot","$scopedSlots","save","genPicker","children","title","body","slot","staticClass","dark","elevation","light","activator","validator","includes","internalActivator","openOnClick","openOnHover","openOnFocus","activatorElement","activatorNode","listeners","slotType","addActivatorEvents","keys","key","genActivator","node","on","genActivatorAttributes","role","genActivatorListeners","e","getActivator","vm","m","Node","getContentSlot","getValueProxy","removeActivatorEvents","resetActivator","createUTCDate","month","day","year","date","Date","isFinite","firstWeekOffset","firstWeekDayInFirstWeek","firstDayOfWeek","firstWeekDayOfYear","dayOfYear","isLeapYear","weeksInYear","weekOffset","weekOffsetNext","daysInYear","week","namespace","groupClasses","factory","genRipple","center","mixins","args","Themeable","theme","themeableProvide","appIsDark","$vuetify","themeClasses","rootIsDark","rootThemeClasses","immediate","context","injections","validateAttachTarget","removeActivator","attach","contentClass","hasDetached","hasContent","$el","observer","MutationObserver","list","record","observe","subtree","childList","getScopeIdAttrs","scopeId","initDetach","_isDestroyed","rgb","TypeError","c","char","isNaN","hexColor","repeat","intToHex","colorToInt","delta","cielabForwardTransform","t","cielabReverseTransform","transform","transformedY","xyz","Ln","lab","isItem","variations","variant","colors","parsedTheme","parse","genVariations","anchor","genBaseColor","n","genColorVariableName","genColorVariable","cssVar","variablesCss","css","aColor","variants","variantValue","values","lighten","darken","amount","unwatch","vueMeta","Theme","themes","styleEl","oldDark","root","ssrContext","defaults","defaultTheme","options","metaKeyName","getOptions","metaInfo","vuetifyStylesheet","s","cssText","id","nonce","cspNonce","addApp","obs","currentTheme","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","el","$","Error","totalOffset","container","_settings","settings","duration","offset","easing","appOffset","getContainer","goTo","isDrawer","isClipped","top","startTime","performance","targetLocation","_target","getOffset","startLocation","Promise","ease","resolve","requestAnimationFrame","step","timeElapsed","currentTime","clientHeight","reachBottom","makeWatcher","$data","attrs$","listeners$","functional","render","h","once","event","passiveSupported","testListenerOpts","console","obj","fallback","a","b","p","deepEqual","getNestedValue","item","getObjectValueByPath","getZIndex","tagsToReplace","str","filtered","unit","keyCodes","enter","tab","esc","space","up","down","left","right","end","home","del","backspace","insert","pageup","pagedown","shift","iconName","iconPath","override","camelizeRE","camelize","diff","groupBy","groups","items","v","sortBy","stringCollator","Intl","sensitivity","usage","sortKey","sortA","sortB","sortDesc","customSorters","customResult","map","search","defaultFilter","split","throttling","fn","k","scopedSlots","optional","min","size","chunked","binary","bytes","prefix","o","source","sourceProperty","targetProperty","isObject","mergeDeep","valueComparator","srgbForwardMatrix","srgbForwardTransform","C","srgbReverseMatrix","srgbReverseTransform","matrix","r","g","bar","insetFooter","bottom","footer","application","location","uid","acc","eager","isBooted","showLazyContent","rounded","tile","roundedClasses","composite","prop","model","internalLazyValue","Proxyable","setBackgroundColor","setTextColor","colorName","large","small","xLarge","xSmall","medium","sizeableClasses","searchChildren","results","closeDependents","isDependent","openDependents","getOpenDependents","getOpenDependentElements","getClickableDependentElements","overlay","badge","dataIterator","noResultsText","loadingText","dataTable","itemsPerPageText","ariaLabel","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","dataFooter","itemsPerPageAll","nextPage","prevPage","firstPage","lastPage","pageText","datePicker","itemsSelected","nextMonthAriaLabel","nextYearAriaLabel","prevMonthAriaLabel","prevYearAriaLabel","noDataText","carousel","calendar","moreEvents","fileInput","counter","counterSize","timePicker","am","pm","pagination","wrapper","previous","page","currentPage","rating","breakpoint","mobileBreakpoint","scrollBarWidth","iconfont","lang","locales","en","rtl","disable","customProperties","minifyTheme","themeCache","primary","secondary","accent","defaultPreset","userPreset","globalPreset","computedElevation","elevationClasses","createMessage","_isVue","$parent","$options","generateComponentTrace","newMessage","message","consoleWarn","original","consoleError","classifyRE","classify","formatComponentName","match","includeFile","tree","currentRecursiveSequence","pattern","styleList","styleProp","parseStyle","styleMap","mergeTarget","arguments","mergeClasses","mergeStyles","mergeListeners","dest","arg","genPickerButton","active","composed","isIntersecting","onObserve","callback","locale","currentLocale","isMobile","mobileWidth","isNumber","hasOwnProperty","returnValue","originalValue","hideOverlay","overlayColor","overlayOpacity","animationFrame","genOverlay","createOverlay","propsData","opacity","removeOverlay","showScroll","cancelAnimationFrame","scrollListener","checkPath","hasScrollbar","shouldScroll","dir","alreadyAtStart","alreadyAtEnd","scrollingUp","scrollingDown","isInside","dialog","selected","hideScroll","LANG_PREFIX","Symbol","getTranslation","usingDefault","shortKey","translation","defaultLocale","Lang","translator","params","$emit","Toggleable","mode","origin","transition","allowOverflow","nudgeBottom","nudgeLeft","nudgeRight","nudgeTop","nudgeWidth","offsetOverflow","positionX","positionY","zIndex","absoluteX","absoluteY","activatedBy","activatorFixed","dimensions","offsetTop","scrollHeight","offsetLeft","relativeYOffset","hasJustFocused","hasWindow","inputActivator","isContentActive","pageWidth","pageYOffset","stackClass","computedLeft","activatorLeft","computedTop","hasActivator","absoluteYOffset","absolutePosition","activate","calcLeft","calcXOverflow","calcTop","calcYOverflow","xOverflow","documentHeight","toTop","contentHeight","totalHeight","isOverflowing","callActivate","callDeactivate","checkForPageYOffset","checkActivatorFixed","deactivate","onClick","getInnerHeight","getOffsetLeft","getOffsetTop","getRoundedBoundedClientRect","rect","measure","sneakPeek","startTransition","updateDimensions","offsetRect","inputValue","falseValue","trueValue","multiple","label","isMultiple","input","isDirty","rippleState","genLabel","prevent","genInput","domProps","checked","blur","change","focus","keydown","ref","onBlur","onChange","onFocus","onKeydown","availableProps","fixed","framework"],"mappings":"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","file":"js/chunk-vendors~ce053847.a0abfa82.js","sourcesContent":["import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend<Vue & { isActive?: boolean }>().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined,\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n },\n },\n})\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record<string, boolean> = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n ...('click' in this ? { click: (this as any).click } : undefined), // #14447\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n","import Vue from 'vue'\n\nimport { getZIndex } from '../../util/helpers'\n\ninterface options extends Vue {\n $refs: {\n content: Element\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<options>().extend({\n name: 'stackable',\n\n data () {\n return {\n stackElement: null as Element | null,\n stackExclude: null as Element[] | null,\n stackMinZIndex: 0,\n isActive: false,\n }\n },\n computed: {\n activeZIndex (): number {\n if (typeof window === 'undefined') return 0\n\n const content = this.stackElement || this.$refs.content\n // Return current zindex if not active\n\n const index = !this.isActive\n ? getZIndex(content)\n : this.getMaxZIndex(this.stackExclude || [content]) + 2\n\n if (index == null) return index\n\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index)\n },\n },\n methods: {\n getMaxZIndex (exclude: Element[] = []) {\n const base = this.$el\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n const zis = [this.stackMinZIndex, getZIndex(base)]\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n const activeElements = [\n ...document.getElementsByClassName('v-menu__content--active'),\n ...document.getElementsByClassName('v-dialog__content--active'),\n ]\n\n // Get z-index for all active dialogs\n for (let index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(getZIndex(activeElements[index]))\n }\n }\n\n return Math.max(...zis)\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType<string | number | undefined>\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record<string, string> = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","// Directives\nimport { Scroll } from '../../directives'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\n/**\n * Scrollable\n *\n * Used for monitoring scrolling and\n * invoking functions based upon\n * scrolling thresholds being\n * met.\n */\n/* @vue/component */\nexport default Vue.extend({\n name: 'scrollable',\n\n directives: { Scroll },\n\n props: {\n scrollTarget: String,\n scrollThreshold: [String, Number],\n },\n\n data: () => ({\n currentScroll: 0,\n currentThreshold: 0,\n isActive: false,\n isScrollingUp: false,\n previousScroll: 0,\n savedScroll: 0,\n target: null as Element | null,\n }),\n\n computed: {\n /**\n * A computed property that returns\n * whether scrolling features are\n * enabled or disabled\n */\n canScroll (): boolean {\n return typeof window !== 'undefined'\n },\n /**\n * The threshold that must be met before\n * thresholdMet function is invoked\n */\n computedScrollThreshold (): number {\n return this.scrollThreshold\n ? Number(this.scrollThreshold)\n : 300\n },\n },\n\n watch: {\n isScrollingUp () {\n this.savedScroll = this.savedScroll || this.currentScroll\n },\n isActive () {\n this.savedScroll = 0\n },\n },\n\n mounted () {\n if (this.scrollTarget) {\n this.target = document.querySelector(this.scrollTarget)\n\n if (!this.target) {\n consoleWarn(`Unable to locate element with identifier ${this.scrollTarget}`, this)\n }\n }\n },\n\n methods: {\n onScroll () {\n if (!this.canScroll) return\n\n this.previousScroll = this.currentScroll\n this.currentScroll = this.target\n ? this.target.scrollTop\n : window.pageYOffset\n\n this.isScrollingUp = this.currentScroll < this.previousScroll\n this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold)\n\n this.$nextTick(() => {\n if (\n Math.abs(this.currentScroll - this.savedScroll) >\n this.computedScrollThreshold\n ) this.thresholdMet()\n })\n },\n /**\n * The method invoked when\n * scrolling in any direction\n * has exceeded the threshold\n */\n thresholdMet () { /* noop */ },\n },\n})\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend<colorable>().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z',\n cancel: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n close: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n delete: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z', // delete (e.g. v-chip close)\n clear: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n success: 'M12,2C17.52,2 22,6.48 22,12C22,17.52 17.52,22 12,22C6.48,22 2,17.52 2,12C2,6.48 6.48,2 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z',\n info: 'M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n warning: 'M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z',\n error: 'M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z',\n prev: 'M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z',\n next: 'M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z',\n checkboxOn: 'M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n checkboxOff: 'M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z',\n checkboxIndeterminate: 'M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n delimiter: 'M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z', // for carousel\n sort: 'M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z',\n expand: 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z',\n menu: 'M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z',\n subgroup: 'M7,10L12,15L17,10H7Z',\n dropdown: 'M7,10L12,15L17,10H7Z',\n radioOn: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z',\n radioOff: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n edit: 'M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z',\n ratingEmpty: 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n ratingFull: 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z',\n ratingHalf: 'M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n loading: 'M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12',\n first: 'M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z',\n last: 'M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z',\n unfold: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z',\n file: 'M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z',\n plus: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z',\n minus: 'M19,13H5V11H19V13Z',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'check',\n cancel: 'cancel',\n close: 'close',\n delete: 'cancel', // delete (e.g. v-chip close)\n clear: 'clear',\n success: 'check_circle',\n info: 'info',\n warning: 'priority_high',\n error: 'warning',\n prev: 'chevron_left',\n next: 'chevron_right',\n checkboxOn: 'check_box',\n checkboxOff: 'check_box_outline_blank',\n checkboxIndeterminate: 'indeterminate_check_box',\n delimiter: 'fiber_manual_record', // for carousel\n sort: 'arrow_upward',\n expand: 'keyboard_arrow_down',\n menu: 'menu',\n subgroup: 'arrow_drop_down',\n dropdown: 'arrow_drop_down',\n radioOn: 'radio_button_checked',\n radioOff: 'radio_button_unchecked',\n edit: 'edit',\n ratingEmpty: 'star_border',\n ratingFull: 'star',\n ratingHalf: 'star_half',\n loading: 'cached',\n first: 'first_page',\n last: 'last_page',\n unfold: 'unfold_more',\n file: 'attach_file',\n plus: 'add',\n minus: 'remove',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-exclamation',\n error: 'mdi-alert',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sort: 'mdi-arrow-up',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fas fa-check',\n cancel: 'fas fa-times-circle',\n close: 'fas fa-times',\n delete: 'fas fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fas fa-times-circle', // delete (e.g. v-chip close)\n success: 'fas fa-check-circle',\n info: 'fas fa-info-circle',\n warning: 'fas fa-exclamation',\n error: 'fas fa-exclamation-triangle',\n prev: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n checkboxOn: 'fas fa-check-square',\n checkboxOff: 'far fa-square', // note 'far'\n checkboxIndeterminate: 'fas fa-minus-square',\n delimiter: 'fas fa-circle', // for carousel\n sort: 'fas fa-sort-up',\n expand: 'fas fa-chevron-down',\n menu: 'fas fa-bars',\n subgroup: 'fas fa-caret-down',\n dropdown: 'fas fa-caret-down',\n radioOn: 'far fa-dot-circle',\n radioOff: 'far fa-circle',\n edit: 'fas fa-edit',\n ratingEmpty: 'far fa-star',\n ratingFull: 'fas fa-star',\n ratingHalf: 'fas fa-star-half',\n loading: 'fas fa-sync',\n first: 'fas fa-step-backward',\n last: 'fas fa-step-forward',\n unfold: 'fas fa-arrows-alt-v',\n file: 'fas fa-paperclip',\n plus: 'fas fa-plus',\n minus: 'fas fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fa fa-check',\n cancel: 'fa fa-times-circle',\n close: 'fa fa-times',\n delete: 'fa fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fa fa-times-circle', // delete (e.g. v-chip close)\n success: 'fa fa-check-circle',\n info: 'fa fa-info-circle',\n warning: 'fa fa-exclamation',\n error: 'fa fa-exclamation-triangle',\n prev: 'fa fa-chevron-left',\n next: 'fa fa-chevron-right',\n checkboxOn: 'fa fa-check-square',\n checkboxOff: 'fa fa-square-o',\n checkboxIndeterminate: 'fa fa-minus-square',\n delimiter: 'fa fa-circle', // for carousel\n sort: 'fa fa-sort-up',\n expand: 'fa fa-chevron-down',\n menu: 'fa fa-bars',\n subgroup: 'fa fa-caret-down',\n dropdown: 'fa fa-caret-down',\n radioOn: 'fa fa-dot-circle-o',\n radioOff: 'fa fa-circle-o',\n edit: 'fa fa-pencil',\n ratingEmpty: 'fa fa-star-o',\n ratingFull: 'fa fa-star',\n ratingHalf: 'fa fa-star-half-o',\n loading: 'fa fa-refresh',\n first: 'fa fa-step-backward',\n last: 'fa fa-step-forward',\n unfold: 'fa fa-angle-double-down',\n file: 'fa fa-paperclip',\n plus: 'fa fa-plus',\n minus: 'fa fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\nimport { Component } from 'vue'\nimport icons from './fa'\n\nexport function convertToComponentDeclarations (\n component: Component | string,\n iconSet: VuetifyIcons,\n) {\n const result: Partial<VuetifyIcons> = {}\n\n for (const key in iconSet) {\n result[key] = {\n component,\n props: {\n icon: (iconSet[key] as string).split(' fa-'),\n },\n }\n }\n\n return result as VuetifyIcons\n}\n\nexport default convertToComponentDeclarations('font-awesome-icon', icons)\n","import mdiSvg from './mdi-svg'\nimport md from './md'\nimport mdi from './mdi'\nimport fa from './fa'\nimport fa4 from './fa4'\nimport faSvg from './fa-svg'\n\nexport default Object.freeze({\n mdiSvg,\n md,\n mdi,\n fa,\n fa4,\n faSvg,\n})\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Icons as IIcons } from 'vuetify/types/services/icons'\n\n// Presets\nimport presets from './presets'\n\nexport class Icons extends Service implements IIcons {\n static property: 'icons' = 'icons'\n\n public iconfont: IIcons['iconfont']\n\n public values: IIcons['values']\n\n public component: IIcons['component']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n iconfont,\n values,\n component,\n } = preset[Icons.property]\n\n this.component = component\n this.iconfont = iconfont\n this.values = mergeDeep(\n presets[iconfont],\n values\n ) as IIcons['values']\n }\n}\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable<T extends string, C extends VueConstructor | null = null> = VueConstructor<Vue & {\n [K in T]: C extends VueConstructor ? InstanceType<C> : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable<T, C> {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Breakpoint as IBreakpoint } from 'vuetify/types/services/breakpoint'\n\nexport class Breakpoint extends Service implements IBreakpoint {\n public static property: 'breakpoint' = 'breakpoint'\n\n // Public\n public xs = false\n\n public sm = false\n\n public md = false\n\n public lg = false\n\n public xl = false\n\n public xsOnly = false\n\n public smOnly = false\n\n public smAndDown = false\n\n public smAndUp = false\n\n public mdOnly = false\n\n public mdAndDown = false\n\n public mdAndUp = false\n\n public lgOnly = false\n\n public lgAndDown = false\n\n public lgAndUp = false\n\n public xlOnly = false\n\n // Value is xs to match v2.x functionality\n public name: IBreakpoint['name'] = 'xs'\n\n public height = 0\n\n public width = 0\n\n // TODO: Add functionality to detect this dynamically in v3\n // Value is true to match v2.x functionality\n public mobile = true\n\n public mobileBreakpoint: IBreakpoint['mobileBreakpoint']\n\n public thresholds: IBreakpoint['thresholds']\n\n public scrollBarWidth: IBreakpoint['scrollBarWidth']\n\n private resizeTimeout = 0\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n mobileBreakpoint,\n scrollBarWidth,\n thresholds,\n } = preset[Breakpoint.property]\n\n this.mobileBreakpoint = mobileBreakpoint\n this.scrollBarWidth = scrollBarWidth\n this.thresholds = thresholds\n }\n\n public init () {\n this.update()\n\n /* istanbul ignore if */\n if (typeof window === 'undefined') return\n\n window.addEventListener(\n 'resize',\n this.onResize.bind(this),\n { passive: true }\n )\n }\n\n /* eslint-disable-next-line max-statements */\n public update (ssr = false) {\n const height = ssr ? 0 : this.getClientHeight()\n const width = ssr ? 0 : this.getClientWidth()\n\n const xs = width < this.thresholds.xs\n const sm = width < this.thresholds.sm && !xs\n const md = width < (this.thresholds.md - this.scrollBarWidth) && !(sm || xs)\n const lg = width < (this.thresholds.lg - this.scrollBarWidth) && !(md || sm || xs)\n const xl = width >= (this.thresholds.lg - this.scrollBarWidth)\n\n this.height = height\n this.width = width\n\n this.xs = xs\n this.sm = sm\n this.md = md\n this.lg = lg\n this.xl = xl\n\n this.xsOnly = xs\n this.smOnly = sm\n this.smAndDown = (xs || sm) && !(md || lg || xl)\n this.smAndUp = !xs && (sm || md || lg || xl)\n this.mdOnly = md\n this.mdAndDown = (xs || sm || md) && !(lg || xl)\n this.mdAndUp = !(xs || sm) && (md || lg || xl)\n this.lgOnly = lg\n this.lgAndDown = (xs || sm || md || lg) && !xl\n this.lgAndUp = !(xs || sm || md) && (lg || xl)\n this.xlOnly = xl\n\n switch (true) {\n case (xs):\n this.name = 'xs'\n break\n case (sm):\n this.name = 'sm'\n break\n case (md):\n this.name = 'md'\n break\n case (lg):\n this.name = 'lg'\n break\n default:\n this.name = 'xl'\n break\n }\n\n if (typeof this.mobileBreakpoint === 'number') {\n this.mobile = width < parseInt(this.mobileBreakpoint, 10)\n\n return\n }\n\n const breakpoints = {\n xs: 0,\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n } as const\n\n const current = breakpoints[this.name]\n const max = breakpoints[this.mobileBreakpoint]\n\n this.mobile = current <= max\n }\n\n private onResize () {\n clearTimeout(this.resizeTimeout)\n\n // Added debounce to match what\n // v-resize used to do but was\n // removed due to a memory leak\n // https://github.com/vuetifyjs/vuetify/pull/2997\n this.resizeTimeout = window.setTimeout(this.update.bind(this), 200)\n }\n\n // Cross-browser support as described in:\n // https://stackoverflow.com/questions/1248081\n private getClientWidth () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientWidth,\n window.innerWidth || 0\n )\n }\n\n private getClientHeight () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientHeight,\n window.innerHeight || 0\n )\n }\n}\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator<InputValidationRules>,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","// Components\nimport VPicker from '../../components/VPicker'\n\n// Mixins\nimport Colorable from '../colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Colorable,\n Elevatable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'picker',\n\n props: {\n flat: Boolean,\n fullWidth: Boolean,\n headerColor: String,\n landscape: Boolean,\n noTitle: Boolean,\n width: {\n type: [Number, String],\n default: 290,\n },\n },\n\n methods: {\n genPickerTitle (): VNode | null {\n return null\n },\n genPickerBody (): VNode | null {\n return null\n },\n genPickerActionsSlot () {\n return this.$scopedSlots.default ? this.$scopedSlots.default({\n save: (this as any).save,\n cancel: (this as any).cancel,\n }) : this.$slots.default\n },\n genPicker (staticClass: string) {\n const children: VNode[] = []\n\n if (!this.noTitle) {\n const title = this.genPickerTitle()\n title && children.push(title)\n }\n\n const body = this.genPickerBody()\n body && children.push(body)\n\n children.push(this.$createElement('template', { slot: 'actions' }, [this.genPickerActionsSlot()]))\n\n return this.$createElement(VPicker, {\n staticClass,\n props: {\n color: this.headerColor || this.color,\n dark: this.dark,\n elevation: this.elevation,\n flat: this.flat,\n fullWidth: this.fullWidth,\n landscape: this.landscape,\n light: this.light,\n width: this.width,\n noTitle: this.noTitle,\n },\n }, children)\n },\n },\n})\n","// Mixins\nimport Delayable from '../delayable'\nimport Toggleable from '../toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { getSlot, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\ntype Listeners = Dictionary<(e: MouseEvent & KeyboardEvent & FocusEvent) => void>\n\nconst baseMixins = mixins(\n Delayable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'activatable',\n\n props: {\n activator: {\n default: null as unknown as PropType<string | HTMLElement | VNode | Element | null>,\n validator: (val: string | object) => {\n return ['string', 'object'].includes(typeof val)\n },\n },\n disabled: Boolean,\n internalActivator: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n openOnFocus: Boolean,\n },\n\n data: () => ({\n // Do not use this directly, call getActivator() instead\n activatorElement: null as HTMLElement | null,\n activatorNode: [] as VNode[],\n events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n listeners: {} as Listeners,\n }),\n\n watch: {\n activator: 'resetActivator',\n openOnFocus: 'resetActivator',\n openOnHover: 'resetActivator',\n },\n\n mounted () {\n const slotType = getSlotType(this, 'activator', true)\n\n if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n consoleError(`The activator slot must be bound, try '<template v-slot:activator=\"{ on }\"><v-btn v-on=\"on\">'`, this)\n }\n\n this.addActivatorEvents()\n },\n\n beforeDestroy () {\n this.removeActivatorEvents()\n },\n\n methods: {\n addActivatorEvents () {\n if (\n !this.activator ||\n this.disabled ||\n !this.getActivator()\n ) return\n\n this.listeners = this.genActivatorListeners()\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n this.getActivator()!.addEventListener(key, this.listeners[key] as any)\n }\n },\n genActivator () {\n const node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {\n on: this.genActivatorListeners(),\n attrs: this.genActivatorAttributes(),\n })) || []\n\n this.activatorNode = node\n\n return node\n },\n genActivatorAttributes () {\n return {\n role: (this.openOnClick && !this.openOnHover) ? 'button' : undefined,\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genActivatorListeners () {\n if (this.disabled) return {}\n\n const listeners: Listeners = {}\n\n if (this.openOnHover) {\n listeners.mouseenter = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.mouseleave = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n } else if (this.openOnClick) {\n listeners.click = (e: MouseEvent) => {\n const activator = this.getActivator(e)\n if (activator) activator.focus()\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n if (this.openOnFocus) {\n listeners.focus = (e: FocusEvent) => {\n this.getActivator(e)\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n return listeners\n },\n getActivator (e?: Event): HTMLElement | null {\n // If we've already fetched the activator, re-use\n if (this.activatorElement) return this.activatorElement\n\n let activator = null\n\n if (this.activator) {\n const target = this.internalActivator ? this.$el : document\n\n if (typeof this.activator === 'string') {\n // Selector\n activator = target.querySelector(this.activator)\n } else if ((this.activator as any).$el) {\n // Component (ref)\n activator = (this.activator as any).$el\n } else {\n // HTMLElement | Element\n activator = this.activator\n }\n } else if (this.activatorNode.length === 1 || (this.activatorNode.length && !e)) {\n // Use the contents of the activator slot\n // There's either only one element in it or we\n // don't have a click event to use as a last resort\n const vm = this.activatorNode[0].componentInstance\n if (\n vm &&\n vm.$options.mixins && // Activatable is indirectly used via Menuable\n vm.$options.mixins.some((m: any) => m.options && ['activatable', 'menuable'].includes(m.options.name))\n ) {\n // Activator is actually another activatible component, use its activator (#8846)\n activator = (vm as any).getActivator()\n } else {\n activator = this.activatorNode[0].elm as HTMLElement\n }\n } else if (e) {\n // Activated by a click or focus event\n activator = (e.currentTarget || e.target) as HTMLElement\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n this.activatorElement = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return this.activatorElement\n },\n getContentSlot () {\n return getSlot(this, 'default', this.getValueProxy(), true)\n },\n getValueProxy (): object {\n const self = this\n return {\n get value () {\n return self.isActive\n },\n set value (isActive: boolean) {\n self.isActive = isActive\n },\n }\n },\n removeActivatorEvents () {\n if (\n !this.activator ||\n !this.activatorElement\n ) return\n\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n (this.activatorElement as any).removeEventListener(key, this.listeners[key])\n }\n\n this.listeners = {}\n },\n resetActivator () {\n this.removeActivatorEvents()\n this.activatorElement = null\n this.getActivator()\n this.addActivatorEvents()\n },\n },\n})\n","function createUTCDate (year: number, month = 0, day = 1) {\n let date\n if (year < 100 && year >= 0) {\n date = new Date(Date.UTC(year, month, day))\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(year)\n }\n } else {\n date = new Date(Date.UTC(year, month, day))\n }\n\n return date\n}\n\nfunction firstWeekOffset (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const firstWeekDayInFirstWeek = 7 + firstDayOfWeek - firstDayOfYear\n const firstWeekDayOfYear = (7 + createUTCDate(year, 0, firstWeekDayInFirstWeek).getUTCDay() - firstDayOfWeek) % 7\n\n return -firstWeekDayOfYear + firstWeekDayInFirstWeek - 1\n}\n\nfunction dayOfYear (year: number, month: number, day: number, firstDayOfWeek: number) {\n let dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][month]\n if (month > 1 && isLeapYear(year)) {\n dayOfYear++\n }\n\n return dayOfYear + day\n}\n\nfunction weeksInYear (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, firstDayOfYear)\n const weekOffsetNext = firstWeekOffset(year + 1, firstDayOfWeek, firstDayOfYear)\n const daysInYear = isLeapYear(year) ? 366 : 365\n\n return (daysInYear - weekOffset + weekOffsetNext) / 7\n}\n\nexport function weekNumber (year: number, month: number, day: number, firstDayOfWeek: number, localeFirstDayOfYear: number): number {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, localeFirstDayOfYear)\n const week = Math.ceil((dayOfYear(year, month, day, firstDayOfWeek) - weekOffset) / 7)\n\n if (week < 1) {\n return week + weeksInYear(year - 1, firstDayOfWeek, localeFirstDayOfYear)\n } else if (week > weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)) {\n return week - weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)\n } else {\n return week\n }\n}\n\nexport function isLeapYear (year: number): boolean {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\n}\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable<T extends string, C extends VueConstructor | null = null> = VueConstructor<ExtractVue<Registrable<T, C>> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory<T extends string, C extends VueConstructor | null = null> (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable<T, C> {\n return RegistrableInject<T, C>(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator<string>,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue, { VueConstructor } from 'vue'\n\nexport default function mixins<T extends VueConstructor[]> (...args: T): ExtractVue<T> extends infer V ? V extends Vue ? VueConstructor<V> : never : never\nexport default function mixins<T extends Vue> (...args: VueConstructor[]): VueConstructor<T>\nexport default function mixins (...args: VueConstructor[]): VueConstructor {\n return Vue.extend({ mixins: args })\n}\n\n/**\n * Returns the instance type from a VueConstructor\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue<T extends VueConstructor | VueConstructor[]> = T extends (infer U)[]\n ? UnionToIntersection<\n U extends VueConstructor<infer V> ? V : never\n >\n : T extends VueConstructor<infer V> ? V : never\n\ntype UnionToIntersection<U> =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n","import Vue from 'vue'\nimport { PropType, RenderContext } from 'vue/types/options'\n\ninterface options extends Vue {\n theme: {\n isDark: boolean\n }\n}\n\n/* @vue/component */\nconst Themeable = Vue.extend<options>().extend({\n name: 'themeable',\n\n provide (): object {\n return {\n theme: this.themeableProvide,\n }\n },\n\n inject: {\n theme: {\n default: {\n isDark: false,\n },\n },\n },\n\n props: {\n dark: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n light: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false,\n },\n }\n },\n\n computed: {\n appIsDark (): boolean {\n return this.$vuetify.theme.dark || false\n },\n isDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark\n }\n },\n themeClasses (): object {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark,\n }\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from v-app\n return this.appIsDark\n }\n },\n rootThemeClasses (): Dictionary<boolean> {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark,\n }\n },\n },\n\n watch: {\n isDark: {\n handler (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark\n }\n },\n immediate: true,\n },\n },\n})\n\nexport default Themeable\n\nexport function functionalThemeClasses (context: RenderContext): object {\n const vm = {\n ...context.props,\n ...context.injections,\n }\n const isDark = Themeable.options.computed.isDark.call(vm)\n return Themeable.options.computed.themeClasses.call({ isDark })\n}\n","// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins<options &\n /* eslint-disable indent */\n ExtractVue<typeof Bootable>\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions<boolean | string | Element>,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n","// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport { toXYZ } from './color/transformSRGB'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\n\nexport type ColorInt = number\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number }\nexport type HSVA = HSV & { a: number }\nexport type RGB = { r: number, g: number, b: number }\nexport type RGBA = RGB & { a: number }\nexport type HSL = { h: number, s: number, l: number }\nexport type HSLA = HSL & { a: number }\nexport type Hex = string\nexport type Hexa = string\nexport type Color = string | number | {}\n\nexport function isCssColor (color?: string | false): boolean {\n return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/)\n}\n\nexport function colorToInt (color: Color): ColorInt {\n let rgb\n\n if (typeof color === 'number') {\n rgb = color\n } else if (typeof color === 'string') {\n let c = color[0] === '#' ? color.substring(1) : color\n if (c.length === 3) {\n c = c.split('').map(char => char + char).join('')\n }\n if (c.length !== 6) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n }\n rgb = parseInt(c, 16)\n } else {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\n }\n\n if (rgb < 0) {\n consoleWarn(`Colors cannot be negative: '${color}'`)\n rgb = 0\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n rgb = 0xffffff\n }\n\n return rgb\n}\n\nexport function classToHex (\n color: string,\n colors: Record<string, Record<string, string>>,\n currentTheme: Partial<VuetifyThemeVariant>,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\nexport function intToHex (color: ColorInt): string {\n let hexColor: string = color.toString(16)\n\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor\n\n return '#' + hexColor\n}\n\nexport function colorToHex (color: Color): string {\n return intToHex(colorToInt(color))\n}\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport function HSVAtoRGBA (hsva: HSVA): RGBA {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\nexport function RGBAtoHSVA (rgba: RGBA): HSVA {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVAtoHSLA (hsva: HSVA): HSLA {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLAtoHSVA (hsl: HSLA): HSVA {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBAtoCSS (rgba: RGBA): string {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`\n}\n\nexport function RGBtoCSS (rgba: RGBA): string {\n return RGBAtoCSS({ ...rgba, a: 1 })\n}\n\nexport function RGBAtoHex (rgba: RGBA): Hex {\n const toHex = (v: number) => {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n }\n\n return `#${[\n toHex(rgba.r),\n toHex(rgba.g),\n toHex(rgba.b),\n toHex(Math.round(rgba.a * 255)),\n ].join('')}`\n}\n\nexport function HexToRGBA (hex: Hex): RGBA {\n const rgba = chunk(hex.slice(1), 2).map((c: string) => parseInt(c, 16))\n\n return {\n r: rgba[0],\n g: rgba[1],\n b: rgba[2],\n a: Math.round((rgba[3] / 255) * 100) / 100,\n }\n}\n\nexport function HexToHSVA (hex: Hex): HSVA {\n const rgb = HexToRGBA(hex)\n return RGBAtoHSVA(rgb)\n}\n\nexport function HSVAtoHex (hsva: HSVA): Hex {\n return RGBAtoHex(HSVAtoRGBA(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length === 6) {\n hex = padEnd(hex, 8, 'F')\n } else {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return `#${hex}`.toUpperCase().substr(0, 9)\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record<string, Record<string, string>>,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function RGBtoInt (rgba: RGBA): ColorInt {\n return (rgba.r << 16) + (rgba.g << 8) + rgba.b\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\nexport function contrastRatio (c1: RGBA, c2: RGBA): number {\n const [, y1] = toXYZ(RGBtoInt(c1))\n const [, y2] = toXYZ(RGBtoInt(c2))\n\n return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05)\n}\n","import { XYZ, LAB } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","import { keys } from '../../util/helpers'\nimport { colorToInt, intToHex, colorToHex, ColorInt } from '../../util/colorUtils'\nimport * as sRGB from '../../util/color/transformSRGB'\nimport * as LAB from '../../util/color/transformCIELAB'\nimport {\n VuetifyParsedTheme,\n VuetifyThemeItem,\n} from 'vuetify/types/services/theme'\n\nexport function parse (\n theme: Record<string, VuetifyThemeItem>,\n isItem = false,\n variations = true,\n): VuetifyParsedTheme {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n const parsedTheme: any = {}\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n if (value == null) continue\n\n if (!variations) {\n parsedTheme[name] = { base: intToHex(colorToInt(value)) }\n } else if (isItem) {\n /* istanbul ignore else */\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = colorToHex(value)\n }\n } else if (typeof value === 'object') {\n parsedTheme[name] = parse(value, true, variations)\n } else {\n parsedTheme[name] = genVariations(name, colorToInt(value))\n }\n }\n\n if (!isItem) {\n parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base\n }\n\n return parsedTheme\n}\n\n/**\n * Generate the CSS for a base color (.primary)\n */\nconst genBaseColor = (name: string, value: string): string => {\n return `\n.v-application .${name} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nconst genVariantColor = (name: string, variant: string, value: string): string => {\n const [type, n] = variant.split(/(\\d)/, 2)\n return `\n.v-application .${name}.${type}-${n} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\nconst genColorVariableName = (name: string, variant = 'base'): string => `--v-${name}-${variant}`\n\nconst genColorVariable = (name: string, variant = 'base'): string => `var(${genColorVariableName(name, variant)})`\n\nexport function genStyles (theme: VuetifyParsedTheme, cssVar = false): string {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n\n if (!colors.length) return ''\n\n let variablesCss = ''\n let css = ''\n\n const aColor = cssVar ? genColorVariable('anchor') : anchor\n css += `.v-application a { color: ${aColor}; }`\n cssVar && (variablesCss += ` ${genColorVariableName('anchor')}: ${anchor};\\n`)\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base)\n cssVar && (variablesCss += ` ${genColorVariableName(name)}: ${value.base};\\n`)\n\n const variants = keys(value)\n for (let i = 0; i < variants.length; ++i) {\n const variant = variants[i]\n const variantValue = value[variant]\n if (variant === 'base') continue\n\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue)\n cssVar && (variablesCss += ` ${genColorVariableName(name, variant)}: ${variantValue};\\n`)\n }\n }\n\n if (cssVar) {\n variablesCss = `:root {\\n${variablesCss}}\\n\\n`\n }\n\n return variablesCss + css\n}\n\nexport function genVariations (name: string, value: ColorInt): Record<string, string> {\n const values: Record<string, string> = {\n base: intToHex(value),\n }\n\n for (let i = 5; i > 0; --i) {\n values[`lighten${i}`] = intToHex(lighten(value, i))\n }\n\n for (let i = 1; i <= 4; ++i) {\n values[`darken${i}`] = intToHex(darken(value, i))\n }\n\n return values\n}\n\nexport function lighten (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n\nexport function darken (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n","/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: Vue, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial<VuetifyThemeVariant> = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`\n }\n\n private initTheme (root: Vue) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n root.$once('hook:created', () => {\n const obs = Vue.observable({ themes: this.themes })\n this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n })\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n","export type EasingFunction = (t: number) => number\n\n// linear\nexport const linear = (t: number) => t\n// accelerating from zero velocity\nexport const easeInQuad = (t: number) => t ** 2\n// decelerating to zero velocity\nexport const easeOutQuad = (t: number) => t * (2 - t)\n// acceleration until halfway, then deceleration\nexport const easeInOutQuad = (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t)\n// accelerating from zero velocity\nexport const easeInCubic = (t: number) => t ** 3\n// decelerating to zero velocity\nexport const easeOutCubic = (t: number) => --t ** 3 + 1\n// acceleration until halfway, then deceleration\nexport const easeInOutCubic = (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n// accelerating from zero velocity\nexport const easeInQuart = (t: number) => t ** 4\n// decelerating to zero velocity\nexport const easeOutQuart = (t: number) => 1 - --t ** 4\n// acceleration until halfway, then deceleration\nexport const easeInOutQuart = (t: number) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t)\n// accelerating from zero velocity\nexport const easeInQuint = (t: number) => t ** 5\n// decelerating to zero velocity\nexport const easeOutQuint = (t: number) => 1 + --t ** 5\n// acceleration until halfway, then deceleration\nexport const easeInOutQuint = (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n","import Vue from 'vue'\n\n// Return target's cumulative offset from the top\nexport function getOffset (target: any): number {\n if (typeof target === 'number') {\n return target\n }\n\n let el = $(target)\n if (!el) {\n throw typeof target === 'string'\n ? new Error(`Target element \"${target}\" not found.`)\n : new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${type(target)} instead.`)\n }\n\n let totalOffset = 0\n while (el) {\n totalOffset += el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function getContainer (container: any): HTMLElement {\n const el = $(container)\n\n if (el) return el\n\n throw typeof container === 'string'\n ? new Error(`Container element \"${container}\" not found.`)\n : new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${type(container)} instead.`)\n}\n\nfunction type (el: any) {\n return el == null ? el : el.constructor.name\n}\n\nfunction $ (el: any): HTMLElement | null {\n if (typeof el === 'string') {\n return document.querySelector<HTMLElement>(el)\n } else if (el && el._isVue) {\n return (el as Vue).$el as HTMLElement\n } else if (el instanceof HTMLElement) {\n return el\n } else {\n return null\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as easingPatterns from './easing-patterns'\nimport {\n getContainer,\n getOffset,\n} from './util'\n\n// Types\nimport { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'\n\nimport { VuetifyServiceContract } from 'vuetify/types/services'\n\nexport default function goTo (\n _target: VuetifyGoToTarget,\n _settings: GoToOptions = {}\n): Promise<number> {\n const settings: GoToOptions = {\n container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,\n duration: 500,\n offset: 0,\n easing: 'easeInOutCubic',\n appOffset: true,\n ..._settings,\n }\n const container = getContainer(settings.container)\n\n /* istanbul ignore else */\n if (settings.appOffset && goTo.framework.application) {\n const isDrawer = container.classList.contains('v-navigation-drawer')\n const isClipped = container.classList.contains('v-navigation-drawer--clipped')\n const { bar, top } = goTo.framework.application as any\n\n settings.offset += bar\n /* istanbul ignore else */\n if (!isDrawer || isClipped) settings.offset += top\n }\n\n const startTime = performance.now()\n\n let targetLocation: number\n if (typeof _target === 'number') {\n targetLocation = getOffset(_target) - settings.offset!\n } else {\n targetLocation = getOffset(_target) - getOffset(container) - settings.offset!\n }\n\n const startLocation = container.scrollTop\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const ease = typeof settings.easing === 'function'\n ? settings.easing\n : easingPatterns[settings.easing!]\n /* istanbul ignore else */\n if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`)\n\n // Cannot be tested properly in jsdom\n /* istanbul ignore next */\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1)\n\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress))\n\n const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight\n const reachBottom = clientHeight + container.scrollTop >= container.scrollHeight\n if (\n progress === 1 ||\n // Need to go lower but reach bottom\n (targetLocation > container.scrollTop && reachBottom)\n ) {\n return resolve(targetLocation)\n }\n\n requestAnimationFrame(step)\n }))\n}\n\ngoTo.framework = {} as Record<string, VuetifyServiceContract>\ngoTo.init = () => {}\n\nexport class Goto extends Service {\n public static property: 'goTo' = 'goTo'\n\n constructor () {\n super()\n\n return goTo\n }\n}\n","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType<Vue> & WatchHandler<any> {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary<string>,\n listeners$: {} as Dictionary<Function | Function[]>,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n props: {\n tag: {\n type: String,\n default: el,\n },\n },\n\n render (h, { data, props, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(props.tag, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick<VNodeDirective, 'arg' | 'modifiers' | 'value'>\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n const once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) } /* eslint-disable-line no-console */\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys<T, K extends keyof T> (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n // Look for custom component in the configuration\n const component = vm.$vuetify.icons.component\n\n // Look for overrides\n if (iconName.startsWith('$')) {\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n const override = getObjectValueByPath(vm, iconPath, iconName)\n\n if (typeof override === 'string') iconName = override\n else return override\n }\n\n if (component == null) {\n return iconName\n }\n\n return {\n component,\n props: {\n icon: iconName,\n },\n }\n}\n\nexport function keys<O> (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems<T extends any = any> (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup<T>[] {\n const key = groupBy[0]\n const groups: ItemGroup<T>[] = []\n let current\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key, null)\n if (current !== val) {\n current = val\n groups.push({\n name: val ?? '',\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray<T> (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems<T extends any = any> (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record<string, DataTableCompareFunction<T>>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems<T extends any = any> (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `<template slot=\"default\">`\n * - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nexport function getSlotType<T extends boolean = false> (vm: Vue, name: string, split?: T): (T extends true ? 'v-slot' : never) | 'normal' | 'scoped' | void {\n if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && (vm.$scopedSlots[name] as any).name) {\n return split ? 'v-slot' as any : 'scoped'\n }\n if (vm.$slots.hasOwnProperty(name)) return 'normal'\n if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped'\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle<T extends (...args: any[]) => any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters<T>): void | ReturnType<T> => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function getPrefixedScopedSlots (prefix: string, scopedSlots: any) {\n return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj: any, k: string) => {\n obj[k.replace(prefix, '')] = scopedSlots[k]\n return obj\n }, {})\n}\n\nexport function getSlot (vm: Vue, name = 'default', data?: object | (() => object), optional = false) {\n if (vm.$scopedSlots.hasOwnProperty(name)) {\n return vm.$scopedSlots[name]!(data instanceof Function ? data() : data)\n } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {\n return vm.$slots[name]\n }\n return undefined\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, binary = false): string {\n const base = binary ? 1024 : 1000\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record<string, any> | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Dictionary<any> = {},\n target: Dictionary<any> = {}\n) {\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n source[key] = mergeDeep(sourceProperty, targetProperty)\n\n continue\n }\n\n source[key] = targetProperty\n }\n\n return source\n}\n\nexport function fillArray<T> (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n\n/** Polyfill for Event.prototype.composedPath */\nexport function composedPath (e: Event): EventTarget[] {\n if (e.composedPath) return e.composedPath()\n\n const path = []\n let el = e.target as Element\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n\n return path\n }\n\n el = el.parentElement!\n }\n return path\n}\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator<typeof deepEqual>,\n },\n})\n","import { ColorInt, XYZ } from '../colorUtils'\nimport { clamp } from '../../util/helpers'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): ColorInt {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n // Rescale back to [0, 255]\n return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0)\n}\n\nexport function toXYZ (rgb: ColorInt): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n const r = transform((rgb >> 16 & 0xff) / 255)\n const g = transform((rgb >> 8 & 0xff) / 255)\n const b = transform((rgb >> 0 & 0xff) / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { TargetPropValues, TargetProp, Application as IApplication } from 'vuetify/types/services/application'\n\nexport class Application extends Service implements IApplication {\n static property: 'application' = 'application'\n\n bar = 0\n\n top = 0\n\n left = 0\n\n insetFooter = 0\n\n right = 0\n\n bottom = 0\n\n footer = 0\n\n application: Dictionary<TargetPropValues> = {\n bar: {},\n top: {},\n left: {},\n insetFooter: {},\n right: {},\n bottom: {},\n footer: {},\n }\n\n register (\n uid: number,\n location: TargetProp,\n size: number\n ) {\n this.application[location][uid] = size\n\n this.update(location)\n }\n\n unregister (uid: number, location: TargetProp) {\n if (this.application[location][uid] == null) return\n\n delete this.application[location][uid]\n this.update(location)\n }\n\n update (location: TargetProp) {\n this[location] = Object.values(this.application[location])\n .reduce((acc: number, cur: number): number => (acc + cur), 0)\n }\n}\n","// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable>().extend({\n name: 'bootable',\n\n props: {\n eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record<string, boolean> {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable<T extends string = 'value'> = VueConstructor<Vue & {\n internalLazyValue: unknown\n internalValue: unknown\n} & Record<T, any>>\n\nexport function factory<T extends string = 'value'> (prop?: T, event?: string): Proxyable<T>\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins<options>().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n },\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n","export default {\n badge: 'Badge',\n close: 'Close',\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...',\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.',\n },\n sortBy: 'Sort by',\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}',\n },\n datePicker: {\n itemsSelected: '{0} selected',\n nextMonthAriaLabel: 'Next month',\n nextYearAriaLabel: 'Next year',\n prevMonthAriaLabel: 'Previous month',\n prevYearAriaLabel: 'Previous year',\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}',\n },\n },\n calendar: {\n moreEvents: '{0} more',\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n wrapper: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Goto Page {0}',\n currentPage: 'Current Page, Page {0}',\n },\n },\n rating: {\n ariaLabel: {\n icon: 'Rating {0} of {1}',\n },\n },\n}\n","// Styles\nimport '../../styles/main.sass'\n\n// Locale\nimport { en } from '../../locale'\n\n// Icons\n// TODO: Enable for v3\n// import mdi from '../../services/icons/presets/mdi'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\n\nexport const preset: VuetifyPreset = {\n breakpoint: {\n // TODO: update to MD2 spec in v3 - 1280\n mobileBreakpoint: 1264,\n scrollBarWidth: 16,\n thresholds: {\n xs: 600,\n sm: 960,\n md: 1280,\n lg: 1920,\n },\n },\n icons: {\n // TODO: remove v3\n iconfont: 'mdi',\n values: {},\n },\n lang: {\n current: 'en',\n locales: { en },\n // Default translator exists in lang service\n t: undefined as any,\n },\n rtl: false,\n theme: {\n dark: false,\n default: 'light',\n disable: false,\n options: {\n cspNonce: undefined,\n customProperties: undefined,\n minifyTheme: undefined,\n themeCache: undefined,\n variations: true,\n },\n themes: {\n light: {\n primary: '#1976D2',\n secondary: '#424242',\n accent: '#82B1FF',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n dark: {\n primary: '#2196F3',\n secondary: '#424242',\n accent: '#FF4081',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n },\n },\n}\n","// Preset\nimport { preset as Preset } from '../../presets/default'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport Vuetify from 'vuetify/types'\nimport { Service } from '../service'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\n\nexport class Presets extends Service {\n static property: 'presets' = 'presets'\n\n constructor (\n parentPreset: Partial<UserVuetifyPreset>,\n parent: Vuetify,\n ) {\n super()\n\n // The default preset\n const defaultPreset = mergeDeep({}, Preset)\n // The user provided preset\n const { userPreset } = parent\n // The user provided global preset\n const {\n preset: globalPreset = {},\n ...preset\n } = userPreset\n\n if (globalPreset.preset != null) {\n consoleWarn('Global presets do not support the **preset** option, it can be safely omitted')\n }\n\n parent.preset = mergeDeep(\n mergeDeep(defaultPreset, globalPreset),\n preset\n ) as VuetifyPreset\n }\n}\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record<string, boolean> {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false,\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n },\n})\n","/* eslint-disable no-console */\nimport Vuetify from '../framework'\n\nfunction createMessage (message: string, vm?: any, parent?: any): string | void {\n if (Vuetify.config.silent) return\n\n if (parent) {\n vm = {\n _isVue: true,\n $parent: parent,\n $options: vm,\n }\n }\n\n if (vm) {\n // Only show each message once per instance\n vm.$_alreadyWarned = vm.$_alreadyWarned || []\n if (vm.$_alreadyWarned.includes(message)) return\n vm.$_alreadyWarned.push(message)\n }\n\n return `[Vuetify] ${message}` + (\n vm ? generateComponentTrace(vm) : ''\n )\n}\n\nexport function consoleInfo (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.info(newMessage)\n}\n\nexport function consoleWarn (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.warn(newMessage)\n}\n\nexport function consoleError (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.error(newMessage)\n}\n\nexport function deprecate (original: string, replacement: string, vm?: any, parent?: any) {\n consoleWarn(`[UPGRADE] '${original}' is deprecated, use '${replacement}' instead.`, vm, parent)\n}\nexport function breaking (original: string, replacement: string, vm?: any, parent?: any) {\n consoleError(`[BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`, vm, parent)\n}\nexport function removed (original: string, vm?: any, parent?: any) {\n consoleWarn(`[REMOVED] '${original}' has been removed. You can safely omit it.`, vm, parent)\n}\n\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\n\nconst classifyRE = /(?:^|[-_])(\\w)/g\nconst classify = (str: string) => str\n .replace(classifyRE, c => c.toUpperCase())\n .replace(/[-_]/g, '')\n\nfunction formatComponentName (vm: any, includeFile?: boolean): string {\n if (vm.$root === vm) {\n return '<Root>'\n }\n const options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {}\n let name = options.name || options._componentTag\n const file = options.__file\n if (!name && file) {\n const match = file.match(/([^/\\\\]+)\\.vue$/)\n name = match && match[1]\n }\n\n return (\n (name ? `<${classify(name)}>` : `<Anonymous>`) +\n (file && includeFile !== false ? ` at ${file}` : '')\n )\n}\n\nfunction generateComponentTrace (vm: any): string {\n if (vm._isVue && vm.$parent) {\n const tree: any[] = []\n let currentRecursiveSequence = 0\n while (vm) {\n if (tree.length > 0) {\n const last: any = tree[tree.length - 1]\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++\n vm = vm.$parent\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence]\n currentRecursiveSequence = 0\n }\n }\n tree.push(vm)\n vm = vm.$parent\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map((vm, i) => `${\n i === 0 ? '---> ' : ' '.repeat(5 + i * 2)\n }${\n Array.isArray(vm)\n ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`\n : formatComponentName(vm)\n }`)\n .join('\\n')\n } else {\n return `\\n\\n(found in ${formatComponentName(vm)})`\n }\n}\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary<any> = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary<any> = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","// Mixins\nimport Colorable from '../colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { kebabCase } from '../../util/helpers'\n\n// Types\nimport { VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable\n).extend({\n methods: {\n genPickerButton (\n prop: string,\n value: any,\n content: VNodeChildren,\n readonly = false,\n staticClass = ''\n ) {\n const active = (this as any)[prop] === value\n const click = (event: Event) => {\n event.stopPropagation()\n this.$emit(`update:${kebabCase(prop)}`, value)\n }\n\n return this.$createElement('div', {\n staticClass: `v-picker__title__btn ${staticClass}`.trim(),\n class: {\n 'v-picker__title__btn--active': active,\n 'v-picker__title__btn--readonly': readonly,\n },\n on: (active || readonly) ? undefined : { click },\n }, Array.isArray(content) ? content : [content])\n },\n },\n})\n","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\n}\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'localable',\n\n props: {\n locale: String,\n },\n\n computed: {\n currentLocale (): string {\n return this.locale || this.$vuetify.lang.current\n },\n },\n})\n","// 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<number | BreakpointName>,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'returnable',\n\n props: {\n returnValue: null as any,\n },\n\n data: () => ({\n isActive: false,\n originalValue: null as any,\n }),\n\n watch: {\n isActive (val) {\n if (val) {\n this.originalValue = this.returnValue\n } else {\n this.$emit('update:return-value', this.originalValue)\n }\n },\n },\n\n methods: {\n save (value: any) {\n this.originalValue = value\n setTimeout(() => {\n this.isActive = false\n })\n },\n },\n})\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable & Stackable & options>().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { consoleError, consoleWarn } from '../../util/console'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyLocale,\n Lang as ILang,\n} from 'vuetify/types/services/lang'\n\nconst LANG_PREFIX = '$vuetify.'\nconst fallback = Symbol('Lang fallback')\n\nfunction getTranslation (\n locale: VuetifyLocale,\n key: string,\n usingDefault = false,\n defaultLocale: VuetifyLocale\n): string {\n const shortKey = key.replace(LANG_PREFIX, '')\n let translation = getObjectValueByPath(locale, shortKey, fallback) as string | typeof fallback\n\n if (translation === fallback) {\n if (usingDefault) {\n consoleError(`Translation key \"${shortKey}\" not found in fallback`)\n translation = key\n } else {\n consoleWarn(`Translation key \"${shortKey}\" not found, falling back to default`)\n translation = getTranslation(defaultLocale, key, true, defaultLocale)\n }\n }\n\n return translation\n}\n\nexport class Lang extends Service implements ILang {\n static property: 'lang' = 'lang'\n\n public current: ILang['current']\n\n public defaultLocale = 'en'\n\n public locales: ILang['locales']\n\n private translator: ILang['t']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n current,\n locales,\n t,\n } = preset[Lang.property]\n\n this.current = current\n this.locales = locales\n this.translator = t || this.defaultTranslator\n }\n\n public currentLocale (key: string) {\n const translation = this.locales[this.current]\n const defaultLocale = this.locales[this.defaultLocale]\n\n return getTranslation(translation, key, false, defaultLocale)\n }\n\n public t (key: string, ...params: any[]) {\n if (!key.startsWith(LANG_PREFIX)) return this.replace(key, params)\n\n return this.translator(key, ...params)\n }\n\n private defaultTranslator (key: string, ...params: any[]) {\n return this.replace(this.currentLocale(key), params)\n }\n\n private replace (str: string, params: any[]) {\n return str.replace(/\\{(\\d+)\\}/g, (match: string, index: string) => {\n /* istanbul ignore next */\n return String(params[+index])\n })\n }\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable<T extends string = 'value'> = VueConstructor<Vue & { isActive: boolean } & Record<T, any>>\n\nexport function factory<T extends string = 'value'> (prop?: T, event?: string): Toggleable<T>\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String,\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<typeof baseMixins> {\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<options>().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise<void>(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","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onBlur () {\n this.isFocused = false\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus () {\n this.isFocused = true\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record<keyof typeof availableProps, boolean>\n\nexport type Positionable<S extends keyof props> = VueConstructor<Vue & { [P in S]: boolean }, { [P in S]: BooleanConstructor }>\n\nexport function factory <S extends keyof props> (selected?: S[]): Positionable<S>\nexport function factory (selected: undefined): OptionsVue<Vue, {}, {}, {}, props, typeof availableProps>\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Contracts\nimport { VuetifyServiceContract } from 'vuetify/types/services/index'\n\n// Types\nimport Vue from 'vue'\n\nexport class Service implements VuetifyServiceContract {\n framework = {}\n\n init (root: Vue, ssrContext?: object) {}\n}\n"],"sourceRoot":""}