{"version":3,"sources":["webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/mixins/applicationable/index.ts","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VImg/VImg.ts","webpack:///../../../src/mixins/dependent/index.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../src/mixins/ssr-bootable/index.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/overlayable/index.ts","webpack:///../../../src/components/VNavigationDrawer/VNavigationDrawer.ts","webpack:///../../../src/directives/scroll/index.ts"],"names":["createSimpleFunctional","applicationable","value","events","mixins","PositionableFactory","extend","name","props","app","Boolean","computed","applicationProperty","watch","x","prev","this","removeApplication","callUpdate","newVal","oldVal","$vuetify","application","unregister","_uid","activated","created","i","length","$watch","mounted","deactivated","destroyed","methods","register","updateApplication","force","VSheet","absolute","bottom","collapse","dense","extended","extensionHeight","default","type","Number","String","flat","floating","prominent","short","src","Object","tag","data","isExtended","computedHeight","height","computedContentHeight","parseInt","isCollapsed","isNaN","isProminent","breakpoint","smAndDown","classes","options","call","styles","measurableStyles","convertToUnit","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","genBackground","image","$scopedSlots","img","$createElement","VImg","staticClass","genContent","style","getSlot","genExtension","render","h","extension","children","setBackgroundColor","color","class","on","$listeners","push","unshift","Measurable","aspectRatio","contentClass","computedAspectRatio","aspectStyle","paddingBottom","undefined","__cachedSizer","VResponsive","hasIntersect","window","Themeable","directives","intersect","alt","contain","eager","gradient","lazySrc","root","rootMargin","threshold","position","sizes","srcset","transition","currentSrc","isLoading","calculatedAspectRatio","naturalWidth","hasError","normalisedSrc","aspect","__cachedImage","backgroundImage","join","backgroundPosition","key","attrs","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","searchChildren","results","index","child","isActive","isDependent","$children","closeDependents","val","openDependents","getOpenDependents","getOpenDependentElements","result","getClickableDependentElements","$el","$refs","overlay","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","Math","abs","left","right","up","down","touchstart","event","touch","changedTouches","clientX","clientY","start","assign","touchend","end","touchmove","touchmoveX","touchmoveY","move","createHandlers","e","inserted","el","binding","vnode","target","parent","parentElement","passive","handlers","_touchHandlers","context","keys","eventName","addEventListener","unbind","removeEventListener","Touch","Vue","isBooted","requestAnimationFrame","setAttribute","mobileBreakpoint","validator","v","includes","isMobile","mobile","mobileWidth","isNumber","deprecate","Colorable","Toggleable","dark","opacity","zIndex","__scrim","computedOpacity","$slots","VOverlay","hideOverlay","overlayColor","overlayOpacity","animationFrame","removeOverlay","genOverlay","beforeDestroy","createOverlay","propsData","$mount","parentNode","document","querySelector","insertBefore","firstChild","hideScroll","activeZIndex","getZIndex","showScroll","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","tagName","isContentEditable","keyCodes","pageup","pagedown","keyCode","deltaY","body","checkPath","preventDefault","hasScrollbar","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","scrollHeight","clientHeight","overflowX","scrollWidth","clientWidth","shouldScroll","hasAttribute","dir","shiftKey","deltaX","delta","alreadyAtStart","alreadyAtEnd","scrollTop","scrollLeft","scrollingUp","scrollingDown","isInside","path","composedPath","dialog","selected","getSelection","anchorNode","documentElement","classList","add","addPassiveEventListener","remove","baseMixins","Applicationable","Dependent","Mobile","Overlayable","SSRBootable","ClickOutside","Resize","provide","isInNav","clipped","disableResizeWatcher","disableRouteWatcher","expandOnHover","miniVariant","miniVariantWidth","permanent","stateless","temporary","touchless","isMouseover","touchArea","stackMinZIndex","fixed","isMiniVariant","computedMaxHeight","hasApp","footer","bar","top","computedTop","computedTransform","isBottom","computedWidth","reactsToClick","reactsToMobile","reactsToResize","reactsToRoute","showOverlay","translate","maxHeight","transform","$route","updateMiniVariant","beforeMount","calculateTouchArea","parentRect","getBoundingClientRect","closeConditional","_isDestroyed","genAppend","genPosition","genDirectives","include","swipeLeft","swipeRight","genListeners","mouseenter","mouseleave","transitionend","currentTarget","resizeEvent","createEvent","initUIEvent","dispatchEvent","click","genPrepend","genBorder","onRouteChange","self","arg","_onScroll","_a","Scroll"],"mappings":"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","file":"js/chunk-728adf35.53e0e7c3.js","sourcesContent":["import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\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","// 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 './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options {\n $el: HTMLElement\n $refs: {\n content?: HTMLElement\n }\n overlay?: InstanceType\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n },\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","import Vue from 'vue'\n\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","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// 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 './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\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-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, this.$slots.default)\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), 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"],"sourceRoot":""}