{"version":3,"sources":["webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/mixins/ssr-bootable/index.ts","webpack:///../../../src/mixins/applicationable/index.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/overlayable/index.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VApp/VApp.ts","webpack:///../../../src/components/VMain/VMain.ts","webpack:///../../../src/components/VFooter/VFooter.ts","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///../../../src/directives/scroll/index.ts","webpack:///../../../src/mixins/scrollable/index.ts","webpack:///../../../src/components/VAppBar/VAppBar.ts"],"names":["VCardActions","createSimpleFunctional","VCardSubtitle","VCardText","VCardTitle","VCard","mixins","Loadable","Routable","VSheet","extend","name","props","flat","Boolean","hover","img","String","link","loaderHeight","type","Number","default","raised","computed","classes","options","call","this","isClickable","loading","disabled","styles","style","background","methods","genProgress","render","$createElement","staticClass","key","h","generateRouteLink","tag","data","attrs","tabindex","setBackgroundColor","color","$slots","Vue","isBooted","mounted","window","requestAnimationFrame","$el","setAttribute","applicationable","value","events","PositionableFactory","app","applicationProperty","watch","x","prev","removeApplication","callUpdate","newVal","oldVal","$vuetify","application","unregister","_uid","activated","created","i","length","$watch","deactivated","destroyed","register","updateApplication","force","VResponsive","Measurable","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","undefined","__cachedSizer","genContent","class","getSlot","measurableStyles","on","$listeners","hasIntersect","Themeable","directives","intersect","alt","contain","eager","gradient","lazySrc","Object","root","rootMargin","threshold","position","sizes","src","srcset","transition","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","push","join","backgroundPosition","mode","loadImage","init","entries","observer","isIntersecting","lazyImg","Image","pollForSize","onLoad","getSrc","$emit","endsWith","startsWith","naturalHeight","onError","onload","decode","catch","err","consoleWarn","message","then","onerror","timeout","poll","complete","setTimeout","content","_b","width","__genPlaceholder","slot","placeholder","appear","node","mergeData","role","themeClasses","modifiers","once","handler","children","Colorable","Toggleable","absolute","dark","opacity","zIndex","__scrim","computedOpacity","isActive","VOverlay","hideOverlay","overlayColor","overlayOpacity","animationFrame","overlay","removeOverlay","genOverlay","beforeDestroy","createOverlay","propsData","$mount","parent","parentNode","document","querySelector","insertBefore","firstChild","hideScroll","activeZIndex","getZIndex","showScroll","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","e","includes","target","tagName","isContentEditable","up","keyCodes","pageup","down","pagedown","keyCode","deltaY","body","checkPath","preventDefault","hasScrollbar","el","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","scrollHeight","clientHeight","overflowX","scrollWidth","clientWidth","shouldScroll","hasAttribute","alreadyAtStart","alreadyAtEnd","dir","shiftKey","deltaX","delta","scrollTop","scrollLeft","isInside","path","composedPath","dialog","$refs","selected","getSelection","anchorNode","index","documentElement","breakpoint","smAndDown","classList","add","addPassiveEventListener","passive","addEventListener","remove","removeEventListener","baseMixins","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","ClickOutside","fullscreen","light","maxWidth","noClickAnimation","origin","persistent","retainFocus","scrollable","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","trim","contentClasses","hasActivator","activator","$scopedSlots","val","show","unbind","_a","focus","$attrs","hasOwnProperty","removed","beforeMount","$nextTick","animateClick","clearTimeout","closeConditional","_isDestroyed","contains","getMaxZIndex","activeElement","bind","onFocusin","onClickOutside","onKeydown","esc","getOpenDependents","getActivator","getOpenDependentElements","some","focusable","querySelectorAll","find","matches","showLazyContent","VThemeProvider","getScopeIdAttrs","keydown","ref","genTransition","genInnerContent","include","transformOrigin","convertToUnit","getContentSlot","attach","genActivator","id","isDark","theme","beforeCreate","$root","Error","wrapper","rtl","domProps","SSRBootable","bar","top","right","footer","insetFooter","bottom","left","paddingTop","paddingRight","paddingLeft","Applicationable","height","inset","padless","fixed","computedBottom","isPositioned","computedLeft","computedRight","parseInt","isNaN","collapse","dense","extended","extensionHeight","floating","prominent","short","isExtended","computedHeight","computedContentHeight","isCollapsed","isProminent","forEach","original","replacement","breaking","genBackground","VImg","genExtension","extension","unshift","Scroll","inserted","binding","vnode","self","arg","_onScroll","context","scrollTarget","scrollThreshold","currentScroll","currentThreshold","isScrollingUp","previousScroll","savedScroll","canScroll","computedScrollThreshold","onScroll","pageYOffset","Math","abs","thresholdMet","VToolbar","Scrollable","provide","VAppBar","clippedLeft","clippedRight","collapseOnScroll","elevateOnScroll","fadeImgOnScroll","hideOnScroll","invertedScroll","scrollOffScreen","shrinkOnScroll","hideShadow","scrollRatio","max","min","computedOriginalHeight","computedFontSize","computedMarginTop","computedTransform","fontSize","marginTop","transform"],"mappings":"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","file":"c9a5ea7.js","sourcesContent":["import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import 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","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","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n },\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n attrs: {\n tabindex: this.isActive ? 0 : undefined,\n },\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VFooter.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types/vnode'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Applicationable('footer', [\n 'height',\n 'inset',\n ]),\n SSRBootable\n).extend({\n name: 'v-footer',\n\n props: {\n height: {\n default: 'auto',\n type: [Number, String],\n },\n inset: Boolean,\n padless: Boolean,\n tag: {\n type: String,\n default: 'footer',\n },\n },\n\n computed: {\n applicationProperty (): string {\n return this.inset ? 'insetFooter' : 'footer'\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-footer--absolute': this.absolute,\n 'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-footer--padless': this.padless,\n 'v-footer--inset': this.inset,\n }\n },\n computedBottom (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app\n ? this.$vuetify.application.bottom\n : 0\n },\n computedLeft (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.left\n : 0\n },\n computedRight (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.right\n : 0\n },\n isPositioned (): boolean {\n return Boolean(\n this.absolute ||\n this.fixed ||\n this.app\n )\n },\n styles (): object {\n const height = parseInt(this.height)\n\n return {\n ...VSheet.options.computed.styles.call(this),\n height: isNaN(height) ? height : convertToUnit(height),\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n bottom: convertToUnit(this.computedBottom),\n }\n },\n },\n\n methods: {\n updateApplication () {\n const height = parseInt(this.height)\n\n return isNaN(height)\n ? this.$el ? this.$el.clientHeight : 0\n : height\n },\n },\n\n render (h): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n class: this.classes,\n style: this.styles,\n })\n\n return h(this.tag, data, this.$slots.default)\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions, VNode } from 'vue'\n\ninterface ScrollVNodeDirective extends Omit {\n value: EventListener | {\n handler: EventListener\n options?: boolean | AddEventListenerOptions\n } | EventListenerObject & { options?: boolean | AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n const { self = false } = binding.modifiers || {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![vnode.context!._uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n if (!el._onScroll?.[vnode.context!._uid]) return\n\n const { handler, options, target = el } = el._onScroll[vnode.context!._uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[vnode.context!._uid]\n}\n\nexport const Scroll = {\n inserted,\n unbind,\n} as DirectiveOptions\n\nexport default Scroll\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","// Styles\nimport './VAppBar.sass'\n\n// Extensions\nimport VToolbar from '../VToolbar/VToolbar'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Scrollable from '../../mixins/scrollable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VToolbar,\n Scrollable,\n SSRBootable,\n Toggleable,\n Applicationable('top', [\n 'clippedLeft',\n 'clippedRight',\n 'computedHeight',\n 'invertedScroll',\n 'isExtended',\n 'isProminent',\n 'value',\n ])\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-app-bar',\n\n directives: { Scroll },\n\n provide (): object {\n return { VAppBar: this }\n },\n\n props: {\n clippedLeft: Boolean,\n clippedRight: Boolean,\n collapseOnScroll: Boolean,\n elevateOnScroll: Boolean,\n fadeImgOnScroll: Boolean,\n hideOnScroll: Boolean,\n invertedScroll: Boolean,\n scrollOffScreen: Boolean,\n shrinkOnScroll: Boolean,\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n isActive: this.value,\n }\n },\n\n computed: {\n applicationProperty (): string {\n return !this.bottom ? 'top' : 'bottom'\n },\n canScroll (): boolean {\n return (\n Scrollable.options.computed.canScroll.call(this) &&\n (\n this.invertedScroll ||\n this.elevateOnScroll ||\n this.hideOnScroll ||\n this.collapseOnScroll ||\n this.isBooted ||\n // If falsy, user has provided an\n // explicit value which should\n // overwrite anything we do\n !this.value\n )\n )\n },\n classes (): object {\n return {\n ...VToolbar.options.computed.classes.call(this),\n 'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n 'v-app-bar': true,\n 'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n 'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n 'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n 'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n 'v-app-bar--hide-shadow': this.hideShadow,\n 'v-app-bar--is-scrolled': this.currentScroll > 0,\n 'v-app-bar--shrink-on-scroll': this.shrinkOnScroll,\n }\n },\n scrollRatio (): number {\n const threshold = this.computedScrollThreshold\n return Math.max((threshold - this.currentScroll) / threshold, 0)\n },\n computedContentHeight (): number {\n if (!this.shrinkOnScroll) return VToolbar.options.computed.computedContentHeight.call(this)\n\n const min = this.dense ? 48 : 56\n const max = this.computedOriginalHeight\n\n return min + (max - min) * this.scrollRatio\n },\n computedFontSize (): number | undefined {\n if (!this.isProminent) return undefined\n\n const min = 1.25\n const max = 1.5\n\n return min + (max - min) * this.scrollRatio\n },\n computedLeft (): number {\n if (!this.app || this.clippedLeft) return 0\n\n return this.$vuetify.application.left\n },\n computedMarginTop (): number {\n if (!this.app) return 0\n\n return this.$vuetify.application.bar\n },\n computedOpacity (): number | undefined {\n if (!this.fadeImgOnScroll) return undefined\n\n return this.scrollRatio\n },\n computedOriginalHeight (): number {\n let height = VToolbar.options.computed.computedContentHeight.call(this)\n if (this.isExtended) height += parseInt(this.extensionHeight)\n return height\n },\n computedRight (): number {\n if (!this.app || this.clippedRight) return 0\n\n return this.$vuetify.application.right\n },\n computedScrollThreshold (): number {\n if (this.scrollThreshold) return Number(this.scrollThreshold)\n\n return this.computedOriginalHeight - (this.dense ? 48 : 56)\n },\n computedTransform (): number {\n if (\n !this.canScroll ||\n (this.elevateOnScroll && this.currentScroll === 0 && this.isActive)\n ) return 0\n\n if (this.isActive) return 0\n\n const scrollOffScreen = this.scrollOffScreen\n ? this.computedHeight\n : this.computedContentHeight\n\n return this.bottom ? scrollOffScreen : -scrollOffScreen\n },\n hideShadow (): boolean {\n if (this.elevateOnScroll && this.isExtended) {\n return this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.elevateOnScroll) {\n return this.currentScroll === 0 ||\n this.computedTransform < 0\n }\n\n return (\n !this.isExtended ||\n this.scrollOffScreen\n ) && this.computedTransform !== 0\n },\n isCollapsed (): boolean {\n if (!this.collapseOnScroll) {\n return VToolbar.options.computed.isCollapsed.call(this)\n }\n\n return this.currentScroll > 0\n },\n isProminent (): boolean {\n return (\n VToolbar.options.computed.isProminent.call(this) ||\n this.shrinkOnScroll\n )\n },\n styles (): object {\n return {\n ...VToolbar.options.computed.styles.call(this),\n fontSize: convertToUnit(this.computedFontSize, 'rem'),\n marginTop: convertToUnit(this.computedMarginTop),\n transform: `translateY(${convertToUnit(this.computedTransform)})`,\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n }\n },\n },\n\n watch: {\n canScroll: 'onScroll',\n computedTransform () {\n // Normally we do not want the v-app-bar\n // to update the application top value\n // to avoid screen jump. However, in\n // this situation, we must so that\n // the clipped drawer can update\n // its top value when scrolled\n if (\n !this.canScroll ||\n (!this.clippedLeft && !this.clippedRight)\n ) return\n\n this.callUpdate()\n },\n invertedScroll (val: boolean) {\n this.isActive = !val || this.currentScroll !== 0\n },\n hideOnScroll (val: boolean) {\n this.isActive = !val || this.currentScroll < this.computedScrollThreshold\n },\n },\n\n created () {\n if (this.invertedScroll) this.isActive = false\n },\n\n methods: {\n genBackground () {\n const render = VToolbar.options.methods.genBackground.call(this)\n\n render.data = this._b(render.data || {}, render.tag!, {\n style: { opacity: this.computedOpacity },\n })\n\n return render\n },\n updateApplication (): number {\n return this.invertedScroll\n ? 0\n : this.computedHeight + this.computedTransform\n },\n thresholdMet () {\n if (this.invertedScroll) {\n this.isActive = this.currentScroll > this.computedScrollThreshold\n return\n }\n\n if (this.hideOnScroll) {\n this.isActive = this.isScrollingUp ||\n this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.currentThreshold < this.computedScrollThreshold) return\n\n this.savedScroll = this.currentScroll\n },\n },\n\n render (h): VNode {\n const render = VToolbar.options.render.call(this, h)\n\n render.data = render.data || {}\n\n if (this.canScroll) {\n render.data.directives = render.data.directives || []\n render.data.directives.push({\n arg: this.scrollTarget,\n name: 'scroll',\n value: this.onScroll,\n })\n }\n\n return render\n },\n})\n"],"sourceRoot":""}